Index: net/url_request/url_request_view_net_internals_job.cc |
=================================================================== |
--- net/url_request/url_request_view_net_internals_job.cc (revision 37608) |
+++ net/url_request/url_request_view_net_internals_job.cc (working copy) |
@@ -10,7 +10,7 @@ |
#include "base/stl_util-inl.h" |
#include "base/string_util.h" |
#include "net/base/escape.h" |
-#include "net/base/host_cache.h" |
+#include "net/base/host_resolver_impl.h" |
#include "net/base/load_log_util.h" |
#include "net/base/net_errors.h" |
#include "net/base/net_util.h" |
@@ -46,7 +46,22 @@ |
command.c_str()); |
} |
+//------------------------------------------------------------------------------ |
+// URLRequestContext helpers. |
+//------------------------------------------------------------------------------ |
+net::HostResolverImpl* GetHostResolverImpl(URLRequestContext* context) { |
+ if (context->host_resolver()->IsHostResolverImpl()) |
+ return static_cast<net::HostResolverImpl*> (context->host_resolver()); |
+ return NULL; |
+} |
+ |
+net::HostCache* GetHostCache(URLRequestContext* context) { |
+ if (GetHostResolverImpl(context)) |
+ return GetHostResolverImpl(context)->cache(); |
+ return NULL; |
+} |
+ |
//------------------------------------------------------------------------------ |
// Subsection definitions. |
//------------------------------------------------------------------------------ |
@@ -157,7 +172,7 @@ |
class ProxyServiceCurrentConfigSubSection : public SubSection { |
public: |
- ProxyServiceCurrentConfigSubSection(SubSection* parent) |
+ explicit ProxyServiceCurrentConfigSubSection(SubSection* parent) |
: SubSection(parent, "config", "Current configuration") { |
} |
@@ -178,7 +193,7 @@ |
class ProxyServiceLastInitLogSubSection : public SubSection { |
public: |
- ProxyServiceLastInitLogSubSection(SubSection* parent) |
+ explicit ProxyServiceLastInitLogSubSection(SubSection* parent) |
: SubSection(parent, "init_log", "Last initialized load log") { |
} |
@@ -195,7 +210,7 @@ |
class ProxyServiceBadProxiesSubSection : public SubSection { |
public: |
- ProxyServiceBadProxiesSubSection(SubSection* parent) |
+ explicit ProxyServiceBadProxiesSubSection(SubSection* parent) |
: SubSection(parent, "bad_proxies", "Bad Proxies") { |
} |
@@ -238,7 +253,7 @@ |
class ProxyServiceSubSection : public SubSection { |
public: |
- ProxyServiceSubSection(SubSection* parent) |
+ explicit ProxyServiceSubSection(SubSection* parent) |
: SubSection(parent, "proxyservice", "ProxyService") { |
AddSubSection(new ProxyServiceCurrentConfigSubSection(this)); |
AddSubSection(new ProxyServiceLastInitLogSubSection(this)); |
@@ -248,12 +263,12 @@ |
class HostResolverCacheSubSection : public SubSection { |
public: |
- HostResolverCacheSubSection(SubSection* parent) |
+ explicit HostResolverCacheSubSection(SubSection* parent) |
: SubSection(parent, "hostcache", "HostCache") { |
} |
virtual void OutputBody(URLRequestContext* context, std::string* out) { |
- const net::HostCache* host_cache = context->host_resolver()->GetHostCache(); |
+ const net::HostCache* host_cache = GetHostCache(context); |
if (!host_cache || host_cache->caching_is_disabled()) { |
out->append("<i>Caching is disabled.</i>"); |
@@ -349,11 +364,43 @@ |
} |
}; |
+class HostResolverTraceSubSection : public SubSection { |
+ public: |
+ explicit HostResolverTraceSubSection(SubSection* parent) |
+ : SubSection(parent, "trace", "Trace of requests") { |
+ } |
+ |
+ virtual void OutputBody(URLRequestContext* context, std::string* out) { |
+ net::HostResolverImpl* resolver = GetHostResolverImpl(context); |
+ if (!resolver) { |
+ out->append("<i>Tracing is not supported by this resolver.</i>"); |
+ return; |
+ } |
+ |
+ DrawCommandButton("Clear", "clear-hostresolver-trace", out); |
+ |
+ if (resolver->IsRequestsTracingEnabled()) { |
+ DrawCommandButton("Disable tracing", "hostresolver-trace-disable", out); |
+ } else { |
+ DrawCommandButton("Enable tracing", "hostresolver-trace-enable", out); |
+ } |
+ |
+ scoped_refptr<net::LoadLog> log = resolver->GetRequestsTrace(); |
+ |
+ if (log) { |
+ OutputTextInPre(net::LoadLogUtil::PrettyPrintAsEventTree(log), out); |
+ } else { |
+ out->append("<p><i>No trace information, must enable tracing.</i></p>"); |
+ } |
+ } |
+}; |
+ |
class HostResolverSubSection : public SubSection { |
public: |
- HostResolverSubSection(SubSection* parent) |
+ explicit HostResolverSubSection(SubSection* parent) |
: SubSection(parent, "hostresolver", "HostResolver") { |
AddSubSection(new HostResolverCacheSubSection(this)); |
+ AddSubSection(new HostResolverTraceSubSection(this)); |
} |
}; |
@@ -372,7 +419,7 @@ |
class URLRequestLiveSubSection : public SubSection { |
public: |
- URLRequestLiveSubSection(SubSection* parent) |
+ explicit URLRequestLiveSubSection(SubSection* parent) |
: SubSection(parent, "outstanding", "Outstanding requests") { |
} |
@@ -394,7 +441,7 @@ |
class URLRequestRecentSubSection : public SubSection { |
public: |
- URLRequestRecentSubSection(SubSection* parent) |
+ explicit URLRequestRecentSubSection(SubSection* parent) |
: SubSection(parent, "recent", "Recently completed requests") { |
} |
@@ -417,7 +464,7 @@ |
class URLRequestSubSection : public SubSection { |
public: |
- URLRequestSubSection(SubSection* parent) |
+ explicit URLRequestSubSection(SubSection* parent) |
: SubSection(parent, "urlrequest", "URLRequest") { |
AddSubSection(new URLRequestLiveSubSection(this)); |
AddSubSection(new URLRequestRecentSubSection(this)); |
@@ -426,7 +473,7 @@ |
class HttpCacheStatsSubSection : public SubSection { |
public: |
- HttpCacheStatsSubSection(SubSection* parent) |
+ explicit HttpCacheStatsSubSection(SubSection* parent) |
: SubSection(parent, "stats", "Statistics") { |
} |
@@ -437,7 +484,7 @@ |
class HttpCacheSection : public SubSection { |
public: |
- HttpCacheSection(SubSection* parent) |
+ explicit HttpCacheSection(SubSection* parent) |
: SubSection(parent, "httpcache", "HttpCache") { |
AddSubSection(new HttpCacheStatsSubSection(this)); |
} |
@@ -452,7 +499,7 @@ |
class SocketStreamLiveSubSection : public SubSection { |
public: |
- SocketStreamLiveSubSection(SubSection* parent) |
+ explicit SocketStreamLiveSubSection(SubSection* parent) |
: SubSection(parent, "live", "Live SocketStreams") { |
} |
@@ -474,7 +521,7 @@ |
class SocketStreamRecentSubSection : public SubSection { |
public: |
- SocketStreamRecentSubSection(SubSection* parent) |
+ explicit SocketStreamRecentSubSection(SubSection* parent) |
: SubSection(parent, "recent", "Recently completed SocketStreams") { |
} |
@@ -497,7 +544,7 @@ |
class SocketStreamSubSection : public SubSection { |
public: |
- SocketStreamSubSection(SubSection* parent) |
+ explicit SocketStreamSubSection(SubSection* parent) |
: SubSection(parent, "socketstream", "SocketStream") { |
AddSubSection(new SocketStreamLiveSubSection(this)); |
AddSubSection(new SocketStreamRecentSubSection(this)); |
@@ -523,6 +570,13 @@ |
return true; |
} |
+ if (StartsWithASCII(command, "hostresolver-trace-", true)) { |
+ bool enable_tracing = (command == "hostresolver-trace-enable"); |
+ if (GetHostResolverImpl(context)) { |
+ GetHostResolverImpl(context)->EnableRequestsTracing(enable_tracing); |
+ } |
+ } |
+ |
if (command == "clear-urlrequest-graveyard") { |
context->url_request_tracker()->ClearRecentlyDeceased(); |
return true; |
@@ -534,7 +588,7 @@ |
} |
if (command == "clear-hostcache") { |
- net::HostCache* host_cache = context->host_resolver()->GetHostCache(); |
+ net::HostCache* host_cache = GetHostCache(context); |
if (host_cache) |
host_cache->clear(); |
return true; |
@@ -545,6 +599,11 @@ |
return true; |
} |
+ if (command == "clear-hostresolver-trace") { |
+ if (GetHostResolverImpl(context)) |
+ GetHostResolverImpl(context)->ClearRequestsTrace(); |
+ } |
+ |
if (command == "reload-proxy-config") { |
context->proxy_service()->ForceReloadProxyConfig(); |
return true; |
@@ -593,7 +652,8 @@ |
"clear-badproxies," |
"clear-hostcache," |
"clear-urlrequest-graveyard," |
- "clear-socketstream-graveyard", |
+ "clear-socketstream-graveyard," |
+ "clear-hostresolver-trace", |
data); |
data->append("</div>"); |