// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // TODO(eroman): put these methods into a namespace. var createLogEntryTablePrinter; var proxySettingsToString; var stripCookiesAndLoginInfo; // Start of anonymous namespace. (function() { 'use strict'; function canCollapseBeginWithEnd(beginEntry) { return beginEntry && beginEntry.isBegin() && beginEntry.end && beginEntry.end.index == beginEntry.index + 1 && (!beginEntry.orig.params || !beginEntry.end.orig.params); } /** * Creates a TablePrinter for use by the above two functions. baseTime is * the time relative to which other times are displayed. */ createLogEntryTablePrinter = function(logEntries, privacyStripping, baseTime, logCreationTime) { var entries = LogGroupEntry.createArrayFrom(logEntries); var tablePrinter = new TablePrinter(); var parameterOutputter = new ParameterOutputter(tablePrinter); if (entries.length == 0) return tablePrinter; var startTime = timeutil.convertTimeTicksToTime(entries[0].orig.time); for (var i = 0; i < entries.length; ++i) { var entry = entries[i]; // Avoid printing the END for a BEGIN that was immediately before, unless // both have extra parameters. if (!entry.isEnd() || !canCollapseBeginWithEnd(entry.begin)) { var entryTime = timeutil.convertTimeTicksToTime(entry.orig.time); addRowWithTime(tablePrinter, entryTime - baseTime, startTime - baseTime); for (var j = entry.getDepth(); j > 0; --j) tablePrinter.addCell(' '); var eventText = getTextForEvent(entry); // Get the elapsed time, and append it to the event text. if (entry.isBegin()) { var dt = '?'; // Definite time. if (entry.end) { dt = entry.end.orig.time - entry.orig.time; } else if (logCreationTime != undefined) { dt = (logCreationTime - entryTime) + '+'; } eventText += ' [dt=' + dt + ']'; } var mainCell = tablePrinter.addCell(eventText); mainCell.allowOverflow = true; } // Output the extra parameters. if (typeof entry.orig.params == 'object') { // Those 5 skipped cells are: two for "t=", and three for "st=". tablePrinter.setNewRowCellIndent(5 + entry.getDepth()); writeParameters(entry.orig, privacyStripping, parameterOutputter); tablePrinter.setNewRowCellIndent(0); } } // If viewing a saved log file, add row with just the time the log was // created, if the event never completed. var lastEntry = entries[entries.length - 1]; // If the last entry has a non-zero depth or is a begin event, the source is // still active. var isSourceActive = lastEntry.getDepth() != 0 || lastEntry.isBegin(); if (logCreationTime != undefined && isSourceActive) { addRowWithTime(tablePrinter, logCreationTime - baseTime, startTime - baseTime); } return tablePrinter; } /** * Adds a new row to the given TablePrinter, and adds five cells containing * information about the time an event occured. * Format is '[t=