| Index: chrome/browser/net/view_net_internals_job_factory.cc
 | 
| ===================================================================
 | 
| --- chrome/browser/net/view_net_internals_job_factory.cc	(revision 41560)
 | 
| +++ chrome/browser/net/view_net_internals_job_factory.cc	(working copy)
 | 
| @@ -9,11 +9,14 @@
 | 
|  #include "base/format_macros.h"
 | 
|  #include "base/stl_util-inl.h"
 | 
|  #include "base/string_util.h"
 | 
| +#include "chrome/browser/net/chrome_net_log.h"
 | 
| +#include "chrome/browser/net/chrome_url_request_context.h"
 | 
| +#include "chrome/browser/net/passive_log_collector.h"
 | 
|  #include "chrome/common/url_constants.h"
 | 
|  #include "net/base/escape.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_log_util.h"
 | 
|  #include "net/base/net_util.h"
 | 
|  #include "net/base/sys_addrinfo.h"
 | 
|  #include "net/proxy/proxy_service.h"
 | 
| @@ -27,6 +30,26 @@
 | 
|  
 | 
|  const char kViewHttpCacheSubPath[] = "view-cache";
 | 
|  
 | 
| +PassiveLogCollector* GetPassiveLogCollector(URLRequestContext* context) {
 | 
| +  // Really this is the same as:
 | 
| +  // g_browser_process->io_thread()->globals()->
 | 
| +  //     net_log.get()
 | 
| +  // (But we can't access g_browser_process from the IO thread).
 | 
| +  ChromeNetLog* chrome_net_log = static_cast<ChromeNetLog*>(
 | 
| +      static_cast<ChromeURLRequestContext*>(context)->net_log());
 | 
| +  return chrome_net_log->passive_collector();
 | 
| +}
 | 
| +
 | 
| +PassiveLogCollector::RequestTracker* GetURLRequestTracker(
 | 
| +    URLRequestContext* context) {
 | 
| +  return GetPassiveLogCollector(context)->url_request_tracker();
 | 
| +}
 | 
| +
 | 
| +PassiveLogCollector::RequestTracker* GetSocketStreamTracker(
 | 
| +    URLRequestContext* context) {
 | 
| +  return GetPassiveLogCollector(context)->socket_stream_tracker();
 | 
| +}
 | 
| +
 | 
|  std::string GetDetails(const GURL& url) {
 | 
|    DCHECK(ViewNetInternalsJobFactory::IsSupportedURL(url));
 | 
|    size_t start = strlen(chrome::kNetworkViewInternalsURL);
 | 
| @@ -232,12 +255,8 @@
 | 
|  
 | 
|    virtual void OutputBody(URLRequestContext* context, std::string* out) {
 | 
|      net::ProxyService* proxy_service = context->proxy_service();
 | 
| -    net::LoadLog* log = proxy_service->init_proxy_resolver_log();
 | 
| -    if (log) {
 | 
| -      OutputTextInPre(net::LoadLogUtil::PrettyPrintAsEventTree(log), out);
 | 
| -    } else {
 | 
| -      out->append("<i>None.</i>");
 | 
| -    }
 | 
| +    OutputTextInPre(net::NetLogUtil::PrettyPrintAsEventTree(
 | 
| +        proxy_service->init_proxy_resolver_log().entries(), 0), out);
 | 
|    }
 | 
|  };
 | 
|  
 | 
| @@ -418,15 +437,15 @@
 | 
|        DrawCommandButton("Enable tracing", "hostresolver-trace-enable", out);
 | 
|      }
 | 
|  
 | 
| -    scoped_refptr<net::LoadLog> log = resolver->GetRequestsTrace();
 | 
| -
 | 
| -    if (log) {
 | 
| +    std::vector<net::NetLog::Entry> entries;
 | 
| +    if (resolver->GetRequestsTrace(&entries)) {
 | 
|        out->append(
 | 
|            "<p>To make sense of this trace, process it with the Python script "
 | 
|            "formatter.py at "
 | 
|            "<a href='http://src.chromium.org/viewvc/chrome/trunk/src/net/tools/"
 | 
|            "dns_trace_formatter/'>net/tools/dns_trace_formatter</a></p>");
 | 
| -      OutputTextInPre(net::LoadLogUtil::PrettyPrintAsEventTree(log), out);
 | 
| +      OutputTextInPre(net::NetLogUtil::PrettyPrintAsEventTree(entries, 0),
 | 
| +                      out);
 | 
|      } else {
 | 
|        out->append("<p><i>No trace information, must enable tracing.</i></p>");
 | 
|      }
 | 
| @@ -443,15 +462,17 @@
 | 
|  };
 | 
