| Index: netlog_viewer/time_util.js
|
| diff --git a/netlog_viewer/time_util.js b/netlog_viewer/time_util.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c5907ffe50ad380393cca209116bef161410e27c
|
| --- /dev/null
|
| +++ b/netlog_viewer/time_util.js
|
| @@ -0,0 +1,174 @@
|
| +// 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.
|
| +
|
| +var timeutil = (function() {
|
| + 'use strict';
|
| +
|
| + /**
|
| + * Offset needed to convert event times to Date objects.
|
| + * Updated whenever constants are loaded.
|
| + */
|
| + var timeTickOffset = 0;
|
| +
|
| + /**
|
| + * The time of the first observed event. Used for more friendly time display.
|
| + */
|
| + var baseTime = 0;
|
| +
|
| + /**
|
| + * Sets the offset used to convert tick counts to dates.
|
| + */
|
| + function setTimeTickOffset(offset) {
|
| + // Note that the subtraction by 0 is to cast to a number (probably a float
|
| + // since the numbers are big).
|
| + timeTickOffset = offset - 0;
|
| + }
|
| +
|
| + /**
|
| + * The browser gives us times in terms of "time ticks" in milliseconds.
|
| + * This function converts the tick count to a Javascript "time", which is
|
| + * the UTC time in milliseconds.
|
| + *
|
| + * @param {string} timeTicks A time represented in "time ticks".
|
| + * @return {number} The Javascript time that |timeTicks| represents.
|
| + */
|
| + function convertTimeTicksToTime(timeTicks) {
|
| + return timeTickOffset + (timeTicks - 0);
|
| + }
|
| +
|
| + /**
|
| + * The browser gives us times in terms of "time ticks" in milliseconds.
|
| + * This function converts the tick count to a Date() object.
|
| + *
|
| + * @param {string} timeTicks A time represented in "time ticks".
|
| + * @return {Date} The time that |timeTicks| represents.
|
| + */
|
| + function convertTimeTicksToDate(timeTicks) {
|
| + return new Date(convertTimeTicksToTime(timeTicks));
|
| + }
|
| +
|
| + /**
|
| + * Returns the current time.
|
| + *
|
| + * @return {number} Milliseconds since the Unix epoch.
|
| + */
|
| + function getCurrentTime() {
|
| + return Date.now();
|
| + }
|
| +
|
| + /**
|
| + * Returns the curent time in time ticks.
|
| + *
|
| + * @return {number} Current time, in TimeTicks.
|
| + */
|
| + function getCurrentTimeTicks() {
|
| + return getCurrentTime() - timeTickOffset;
|
| + }
|
| +
|
| + /**
|
| + * Sets the base time more friendly display.
|
| + *
|
| + * @param {string} firstEventTime The time of the first event, as a Javascript
|
| + * numeric time. Other times can be displayed relative to this time.
|
| + */
|
| + function setBaseTime(firstEventTime) {
|
| + baseTime = firstEventTime;
|
| + }
|
| +
|
| + /**
|
| + * Sets the base time more friendly display.
|
| + *
|
| + * @return {number} Time set by setBaseTime, or 0 if no time has been set.
|
| + */
|
| + function getBaseTime() {
|
| + return baseTime;
|
| + }
|
| +
|
| + /**
|
| + * Clears the base time, so isBaseTimeSet() returns 0.
|
| + */
|
| + function clearBaseTime() {
|
| + baseTime = 0;
|
| + }
|
| +
|
| + /**
|
| + * Returns true if the base time has been initialized.
|
| + *
|
| + * @return {bool} True if the base time is set.
|
| + */
|
| + function isBaseTimeSet() {
|
| + return baseTime != 0;
|
| + }
|
| +
|
| + /**
|
| + * Takes in a "time ticks" and returns it as a time since the base time, in
|
| + * milliseconds.
|
| + *
|
| + * @param {string} timeTicks A time represented in "time ticks".
|
| + * @return {number} Milliseconds since the base time.
|
| + */
|
| + function convertTimeTicksToRelativeTime(timeTicks) {
|
| + return convertTimeTicksToTime(timeTicks) - baseTime;
|
| + }
|
| +
|
| + /**
|
| + * Adds an HTML representation of |date| to |parentNode|.
|
| + *
|
| + * @param {DomNode} parentNode The node that will contain the new node.
|
| + * @param {Date} date The date to be displayed.
|
| + * @return {DomNode} The new node containing the date/time.
|
| + */
|
| + function addNodeWithDate(parentNode, date) {
|
| + var span = addNodeWithText(parentNode, 'span', dateToString(date));
|
| + span.title = 't=' + date.getTime();
|
| + return span;
|
| + }
|
| +
|
| + /**
|
| + * Returns a string representation of |date|.
|
| + *
|
| + * @param {Date} date The date to be represented.
|
| + * @return {string} A string representation of |date|.
|
| + */
|
| + function dateToString(date) {
|
| + var dateStr = date.getFullYear() + '-' +
|
| + zeroPad_(date.getMonth() + 1, 2) + '-' +
|
| + zeroPad_(date.getDate(), 2);
|
| +
|
| + var timeStr = zeroPad_(date.getHours(), 2) + ':' +
|
| + zeroPad_(date.getMinutes(), 2) + ':' +
|
| + zeroPad_(date.getSeconds(), 2) + '.' +
|
| + zeroPad_(date.getMilliseconds(), 3);
|
| +
|
| + return dateStr + ' ' + timeStr;
|
| + }
|
| +
|
| + /**
|
| + * Prefixes enough zeros to |num| so that it has length |len|.
|
| + * @param {number} num The number to be padded.
|
| + * @param {number} len The desired length of the returned string.
|
| + * @return {string} The zero-padded representation of |num|.
|
| + */
|
| + function zeroPad_(num, len) {
|
| + var str = num + '';
|
| + while (str.length < len)
|
| + str = '0' + str;
|
| + return str;
|
| + }
|
| +
|
| + return {
|
| + setTimeTickOffset: setTimeTickOffset,
|
| + convertTimeTicksToTime: convertTimeTicksToTime,
|
| + convertTimeTicksToDate: convertTimeTicksToDate,
|
| + getCurrentTime: getCurrentTime,
|
| + getCurrentTimeTicks: getCurrentTimeTicks,
|
| + setBaseTime: setBaseTime,
|
| + getBaseTime: getBaseTime,
|
| + clearBaseTime: clearBaseTime,
|
| + isBaseTimeSet: isBaseTimeSet,
|
| + convertTimeTicksToRelativeTime: convertTimeTicksToRelativeTime,
|
| + addNodeWithDate: addNodeWithDate,
|
| + dateToString: dateToString,
|
| + };
|
| +})();
|
|
|