Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5823)

Unified Diff: chrome/browser/resources/net_internals/util.js

Issue 1994006: Add the requests dumps to the text summary on chrome://net2#data (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/resources/net_internals/sourceentry.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/net_internals/util.js
===================================================================
--- chrome/browser/resources/net_internals/util.js (revision 46639)
+++ chrome/browser/resources/net_internals/util.js (working copy)
@@ -104,3 +104,120 @@
}
return '?';
}
+
+/**
+ * Builds a string by repeating |str| |count| times.
+ */
+function makeRepeatedString(str, count) {
+ var out = [];
+ for (var i = 0; i < count; ++i)
+ out.push(str);
+ return out.join('');
+}
+
+/**
+ * TablePrinter is a helper to format a table as ascii art.
+ *
+ * Usage: call addRow() and addCell() repeatedly to specify the data. Ones
+ * all the fields have been inputted, call toText() to format it as text.
+ */
+function TablePrinter() {
+ this.rows_ = [];
+}
+
+function TablePrinterCell(value) {
+ this.text = '' + value;
+ this.alignRight = false;
+ this.allowOverflow = false;
+}
+
+/**
+ * Starts a new row.
+ */
+TablePrinter.prototype.addRow = function() {
+ this.rows_.push([]);
+};
+
+/**
+ * Adds a column to the current row, setting its value to cellText.
+ *
+ * @returns {!TablePrinterCell} the cell that was added.
+ */
+TablePrinter.prototype.addCell = function(cellText) {
+ var r = this.rows_[this.rows_.length - 1];
+ var cell = new TablePrinterCell(cellText);
+ r.push(cell);
+ return cell;
+};
+
+/**
+ * Returns the maximum number of columns this table contains.
+ */
+TablePrinter.prototype.getNumColumns = function() {
+ var numColumns = 0;
+ for (var i = 0; i < this.rows_.length; ++i) {
+ numColumns = Math.max(numColumns, this.rows_[i].length);
+ }
+ return numColumns;
+}
+
+/**
+ * Returns the cell at position (rowIndex, columnIndex), or null if there is
+ * no such cell.
+ */
+TablePrinter.prototype.getCell_ = function(rowIndex, columnIndex) {
+ if (rowIndex >= this.rows_.length)
+ return null;
+ var row = this.rows_[rowIndex];
+ if (columnIndex >= row.length)
+ return null;
+ return row[columnIndex];
+};
+
+/**
+ * Returns a formatted text representation of the table data.
+ */
+TablePrinter.prototype.toText = function() {
+ var numRows = this.rows_.length;
+ var numColumns = this.getNumColumns();
+
+ // Figure out the maximum width of each column.
+ var columnWidths = [];
+ columnWidths.length = numColumns;
+ for (var i = 0; i < numColumns; ++i)
+ columnWidths[i] = 0;
+
+ for (var c = 0; c < numColumns; ++c) {
+ for (var r = 0; r < numRows; ++r) {
+ var cell = this.getCell_(r, c);
+ if (cell && !cell.allowOverflow) {
+ columnWidths[c] = Math.max(columnWidths[c], cell.text.length);
+ }
+ }
+ }
+
+ // Print each row.
+ var out = [];
+ for (var r = 0; r < numRows; ++r) {
+ for (var c = 0; c < numColumns; ++c) {
+ var cell = this.getCell_(r, c);
+ if (cell) {
+ // Padd the cell with spaces to make it fit the maximum column width.
+ var padding = columnWidths[c] - cell.text.length;
+ var paddingStr = makeRepeatedString(' ', padding);
+
+ if (cell.alignRight) {
+ out.push(paddingStr);
+ out.push(cell.text);
+ } else {
+ out.push(cell.text);
+ out.push(paddingStr);
+ }
+ }
+ }
+ out.push('\n');
+ }
+
+ return out.join('');
+};
+
« no previous file with comments | « chrome/browser/resources/net_internals/sourceentry.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698