|  
 | 
|  // Helper for the URLRequest "outstanding" and "live" sections.
 | 
| -void OutputURLAndLoadLog(const GURL& url,
 | 
| -                         const net::LoadLog* log,
 | 
| +void OutputURLAndLoadLog(const PassiveLogCollector::RequestInfo& request,
 | 
|                           std::string* out) {
 | 
|    out->append("<li>");
 | 
|    out->append("<nobr>");
 | 
| -  out->append(EscapeForHTML(url.possibly_invalid_spec()));
 | 
| +  out->append(EscapeForHTML(request.url));
 | 
|    out->append("</nobr>");
 | 
| -  if (log)
 | 
| -    OutputTextInPre(net::LoadLogUtil::PrettyPrintAsEventTree(log), out);
 | 
| +  OutputTextInPre(
 | 
| +      net::NetLogUtil::PrettyPrintAsEventTree(
 | 
| +          request.entries,
 | 
| +          request.num_entries_truncated),
 | 
| +      out);
 | 
|    out->append("</li>");
 | 
|  }
 | 
|  
 | 
| @@ -462,16 +483,14 @@
 | 
|    }
 | 
|  
 | 
|    virtual void OutputBody(URLRequestContext* context, std::string* out) {
 | 
| -    std::vector<URLRequest*> requests =
 | 
| -        context->url_request_tracker()->GetLiveRequests();
 | 
| +    PassiveLogCollector::RequestInfoList requests =
 | 
| +        GetURLRequestTracker(context)->GetLiveRequests();
 | 
|  
 | 
|      out->append("<ol>");
 | 
|      for (size_t i = 0; i < requests.size(); ++i) {
 | 
|        // Reverse the list order, so we dispay from most recent to oldest.
 | 
|        size_t index = requests.size() - i - 1;
 | 
| -      OutputURLAndLoadLog(requests[index]->original_url(),
 | 
| -                          requests[index]->load_log(),
 | 
| -                          out);
 | 
| +      OutputURLAndLoadLog(requests[index], out);
 | 
|      }
 | 
|      out->append("</ol>");
 | 
|    }
 | 
| @@ -484,8 +503,8 @@
 | 
|    }
 | 
|  
 | 
|    virtual void OutputBody(URLRequestContext* context, std::string* out) {
 | 
| -    RequestTracker<URLRequest>::RecentRequestInfoList recent =
 | 
| -        context->url_request_tracker()->GetRecentlyDeceased();
 | 
| +    PassiveLogCollector::RequestInfoList recent =
 | 
| +        GetURLRequestTracker(context)->GetRecentlyDeceased();
 | 
|  
 | 
|      DrawCommandButton("Clear", "clear-urlrequest-graveyard", out);
 | 
|  
 | 
| @@ -493,8 +512,7 @@
 | 
|      for (size_t i = 0; i < recent.size(); ++i) {
 | 
|        // Reverse the list order, so we dispay from most recent to oldest.
 | 
|        size_t index = recent.size() - i - 1;
 | 
| -      OutputURLAndLoadLog(recent[index].original_url,
 | 
| -                          recent[index].load_log, out);
 | 
| +      OutputURLAndLoadLog(recent[index], out);
 | 
|      }
 | 
|      out->append("</ol>");
 | 
|    }
 | 
| @@ -542,16 +560,14 @@
 | 
|    }
 | 
|  
 | 
|    virtual void OutputBody(URLRequestContext* context, std::string* out) {
 | 
| -    std::vector<net::SocketStream*> sockets =
 | 
| -        context->socket_stream_tracker()->GetLiveRequests();
 | 
| +    PassiveLogCollector::RequestInfoList sockets =
 | 
| +        GetSocketStreamTracker(context)->GetLiveRequests();
 | 
|  
 | 
|      out->append("<ol>");
 | 
|      for (size_t i = 0; i < sockets.size(); ++i) {
 | 
|        // Reverse the list order, so we dispay from most recent to oldest.
 | 
|        size_t index = sockets.size() - i - 1;
 | 
| -      OutputURLAndLoadLog(sockets[index]->url(),
 | 
| -                          sockets[index]->load_log(),
 | 
| -                          out);
 | 
| +      OutputURLAndLoadLog(sockets[index], out);
 | 
|      }
 | 
|      out->append("</ol>");
 | 
|    }
 | 
