diff options
-rw-r--r-- | chrome/browser/io_thread.cc | 11 | ||||
-rw-r--r-- | net/base/host_resolver.h | 9 | ||||
-rw-r--r-- | net/base/host_resolver_impl.h | 2 | ||||
-rw-r--r-- | net/base/mapped_host_resolver.cc | 4 | ||||
-rw-r--r-- | net/base/mapped_host_resolver.h | 1 | ||||
-rw-r--r-- | net/url_request/url_request_view_net_internals_job.cc | 4 |
6 files changed, 17 insertions, 14 deletions
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc index 4ee6814..f4d4698 100644 --- a/chrome/browser/io_thread.cc +++ b/chrome/browser/io_thread.cc @@ -153,9 +153,8 @@ void IOThread::CleanUp() { } // TODO(eroman): hack for http://crbug.com/15513 - if (globals_->host_resolver->IsHostResolverImpl()) { - static_cast<net::HostResolverImpl*>( - globals_->host_resolver.get())->Shutdown(); + if (globals_->host_resolver->GetAsHostResolverImpl()) { + globals_->host_resolver.get()->GetAsHostResolverImpl()->Shutdown(); } delete globals_; @@ -210,9 +209,9 @@ void IOThread::ChangedToOnTheRecordOnIOThread() { // Clear the host cache to avoid showing entries from the OTR session // in about:net-internals. - if (globals_->host_resolver->IsHostResolverImpl()) { - net::HostCache* host_cache = static_cast<net::HostResolverImpl*>( - globals_->host_resolver.get())->cache(); + if (globals_->host_resolver->GetAsHostResolverImpl()) { + net::HostCache* host_cache = + globals_->host_resolver.get()->GetAsHostResolverImpl()->cache(); if (host_cache) host_cache->clear(); } diff --git a/net/base/host_resolver.h b/net/base/host_resolver.h index da431f3..c4cdef6 100644 --- a/net/base/host_resolver.h +++ b/net/base/host_resolver.h @@ -19,6 +19,7 @@ namespace net { class AddressList; class HostCache; +class HostResolverImpl; class LoadLog; class NetworkChangeNotifier; @@ -161,10 +162,10 @@ class HostResolver : public base::RefCountedThreadSafe<HostResolver> { // AF_INET6 by passing in ADDRESS_FAMILY_IPV6. virtual void SetDefaultAddressFamily(AddressFamily address_family) {} - // Returns true if this HostResolver is an instance of HostResolverImpl. - // Used primarily to expose additional functionality on the - // about:net-internals page. - virtual bool IsHostResolverImpl() { return false; } + // Returns |this| cast to a HostResolverImpl*, or NULL if the subclass + // is not compatible with HostResolverImpl. Used primarily to expose + // additional functionality on the about:net-internals page. + virtual HostResolverImpl* GetAsHostResolverImpl() { return NULL; } protected: friend class base::RefCountedThreadSafe<HostResolver>; diff --git a/net/base/host_resolver_impl.h b/net/base/host_resolver_impl.h index 6499b3e..3e273cd 100644 --- a/net/base/host_resolver_impl.h +++ b/net/base/host_resolver_impl.h @@ -92,7 +92,7 @@ class HostResolverImpl : public HostResolver, default_address_family_ = address_family; } - virtual bool IsHostResolverImpl() { return true; } + virtual HostResolverImpl* GetAsHostResolverImpl() { return this; } // TODO(eroman): hack for http://crbug.com/15513 void Shutdown(); diff --git a/net/base/mapped_host_resolver.cc b/net/base/mapped_host_resolver.cc index 3624a9b..164d7c6 100644 --- a/net/base/mapped_host_resolver.cc +++ b/net/base/mapped_host_resolver.cc @@ -37,6 +37,10 @@ void MappedHostResolver::RemoveObserver(Observer* observer) { impl_->RemoveObserver(observer); } +HostResolverImpl* MappedHostResolver::GetAsHostResolverImpl() { + return impl_->GetAsHostResolverImpl(); +} + MappedHostResolver::~MappedHostResolver() { } diff --git a/net/base/mapped_host_resolver.h b/net/base/mapped_host_resolver.h index af78a9c..a637a40 100644 --- a/net/base/mapped_host_resolver.h +++ b/net/base/mapped_host_resolver.h @@ -32,6 +32,7 @@ class MappedHostResolver : public HostResolver { virtual void CancelRequest(RequestHandle req); virtual void AddObserver(Observer* observer); virtual void RemoveObserver(Observer* observer); + virtual HostResolverImpl* GetAsHostResolverImpl(); // Adds a rule to this mapper. The format of the rule can be one of: // diff --git a/net/url_request/url_request_view_net_internals_job.cc b/net/url_request/url_request_view_net_internals_job.cc index 15986f6..38349a4 100644 --- a/net/url_request/url_request_view_net_internals_job.cc +++ b/net/url_request/url_request_view_net_internals_job.cc @@ -51,9 +51,7 @@ void DrawCommandButton(const std::string& title, //------------------------------------------------------------------------------ net::HostResolverImpl* GetHostResolverImpl(URLRequestContext* context) { - if (context->host_resolver()->IsHostResolverImpl()) - return static_cast<net::HostResolverImpl*> (context->host_resolver()); - return NULL; + return context->host_resolver()->GetAsHostResolverImpl(); } net::HostCache* GetHostCache(URLRequestContext* context) { |