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

Unified Diff: chrome/browser/resources/file_manager/js/suggest_apps_dialog.js

Issue 27301002: [Files.app] Record metrics in the suggest apps dialog (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed comments Created 7 years, 2 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
« no previous file with comments | « no previous file | tools/metrics/actions/chromeactions.txt » ('j') | tools/metrics/histograms/histograms.xml » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/file_manager/js/suggest_apps_dialog.js
diff --git a/chrome/browser/resources/file_manager/js/suggest_apps_dialog.js b/chrome/browser/resources/file_manager/js/suggest_apps_dialog.js
index 7e02b6bf13b68cb18266ded0fb996a55bf31abb9..54ce01feb5552975f7a38a0ff8d8433f98fd9b93 100644
--- a/chrome/browser/resources/file_manager/js/suggest_apps_dialog.js
+++ b/chrome/browser/resources/file_manager/js/suggest_apps_dialog.js
@@ -111,6 +111,7 @@ SuggestAppsDialog.State = {
INITIALIZED: 'SuggestAppsDialog.State.INITIALIZED',
INSTALLING: 'SuggestAppsDialog.State.INSTALLING',
INSTALLED_CLOSING: 'SuggestAppsDialog.State.INSTALLED_CLOSING',
+ OPENING_WEBSTORE_CLOSING: 'SuggestAppsDialog.State.OPENING_WEBSTORE_CLOSING',
CANCELED_CLOSING: 'SuggestAppsDialog.State.CANCELED_CLOSING'
};
Object.freeze(SuggestAppsDialog.State);
@@ -124,6 +125,8 @@ SuggestAppsDialog.Result = {
INSTALL_SUCCESSFUL: 'SuggestAppsDialog.Result.INSTALL_SUCCESSFUL',
// User cancelled the suggest app dialog. No message should be shown.
USER_CANCELL: 'SuggestAppsDialog.Result.USER_CANCELL',
+ // User clicked the link to web store so the dialog is closed.
+ WEBSTORE_LINK_OPENED: 'SuggestAppsDialog.Result.WEBSTORE_LINK_OPENED',
// Failed to load the widget. Error message should be shown.
FAILED: 'SuggestAppsDialog.Result.FAILED'
};
@@ -198,6 +201,9 @@ SuggestAppsDialog.prototype.show = function(extension, mime, onDialogClosed) {
this.onDialogClosed_ = onDialogClosed;
this.state_ = SuggestAppsDialog.State.INITIALIZING;
+ SuggestAppsDialog.Metrics.recordShowDialog();
+ SuggestAppsDialog.Metrics.startLoad();
+
// Makes it sure that the initialization is completed.
this.initializationTask_.run(function() {
if (!this.accessToken_) {
@@ -261,6 +267,7 @@ SuggestAppsDialog.prototype.onWebstoreLinkClicked_ = function(e) {
var webStoreUrl =
FileTasks.createWebStoreLink(this.extension_, this.mimeType_);
chrome.windows.create({url: webStoreUrl});
+ this.state_ = SuggestAppsDialog.State.OPENING_WEBSTORE_CLOSING;
this.hide();
};
@@ -270,6 +277,10 @@ SuggestAppsDialog.prototype.onWebstoreLinkClicked_ = function(e) {
* @private
*/
SuggestAppsDialog.prototype.onWidgetLoaded_ = function(event) {
+ SuggestAppsDialog.Metrics.finishLoad();
+ SuggestAppsDialog.Metrics.recordLoad(
+ SuggestAppsDialog.Metrics.LOAD.SUCCEEDED);
+
this.frame_.classList.remove('show-spinner');
this.state_ = SuggestAppsDialog.State.INITIALIZED;
@@ -282,6 +293,8 @@ SuggestAppsDialog.prototype.onWidgetLoaded_ = function(event) {
* @private
*/
SuggestAppsDialog.prototype.onWidgetLoadFailed_ = function(event) {
+ SuggestAppsDialog.Metrics.recordLoad(SuggestAppsDialog.Metrics.LOAD.FAILURE);
+
this.frame_.classList.remove('show-spinner');
this.state_ = SuggestAppsDialog.State.INITIALIZE_FAILED_CLOSING;
@@ -335,12 +348,18 @@ SuggestAppsDialog.prototype.onInstallCompleted_ = function(result, error) {
switch (result) {
case AppInstaller.Result.SUCCESS:
+ SuggestAppsDialog.Metrics.recordInstall(
+ SuggestAppsDialog.Metrics.INSTALL.SUCCESS);
this.hide();
break;
case AppInstaller.Result.CANCELLED:
+ SuggestAppsDialog.Metrics.recordInstall(
+ SuggestAppsDialog.Metrics.INSTALL.CANCELLED);
// User cancelled the installation. Do nothing.
break;
case AppInstaller.Result.ERROR:
+ SuggestAppsDialog.Metrics.recordInstall(
+ SuggestAppsDialog.Metrics.INSTALL.FAILED);
fileManager.error.show(str('SUGGEST_DIALOG_INSTALLATION_FAILED'));
break;
}
@@ -361,8 +380,14 @@ SuggestAppsDialog.prototype.hide = function(opt_originalOnHide) {
// Assumes closing the dialog as canceling the install.
this.state_ = SuggestAppsDialog.State.CANCELED_CLOSING;
break;
+ case SuggestAppsDialog.State.INITIALIZING:
+ SuggestAppsDialog.Metrics.recordLoad(
+ SuggestAppsDialog.Metrics.LOAD.CANCELLED);
+ this.state_ = SuggestAppsDialog.State.CANCELED_CLOSING;
+ break;
case SuggestAppsDialog.State.INSTALLED_CLOSING:
case SuggestAppsDialog.State.INITIALIZE_FAILED_CLOSING:
+ case SuggestAppsDialog.State.OPENING_WEBSTORE_CLOSING:
// Do nothing.
break;
case SuggestAppsDialog.State.INITIALIZED:
@@ -401,18 +426,90 @@ SuggestAppsDialog.prototype.onHide_ = function(opt_originalOnHide) {
switch (this.state_) {
case SuggestAppsDialog.State.INSTALLED_CLOSING:
result = SuggestAppsDialog.Result.INSTALL_SUCCESSFUL;
+ SuggestAppsDialog.Metrics.recordCloseDialog(
+ SuggestAppsDialog.Metrics.CLOSE_DIALOG.ITEM_INSTALLED);
break;
case SuggestAppsDialog.State.INITIALIZE_FAILED_CLOSING:
result = SuggestAppsDialog.Result.FAILED;
break;
case SuggestAppsDialog.State.CANCELED_CLOSING:
result = SuggestAppsDialog.Result.USER_CANCELL;
+ SuggestAppsDialog.Metrics.recordCloseDialog(
+ SuggestAppsDialog.Metrics.CLOSE_DIALOG.USER_CANCELL);
+ break;
+ case SuggestAppsDialog.State.OPENING_WEBSTORE_CLOSING:
+ result = SuggestAppsDialog.Result.WEBSTORE_LINK_OPENED;
+ SuggestAppsDialog.Metrics.recordCloseDialog(
+ SuggestAppsDialog.Metrics.CLOSE_DIALOG.WEB_STORE_LINK);
break;
default:
result = SuggestAppsDialog.Result.USER_CANCELL;
+ SuggestAppsDialog.Metrics.recordCloseDialog(
+ SuggestAppsDialog.Metrics.CLOSE_DIALOG.UNKNOWN_ERROR);
console.error('Invalid state.');
}
this.state_ = SuggestAppsDialog.State.UNINITIALIZED;
this.onDialogClosed_(result);
};
+
+/**
+ * Utility methods and constants to record histograms.
+ */
+SuggestAppsDialog.Metrics = Object.freeze({
+ LOAD: Object.freeze({
+ SUCCEEDED: 0,
+ CANCELLED: 1,
+ FAILED: 2,
+ }),
+
+ /**
+ * @param {SuggestAppsDialog.Metrics.LOAD} result Result of load.
+ */
+ recordLoad: function(result) {
+ if (0 <= result && result < 3)
+ metrics.recordEnum('SuggestApps.Load', result, 3);
+ },
+
+ CLOSE_DIALOG: Object.freeze({
+ UNKOWN_ERROR: 0,
+ ITEM_INSTALLED: 1,
+ USER_CANCELLED: 2,
+ WEBSTORE_LINK_OPENED: 3,
+ }),
+
+ /**
+ * @param {SuggestAppsDialog.Metrics.CLOSE_DIALOG} reason Reason of closing
+ * dialog.
+ */
+ recordCloseDialog: function(reason) {
+ if (0 <= reason && reason < 4)
+ metrics.recordEnum('SuggestApps.CloseDialog', reason, 4);
+ },
+
+ INSTALL: Object.freeze({
+ SUCCEEDED: 0,
+ CANCELLED: 1,
+ FAILED: 2,
+ }),
+
+ /**
+ * @param {SuggestAppsDialog.Metrics.INSTALL} result Result of installation.
+ */
+ recordInstall: function(result) {
+ if (0 <= result && result < 3)
+ metrics.recordEnum('SuggestApps.Install', result, 3);
+ },
+
+ recordShowDialog: function() {
+ metrics.recordUserAction('SuggestApps.ShowDialog');
+ },
+
+ startLoad: function() {
+ metrics.startInterval('SuggestApps.LoadTime');
+ },
+
+ finishLoad: function() {
+ metrics.recordInterval('SuggestApps.LoadTime');
+ },
+});
« no previous file with comments | « no previous file | tools/metrics/actions/chromeactions.txt » ('j') | tools/metrics/histograms/histograms.xml » ('J')

Powered by Google App Engine
This is Rietveld 408576698