| @@ -564,8 +580,8 @@
 | 
|    }
 | 
|  
 | 
|    virtual void OutputBody(URLRequestContext* context, std::string* out) {
 | 
| -    RequestTracker<net::SocketStream>::RecentRequestInfoList recent =
 | 
| -        context->socket_stream_tracker()->GetRecentlyDeceased();
 | 
| +    PassiveLogCollector::RequestInfoList recent =
 | 
| +    GetSocketStreamTracker(context)->GetRecentlyDeceased();
 | 
|  
 | 
|      DrawCommandButton("Clear", "clear-socketstream-graveyard", out);
 | 
|  
 | 
| @@ -573,8 +589,7 @@
 | 
|      for (size_t i = 0; i < recent.size(); ++i) {
 | 
|        // Reverse the list order, so we dispay from most recent to oldest.
 | 
|        size_t index = recent.size() - i - 1;
 | 
| -      OutputURLAndLoadLog(recent[index].original_url,
 | 
| -                          recent[index].load_log, out);
 | 
| +      OutputURLAndLoadLog(recent[index], out);
 | 
|      }
 | 
|      out->append("</ol>");
 | 
|    }
 | 
| @@ -600,11 +615,12 @@
 | 
|    }
 | 
|  };
 | 
|  
 | 
| -bool HandleCommand(const std::string& command, URLRequestContext* context) {
 | 
| +bool HandleCommand(const std::string& command,
 | 
| +                   URLRequestContext* context) {
 | 
|    if (StartsWithASCII(command, "full-logging-", true)) {
 | 
|      bool enable_full_logging = (command == "full-logging-enable");
 | 
| -    context->url_request_tracker()->SetUnbounded(enable_full_logging);
 | 
| -    context->socket_stream_tracker()->SetUnbounded(enable_full_logging);
 | 
| +    GetURLRequestTracker(context)->SetUnbounded(enable_full_logging);
 | 
| +    GetSocketStreamTracker(context)->SetUnbounded(enable_full_logging);
 | 
|      return true;
 | 
|    }
 | 
|  
 | 
| @@ -616,12 +632,12 @@
 | 
|    }
 | 
|  
 | 
|    if (command == "clear-urlrequest-graveyard") {
 | 
| -    context->url_request_tracker()->ClearRecentlyDeceased();
 | 
| +    GetURLRequestTracker(context)->ClearRecentlyDeceased();
 | 
|      return true;
 | 
|    }
 | 
|  
 | 
|    if (command == "clear-socketstream-graveyard") {
 | 
| -    context->socket_stream_tracker()->ClearRecentlyDeceased();
 | 
| +    GetSocketStreamTracker(context)->ClearRecentlyDeceased();
 | 
|      return true;
 | 
|    }
 | 
|  
 | 
| @@ -674,8 +690,8 @@
 | 
|  // logging, and clear some of the already logged data.
 | 
|  void DrawControlsHeader(URLRequestContext* context, std::string* data) {
 | 
|    bool is_full_logging_enabled =
 | 
| -      context->url_request_tracker()->IsUnbounded() &&
 | 
| -      context->socket_stream_tracker()->IsUnbounded();
 | 
| +      GetURLRequestTracker(context)->IsUnbounded() &&
 | 
| +      GetSocketStreamTracker(context)->IsUnbounded();
 | 
|  
 | 
|    data->append("<div style='margin-bottom: 10px'>");
 | 
|  
 | 
| @@ -703,7 +719,8 @@
 | 
|    mime_type->assign("text/html");
 | 
|    charset->assign("UTF-8");
 | 
|  
 | 
| -  URLRequestContext* context = request_->context();
 | 
| +  URLRequestContext* context =
 | 
| +      static_cast<URLRequestContext*>(request_->context());
 | 
|  
 | 
|    data->clear();
 | 
|  
 | 
| 
 |