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

Side by Side Diff: chrome/browser/resources/file_manager/js/metrics.js

Issue 10068007: Implement Content Security Policy for the File Manager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview Utility methods for accessing chrome.metricsPrivate API. 6 * @fileoverview Utility methods for accessing chrome.metricsPrivate API.
7 * 7 *
8 * To be included as a first script in main.html 8 * To be included as a first script in main.html
9 */ 9 */
10 10
11 (function() {
12 // Switch to the 'test harness' mode when loading from a file or http url.
13 // Do this as early as possible because the metrics code depends on
14 // chrome private APIs.
15 if (document.location.protocol == 'file:' ||
16 document.location.protocol == 'http:') {
17 console.log('created mock script');
18 document.write('<script src="js/mock_chrome.js"><\57script>');
19 }
20 })();
21
11 var metrics = {}; 22 var metrics = {};
12 23
24 /**
25 * A map from interval name to interval start timestamp.
26 */
13 metrics.intervals = {}; 27 metrics.intervals = {};
14 28
29 /**
30 * Start the named time interval.
31 * Should be followed by a call to recordInterval with the same name.
32 *
33 * @param {string} name Unique interval name.
34 */
15 metrics.startInterval = function(name) { 35 metrics.startInterval = function(name) {
16 metrics.intervals[name] = Date.now(); 36 metrics.intervals[name] = Date.now();
17 }; 37 };
18 38
19 metrics.startInterval('Load.Total'); 39 metrics.startInterval('Load.Total');
20 metrics.startInterval('Load.Script'); 40 metrics.startInterval('Load.Script');
21 41
42 /**
43 * Convert a short metric name to the full format.
44 *
45 * @param {string} name Short metric name.
46 * @return {string} Full metric name.
47 * @private
48 */
22 metrics.convertName_ = function(name) { 49 metrics.convertName_ = function(name) {
23 return 'FileBrowser.' + name; 50 return 'FileBrowser.' + name;
24 }; 51 };
25 52
53 /**
54 * Create a decorator function that calls a chrome.metricsPrivate function
55 * with the same name and correct parameters.
56 *
57 * @param {string} name Method name.
58 */
26 metrics.decorate = function(name) { 59 metrics.decorate = function(name) {
27 this[name] = function() { 60 metrics[name] = function() {
28 var args = Array.apply(null, arguments); 61 var args = Array.apply(null, arguments);
29 args[0] = metrics.convertName_(args[0]); 62 args[0] = metrics.convertName_(args[0]);
30 chrome.metricsPrivate[name].apply(chrome.metricsPrivate, args); 63 chrome.metricsPrivate[name].apply(chrome.metricsPrivate, args);
31 if (localStorage.logMetrics) { 64 if (localStorage.logMetrics) {
32 console.log('chrome.metricsPrivate.' + name, args); 65 console.log('chrome.metricsPrivate.' + name, args);
33 } 66 }
34 } 67 }
35 }; 68 };
36 69
37 metrics.decorate('recordMediumCount'); 70 metrics.decorate('recordMediumCount');
38 metrics.decorate('recordSmallCount'); 71 metrics.decorate('recordSmallCount');
39 metrics.decorate('recordTime'); 72 metrics.decorate('recordTime');
40 metrics.decorate('recordUserAction'); 73 metrics.decorate('recordUserAction');
41 74
75 /**
76 * Complete the time interval recording.
77 *
78 * Should be preceded by a call to startInterval with the same name. *
79 *
80 * @param {string} name Unique interval name.
81 */
42 metrics.recordInterval = function(name) { 82 metrics.recordInterval = function(name) {
43 if (name in metrics.intervals) { 83 if (name in metrics.intervals) {
44 metrics.recordTime(name, Date.now() - metrics.intervals[name]); 84 metrics.recordTime(name, Date.now() - metrics.intervals[name]);
45 } else { 85 } else {
46 console.error('Unknown interval: ' + name); 86 console.error('Unknown interval: ' + name);
47 } 87 }
48 }; 88 };
49 89
90 /**
91 * Record an enum value.
92 *
93 * @param {string} name Metric name.
94 * @param {Object} value Enum value.
95 * @param {Array.<Object>|number} validValues Array of valid values
96 * or a boundary number value.
97 */
50 metrics.recordEnum = function(name, value, validValues) { 98 metrics.recordEnum = function(name, value, validValues) {
51 var boundaryValue; 99 var boundaryValue;
52 var index; 100 var index;
53 if (validValues.constructor.name == 'Array') { 101 if (validValues.constructor.name == 'Array') {
54 index = validValues.indexOf(value); 102 index = validValues.indexOf(value);
55 boundaryValue = validValues.length; 103 boundaryValue = validValues.length;
56 } else { 104 } else {
57 index = value; 105 index = value;
58 boundaryValue = validValues; 106 boundaryValue = validValues;
59 } 107 }
(...skipping 11 matching lines...) Expand all
71 'min': 1, 119 'min': 1,
72 'max': boundaryValue, 120 'max': boundaryValue,
73 'buckets': boundaryValue + 1 121 'buckets': boundaryValue + 1
74 }; 122 };
75 chrome.metricsPrivate.recordValue(metricDescr, index); 123 chrome.metricsPrivate.recordValue(metricDescr, index);
76 if (localStorage.logMetrics) { 124 if (localStorage.logMetrics) {
77 console.log('chrome.metricsPrivate.recordValue', 125 console.log('chrome.metricsPrivate.recordValue',
78 [metricDescr.metricName, index, value]); 126 [metricDescr.metricName, index, value]);
79 } 127 }
80 }; 128 };
OLDNEW
« no previous file with comments | « chrome/browser/resources/file_manager/js/media/mediaplayer_scripts.js ('k') | chrome/browser/resources/file_manager/main.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698