blob: 4f8afac0a51a2d0806d08db9a9c42b589223ce48 [file] [log] [blame]
Torne (Richard Coles)58218062012-11-14 11:43:16 +00001// 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
3// found in the LICENSE file.
4
5#include "chrome/browser/ui/webui/sync_promo/sync_promo_trial.h"
6
7#include "base/logging.h"
8#include "chrome/browser/metrics/metrics_service.h"
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +01009#include "chrome/browser/signin/signin_promo.h"
Torne (Richard Coles)58218062012-11-14 11:43:16 +000010#include "content/public/browser/web_contents.h"
11#include "content/public/browser/web_ui.h"
12
13namespace {
14
15enum {
16 UMA_START_PAGE_SHOWN = 0,
17 UMA_START_PAGE_SIGNED_IN,
18 UMA_NTP_LINK_SHOWN,
19 UMA_NTP_LINK_SIGNED_IN,
20 UMA_MENU_SHOWN,
21 UMA_MENU_SIGNED_IN,
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000022 UMA_SETTINGS_SHOWN,
23 UMA_SETTINGS_SIGNED_IN,
24 UMA_EXTENSION_INSTALL_BUBBLE_SHOWN,
25 UMA_EXTENSION_INSTALL_BUBBLE_SIGNED_IN,
Torne (Richard Coles)58218062012-11-14 11:43:16 +000026 UMA_UNKNOWN_SHOWN,
27 UMA_UNKNOWN_SIGNED_IN,
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000028 UMA_WEBSTORE_INSTALL_SHOWN,
29 UMA_WEBSTORE_INSTALL_SIGNED_IN,
30 UMA_APP_LAUNCHER_SHOWN,
31 UMA_APP_LAUNCHER_SIGNED_IN,
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010032 UMA_APPS_PAGE_LINK_SHOWN,
33 UMA_APPS_PAGE_LINK_SIGNED_IN,
Ben Murdochca12bfa2013-07-23 11:17:05 +010034 UMA_BOOKMARK_BUBBLE_SHOWN,
35 UMA_BOOKMARK_BUBBLE_SIGNED_IN,
Torne (Richard Coles)58218062012-11-14 11:43:16 +000036 UMA_MAX,
37};
38
39} // namespace
40
41namespace sync_promo_trial {
42
43void RecordUserShownPromo(content::WebUI* web_ui) {
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010044 signin::Source source =
45 signin::GetSourceForPromoURL(web_ui->GetWebContents()->GetURL());
Torne (Richard Coles)58218062012-11-14 11:43:16 +000046 int uma = 0;
47 switch (source) {
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010048 case signin::SOURCE_START_PAGE:
Torne (Richard Coles)58218062012-11-14 11:43:16 +000049 uma = UMA_START_PAGE_SHOWN;
50 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010051 case signin::SOURCE_NTP_LINK:
Torne (Richard Coles)58218062012-11-14 11:43:16 +000052 uma = UMA_NTP_LINK_SHOWN;
53 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010054 case signin::SOURCE_MENU:
Torne (Richard Coles)58218062012-11-14 11:43:16 +000055 uma = UMA_MENU_SHOWN;
56 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010057 case signin::SOURCE_SETTINGS:
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000058 uma = UMA_SETTINGS_SHOWN;
59 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010060 case signin::SOURCE_EXTENSION_INSTALL_BUBBLE:
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000061 uma = UMA_EXTENSION_INSTALL_BUBBLE_SHOWN;
62 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010063 case signin::SOURCE_WEBSTORE_INSTALL:
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000064 uma = UMA_WEBSTORE_INSTALL_SHOWN;
65 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010066 case signin::SOURCE_APP_LAUNCHER:
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000067 uma = UMA_APP_LAUNCHER_SHOWN;
68 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010069 case signin::SOURCE_APPS_PAGE_LINK:
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010070 uma = UMA_APPS_PAGE_LINK_SHOWN;
71 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010072 case signin::SOURCE_BOOKMARK_BUBBLE:
Ben Murdochca12bfa2013-07-23 11:17:05 +010073 uma = UMA_BOOKMARK_BUBBLE_SHOWN;
74 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010075 case signin::SOURCE_UNKNOWN:
Torne (Richard Coles)58218062012-11-14 11:43:16 +000076 uma = UMA_UNKNOWN_SHOWN;
77 break;
78 default:
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010079 // If this assert hits, then the signin::Source enum has
80 // changed and the UMA enum above, this switch statement and
81 // histograms.xml all need to be updated to reflect that.
82 COMPILE_ASSERT(signin::SOURCE_UNKNOWN == 9,
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000083 kSourceEnumHasChangedButNotThisSwitchStatement);
Torne (Richard Coles)58218062012-11-14 11:43:16 +000084 NOTREACHED();
85 break;
86 }
87 UMA_HISTOGRAM_ENUMERATION("SyncPromo.ShowAndSignIn", uma, UMA_MAX);
88}
89
90void RecordUserSignedIn(content::WebUI* web_ui) {
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010091 signin::Source source =
92 signin::GetSourceForPromoURL(web_ui->GetWebContents()->GetURL());
Torne (Richard Coles)58218062012-11-14 11:43:16 +000093 int uma = 0;
94 switch (source) {
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010095 case signin::SOURCE_START_PAGE:
Torne (Richard Coles)58218062012-11-14 11:43:16 +000096 uma = UMA_START_PAGE_SIGNED_IN;
97 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010098 case signin::SOURCE_NTP_LINK:
Torne (Richard Coles)58218062012-11-14 11:43:16 +000099 uma = UMA_NTP_LINK_SIGNED_IN;
100 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +0100101 case signin::SOURCE_MENU:
Torne (Richard Coles)58218062012-11-14 11:43:16 +0000102 uma = UMA_MENU_SIGNED_IN;
103 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +0100104 case signin::SOURCE_SETTINGS:
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +0000105 uma = UMA_SETTINGS_SIGNED_IN;
106 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +0100107 case signin::SOURCE_EXTENSION_INSTALL_BUBBLE:
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +0000108 uma = UMA_EXTENSION_INSTALL_BUBBLE_SIGNED_IN;
109 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +0100110 case signin::SOURCE_WEBSTORE_INSTALL:
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +0000111 uma = UMA_WEBSTORE_INSTALL_SIGNED_IN;
112 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +0100113 case signin::SOURCE_APP_LAUNCHER:
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +0000114 uma = UMA_APP_LAUNCHER_SIGNED_IN;
115 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +0100116 case signin::SOURCE_APPS_PAGE_LINK:
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100117 uma = UMA_APPS_PAGE_LINK_SIGNED_IN;
118 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +0100119 case signin::SOURCE_BOOKMARK_BUBBLE:
Ben Murdochca12bfa2013-07-23 11:17:05 +0100120 uma = UMA_BOOKMARK_BUBBLE_SIGNED_IN;
121 break;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +0100122 case signin::SOURCE_UNKNOWN:
Torne (Richard Coles)58218062012-11-14 11:43:16 +0000123 uma = UMA_UNKNOWN_SIGNED_IN;
124 break;
125 default:
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +0000126 // This switch statement needs to be updated when the enum Source changes.
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +0100127 COMPILE_ASSERT(signin::SOURCE_UNKNOWN == 9,
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +0000128 kSourceEnumHasChangedButNotThisSwitchStatement);
Torne (Richard Coles)58218062012-11-14 11:43:16 +0000129 NOTREACHED();
130 break;
131 }
132 UMA_HISTOGRAM_ENUMERATION("SyncPromo.ShowAndSignIn", uma, UMA_MAX);
133}
134
135} // namespace sync_promo_trial