Chromium Code Reviews| Index: chromeos/network/host_resolver_impl_chromeos.h |
| diff --git a/chromeos/network/host_resolver_impl_chromeos.h b/chromeos/network/host_resolver_impl_chromeos.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..02e79327e3939c836f195ce7a5c25fe69e029413 |
| --- /dev/null |
| +++ b/chromeos/network/host_resolver_impl_chromeos.h |
| @@ -0,0 +1,80 @@ |
| +// Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CHROMEOS_NETWORK_HOST_RESOLVER_IMPL_CHROMEOS_H_ |
| +#define CHROMEOS_NETWORK_HOST_RESOLVER_IMPL_CHROMEOS_H_ |
| + |
| +#include "base/memory/ref_counted.h" |
| +#include "base/threading/thread_checker.h" |
| +#include "chromeos/chromeos_export.h" |
| +#include "net/dns/host_resolver_impl.h" |
| + |
| +namespace base { |
| +class MessageLoopProxy; |
| +} |
| + |
| +namespace chromeos { |
| +class NetworkStateHandler; |
| +} |
| + |
| +namespace chromeos { |
| + |
| +// HostResolverImplChromeOS overrides HostResolverImpl::Resolve in order to |
| +// provide the correct IP addresses for localhost using the chromeos |
| +// NetworkHandler interface. ('hostname' only returns 'localhost' on cros). |
| + |
| +class CHROMEOS_EXPORT HostResolverImplChromeOS : public net::HostResolverImpl { |
| + public: |
| + // ChromeOS specific implementation of HostResolver::CreateSystemResolver. |
| + // Assumes NetworkHandler has been initialized. |
| + // This is expected to be constructed on the same thread that Resolve() is |
| + // called from, i.e. the IO thread, which is presumed to differ from the |
| + // thread that NetworkStateHandler is called on, i.e. the UI thread. |
| + static scoped_ptr<net::HostResolver> CreateSystemResolver( |
| + const Options& options, |
| + net::NetLog* net_log); |
| + |
| + // Creates a host resolver instance for testing. |
| + static scoped_ptr<net::HostResolver> CreateHostResolverForTest( |
| + scoped_refptr<base::MessageLoopProxy> network_handler_message_loop, |
| + NetworkStateHandler* network_state_handler); |
| + |
| + virtual ~HostResolverImplChromeOS(); |
| + |
| + // HostResolverImpl |
| + virtual int Resolve(const RequestInfo& info, |
| + net::RequestPriority priority, |
| + net::AddressList* addresses, |
| + const net::CompletionCallback& callback, |
| + RequestHandle* out_req, |
| + const net::BoundNetLog& source_net_log) OVERRIDE; |
| + |
| + void SetIPAddresses(const std::string& ipv4_address, |
|
eroman
2014/06/16 22:37:48
I believe this can be private, since NetworkObserv
stevenjb
2014/06/16 23:03:53
Done.
|
| + const std::string& ipv6_address); |
| + |
| +private: |
| + friend class net::HostResolver; |
| + class NetworkObserver; |
| + |
| + HostResolverImplChromeOS( |
| + scoped_refptr<base::MessageLoopProxy> network_handler_message_loop, |
| + NetworkStateHandler* network_state_handler, |
| + const Options& options, |
| + net::NetLog* net_log); |
| + |
| + bool ResolveLocalIPAddress(const RequestInfo& info, |
| + net::AddressList* addresses); |
| + |
| + std::string ipv4_address_; |
| + std::string ipv6_address_; |
| + base::ThreadChecker thread_checker_; |
| + scoped_refptr<base::MessageLoopProxy> network_handler_message_loop_; |
| + base::WeakPtrFactory<HostResolverImplChromeOS> weak_ptr_factory_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(HostResolverImplChromeOS); |
| +}; |
| + |
| +} // namespace chromeos |
| + |
| +#endif // CHROMEOS_NETWORK_HOST_RESOLVER_IMPL_CHROMEOS_H_ |