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

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

Issue 2579823003: Remove Finch support for PasswordBranding (Closed)
Patch Set: More succinct Created 4 years 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
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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 const std::vector<std::unique_ptr<autofill::PasswordForm>>& forms) { 54 const std::vector<std::unique_ptr<autofill::PasswordForm>>& forms) {
55 std::vector<autofill::PasswordForm> result; 55 std::vector<autofill::PasswordForm> result;
56 result.reserve(forms.size()); 56 result.reserve(forms.size());
57 std::transform(forms.begin(), forms.end(), std::back_inserter(result), 57 std::transform(forms.begin(), forms.end(), std::back_inserter(result),
58 [](const std::unique_ptr<autofill::PasswordForm>& form) { 58 [](const std::unique_ptr<autofill::PasswordForm>& form) {
59 return *form; 59 return *form;
60 }); 60 });
61 return result; 61 return result;
62 } 62 }
63 63
64 password_bubble_experiment::SmartLockBranding GetSmartLockBrandingState( 64 bool IsSmartLockUser(Profile* profile) {
65 Profile* profile) {
66 const browser_sync::ProfileSyncService* sync_service = 65 const browser_sync::ProfileSyncService* sync_service =
67 ProfileSyncServiceFactory::GetForProfile(profile); 66 ProfileSyncServiceFactory::GetForProfile(profile);
68 return password_bubble_experiment::GetSmartLockBrandingState(sync_service); 67 return password_bubble_experiment::IsSmartLockUser(sync_service);
69 } 68 }
70 69
71 } // namespace 70 } // namespace
72 71
73 // Class responsible for collecting and reporting all the runtime interactions 72 // Class responsible for collecting and reporting all the runtime interactions
74 // with the bubble. 73 // with the bubble.
75 class ManagePasswordsBubbleModel::InteractionKeeper { 74 class ManagePasswordsBubbleModel::InteractionKeeper {
76 public: 75 public:
77 InteractionKeeper( 76 InteractionKeeper(
78 password_manager::InteractionsStats stats, 77 password_manager::InteractionsStats stats,
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 sign_in_promo_dismissal_reason_(metrics_util::CHROME_SIGNIN_DISMISSED), 143 sign_in_promo_dismissal_reason_(metrics_util::CHROME_SIGNIN_DISMISSED),
145 interaction_stats_(std::move(stats)), 144 interaction_stats_(std::move(stats)),
146 clock_(new base::DefaultClock), 145 clock_(new base::DefaultClock),
147 sign_in_promo_shown_count(0) {} 146 sign_in_promo_shown_count(0) {}
148 147
149 void ManagePasswordsBubbleModel::InteractionKeeper::ReportInteractions( 148 void ManagePasswordsBubbleModel::InteractionKeeper::ReportInteractions(
150 const ManagePasswordsBubbleModel* model) { 149 const ManagePasswordsBubbleModel* model) {
151 if (model->state() == password_manager::ui::PENDING_PASSWORD_STATE) { 150 if (model->state() == password_manager::ui::PENDING_PASSWORD_STATE) {
152 Profile* profile = model->GetProfile(); 151 Profile* profile = model->GetProfile();
153 if (profile) { 152 if (profile) {
154 if (GetSmartLockBrandingState(profile) ==
155 password_bubble_experiment::SmartLockBranding::FULL) {
156 password_bubble_experiment::RecordSavePromptFirstRunExperienceWasShown(
157 profile->GetPrefs());
158 }
159 if (dismissal_reason_ == metrics_util::NO_DIRECT_INTERACTION && 153 if (dismissal_reason_ == metrics_util::NO_DIRECT_INTERACTION &&
160 display_disposition_ == 154 display_disposition_ ==
161 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING) { 155 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING) {
162 if (interaction_stats_.dismissal_count < 156 if (interaction_stats_.dismissal_count <
163 std::numeric_limits<decltype( 157 std::numeric_limits<decltype(
164 interaction_stats_.dismissal_count)>::max()) 158 interaction_stats_.dismissal_count)>::max())
165 interaction_stats_.dismissal_count++; 159 interaction_stats_.dismissal_count++;
166 interaction_stats_.update_time = clock_->Now(); 160 interaction_stats_.update_time = clock_->Now();
167 password_manager::PasswordStore* password_store = 161 password_manager::PasswordStore* password_store =
168 PasswordStoreFactory::GetForProfile( 162 PasswordStoreFactory::GetForProfile(
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 } else if (state_ == password_manager::ui::MANAGE_STATE) { 242 } else if (state_ == password_manager::ui::MANAGE_STATE) {
249 local_credentials_ = DeepCopyForms(delegate_->GetCurrentForms()); 243 local_credentials_ = DeepCopyForms(delegate_->GetCurrentForms());
250 UpdateManageStateTitle(); 244 UpdateManageStateTitle();
251 manage_link_ = 245 manage_link_ =
252 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK); 246 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK);
253 } 247 }
254 248
255 if (state_ == password_manager::ui::CONFIRMATION_STATE) { 249 if (state_ == password_manager::ui::CONFIRMATION_STATE) {
256 base::string16 save_confirmation_link = 250 base::string16 save_confirmation_link =
257 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_LINK); 251 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_LINK);
258 int confirmation_text_id = IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TEXT;
259 if (GetSmartLockBrandingState(GetProfile()) ==
260 password_bubble_experiment::SmartLockBranding::FULL) {
261 std::string management_hostname =
262 GURL(password_manager::kPasswordManagerAccountDashboardURL).host();
263 save_confirmation_link = base::UTF8ToUTF16(management_hostname);
264 confirmation_text_id =
265 IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_SMART_LOCK_TEXT;
266 }
267
268 size_t offset; 252 size_t offset;
269 save_confirmation_text_ = 253 save_confirmation_text_ =
270 l10n_util::GetStringFUTF16( 254 l10n_util::GetStringFUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TEXT,
271 confirmation_text_id, save_confirmation_link, &offset); 255 save_confirmation_link, &offset);
272 save_confirmation_link_range_ = 256 save_confirmation_link_range_ =
273 gfx::Range(offset, offset + save_confirmation_link.length()); 257 gfx::Range(offset, offset + save_confirmation_link.length());
274 } 258 }
275 259
276 password_manager::metrics_util::UIDisplayDisposition display_disposition = 260 password_manager::metrics_util::UIDisplayDisposition display_disposition =
277 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING; 261 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING;
278 if (display_reason == USER_ACTION) { 262 if (display_reason == USER_ACTION) {
279 switch (state_) { 263 switch (state_) {
280 case password_manager::ui::PENDING_PASSWORD_STATE: 264 case password_manager::ui::PENDING_PASSWORD_STATE:
281 display_disposition = metrics_util::MANUAL_WITH_PASSWORD_PENDING; 265 display_disposition = metrics_util::MANUAL_WITH_PASSWORD_PENDING;
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 } 352 }
369 353
370 // TODO(gcasto): Is it worth having this be separate from OnDoneClicked()? 354 // TODO(gcasto): Is it worth having this be separate from OnDoneClicked()?
371 // User intent is pretty similar in both cases. 355 // User intent is pretty similar in both cases.
372 void ManagePasswordsBubbleModel::OnOKClicked() { 356 void ManagePasswordsBubbleModel::OnOKClicked() {
373 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_OK); 357 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_OK);
374 } 358 }
375 359
376 void ManagePasswordsBubbleModel::OnManageLinkClicked() { 360 void ManagePasswordsBubbleModel::OnManageLinkClicked() {
377 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_MANAGE); 361 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_MANAGE);
378 if (GetSmartLockBrandingState(GetProfile()) == 362 delegate_->NavigateToPasswordManagerSettingsPage();
379 password_bubble_experiment::SmartLockBranding::FULL) {
380 delegate_->NavigateToExternalPasswordManager();
381 } else {
382 delegate_->NavigateToPasswordManagerSettingsPage();
383 }
384 } 363 }
385 364
386 void ManagePasswordsBubbleModel::OnBrandLinkClicked() { 365 void ManagePasswordsBubbleModel::OnBrandLinkClicked() {
387 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_BRAND_NAME); 366 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_BRAND_NAME);
388 delegate_->NavigateToSmartLockHelpPage(); 367 delegate_->NavigateToSmartLockHelpPage();
389 } 368 }
390 369
391 void ManagePasswordsBubbleModel::OnAutoSignInToastTimeout() { 370 void ManagePasswordsBubbleModel::OnAutoSignInToastTimeout() {
392 interaction_keeper_->set_dismissal_reason( 371 interaction_keeper_->set_dismissal_reason(
393 metrics_util::AUTO_SIGNIN_TOAST_TIMEOUT); 372 metrics_util::AUTO_SIGNIN_TOAST_TIMEOUT);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 409
431 content::WebContents* ManagePasswordsBubbleModel::GetWebContents() const { 410 content::WebContents* ManagePasswordsBubbleModel::GetWebContents() const {
432 return delegate_ ? delegate_->GetWebContents() : nullptr; 411 return delegate_ ? delegate_->GetWebContents() : nullptr;
433 } 412 }
434 413
435 bool ManagePasswordsBubbleModel::ShouldShowMultipleAccountUpdateUI() const { 414 bool ManagePasswordsBubbleModel::ShouldShowMultipleAccountUpdateUI() const {
436 return state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE && 415 return state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE &&
437 local_credentials_.size() > 1 && !password_overridden_; 416 local_credentials_.size() > 1 && !password_overridden_;
438 } 417 }
439 418
440 bool ManagePasswordsBubbleModel::ShouldShowGoogleSmartLockWelcome() const {
441 Profile* profile = GetProfile();
442 if (GetSmartLockBrandingState(profile) ==
443 password_bubble_experiment::SmartLockBranding::FULL) {
444 PrefService* prefs = profile->GetPrefs();
445 return !prefs->GetBoolean(
446 password_manager::prefs::kWasSavePrompFirstRunExperienceShown);
447 }
448 return false;
449 }
450
451 bool ManagePasswordsBubbleModel::ReplaceToShowSignInPromoIfNeeded() { 419 bool ManagePasswordsBubbleModel::ReplaceToShowSignInPromoIfNeeded() {
452 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_); 420 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_);
453 PrefService* prefs = GetProfile()->GetPrefs(); 421 PrefService* prefs = GetProfile()->GetPrefs();
454 const browser_sync::ProfileSyncService* sync_service = 422 const browser_sync::ProfileSyncService* sync_service =
455 ProfileSyncServiceFactory::GetForProfile(GetProfile()); 423 ProfileSyncServiceFactory::GetForProfile(GetProfile());
456 if (password_bubble_experiment::ShouldShowChromeSignInPasswordPromo( 424 if (password_bubble_experiment::ShouldShowChromeSignInPasswordPromo(
457 prefs, sync_service)) { 425 prefs, sync_service)) {
458 interaction_keeper_->ReportInteractions(this); 426 interaction_keeper_->ReportInteractions(this);
459 title_brand_link_range_ = gfx::Range(); 427 title_brand_link_range_ = gfx::Range();
460 title_ = l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SIGNIN_PROMO_TITLE); 428 title_ = l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SIGNIN_PROMO_TITLE);
(...skipping 16 matching lines...) Expand all
477 445
478 void ManagePasswordsBubbleModel::UpdatePendingStateTitle() { 446 void ManagePasswordsBubbleModel::UpdatePendingStateTitle() {
479 title_brand_link_range_ = gfx::Range(); 447 title_brand_link_range_ = gfx::Range();
480 PasswordTitleType type = 448 PasswordTitleType type =
481 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE 449 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE
482 ? PasswordTitleType::UPDATE_PASSWORD 450 ? PasswordTitleType::UPDATE_PASSWORD
483 : (pending_password_.federation_origin.unique() 451 : (pending_password_.federation_origin.unique()
484 ? PasswordTitleType::SAVE_PASSWORD 452 ? PasswordTitleType::SAVE_PASSWORD
485 : PasswordTitleType::SAVE_ACCOUNT); 453 : PasswordTitleType::SAVE_ACCOUNT);
486 GetSavePasswordDialogTitleTextAndLinkRange( 454 GetSavePasswordDialogTitleTextAndLinkRange(
487 GetWebContents()->GetVisibleURL(), origin_, 455 GetWebContents()->GetVisibleURL(), origin_, IsSmartLockUser(GetProfile()),
488 GetSmartLockBrandingState(GetProfile()) !=
489 password_bubble_experiment::SmartLockBranding::NONE,
490 type, &title_, &title_brand_link_range_); 456 type, &title_, &title_brand_link_range_);
491 } 457 }
492 458
493 void ManagePasswordsBubbleModel::UpdateManageStateTitle() { 459 void ManagePasswordsBubbleModel::UpdateManageStateTitle() {
494 GetManagePasswordsDialogTitleText(GetWebContents()->GetVisibleURL(), origin_, 460 GetManagePasswordsDialogTitleText(GetWebContents()->GetVisibleURL(), origin_,
495 &title_); 461 &title_);
496 } 462 }
497 463
498 metrics_util::UpdatePasswordSubmissionEvent 464 metrics_util::UpdatePasswordSubmissionEvent
499 ManagePasswordsBubbleModel::GetUpdateDismissalReason( 465 ManagePasswordsBubbleModel::GetUpdateDismissalReason(
(...skipping 18 matching lines...) Expand all
518 return metrics_util::NO_UPDATE_SUBMISSION; 484 return metrics_util::NO_UPDATE_SUBMISSION;
519 } 485 }
520 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) 486 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE)
521 return metrics_util::NO_UPDATE_SUBMISSION; 487 return metrics_util::NO_UPDATE_SUBMISSION;
522 if (password_overridden_) 488 if (password_overridden_)
523 return update_events[3][behavior]; 489 return update_events[3][behavior];
524 if (ShouldShowMultipleAccountUpdateUI()) 490 if (ShouldShowMultipleAccountUpdateUI())
525 return update_events[2][behavior]; 491 return update_events[2][behavior];
526 return update_events[1][behavior]; 492 return update_events[1][behavior];
527 } 493 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698