Index: chrome/browser/resources/net_internals/log_view_painter.js |
=================================================================== |
--- chrome/browser/resources/net_internals/log_view_painter.js (revision 112998) |
+++ chrome/browser/resources/net_internals/log_view_painter.js (working copy) |
@@ -8,9 +8,8 @@ |
* the old net-internals is replaced. |
*/ |
-// TODO(eroman): these functions should use lower-case names. |
-var PaintLogView; |
-var PrintSourceEntriesAsText; |
+var paintLogView; |
+var printLogEntriesAsText; |
var proxySettingsToString; |
var stripCookiesAndLoginInfo; |
@@ -18,7 +17,7 @@ |
(function() { |
'use strict'; |
-PaintLogView = function(sourceEntries, node) { |
+paintLogView = function(sourceEntries, node) { |
for (var i = 0; i < sourceEntries.length; ++i) { |
if (i != 0) |
addNode(node, 'hr'); |
@@ -26,24 +25,26 @@ |
} |
} |
+/** |
+ * Outputs descriptive text for |sourceEntry| and its events to |node|. |
+ */ |
function addSourceEntry_(node, sourceEntry) { |
var div = addNode(node, 'div'); |
div.className = 'logSourceEntry'; |
var p = addNode(div, 'p'); |
- var nobr = addNode(p, 'nobr'); |
+ addNodeWithText(p, 'h4', |
+ sourceEntry.getSourceId() + ': ' + |
+ sourceEntry.getSourceTypeString()); |
- addTextNode(nobr, sourceEntry.getDescription()); |
+ if (sourceEntry.getDescription()) |
+ addNodeWithText(p, 'h4', sourceEntry.getDescription()); |
- var p2 = addNode(div, 'p'); |
- var nobr2 = addNode(p2, 'nobr'); |
- |
var logEntries = sourceEntry.getLogEntries(); |
var startDate = timeutil.convertTimeTicksToDate(logEntries[0].time); |
- addTextNode(nobr2, 'Start Time: ' + startDate.toLocaleString()); |
+ addNodeWithText(p, 'div', 'Start Time: ' + startDate.toLocaleString()); |
- var pre = addNode(div, 'pre'); |
- addTextNode(pre, PrintSourceEntriesAsText(logEntries)); |
+ sourceEntry.printAsText(div); |
} |
function canCollapseBeginWithEnd(beginEntry) { |
@@ -56,16 +57,20 @@ |
beginEntry.end.orig.wasPassivelyCaptured; |
} |
-PrintSourceEntriesAsText = function(sourceEntries) { |
- var entries = LogGroupEntry.createArrayFrom(sourceEntries); |
+/** |
+ * Adds a child pre element to the end of |parent|, and writes the |
+ * formatted contents of |logEntries| to it. |
+ */ |
+printLogEntriesAsText = function(logEntries, parent) { |
+ var entries = LogGroupEntry.createArrayFrom(logEntries); |
+ var tablePrinter = new TablePrinter(); |
+ |
if (entries.length == 0) |
- return ''; |
+ return; |
var startDate = timeutil.convertTimeTicksToDate(entries[0].orig.time); |
var startTime = startDate.getTime(); |
- var tablePrinter = new TablePrinter(); |
- |
for (var i = 0; i < entries.length; ++i) { |
var entry = entries[i]; |
@@ -86,54 +91,38 @@ |
stCell.alignRight = true; |
tablePrinter.addCell('] '); |
- var indentationStr = makeRepeatedString(' ', entry.getDepth() * 3); |
- var mainCell = |
- tablePrinter.addCell(indentationStr + getTextForEvent(entry)); |
- tablePrinter.addCell(' '); |
+ for (var j = entry.getDepth(); j > 0; --j) |
+ tablePrinter.addCell(' '); |
- // Get the elapsed time. |
+ var eventText = getTextForEvent(entry); |
+ // Get the elapsed time, and append it to the event text. |
if (entry.isBegin()) { |
- tablePrinter.addCell('[dt='); |
var dt = '?'; |
// Definite time. |
if (entry.end) { |
dt = entry.end.orig.time - entry.orig.time; |
} |
- var dtCell = tablePrinter.addCell(dt); |
- dtCell.alignRight = true; |
+ eventText += ' [dt=' + dt + ']'; |
+ } |
- tablePrinter.addCell(']'); |
- } else { |
- mainCell.allowOverflow = true; |
- } |
+ var mainCell = tablePrinter.addCell(eventText); |
+ mainCell.allowOverflow = true; |
} |
// Output the extra parameters. |
if (entry.orig.params != undefined) { |
- // Add a continuation row for each line of text from the extra parameters. |
- var extraParamsText = getTextForExtraParams( |
- entry.orig, |
- g_browser.sourceTracker.getSecurityStripping()); |
- var extraParamsTextLines = extraParamsText.split('\n'); |
- |
- for (var j = 0; j < extraParamsTextLines.length; ++j) { |
- tablePrinter.addRow(); |
- tablePrinter.addCell(''); // Empty passive annotation. |
- tablePrinter.addCell(''); // No t=. |
- tablePrinter.addCell(''); |
- tablePrinter.addCell(''); // No st=. |
- tablePrinter.addCell(''); |
- tablePrinter.addCell(' '); |
- |
- var mainExtraCell = |
- tablePrinter.addCell(indentationStr + extraParamsTextLines[j]); |
- mainExtraCell.allowOverflow = true; |
- } |
+ // Those 6 skipped cells are: passive annotation, two for "t=", and |
+ // three for "st=". |
+ tablePrinter.setNewRowCellIndent(6 + entry.getDepth()); |
+ addRowsForExtraParams(tablePrinter, |
+ entry.orig, |
+ g_browser.sourceTracker.getSecurityStripping()); |
+ tablePrinter.setNewRowCellIndent(0); |
} |
} |
// Format the table for fixed-width text. |
- return tablePrinter.toText(0); |
+ tablePrinter.toText(0, parent); |
} |
/** |
@@ -177,7 +166,26 @@ |
return out.join('\n'); |
} |
-function getTextForExtraParams(entry, enableSecurityStripping) { |
+/** |
+ * Splits |text| in shorter strings around linebreaks. For each of the |
+ * resulting strings, adds a row to |tablePrinter| with a cell containing |
+ * that text, linking to |link|. |link| may be null. |
+ */ |
+function addTextRows(tablePrinter, text, link) { |
+ var textLines = text.split('\n'); |
+ |
+ for (var i = 0; i < textLines.length; ++i) { |
+ tablePrinter.addRow(); |
+ var cell = tablePrinter.addCell(textLines[i]); |
+ cell.link = link; |
+ cell.allowOverflow = true; |
+ } |
+} |
+ |
+/** |
+ * Returns a list of FormattedTextInfo objects for |entry|'s |params|. |
+ */ |
+function addRowsForExtraParams(tablePrinter, entry, enableSecurityStripping) { |
// Format the extra parameters (use a custom formatter for certain types, |
// but default to displaying as JSON). |
@@ -188,27 +196,37 @@ |
switch (entry.type) { |
case LogEventType.HTTP_TRANSACTION_SEND_REQUEST_HEADERS: |
case LogEventType.HTTP_TRANSACTION_SEND_TUNNEL_HEADERS: |
- return getTextForRequestHeadersExtraParam(entry); |
+ addTextRows(tablePrinter, |
+ getTextForRequestHeadersExtraParam(entry), |
+ null); |
+ return; |
case LogEventType.HTTP_TRANSACTION_READ_RESPONSE_HEADERS: |
case LogEventType.HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS: |
- return getTextForResponseHeadersExtraParam(entry); |
+ addTextRows(tablePrinter, |
+ getTextForResponseHeadersExtraParam(entry), |
+ null); |
+ return; |
case LogEventType.PROXY_CONFIG_CHANGED: |
- return getTextForProxyConfigChangedExtraParam(entry); |
+ addTextRows(tablePrinter, |
+ getTextForProxyConfigChangedExtraParam(entry), |
+ null); |
+ return; |
default: |
- var out = []; |
for (var k in entry.params) { |
if (k == 'headers' && entry.params[k] instanceof Array) { |
- out.push(getTextForResponseHeadersExtraParam(entry)); |
+ addTextRows(tablePrinter, |
+ getTextForResponseHeadersExtraParam(entry), |
+ null); |
continue; |
} |
var value = entry.params[k]; |
// For transferred bytes, display the bytes in hex and ASCII. |
if (k == 'hex_encoded_bytes') { |
- out.push(' --> ' + k + ' ='); |
- out.push(formatHexString(value, 20)); |
+ addTextRows(tablePrinter, ' --> ' + k + ' ='); |
+ addTextRows(tablePrinter, formatHexString(value, 20)); |
continue; |
} |
@@ -224,9 +242,13 @@ |
} |
} |
- out.push(paramStr); |
+ var link = null; |
+ // Add link to source_dependency entries. |
+ if (k == 'source_dependency' && typeof value == 'object') |
+ link = '#events&s=' + value.id; |
+ |
+ addTextRows(tablePrinter, paramStr, link); |
} |
- return out.join('\n'); |
} |
} |