Index: net/base/net_log_util.cc |
=================================================================== |
--- net/base/net_log_util.cc (revision 44049) |
+++ net/base/net_log_util.cc (working copy) |
@@ -13,7 +13,7 @@ |
class FormatHelper { |
public: |
- std::string ToString(const std::vector<NetLog::Entry>& entries, |
+ std::string ToString(const std::vector<CapturingNetLog::Entry>& entries, |
size_t num_entries_truncated) { |
entries_.clear(); |
@@ -49,6 +49,15 @@ |
int indentation_spaces = entries_[i].indentation * kSpacesPerIndentation; |
std::string entry_str = GetEntryString(i); |
+ // Hack to better print known event types. |
+ if (entries_[i].log_entry->type == NetLog::TYPE_TODO_STRING || |
+ entries_[i].log_entry->type == NetLog::TYPE_TODO_STRING_LITERAL) { |
+ // Don't display the TODO_STRING type. |
+ entry_str = StringPrintf( |
+ " \"%s\"", |
+ entries_[i].log_entry->extra_parameters->ToString().c_str()); |
+ } |
+ |
StringAppendF(&result, "t=%s: %s%s", |
PadStringLeft(GetTimeString(i), max_time_width).c_str(), |
PadStringLeft("", indentation_spaces).c_str(), |
@@ -63,6 +72,45 @@ |
PadStringLeft(GetBlockDtString(i), max_dt_width).c_str()); |
} |
+ // Append any custom parameters. |
+ NetLog::EventParameters* extra_params = |
+ entries_[i].log_entry->extra_parameters; |
+ NetLog::EventType type = entries_[i].log_entry->type; |
+ NetLog::EventPhase phase = entries_[i].log_entry->phase; |
+ |
+ if (type != NetLog::TYPE_TODO_STRING && extra_params) { |
+ std::string extra_details; |
+ |
+ // Hacks to better print known event types. |
+ if (type == NetLog::TYPE_URL_REQUEST_START || |
+ type == NetLog::TYPE_SOCKET_STREAM_CONNECT) { |
+ if (phase == NetLog::PHASE_BEGIN) { |
+ extra_details = |
+ StringPrintf("url: %s", extra_params->ToString().c_str()); |
+ } else if (phase == NetLog::PHASE_END) { |
+ int error_code = static_cast<NetLogIntegerParameter*>( |
+ extra_params)->value(); |
+ extra_details = StringPrintf("net error: %d (%s)", |
+ error_code, |
+ ErrorToString(error_code)); |
+ } |
+ } else if (type == NetLog::TYPE_SOCKET_POOL_CONNECT_JOB) { |
+ extra_details = |
+ StringPrintf("group: %s", extra_params->ToString().c_str()); |
+ } else { |
+ extra_details = extra_params->ToString(); |
+ } |
+ |
+ int indentation = max_time_width + indentation_spaces + |
+ kSpacesPerIndentation + 5; |
+ |
+ StringAppendF( |
+ &result, |
+ "\n%s%s", |
+ PadStringLeft("", indentation).c_str(), |
+ extra_details.c_str()); |
+ } |
+ |
if (i + 1 != entries_.size()) |
result += "\n"; |
} |
@@ -72,25 +120,23 @@ |
private: |
struct Entry { |
- explicit Entry(const NetLog::Entry* log_entry) |
+ explicit Entry(const CapturingNetLog::Entry* log_entry) |
: log_entry(log_entry), indentation(0), block_index(-1) {} |
bool IsBeginEvent() const { |
- return log_entry->type == NetLog::Entry::TYPE_EVENT && |
- log_entry->event.phase == NetLog::PHASE_BEGIN; |
+ return log_entry->phase == NetLog::PHASE_BEGIN; |
} |
bool IsEndEvent() const { |
- return log_entry->type == NetLog::Entry::TYPE_EVENT && |
- log_entry->event.phase == NetLog::PHASE_END; |
+ return log_entry->phase == NetLog::PHASE_END; |
} |
- const NetLog::Entry* log_entry; |
+ const CapturingNetLog::Entry* log_entry; |
size_t indentation; |
int block_index; // The index of the matching start / end of block. |
}; |
- void PopulateEntries(const std::vector<NetLog::Entry>& entries) { |
+ void PopulateEntries(const std::vector<CapturingNetLog::Entry>& entries) { |
int current_indentation = 0; |
for (size_t i = 0; i < entries.size(); ++i) { |
@@ -127,7 +173,7 @@ |
// Find the matching start of block by scanning backwards. |
for (int i = entries_.size() - 1; i >= 0; --i) { |
if (entries_[i].IsBeginEvent() && |
- entries_[i].log_entry->event.type == entry.log_entry->event.type) { |
+ entries_[i].log_entry->type == entry.log_entry->type) { |
return i; |
} |
} |
@@ -141,7 +187,7 @@ |
*max_time_width = *max_indentation = *max_type_width = *max_dt_width = 0; |
for (size_t i = 0; i < entries_.size(); ++i) { |
*max_time_width = std::max(*max_time_width, GetTimeString(i).size()); |
- if (entries_[i].log_entry->type == NetLog::Entry::TYPE_EVENT) |
+ if (entries_[i].log_entry->phase != NetLog::PHASE_NONE) |
*max_type_width = std::max(*max_type_width, GetEntryString(i).size()); |
*max_indentation = std::max(*max_indentation, entries_[i].indentation); |
@@ -169,36 +215,19 @@ |
} |
std::string GetEntryString(size_t index) { |
- const NetLog::Entry* entry = entries_[index].log_entry; |
+ const CapturingNetLog::Entry* entry = entries_[index].log_entry; |
std::string entry_str; |
- NetLog::EventPhase phase = NetLog::PHASE_NONE; |
- switch (entry->type) { |
- case NetLog::Entry::TYPE_EVENT: |
- entry_str = NetLog::EventTypeToString(entry->event.type); |
- phase = entry->event.phase; |
+ NetLog::EventPhase phase = entry->phase; |
- if (phase == NetLog::PHASE_BEGIN && |
- index + 1 < entries_.size() && |
- static_cast<size_t>(entries_[index + 1].block_index) == index) { |
- // If this starts an empty block, we will pretend it is a PHASE_NONE |
- // so we don't print the "+" prefix. |
- phase = NetLog::PHASE_NONE; |
- } |
- break; |
- case NetLog::Entry::TYPE_ERROR_CODE: |
- entry_str = StringPrintf("error code: %d (%s)", |
- entry->error_code, |
- ErrorToString(entry->error_code)); |
- break; |
- case NetLog::Entry::TYPE_STRING: |
- entry_str = StringPrintf("\"%s\"", entry->string.c_str()); |
- break; |
- case NetLog::Entry::TYPE_STRING_LITERAL: |
- entry_str = StringPrintf("\"%s\"", entry->literal); |
- break; |
- default: |
- NOTREACHED(); |
+ entry_str = NetLog::EventTypeToString(entry->type); |
+ |
+ if (phase == NetLog::PHASE_BEGIN && |
+ index + 1 < entries_.size() && |
+ static_cast<size_t>(entries_[index + 1].block_index) == index) { |
+ // If this starts an empty block, we will pretend it is a PHASE_NONE |
+ // so we don't print the "+" prefix. |
+ phase = NetLog::PHASE_NONE; |
} |
switch (phase) { |
@@ -228,7 +257,7 @@ |
// static |
std::string NetLogUtil::PrettyPrintAsEventTree( |
- const std::vector<NetLog::Entry>& entries, |
+ const std::vector<CapturingNetLog::Entry>& entries, |
size_t num_entries_truncated) { |
FormatHelper helper; |
return helper.ToString(entries, num_entries_truncated); |