| Index: ui/file_manager/file_manager/foreground/js/metrics_base.js
|
| diff --git a/ui/file_manager/file_manager/foreground/js/metrics.js b/ui/file_manager/file_manager/foreground/js/metrics_base.js
|
| similarity index 70%
|
| copy from ui/file_manager/file_manager/foreground/js/metrics.js
|
| copy to ui/file_manager/file_manager/foreground/js/metrics_base.js
|
| index 315b6208cbdb315b8a2e2d03bc934ff91514b780..0aa935552f8261222a2488172ebf2c1eb761ee47 100644
|
| --- a/ui/file_manager/file_manager/foreground/js/metrics.js
|
| +++ b/ui/file_manager/file_manager/foreground/js/metrics_base.js
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2014 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.
|
|
|
| @@ -8,12 +8,25 @@
|
| * To be included as a first script in main.html
|
| */
|
|
|
| -var metrics = {};
|
| +var metricsBase = {};
|
|
|
| /**
|
| * A map from interval name to interval start timestamp.
|
| */
|
| -metrics.intervals = {};
|
| +metricsBase.intervals = {};
|
| +
|
| +/**
|
| + * A mapping of enum names to valid values. This object is consulted
|
| + * any time an enum value is being reported un-accompanied by a list
|
| + * of valid values.
|
| + *
|
| + * <p>Values mut be provided by base classes. Values should correspond exactly
|
| + * with values from histograms.xml.
|
| + *
|
| + * @private {!Object.<string, !Array.<*>|number>}
|
| + */
|
| +metricsBase.validEnumValues_ = {};
|
| +
|
|
|
| /**
|
| * Start the named time interval.
|
| @@ -21,13 +34,10 @@ metrics.intervals = {};
|
| *
|
| * @param {string} name Unique interval name.
|
| */
|
| -metrics.startInterval = function(name) {
|
| - metrics.intervals[name] = Date.now();
|
| +metricsBase.startInterval = function(name) {
|
| + metricsBase.intervals[name] = Date.now();
|
| };
|
|
|
| -metrics.startInterval('Load.Total');
|
| -metrics.startInterval('Load.Script');
|
| -
|
| /**
|
| * Convert a short metric name to the full format.
|
| *
|
| @@ -35,8 +45,8 @@ metrics.startInterval('Load.Script');
|
| * @return {string} Full metric name.
|
| * @private
|
| */
|
| -metrics.convertName_ = function(name) {
|
| - return 'FileBrowser.' + name;
|
| +metricsBase.convertName_ = function(name) {
|
| + throw new Error('metricsBase.convertName_() must be overrideen by subclass.');
|
| };
|
|
|
| /**
|
| @@ -45,7 +55,7 @@ metrics.convertName_ = function(name) {
|
| * @param {Array.<Object>} args Arguments.
|
| * @private
|
| */
|
| -metrics.call_ = function(methodName, args) {
|
| +metricsBase.call_ = function(methodName, args) {
|
| try {
|
| chrome.metricsPrivate[methodName].apply(chrome.metricsPrivate, args);
|
| } catch (e) {
|
| @@ -60,7 +70,7 @@ metrics.call_ = function(methodName, args) {
|
| * @param {string} name Short metric name.
|
| * @param {number} value Value to be recorded.
|
| */
|
| -metrics.recordMediumCount = function(name, value) {
|
| +metricsBase.recordMediumCount = function(name, value) {
|
| metrics.call_('recordMediumCount', [metrics.convertName_(name), value]);
|
| };
|
|
|
| @@ -69,7 +79,7 @@ metrics.recordMediumCount = function(name, value) {
|
| * @param {string} name Short metric name.
|
| * @param {number} value Value to be recorded.
|
| */
|
| -metrics.recordSmallCount = function(name, value) {
|
| +metricsBase.recordSmallCount = function(name, value) {
|
| metrics.call_('recordSmallCount', [metrics.convertName_(name), value]);
|
| };
|
|
|
| @@ -78,7 +88,7 @@ metrics.recordSmallCount = function(name, value) {
|
| * @param {string} name Short metric name.
|
| * @param {number} time Time to be recorded in milliseconds.
|
| */
|
| -metrics.recordTime = function(name, time) {
|
| +metricsBase.recordTime = function(name, time) {
|
| metrics.call_('recordTime', [metrics.convertName_(name), time]);
|
| };
|
|
|
| @@ -86,7 +96,7 @@ metrics.recordTime = function(name, time) {
|
| * Records an action performed by the user.
|
| * @param {string} name Short metric name.
|
| */
|
| -metrics.recordUserAction = function(name) {
|
| +metricsBase.recordUserAction = function(name) {
|
| metrics.call_('recordUserAction', [metrics.convertName_(name)]);
|
| };
|
|
|
| @@ -97,7 +107,7 @@ metrics.recordUserAction = function(name) {
|
| *
|
| * @param {string} name Unique interval name.
|
| */
|
| -metrics.recordInterval = function(name) {
|
| +metricsBase.recordInterval = function(name) {
|
| if (name in metrics.intervals) {
|
| metrics.recordTime(name, Date.now() - metrics.intervals[name]);
|
| } else {
|
| @@ -110,12 +120,20 @@ metrics.recordInterval = function(name) {
|
| *
|
| * @param {string} name Metric name.
|
| * @param {*} value Enum value.
|
| - * @param {Array.<*>|number} validValues Array of valid values
|
| + * @param {Array.<*>|number=} opt_validValues Array of valid values
|
| * or a boundary number value.
|
| */
|
| -metrics.recordEnum = function(name, value, validValues) {
|
| +metricsBase.recordEnum = function(name, value, opt_validValues) {
|
| var boundaryValue;
|
| var index;
|
| +
|
| + var validValues = opt_validValues;
|
| + if (metrics.validEnumValues_ && name in metrics.validEnumValues_) {
|
| + console.assert(validValues === undefined);
|
| + validValues = metrics.validEnumValues_[name]
|
| + }
|
| + console.assert(validValues !== undefined);
|
| +
|
| if (validValues.constructor.name == 'Array') {
|
| index = validValues.indexOf(value);
|
| boundaryValue = validValues.length;
|
|
|