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