1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/base/mapped_host_resolver.h"
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/string_tokenizer.h"
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/string_util.h"
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/base/host_port_pair.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/base/net_util.h"
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace net {
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochMappedHostResolver::MappedHostResolver(HostResolver* impl)
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    : impl_(impl) {
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
18731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickMappedHostResolver::~MappedHostResolver() {
19731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick}
20731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint MappedHostResolver::Resolve(const RequestInfo& info,
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                AddressList* addresses,
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                CompletionCallback* callback,
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                RequestHandle* out_req,
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                const BoundNetLog& net_log) {
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Modify the request before forwarding it to |impl_|.
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  RequestInfo modified_info = info;
283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  HostPortPair host_port(info.host_port_pair());
293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  if (rules_.RewriteHost(&host_port))
303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    modified_info.set_host_port_pair(host_port);
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  return impl_->Resolve(modified_info, addresses, callback, out_req, net_log);
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid MappedHostResolver::CancelRequest(RequestHandle req) {
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  impl_->CancelRequest(req);
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid MappedHostResolver::AddObserver(Observer* observer) {
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  impl_->AddObserver(observer);
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid MappedHostResolver::RemoveObserver(Observer* observer) {
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  impl_->RemoveObserver(observer);
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochHostResolverImpl* MappedHostResolver::GetAsHostResolverImpl() {
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  return impl_->GetAsHostResolverImpl();
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace net
51