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

Unified Diff: chrome/browser/ui/webui/sync_promo_handler.cc

Issue 8528054: Sync Promo: Add more UMA metrics. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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/ui/webui/sync_promo_handler.cc
diff --git a/chrome/browser/ui/webui/sync_promo_handler.cc b/chrome/browser/ui/webui/sync_promo_handler.cc
index fbee2dc2dbb191ce649e899bd91c0078dcef62a1..8dcbdb89c92bb67da0b2752c25483decaf29d085 100644
--- a/chrome/browser/ui/webui/sync_promo_handler.cc
+++ b/chrome/browser/ui/webui/sync_promo_handler.cc
@@ -7,6 +7,7 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/metrics/histogram.h"
+#include "base/time.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/sync/profile_sync_service.h"
@@ -20,8 +21,21 @@
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "content/browser/tab_contents/tab_contents.h"
-#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_details.h"
+#include "content/public/browser/notification_service.h"
+
+namespace {
+
+// This was added because of the need to change the existing UMA enum for the
+// sync promo mid-flight. Ideally these values would be contiguous, but the
+// real world is not always ideal.
+static bool IsValidUserFlowAction(int action) {
+ return (action >= extension_misc::SYNC_PROMO_FIRST_VALID_JS_ACTION &&
+ action <= extension_misc::SYNC_PROMO_LAST_VALID_JS_ACTION) ||
+ action == extension_misc::SYNC_PROMO_LEFT_DURING_THROBBER;
+}
+
+} // namespace
SyncPromoHandler::SyncPromoHandler(ProfileManager* profile_manager)
: SyncSetupHandler(profile_manager),
@@ -67,12 +81,18 @@ void SyncPromoHandler::RegisterMessages() {
web_ui_->RegisterMessageCallback("SyncPromo:Initialize",
base::Bind(&SyncPromoHandler::HandleInitializeSyncPromo,
base::Unretained(this)));
- web_ui_->RegisterMessageCallback("SyncPromo:UserFlowAction",
- base::Bind(&SyncPromoHandler::HandleUserFlowAction,
+ web_ui_->RegisterMessageCallback("SyncPromo:RecordSignInAttempts",
+ base::Bind(&SyncPromoHandler::HandleRecordSignInAttempts,
+ base::Unretained(this)));
+ web_ui_->RegisterMessageCallback("SyncPromo:RecordThrobberTime",
+ base::Bind(&SyncPromoHandler::HandleRecordThrobberTime,
base::Unretained(this)));
web_ui_->RegisterMessageCallback("SyncPromo:ShowAdvancedSettings",
base::Bind(&SyncPromoHandler::HandleShowAdvancedSettings,
base::Unretained(this)));
+ web_ui_->RegisterMessageCallback("SyncPromo:UserFlowAction",
+ base::Bind(&SyncPromoHandler::HandleUserFlowAction,
+ base::Unretained(this)));
SyncSetupHandler::RegisterMessages();
}
@@ -168,17 +188,33 @@ void SyncPromoHandler::HandleShowAdvancedSettings(
RecordUserFlowAction(extension_misc::SYNC_PROMO_ADVANCED_CLICKED);
}
+// TODO(dbeam): Replace with metricsHandler:recordHistogramTime when it exists.
+void SyncPromoHandler::HandleRecordThrobberTime(const base::ListValue* args) {
+ double time_double;
+ CHECK(args->GetDouble(0, &time_double));
+ UMA_HISTOGRAM_TIMES("SyncPromo.ThrobberTime",
+ base::TimeDelta::FromMilliseconds(time_double));
+}
+
+// TODO(dbeam): Replace with metricsHandler:recordHistogramCount when it exists.
+void SyncPromoHandler::HandleRecordSignInAttempts(const base::ListValue* args) {
+ double count_double;
+ CHECK(args->GetDouble(0, &count_double));
+ UMA_HISTOGRAM_COUNTS("SyncPromo.SignInAttempts", count_double);
+}
+
void SyncPromoHandler::HandleUserFlowAction(const base::ListValue* args) {
double action_double;
CHECK(args->GetDouble(0, &action_double));
int action = static_cast<int>(action_double);
- if (action >= extension_misc::SYNC_PROMO_FIRST_VALID_JS_ACTION &&
- action <= extension_misc::SYNC_PROMO_LAST_VALID_JS_ACTION) {
+
+ if (IsValidUserFlowAction(action))
RecordUserFlowAction(action);
- } else {
+ else
NOTREACHED() << "Attempt to record invalid user flow action on sync promo.";
- }
+ // TODO(dbeam): Should this be here or in a separate handler? This method was
Evan Stade 2011/11/15 17:45:19 agree it should be separate
Dan Beam 2011/11/15 18:37:13 Done.
+ // meant solely for UMA reporting.
if (action == extension_misc::SYNC_PROMO_SKIP_CLICKED)
SyncPromoUI::SetUserSkippedSyncPromo(Profile::FromWebUI(web_ui_));
}

Powered by Google App Engine
This is Rietveld 408576698