OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 //<include src="../../../../ui/webui/resources/js/cr.js"> | 5 //<include src="../../../../ui/webui/resources/js/cr.js"> |
6 //<include src="../../../../ui/webui/resources/js/load_time_data.js"> | 6 //<include src="../../../../ui/webui/resources/js/load_time_data.js"> |
7 //<include src="../../../../ui/webui/resources/js/i18n_template_no_process.js"> | 7 //<include src="../../../../ui/webui/resources/js/i18n_template_no_process.js"> |
8 //<include src="../../../../ui/webui/resources/js/cr/event_target.js"> | 8 //<include src="../../../../ui/webui/resources/js/cr/event_target.js"> |
9 //<include src="../../../../ui/webui/resources/js/cr/ui/dialogs.js"> | 9 //<include src="../../../../ui/webui/resources/js/cr/ui/dialogs.js"> |
10 | 10 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
61 strings: { | 61 strings: { |
62 UI_LOCALE: getString('language'), | 62 UI_LOCALE: getString('language'), |
63 LINK_TO_WEBSTORE: getString('LINK_TO_WEBSTORE'), | 63 LINK_TO_WEBSTORE: getString('LINK_TO_WEBSTORE'), |
64 INSTALLATION_FAILED_MESSAGE: getString('INSTALLATION_FAILED_MESSAGE'), | 64 INSTALLATION_FAILED_MESSAGE: getString('INSTALLATION_FAILED_MESSAGE'), |
65 LOADING_SPINNER_ALT: getString('LOADING_SPINNER_ALT'), | 65 LOADING_SPINNER_ALT: getString('LOADING_SPINNER_ALT'), |
66 INSTALLING_SPINNER_ALT: getString('INSTALLING_SPINNER_ALT') | 66 INSTALLING_SPINNER_ALT: getString('INSTALLING_SPINNER_ALT') |
67 }, | 67 }, |
68 | 68 |
69 metricsImpl: { | 69 metricsImpl: { |
70 /** | 70 /** |
71 * Map from interval name to interval start timestamp. | |
72 * @type {Object<string, Date>} | |
73 */ | |
74 intervals: {}, | |
75 | |
76 /** | |
71 * @param {string} enumName | 77 * @param {string} enumName |
72 * @param {number} value | 78 * @param {number} value |
73 * @param {number} enumSize | 79 * @param {number} enumSize |
74 */ | 80 */ |
75 recordEnum: function(enumName, value, enumSize) {}, | 81 recordEnum: function(enumName, value, enumSize) { |
82 var index = (value >= 0 && value < enumSize) ? value : enumSize - 1; | |
83 chrome.metricsPrivate.recordValue({ | |
84 'metricName': 'WebstoreWidgetApp.' + enumName, | |
85 'type': 'histogram-linear', | |
86 'min': 1, | |
87 'max': enumSize, | |
88 'buckets': enumSize | |
Ilya Sherman
2015/06/25 21:40:29
Hmm, I think that either max should be "enumSize -
tbarzic
2015/06/25 22:31:09
This is how these values are recorded in File Mana
Ilya Sherman
2015/06/25 22:36:31
It's fine for the underflow bucket to be emitted t
tbarzic
2015/06/25 22:46:12
Done.
| |
89 }, index); | |
90 }, | |
76 | 91 |
77 /** @param {string} actionName */ | 92 /** @param {string} actionName */ |
78 recordUserAction: function(actionName) {}, | 93 recordUserAction: function(actionName) { |
94 chrome.metricsPrivate.recordUserAction( | |
95 'WebstoreWidgetApp.' + actionName); | |
Ilya Sherman
2015/06/25 21:40:30
Please update actions.xml with any actions that yo
tbarzic
2015/06/25 22:31:09
Done.
| |
96 }, | |
79 | 97 |
80 /** @param {string} intervalName */ | 98 /** @param {string} intervalName */ |
81 startInterval: function(intervalName) {}, | 99 startInterval: function(intervalName) { |
100 this.intervals[intervalName] = Date.now(); | |
101 }, | |
82 | 102 |
83 /** @param {string} intervalName */ | 103 /** @param {string} intervalName */ |
84 recordInterval: function(intervalName) {} | 104 recordInterval: function(intervalName) { |
105 if (!intervalName in this.intervals) { | |
106 console.error('Interval \'' + intervalName + '\' not started'); | |
107 return; | |
108 } | |
109 | |
110 chrome.metricsPrivate.recordTime( | |
111 'WebstoreWidgetApp.' + intervalName, | |
112 Date.now() - this.intervals[intervalName]); | |
113 delete this.intervals[intervalName]; | |
114 } | |
85 }, | 115 }, |
86 | 116 |
87 /** | 117 /** |
88 * @param {string} itemId Item to be installed. | 118 * @param {string} itemId Item to be installed. |
89 * @param {function(?string)} callback Callback param is the error message, | 119 * @param {function(?string)} callback Callback param is the error message, |
90 * which is set to null on success. | 120 * which is set to null on success. |
91 */ | 121 */ |
92 installWebstoreItem: function(itemId, callback) { | 122 installWebstoreItem: function(itemId, callback) { |
93 chrome.webstoreWidgetPrivate.installWebstoreItem( | 123 chrome.webstoreWidgetPrivate.installWebstoreItem( |
94 itemId, | 124 itemId, |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
205 var result = widgetContainer.finalizeAndGetResult(); | 235 var result = widgetContainer.finalizeAndGetResult(); |
206 showWidgetResult(result.result); | 236 showWidgetResult(result.result); |
207 }) | 237 }) |
208 /** @param {*} error */ | 238 /** @param {*} error */ |
209 .catch(function(error) { | 239 .catch(function(error) { |
210 showWidgetResult(CWSWidgetContainer.Result.FAILED); | 240 showWidgetResult(CWSWidgetContainer.Result.FAILED); |
211 }); | 241 }); |
212 }); | 242 }); |
213 }); | 243 }); |
214 })(); | 244 })(); |
OLD | NEW |