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

Unified 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 side-by-side diff with in-line comments
Download patch
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>');
+ }
+})();
+
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;
« 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