summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/io_thread.cc11
-rw-r--r--net/base/host_resolver.h9
-rw-r--r--net/base/host_resolver_impl.h2
-rw-r--r--net/base/mapped_host_resolver.cc4
-rw-r--r--net/base/mapped_host_resolver.h1
-rw-r--r--net/url_request/url_request_view_net_internals_job.cc4
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) {