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

Side by Side Diff: chrome/browser/ui/passwords/manage_passwords_bubble_model.cc

Issue 2490713003: Add "PasswordManager.SignInPromoDismissalCount" histogram. (Closed)
Patch Set: Created 4 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" 5 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <limits> 10 #include <limits>
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 96
97 void set_sign_in_promo_dismissal_reason( 97 void set_sign_in_promo_dismissal_reason(
98 password_manager::metrics_util::SyncSignInUserAction reason) { 98 password_manager::metrics_util::SyncSignInUserAction reason) {
99 sign_in_promo_dismissal_reason_ = reason; 99 sign_in_promo_dismissal_reason_ = reason;
100 } 100 }
101 101
102 void SetClockForTesting(std::unique_ptr<base::Clock> clock) { 102 void SetClockForTesting(std::unique_ptr<base::Clock> clock) {
103 clock_ = std::move(clock); 103 clock_ = std::move(clock);
104 } 104 }
105 105
106 void set_sign_in_promo_shown_count(int count) {
107 sign_in_promo_shown_count = count;
108 }
109
106 private: 110 private:
107 // The way the bubble appeared. 111 // The way the bubble appeared.
108 const password_manager::metrics_util::UIDisplayDisposition 112 const password_manager::metrics_util::UIDisplayDisposition
109 display_disposition_; 113 display_disposition_;
110 114
111 // Dismissal reason for a bubble. 115 // Dismissal reason for a bubble.
112 password_manager::metrics_util::UIDismissalReason dismissal_reason_; 116 password_manager::metrics_util::UIDismissalReason dismissal_reason_;
113 117
114 // Dismissal reason for the update bubble. 118 // Dismissal reason for the update bubble.
115 password_manager::metrics_util::UpdatePasswordSubmissionEvent 119 password_manager::metrics_util::UpdatePasswordSubmissionEvent
116 update_password_submission_event_; 120 update_password_submission_event_;
117 121
118 // Dismissal reason for the Chrome Sign in bubble. 122 // Dismissal reason for the Chrome Sign in bubble.
119 password_manager::metrics_util::SyncSignInUserAction 123 password_manager::metrics_util::SyncSignInUserAction
120 sign_in_promo_dismissal_reason_; 124 sign_in_promo_dismissal_reason_;
121 125
122 // Current statistics for the save password bubble; 126 // Current statistics for the save password bubble;
123 password_manager::InteractionsStats interaction_stats_; 127 password_manager::InteractionsStats interaction_stats_;
124 128
125 // Used to retrieve the current time, in base::Time units. 129 // Used to retrieve the current time, in base::Time units.
126 std::unique_ptr<base::Clock> clock_; 130 std::unique_ptr<base::Clock> clock_;
127 131
132 // Number of times the sign-in promo was shown to the user.
133 int sign_in_promo_shown_count;
134
128 DISALLOW_COPY_AND_ASSIGN(InteractionKeeper); 135 DISALLOW_COPY_AND_ASSIGN(InteractionKeeper);
129 }; 136 };
130 137
131 ManagePasswordsBubbleModel::InteractionKeeper::InteractionKeeper( 138 ManagePasswordsBubbleModel::InteractionKeeper::InteractionKeeper(
132 password_manager::InteractionsStats stats, 139 password_manager::InteractionsStats stats,
133 password_manager::metrics_util::UIDisplayDisposition display_disposition) 140 password_manager::metrics_util::UIDisplayDisposition display_disposition)
134 : display_disposition_(display_disposition), 141 : display_disposition_(display_disposition),
135 dismissal_reason_(metrics_util::NO_DIRECT_INTERACTION), 142 dismissal_reason_(metrics_util::NO_DIRECT_INTERACTION),
136 update_password_submission_event_(metrics_util::NO_UPDATE_SUBMISSION), 143 update_password_submission_event_(metrics_util::NO_UPDATE_SUBMISSION),
137 sign_in_promo_dismissal_reason_(metrics_util::CHROME_SIGNIN_DISMISSED), 144 sign_in_promo_dismissal_reason_(metrics_util::CHROME_SIGNIN_DISMISSED),
138 interaction_stats_(std::move(stats)), 145 interaction_stats_(std::move(stats)),
139 clock_(new base::DefaultClock) {} 146 clock_(new base::DefaultClock),
147 sign_in_promo_shown_count(0) {}
140 148
141 void ManagePasswordsBubbleModel::InteractionKeeper::ReportInteractions( 149 void ManagePasswordsBubbleModel::InteractionKeeper::ReportInteractions(
142 const ManagePasswordsBubbleModel* model) { 150 const ManagePasswordsBubbleModel* model) {
143 if (model->state() == password_manager::ui::PENDING_PASSWORD_STATE) { 151 if (model->state() == password_manager::ui::PENDING_PASSWORD_STATE) {
144 Profile* profile = model->GetProfile(); 152 Profile* profile = model->GetProfile();
145 if (profile) { 153 if (profile) {
146 if (GetSmartLockBrandingState(profile) == 154 if (GetSmartLockBrandingState(profile) ==
147 password_bubble_experiment::SmartLockBranding::FULL) { 155 password_bubble_experiment::SmartLockBranding::FULL) {
148 password_bubble_experiment::RecordSavePromptFirstRunExperienceWasShown( 156 password_bubble_experiment::RecordSavePromptFirstRunExperienceWasShown(
149 profile->GetPrefs()); 157 profile->GetPrefs());
(...skipping 13 matching lines...) Expand all
163 } 171 }
164 } 172 }
165 } 173 }
166 174
167 if (model->state() == password_manager::ui::CHROME_SIGN_IN_PROMO_STATE) { 175 if (model->state() == password_manager::ui::CHROME_SIGN_IN_PROMO_STATE) {
168 metrics_util::LogAutoSigninPromoUserAction(sign_in_promo_dismissal_reason_); 176 metrics_util::LogAutoSigninPromoUserAction(sign_in_promo_dismissal_reason_);
169 if (sign_in_promo_dismissal_reason_ == 177 if (sign_in_promo_dismissal_reason_ ==
170 password_manager::metrics_util::CHROME_SIGNIN_OK || 178 password_manager::metrics_util::CHROME_SIGNIN_OK ||
171 sign_in_promo_dismissal_reason_ == 179 sign_in_promo_dismissal_reason_ ==
172 password_manager::metrics_util::CHROME_SIGNIN_CANCEL) { 180 password_manager::metrics_util::CHROME_SIGNIN_CANCEL) {
173 DCHECK(model->delegate_);
174 int show_count = model->GetProfile()->GetPrefs()->GetInteger(
175 password_manager::prefs::kNumberSignInPasswordPromoShown);
176 UMA_HISTOGRAM_COUNTS_100("PasswordManager.SignInPromoCountTilClick", 181 UMA_HISTOGRAM_COUNTS_100("PasswordManager.SignInPromoCountTilClick",
177 show_count); 182 sign_in_promo_shown_count);
183 } else {
184 UMA_HISTOGRAM_COUNTS_100("PasswordManager.SignInPromoDismissalCount",
185 sign_in_promo_shown_count);
178 } 186 }
179 } else if (model->state() != 187 } else if (model->state() !=
180 password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { 188 password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
181 // We have separate metrics for the Update bubble so do not record dismissal 189 // We have separate metrics for the Update bubble so do not record dismissal
182 // reason for it. 190 // reason for it.
183 metrics_util::LogUIDismissalReason(dismissal_reason_); 191 metrics_util::LogUIDismissalReason(dismissal_reason_);
184 } 192 }
185 193
186 if (model->state() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || 194 if (model->state() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE ||
187 model->state() == password_manager::ui::PENDING_PASSWORD_STATE) { 195 model->state() == password_manager::ui::PENDING_PASSWORD_STATE) {
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 const browser_sync::ProfileSyncService* sync_service = 447 const browser_sync::ProfileSyncService* sync_service =
440 ProfileSyncServiceFactory::GetForProfile(GetProfile()); 448 ProfileSyncServiceFactory::GetForProfile(GetProfile());
441 if (password_bubble_experiment::ShouldShowChromeSignInPasswordPromo( 449 if (password_bubble_experiment::ShouldShowChromeSignInPasswordPromo(
442 prefs, sync_service)) { 450 prefs, sync_service)) {
443 interaction_keeper_->ReportInteractions(this); 451 interaction_keeper_->ReportInteractions(this);
444 title_brand_link_range_ = gfx::Range(); 452 title_brand_link_range_ = gfx::Range();
445 title_ = l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SIGNIN_PROMO_TITLE); 453 title_ = l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SIGNIN_PROMO_TITLE);
446 state_ = password_manager::ui::CHROME_SIGN_IN_PROMO_STATE; 454 state_ = password_manager::ui::CHROME_SIGN_IN_PROMO_STATE;
447 int show_count = prefs->GetInteger( 455 int show_count = prefs->GetInteger(
448 password_manager::prefs::kNumberSignInPasswordPromoShown); 456 password_manager::prefs::kNumberSignInPasswordPromoShown);
457 show_count++;
449 prefs->SetInteger(password_manager::prefs::kNumberSignInPasswordPromoShown, 458 prefs->SetInteger(password_manager::prefs::kNumberSignInPasswordPromoShown,
450 show_count + 1); 459 show_count);
460 interaction_keeper_->set_sign_in_promo_shown_count(show_count);
451 return true; 461 return true;
452 } 462 }
453 return false; 463 return false;
454 } 464 }
455 465
456 void ManagePasswordsBubbleModel::SetClockForTesting( 466 void ManagePasswordsBubbleModel::SetClockForTesting(
457 std::unique_ptr<base::Clock> clock) { 467 std::unique_ptr<base::Clock> clock) {
458 interaction_keeper_->SetClockForTesting(std::move(clock)); 468 interaction_keeper_->SetClockForTesting(std::move(clock));
459 } 469 }
460 470
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 return metrics_util::NO_UPDATE_SUBMISSION; 511 return metrics_util::NO_UPDATE_SUBMISSION;
502 } 512 }
503 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) 513 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE)
504 return metrics_util::NO_UPDATE_SUBMISSION; 514 return metrics_util::NO_UPDATE_SUBMISSION;
505 if (password_overridden_) 515 if (password_overridden_)
506 return update_events[3][behavior]; 516 return update_events[3][behavior];
507 if (ShouldShowMultipleAccountUpdateUI()) 517 if (ShouldShowMultipleAccountUpdateUI())
508 return update_events[2][behavior]; 518 return update_events[2][behavior];
509 return update_events[1][behavior]; 519 return update_events[1][behavior];
510 } 520 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698