Chromium Code Reviews| Index: chrome/browser/resources/file_manager/js/metrics.js |
| diff --git a/chrome/browser/resources/file_manager/js/metrics.js b/chrome/browser/resources/file_manager/js/metrics.js |
| index 8c712f890def38b2a7d33fe985f627e891612ef5..0aa987db7e37fe10fe4fda2300ae74a086bd9328 100644 |
| --- a/chrome/browser/resources/file_manager/js/metrics.js |
| +++ b/chrome/browser/resources/file_manager/js/metrics.js |
| @@ -8,10 +8,30 @@ |
| * To be included as a first script in main.html |
| */ |
| +(function() { |
| + // Switch to the 'test harness' mode when loading from a file or http url. |
| + // Do this as early as possible because the metrics code depends on |
| + // chrome private APIs. |
| + if (document.location.protocol == 'file:' || |
| + document.location.protocol == 'http:') { |
| + console.log('created mock script'); |
| + document.write('<script src="js/mock_chrome.js"><\57script>'); |
|
dgozman
2012/04/12 11:18:14
Oh, now I see.
|
| + } |
| +})(); |
| + |
| var metrics = {}; |
| +/** |
| + * A map from interval name to interval start timestamp. |
| + */ |
| metrics.intervals = {}; |
| +/** |
| + * Start the named time interval. |
| + * Should be followed by a call to recordInterval with the same name. |
| + * |
| + * @param {string} name Unique interval name. |
| + */ |
| metrics.startInterval = function(name) { |
| metrics.intervals[name] = Date.now(); |
| }; |
| @@ -19,12 +39,25 @@ metrics.startInterval = function(name) { |
| metrics.startInterval('Load.Total'); |
| metrics.startInterval('Load.Script'); |
| +/** |
| + * Convert a short metric name to the full format. |
| + * |
| + * @param {string} name Short metric name. |
| + * @return {string} Full metric name. |
| + * @private |
| + */ |
| metrics.convertName_ = function(name) { |
| return 'FileBrowser.' + name; |
| }; |
| +/** |
| + * Create a decorator function that calls a chrome.metricsPrivate function |
| + * with the same name and correct parameters. |
| + * |
| + * @param {string} name Method name. |
| + */ |
| metrics.decorate = function(name) { |
| - this[name] = function() { |
| + metrics[name] = function() { |
| var args = Array.apply(null, arguments); |
| args[0] = metrics.convertName_(args[0]); |
| chrome.metricsPrivate[name].apply(chrome.metricsPrivate, args); |
| @@ -39,6 +72,13 @@ metrics.decorate('recordSmallCount'); |
| metrics.decorate('recordTime'); |
| metrics.decorate('recordUserAction'); |
| +/** |
| + * Complete the time interval recording. |
| + * |
| + * Should be preceded by a call to startInterval with the same name. * |
| + * |
| + * @param {string} name Unique interval name. |
| + */ |
| metrics.recordInterval = function(name) { |
| if (name in metrics.intervals) { |
| metrics.recordTime(name, Date.now() - metrics.intervals[name]); |
| @@ -47,6 +87,14 @@ metrics.recordInterval = function(name) { |
| } |
| }; |
| +/** |
| + * Record an enum value. |
| + * |
| + * @param {string} name Metric name. |
| + * @param {Object} value Enum value. |
| + * @param {Array.<Object>|number} validValues Array of valid values |
| + * or a boundary number value. |
| + */ |
| metrics.recordEnum = function(name, value, validValues) { |
| var boundaryValue; |
| var index; |