| Index: chrome/browser/net/passive_log_collector.cc
|
| ===================================================================
|
| --- chrome/browser/net/passive_log_collector.cc (revision 44049)
|
| +++ chrome/browser/net/passive_log_collector.cc (working copy)
|
| @@ -21,7 +21,7 @@
|
| return a.entries[0].source.id < b.entries[0].source.id;
|
| }
|
|
|
| -void AddEntryToRequestInfo(const net::NetLog::Entry& entry,
|
| +void AddEntryToRequestInfo(const net::CapturingNetLog::Entry& entry,
|
| bool is_unbounded,
|
| PassiveLogCollector::RequestInfo* out_info) {
|
| // Start dropping new entries when the log has gotten too big.
|
| @@ -54,7 +54,16 @@
|
| PassiveLogCollector::~PassiveLogCollector() {
|
| }
|
|
|
| -void PassiveLogCollector::OnAddEntry(const net::NetLog::Entry& entry) {
|
| +void PassiveLogCollector::OnAddEntry(
|
| + net::NetLog::EventType type,
|
| + const base::TimeTicks& time,
|
| + const net::NetLog::Source& source,
|
| + net::NetLog::EventPhase phase,
|
| + net::NetLog::EventParameters* extra_parameters) {
|
| + // Package the parameters into a single struct for convenience.
|
| + net::CapturingNetLog::Entry entry(type, time, source, phase,
|
| + extra_parameters);
|
| +
|
| switch (entry.source.type) {
|
| case net::NetLog::SOURCE_URL_REQUEST:
|
| url_request_tracker_.OnAddEntry(entry);
|
| @@ -92,7 +101,7 @@
|
| }
|
|
|
| void PassiveLogCollector::RequestTrackerBase::OnAddEntry(
|
| - const net::NetLog::Entry& entry) {
|
| + const net::CapturingNetLog::Entry& entry) {
|
| RequestInfo& info = live_requests_[entry.source.id];
|
| Action result = DoAddEntry(entry, &info);
|
|
|
| @@ -222,15 +231,14 @@
|
|
|
| PassiveLogCollector::RequestTrackerBase::Action
|
| PassiveLogCollector::ConnectJobTracker::DoAddEntry(
|
| - const net::NetLog::Entry& entry,
|
| + const net::CapturingNetLog::Entry& entry,
|
| RequestInfo* out_info) {
|
| // Save the entry (possibly truncating).
|
| AddEntryToRequestInfo(entry, is_unbounded(), out_info);
|
|
|
| // If this is the end of the connect job, move the request to the graveyard.
|
| - if (entry.type == net::NetLog::Entry::TYPE_EVENT &&
|
| - entry.event.type == net::NetLog::TYPE_SOCKET_POOL_CONNECT_JOB &&
|
| - entry.event.phase == net::NetLog::PHASE_END) {
|
| + if (entry.type == net::NetLog::TYPE_SOCKET_POOL_CONNECT_JOB &&
|
| + entry.phase == net::NetLog::PHASE_END) {
|
| return ACTION_MOVE_TO_GRAVEYARD;
|
| }
|
|
|
| @@ -252,11 +260,10 @@
|
|
|
| PassiveLogCollector::RequestTrackerBase::Action
|
| PassiveLogCollector::RequestTracker::DoAddEntry(
|
| - const net::NetLog::Entry& entry,
|
| + const net::CapturingNetLog::Entry& entry,
|
| RequestInfo* out_info) {
|
|
|
| - if (entry.type == net::NetLog::Entry::TYPE_EVENT &&
|
| - entry.event.type == net::NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID) {
|
| + if (entry.type == net::NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID) {
|
| // If this was notification that a ConnectJob was bound to the request,
|
| // copy all the logged data for that ConnectJob.
|
| AddConnectJobInfo(entry, out_info);
|
| @@ -266,22 +273,19 @@
|
| }
|
|
|
| // If this was the start of a URLRequest/SocketStream, extract the URL.
|
| - if (out_info->entries.size() == 1 &&
|
| - entry.type == net::NetLog::Entry::TYPE_EVENT &&
|
| - entry.event.type == net::NetLog::TYPE_REQUEST_ALIVE &&
|
| - entry.event.phase == net::NetLog::PHASE_BEGIN) {
|
| - out_info->url = entry.string;
|
| - out_info->entries[0].string = std::string();
|
| -
|
| - // Paranoia check: truncate the URL if it is really big.
|
| - if (out_info->url.size() > kMaxGraveyardURLSize)
|
| - out_info->url = out_info->url.substr(0, kMaxGraveyardURLSize);
|
| + // Note: we look at the first *two* entries, since the outer REQUEST_ALIVE
|
| + // doesn't actually contain any data.
|
| + if (out_info->url.empty() && out_info->entries.size() <= 2 &&
|
| + entry.phase == net::NetLog::PHASE_BEGIN && entry.extra_parameters &&
|
| + (entry.type == net::NetLog::TYPE_URL_REQUEST_START ||
|
| + entry.type == net::NetLog::TYPE_SOCKET_STREAM_CONNECT)) {
|
| + out_info->url = static_cast<net::NetLogStringParameter*>(
|
| + entry.extra_parameters.get())->value();
|
| }
|
|
|
| // If the request has ended, move it to the graveyard.
|
| - if (entry.type == net::NetLog::Entry::TYPE_EVENT &&
|
| - entry.event.type == net::NetLog::TYPE_REQUEST_ALIVE &&
|
| - entry.event.phase == net::NetLog::PHASE_END) {
|
| + if (entry.type == net::NetLog::TYPE_REQUEST_ALIVE &&
|
| + entry.phase == net::NetLog::PHASE_END) {
|
| if (StartsWithASCII(out_info->url, "chrome://", false)) {
|
| // Avoid sending "chrome://" requests to the graveyard, since it just
|
| // adds to clutter.
|
| @@ -294,15 +298,15 @@
|
| }
|
|
|
| void PassiveLogCollector::RequestTracker::AddConnectJobInfo(
|
| - const net::NetLog::Entry& entry,
|
| + const net::CapturingNetLog::Entry& entry,
|
| RequestInfo* live_entry) {
|
| // We have just been notified of which ConnectJob the
|
| // URLRequest/SocketStream was assigned. Lookup all the data we captured
|
| // for the ConnectJob, and append it to the URLRequest/SocketStream's
|
| // RequestInfo.
|
|
|
| - // TODO(eroman): This should NOT be plumbed through via |error_code| !
|
| - int connect_job_id = entry.error_code;
|
| + int connect_job_id = static_cast<net::NetLogIntegerParameter*>(
|
| + entry.extra_parameters.get())->value();
|
|
|
| const RequestInfo* connect_job_info =
|
| connect_job_tracker_->GetRequestInfoFromGraveyard(connect_job_id);
|
| @@ -313,9 +317,10 @@
|
| } else {
|
| // If we couldn't find the information for the ConnectJob, append a
|
| // generic message instead.
|
| - net::NetLog::Entry e(entry);
|
| - e.type = net::NetLog::Entry::TYPE_STRING;
|
| - e.string = StringPrintf("Used ConnectJob id=%d", connect_job_id);
|
| + net::CapturingNetLog::Entry e(entry);
|
| + e.type = net::NetLog::TYPE_TODO_STRING;
|
| + e.extra_parameters = new net::NetLogStringParameter(
|
| + StringPrintf("Used ConnectJob id=%d", connect_job_id));
|
| AddEntryToRequestInfo(e, is_unbounded(), live_entry);
|
| }
|
| }
|
| @@ -327,10 +332,9 @@
|
| PassiveLogCollector::InitProxyResolverTracker::InitProxyResolverTracker() {}
|
|
|
| void PassiveLogCollector::InitProxyResolverTracker::OnAddEntry(
|
| - const net::NetLog::Entry& entry) {
|
| - if (entry.type == net::NetLog::Entry::TYPE_EVENT &&
|
| - entry.event.type == net::NetLog::TYPE_INIT_PROXY_RESOLVER &&
|
| - entry.event.phase == net::NetLog::PHASE_BEGIN) {
|
| + const net::CapturingNetLog::Entry& entry) {
|
| + if (entry.type == net::NetLog::TYPE_INIT_PROXY_RESOLVER &&
|
| + entry.phase == net::NetLog::PHASE_BEGIN) {
|
| // If this is the start of a new InitProxyResolver, overwrite the old data.
|
| entries_.clear();
|
| entries_.push_back(entry);
|
|
|