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

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

Issue 2588263003: Reland: Remove Finch support for PasswordBranding (Closed)
Patch Set: Rebased only Created 3 years, 12 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 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 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 } else if (state_ == password_manager::ui::MANAGE_STATE) { 249 } else if (state_ == password_manager::ui::MANAGE_STATE) {
256 local_credentials_ = DeepCopyForms(delegate_->GetCurrentForms()); 250 local_credentials_ = DeepCopyForms(delegate_->GetCurrentForms());
257 UpdateManageStateTitle(); 251 UpdateManageStateTitle();
258 manage_link_ = 252 manage_link_ =
259 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK); 253 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK);
260 } 254 }
261 255
262 if (state_ == password_manager::ui::CONFIRMATION_STATE) { 256 if (state_ == password_manager::ui::CONFIRMATION_STATE) {
263 base::string16 save_confirmation_link = 257 base::string16 save_confirmation_link =
264 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_LINK); 258 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_LINK);
265 int confirmation_text_id = IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TEXT;
266 if (GetSmartLockBrandingState(GetProfile()) ==
267 password_bubble_experiment::SmartLockBranding::FULL) {
268 std::string management_hostname =
269 GURL(password_manager::kPasswordManagerAccountDashboardURL).host();
270 save_confirmation_link = base::UTF8ToUTF16(management_hostname);
271 confirmation_text_id =
272 IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_SMART_LOCK_TEXT;
273 }
274
275 size_t offset; 259 size_t offset;
276 save_confirmation_text_ = 260 save_confirmation_text_ =
277 l10n_util::GetStringFUTF16( 261 l10n_util::GetStringFUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TEXT,
278 confirmation_text_id, save_confirmation_link, &offset); 262 save_confirmation_link, &offset);
279 save_confirmation_link_range_ = 263 save_confirmation_link_range_ =
280 gfx::Range(offset, offset + save_confirmation_link.length()); 264 gfx::Range(offset, offset + save_confirmation_link.length());
281 } 265 }
282 266
283 password_manager::metrics_util::UIDisplayDisposition display_disposition = 267 password_manager::metrics_util::UIDisplayDisposition display_disposition =
284 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING; 268 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING;
285 if (display_reason == USER_ACTION) { 269 if (display_reason == USER_ACTION) {
286 switch (state_) { 270 switch (state_) {
287 case password_manager::ui::PENDING_PASSWORD_STATE: 271 case password_manager::ui::PENDING_PASSWORD_STATE:
288 display_disposition = metrics_util::MANUAL_WITH_PASSWORD_PENDING; 272 display_disposition = metrics_util::MANUAL_WITH_PASSWORD_PENDING;
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 } 359 }
376 360
377 // TODO(gcasto): Is it worth having this be separate from OnDoneClicked()? 361 // TODO(gcasto): Is it worth having this be separate from OnDoneClicked()?
378 // User intent is pretty similar in both cases. 362 // User intent is pretty similar in both cases.
379 void ManagePasswordsBubbleModel::OnOKClicked() { 363 void ManagePasswordsBubbleModel::OnOKClicked() {
380 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_OK); 364 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_OK);
381 } 365 }
382 366
383 void ManagePasswordsBubbleModel::OnManageLinkClicked() { 367 void ManagePasswordsBubbleModel::OnManageLinkClicked() {
384 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_MANAGE); 368 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_MANAGE);
385 if (GetSmartLockBrandingState(GetProfile()) == 369 delegate_->NavigateToPasswordManagerSettingsPage();
386 password_bubble_experiment::SmartLockBranding::FULL) {
387 delegate_->NavigateToExternalPasswordManager();
388 } else {
389 delegate_->NavigateToPasswordManagerSettingsPage();
390 }
391 } 370 }
392 371
393 void ManagePasswordsBubbleModel::OnBrandLinkClicked() { 372 void ManagePasswordsBubbleModel::OnBrandLinkClicked() {
394 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_BRAND_NAME); 373 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_BRAND_NAME);
395 delegate_->NavigateToSmartLockHelpPage(); 374 delegate_->NavigateToSmartLockHelpPage();
396 } 375 }
397 376
398 void ManagePasswordsBubbleModel::OnAutoSignInToastTimeout() { 377 void ManagePasswordsBubbleModel::OnAutoSignInToastTimeout() {
399 interaction_keeper_->set_dismissal_reason( 378 interaction_keeper_->set_dismissal_reason(
400 metrics_util::AUTO_SIGNIN_TOAST_TIMEOUT); 379 metrics_util::AUTO_SIGNIN_TOAST_TIMEOUT);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 416
438 content::WebContents* ManagePasswordsBubbleModel::GetWebContents() const { 417 content::WebContents* ManagePasswordsBubbleModel::GetWebContents() const {
439 return delegate_ ? delegate_->GetWebContents() : nullptr; 418 return delegate_ ? delegate_->GetWebContents() : nullptr;
440 } 419 }
441 420
442 bool ManagePasswordsBubbleModel::ShouldShowMultipleAccountUpdateUI() const { 421 bool ManagePasswordsBubbleModel::ShouldShowMultipleAccountUpdateUI() const {
443 return state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE && 422 return state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE &&
444 local_credentials_.size() > 1 && !password_overridden_; 423 local_credentials_.size() > 1 && !password_overridden_;
445 } 424 }
446 425
447 bool ManagePasswordsBubbleModel::ShouldShowGoogleSmartLockWelcome() const {
448 Profile* profile = GetProfile();
449 if (GetSmartLockBrandingState(profile) ==
450 password_bubble_experiment::SmartLockBranding::FULL) {
451 PrefService* prefs = profile->GetPrefs();
452 return !prefs->GetBoolean(
453 password_manager::prefs::kWasSavePrompFirstRunExperienceShown);
454 }
455 return false;
456 }
457
458 bool ManagePasswordsBubbleModel::ReplaceToShowSignInPromoIfNeeded() { 426 bool ManagePasswordsBubbleModel::ReplaceToShowSignInPromoIfNeeded() {
459 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_); 427 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_);
460 PrefService* prefs = GetProfile()->GetPrefs(); 428 PrefService* prefs = GetProfile()->GetPrefs();
461 const browser_sync::ProfileSyncService* sync_service = 429 const browser_sync::ProfileSyncService* sync_service =
462 ProfileSyncServiceFactory::GetForProfile(GetProfile()); 430 ProfileSyncServiceFactory::GetForProfile(GetProfile());
463 if (password_bubble_experiment::ShouldShowChromeSignInPasswordPromo( 431 if (password_bubble_experiment::ShouldShowChromeSignInPasswordPromo(
464 prefs, sync_service)) { 432 prefs, sync_service)) {
465 interaction_keeper_->ReportInteractions(this); 433 interaction_keeper_->ReportInteractions(this);
466 title_brand_link_range_ = gfx::Range(); 434 title_brand_link_range_ = gfx::Range();
467 title_ = l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SIGNIN_PROMO_TITLE); 435 title_ = l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SIGNIN_PROMO_TITLE);
(...skipping 16 matching lines...) Expand all
484 452
485 void ManagePasswordsBubbleModel::UpdatePendingStateTitle() { 453 void ManagePasswordsBubbleModel::UpdatePendingStateTitle() {
486 title_brand_link_range_ = gfx::Range(); 454 title_brand_link_range_ = gfx::Range();
487 PasswordTitleType type = 455 PasswordTitleType type =
488 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE 456 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE
489 ? PasswordTitleType::UPDATE_PASSWORD 457 ? PasswordTitleType::UPDATE_PASSWORD
490 : (pending_password_.federation_origin.unique() 458 : (pending_password_.federation_origin.unique()
491 ? PasswordTitleType::SAVE_PASSWORD 459 ? PasswordTitleType::SAVE_PASSWORD
492 : PasswordTitleType::SAVE_ACCOUNT); 460 : PasswordTitleType::SAVE_ACCOUNT);
493 GetSavePasswordDialogTitleTextAndLinkRange( 461 GetSavePasswordDialogTitleTextAndLinkRange(
494 GetWebContents()->GetVisibleURL(), origin_, 462 GetWebContents()->GetVisibleURL(), origin_, IsSmartLockUser(GetProfile()),
495 GetSmartLockBrandingState(GetProfile()) !=
496 password_bubble_experiment::SmartLockBranding::NONE,
497 type, &title_, &title_brand_link_range_); 463 type, &title_, &title_brand_link_range_);
498 } 464 }
499 465
500 void ManagePasswordsBubbleModel::UpdateManageStateTitle() { 466 void ManagePasswordsBubbleModel::UpdateManageStateTitle() {
501 GetManagePasswordsDialogTitleText(GetWebContents()->GetVisibleURL(), origin_, 467 GetManagePasswordsDialogTitleText(GetWebContents()->GetVisibleURL(), origin_,
502 &title_); 468 &title_);
503 } 469 }
504 470
505 metrics_util::UpdatePasswordSubmissionEvent 471 metrics_util::UpdatePasswordSubmissionEvent
506 ManagePasswordsBubbleModel::GetUpdateDismissalReason( 472 ManagePasswordsBubbleModel::GetUpdateDismissalReason(
(...skipping 18 matching lines...) Expand all
525 return metrics_util::NO_UPDATE_SUBMISSION; 491 return metrics_util::NO_UPDATE_SUBMISSION;
526 } 492 }
527 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) 493 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE)
528 return metrics_util::NO_UPDATE_SUBMISSION; 494 return metrics_util::NO_UPDATE_SUBMISSION;
529 if (password_overridden_) 495 if (password_overridden_)
530 return update_events[3][behavior]; 496 return update_events[3][behavior];
531 if (ShouldShowMultipleAccountUpdateUI()) 497 if (ShouldShowMultipleAccountUpdateUI())
532 return update_events[2][behavior]; 498 return update_events[2][behavior];
533 return update_events[1][behavior]; 499 return update_events[1][behavior];
534 } 500 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698