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

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

Issue 2202373002: Ignore OnBubbleHidden() event when the password bubble is reopened. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: delete proxy Created 4 years, 4 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 23 matching lines...) Expand all
34 namespace metrics_util = password_manager::metrics_util; 34 namespace metrics_util = password_manager::metrics_util;
35 35
36 namespace { 36 namespace {
37 37
38 Profile* GetProfileFromWebContents(content::WebContents* web_contents) { 38 Profile* GetProfileFromWebContents(content::WebContents* web_contents) {
39 if (!web_contents) 39 if (!web_contents)
40 return nullptr; 40 return nullptr;
41 return Profile::FromBrowserContext(web_contents->GetBrowserContext()); 41 return Profile::FromBrowserContext(web_contents->GetBrowserContext());
42 } 42 }
43 43
44 void CleanStatisticsForSite(content::WebContents* web_contents, 44 void CleanStatisticsForSite(Profile* profile, const GURL& origin) {
45 const GURL& origin) { 45 DCHECK(profile);
46 DCHECK(web_contents);
47 Profile* profile =
48 Profile::FromBrowserContext(web_contents->GetBrowserContext());
49 password_manager::PasswordStore* password_store = 46 password_manager::PasswordStore* password_store =
50 PasswordStoreFactory::GetForProfile(profile, 47 PasswordStoreFactory::GetForProfile(profile,
51 ServiceAccessType::IMPLICIT_ACCESS) 48 ServiceAccessType::IMPLICIT_ACCESS)
52 .get(); 49 .get();
53 password_store->RemoveSiteStats(origin.GetOrigin()); 50 password_store->RemoveSiteStats(origin.GetOrigin());
54 } 51 }
55 52
56 ScopedVector<const autofill::PasswordForm> DeepCopyForms( 53 ScopedVector<const autofill::PasswordForm> DeepCopyForms(
57 const std::vector<const autofill::PasswordForm*>& forms) { 54 const std::vector<const autofill::PasswordForm*>& forms) {
58 ScopedVector<const autofill::PasswordForm> result; 55 ScopedVector<const autofill::PasswordForm> result;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 } 163 }
167 } 164 }
168 } 165 }
169 166
170 if (model->state() == password_manager::ui::CHROME_SIGN_IN_PROMO_STATE) { 167 if (model->state() == password_manager::ui::CHROME_SIGN_IN_PROMO_STATE) {
171 metrics_util::LogAutoSigninPromoUserAction(sign_in_promo_dismissal_reason_); 168 metrics_util::LogAutoSigninPromoUserAction(sign_in_promo_dismissal_reason_);
172 if (sign_in_promo_dismissal_reason_ == 169 if (sign_in_promo_dismissal_reason_ ==
173 password_manager::metrics_util::CHROME_SIGNIN_OK || 170 password_manager::metrics_util::CHROME_SIGNIN_OK ||
174 sign_in_promo_dismissal_reason_ == 171 sign_in_promo_dismissal_reason_ ==
175 password_manager::metrics_util::CHROME_SIGNIN_CANCEL) { 172 password_manager::metrics_util::CHROME_SIGNIN_CANCEL) {
176 DCHECK(model->web_contents()); 173 DCHECK(model->delegate_);
177 int show_count = model->GetProfile()->GetPrefs()->GetInteger( 174 int show_count = model->GetProfile()->GetPrefs()->GetInteger(
178 password_manager::prefs::kNumberSignInPasswordPromoShown); 175 password_manager::prefs::kNumberSignInPasswordPromoShown);
179 UMA_HISTOGRAM_COUNTS_100("PasswordManager.SignInPromoCountTilClick", 176 UMA_HISTOGRAM_COUNTS_100("PasswordManager.SignInPromoCountTilClick",
180 show_count); 177 show_count);
181 } 178 }
182 } else if (model->state() != 179 } else if (model->state() !=
183 password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { 180 password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
184 // We have separate metrics for the Update bubble so do not record dismissal 181 // We have separate metrics for the Update bubble so do not record dismissal
185 // reason for it. 182 // reason for it.
186 metrics_util::LogUIDismissalReason(dismissal_reason_); 183 metrics_util::LogUIDismissalReason(dismissal_reason_);
187 } 184 }
188 185
189 if (model->state() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || 186 if (model->state() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE ||
190 model->state() == password_manager::ui::PENDING_PASSWORD_STATE) { 187 model->state() == password_manager::ui::PENDING_PASSWORD_STATE) {
191 if (update_password_submission_event_ == 188 if (update_password_submission_event_ ==
192 metrics_util::NO_UPDATE_SUBMISSION) { 189 metrics_util::NO_UPDATE_SUBMISSION) {
193 update_password_submission_event_ = 190 update_password_submission_event_ =
194 model->GetUpdateDismissalReason(NO_INTERACTION); 191 model->GetUpdateDismissalReason(NO_INTERACTION);
195 PasswordsModelDelegate* delegate = 192 if (model->delegate_ &&
196 model->web_contents()
197 ? PasswordsModelDelegateFromWebContents(model->web_contents())
198 : nullptr;
199 if (delegate &&
200 model->state() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) 193 model->state() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE)
201 delegate->OnNoInteractionOnUpdate(); 194 model->delegate_->OnNoInteractionOnUpdate();
202 } 195 }
203 196
204 if (update_password_submission_event_ != metrics_util::NO_UPDATE_SUBMISSION) 197 if (update_password_submission_event_ != metrics_util::NO_UPDATE_SUBMISSION)
205 LogUpdatePasswordSubmissionEvent(update_password_submission_event_); 198 LogUpdatePasswordSubmissionEvent(update_password_submission_event_);
206 } 199 }
207 } 200 }
208 201
209 ManagePasswordsBubbleModel::ManagePasswordsBubbleModel( 202 ManagePasswordsBubbleModel::ManagePasswordsBubbleModel(
210 content::WebContents* web_contents, 203 base::WeakPtr<PasswordsModelDelegate> delegate,
211 DisplayReason display_reason) 204 DisplayReason display_reason)
212 : content::WebContentsObserver(web_contents), 205 : password_overridden_(false),
213 password_overridden_(false) { 206 delegate_(std::move(delegate)) {
214 PasswordsModelDelegate* delegate = 207 origin_ = delegate_->GetOrigin();
215 PasswordsModelDelegateFromWebContents(web_contents); 208 state_ = delegate_->GetState();
216
217 origin_ = delegate->GetOrigin();
218 state_ = delegate->GetState();
219 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE || 209 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE ||
220 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { 210 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
221 pending_password_ = delegate->GetPendingPassword(); 211 pending_password_ = delegate_->GetPendingPassword();
222 local_credentials_ = DeepCopyForms(delegate->GetCurrentForms()); 212 local_credentials_ = DeepCopyForms(delegate_->GetCurrentForms());
223 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) { 213 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) {
224 // We don't need anything. 214 // We don't need anything.
225 } else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) { 215 } else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) {
226 pending_password_ = delegate->GetPendingPassword(); 216 pending_password_ = delegate_->GetPendingPassword();
227 } else { 217 } else {
228 local_credentials_ = DeepCopyForms(delegate->GetCurrentForms()); 218 local_credentials_ = DeepCopyForms(delegate_->GetCurrentForms());
229 } 219 }
230 220
231 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE || 221 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE ||
232 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { 222 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
233 UpdatePendingStateTitle(); 223 UpdatePendingStateTitle();
234 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) { 224 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) {
235 title_ = 225 title_ =
236 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TITLE); 226 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TITLE);
237 } else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) { 227 } else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) {
238 // There is no title. 228 // There is no title.
(...skipping 18 matching lines...) Expand all
257 size_t offset; 247 size_t offset;
258 save_confirmation_text_ = 248 save_confirmation_text_ =
259 l10n_util::GetStringFUTF16( 249 l10n_util::GetStringFUTF16(
260 confirmation_text_id, save_confirmation_link, &offset); 250 confirmation_text_id, save_confirmation_link, &offset);
261 save_confirmation_link_range_ = 251 save_confirmation_link_range_ =
262 gfx::Range(offset, offset + save_confirmation_link.length()); 252 gfx::Range(offset, offset + save_confirmation_link.length());
263 } else if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) { 253 } else if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) {
264 interaction_stats.origin_domain = origin_.GetOrigin(); 254 interaction_stats.origin_domain = origin_.GetOrigin();
265 interaction_stats.username_value = pending_password_.username_value; 255 interaction_stats.username_value = pending_password_.username_value;
266 password_manager::InteractionsStats* stats = 256 password_manager::InteractionsStats* stats =
267 delegate->GetCurrentInteractionStats(); 257 delegate_->GetCurrentInteractionStats();
268 if (stats) { 258 if (stats) {
269 DCHECK_EQ(interaction_stats.username_value, stats->username_value); 259 DCHECK_EQ(interaction_stats.username_value, stats->username_value);
270 DCHECK_EQ(interaction_stats.origin_domain, stats->origin_domain); 260 DCHECK_EQ(interaction_stats.origin_domain, stats->origin_domain);
271 interaction_stats.dismissal_count = stats->dismissal_count; 261 interaction_stats.dismissal_count = stats->dismissal_count;
272 } 262 }
273 } else if (state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { 263 } else if (state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
274 password_overridden_ = delegate->IsPasswordOverridden(); 264 password_overridden_ = delegate_->IsPasswordOverridden();
275 } 265 }
276 266
277 manage_link_ = 267 manage_link_ =
278 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK); 268 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK);
279 269
280 password_manager::metrics_util::UIDisplayDisposition display_disposition = 270 password_manager::metrics_util::UIDisplayDisposition display_disposition =
281 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING; 271 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING;
282 if (display_reason == USER_ACTION) { 272 if (display_reason == USER_ACTION) {
283 switch (state_) { 273 switch (state_) {
284 case password_manager::ui::PENDING_PASSWORD_STATE: 274 case password_manager::ui::PENDING_PASSWORD_STATE:
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 case password_manager::ui::CHROME_SIGN_IN_PROMO_STATE: 310 case password_manager::ui::CHROME_SIGN_IN_PROMO_STATE:
321 case password_manager::ui::INACTIVE_STATE: 311 case password_manager::ui::INACTIVE_STATE:
322 NOTREACHED(); 312 NOTREACHED();
323 break; 313 break;
324 } 314 }
325 } 315 }
326 metrics_util::LogUIDisplayDisposition(display_disposition); 316 metrics_util::LogUIDisplayDisposition(display_disposition);
327 interaction_keeper_.reset(new InteractionKeeper(std::move(interaction_stats), 317 interaction_keeper_.reset(new InteractionKeeper(std::move(interaction_stats),
328 display_disposition)); 318 display_disposition));
329 319
330 delegate->OnBubbleShown(); 320 delegate_->OnBubbleShown();
331 } 321 }
332 322
333 ManagePasswordsBubbleModel::~ManagePasswordsBubbleModel() { 323 ManagePasswordsBubbleModel::~ManagePasswordsBubbleModel() {
334 interaction_keeper_->ReportInteractions(this); 324 interaction_keeper_->ReportInteractions(this);
335 // web_contents() is nullptr if the tab is closing. 325 if (delegate_)
336 PasswordsModelDelegate* delegate = 326 delegate_->OnBubbleHidden();
337 web_contents() ? PasswordsModelDelegateFromWebContents(web_contents())
338 : nullptr;
339 if (delegate)
340 delegate->OnBubbleHidden();
341 } 327 }
342 328
343 void ManagePasswordsBubbleModel::OnNeverForThisSiteClicked() { 329 void ManagePasswordsBubbleModel::OnNeverForThisSiteClicked() {
344 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_); 330 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_);
345 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_NEVER); 331 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_NEVER);
346 interaction_keeper_->set_update_password_submission_event( 332 interaction_keeper_->set_update_password_submission_event(
347 GetUpdateDismissalReason(NOPE_CLICKED)); 333 GetUpdateDismissalReason(NOPE_CLICKED));
348 CleanStatisticsForSite(web_contents(), origin_); 334 CleanStatisticsForSite(GetProfile(), origin_);
349 PasswordsModelDelegateFromWebContents(web_contents())->NeverSavePassword(); 335 delegate_->NeverSavePassword();
350 } 336 }
351 337
352 void ManagePasswordsBubbleModel::OnSaveClicked() { 338 void ManagePasswordsBubbleModel::OnSaveClicked() {
353 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_); 339 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_);
354 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_SAVE); 340 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_SAVE);
355 interaction_keeper_->set_update_password_submission_event( 341 interaction_keeper_->set_update_password_submission_event(
356 GetUpdateDismissalReason(UPDATE_CLICKED)); 342 GetUpdateDismissalReason(UPDATE_CLICKED));
357 CleanStatisticsForSite(web_contents(), origin_); 343 CleanStatisticsForSite(GetProfile(), origin_);
358 PasswordsModelDelegateFromWebContents(web_contents())->SavePassword(); 344 delegate_->SavePassword();
359 } 345 }
360 346
361 void ManagePasswordsBubbleModel::OnNopeUpdateClicked() { 347 void ManagePasswordsBubbleModel::OnNopeUpdateClicked() {
362 interaction_keeper_->set_update_password_submission_event( 348 interaction_keeper_->set_update_password_submission_event(
363 GetUpdateDismissalReason(NOPE_CLICKED)); 349 GetUpdateDismissalReason(NOPE_CLICKED));
364 PasswordsModelDelegateFromWebContents(web_contents())->OnNopeUpdateClicked(); 350 delegate_->OnNopeUpdateClicked();
365 } 351 }
366 352
367 void ManagePasswordsBubbleModel::OnUpdateClicked( 353 void ManagePasswordsBubbleModel::OnUpdateClicked(
368 const autofill::PasswordForm& password_form) { 354 const autofill::PasswordForm& password_form) {
369 interaction_keeper_->set_update_password_submission_event( 355 interaction_keeper_->set_update_password_submission_event(
370 GetUpdateDismissalReason(UPDATE_CLICKED)); 356 GetUpdateDismissalReason(UPDATE_CLICKED));
371 PasswordsModelDelegateFromWebContents(web_contents())->UpdatePassword( 357 delegate_->UpdatePassword(password_form);
372 password_form);
373 } 358 }
374 359
375 void ManagePasswordsBubbleModel::OnDoneClicked() { 360 void ManagePasswordsBubbleModel::OnDoneClicked() {
376 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_DONE); 361 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_DONE);
377 } 362 }
378 363
379 // TODO(gcasto): Is it worth having this be separate from OnDoneClicked()? 364 // TODO(gcasto): Is it worth having this be separate from OnDoneClicked()?
380 // User intent is pretty similar in both cases. 365 // User intent is pretty similar in both cases.
381 void ManagePasswordsBubbleModel::OnOKClicked() { 366 void ManagePasswordsBubbleModel::OnOKClicked() {
382 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_OK); 367 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_OK);
383 } 368 }
384 369
385 void ManagePasswordsBubbleModel::OnManageLinkClicked() { 370 void ManagePasswordsBubbleModel::OnManageLinkClicked() {
386 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_MANAGE); 371 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_MANAGE);
387 if (GetSmartLockBrandingState(GetProfile()) == 372 if (GetSmartLockBrandingState(GetProfile()) ==
388 password_bubble_experiment::SmartLockBranding::FULL) { 373 password_bubble_experiment::SmartLockBranding::FULL) {
389 PasswordsModelDelegateFromWebContents(web_contents()) 374 delegate_->NavigateToExternalPasswordManager();
390 ->NavigateToExternalPasswordManager();
391 } else { 375 } else {
392 PasswordsModelDelegateFromWebContents(web_contents()) 376 delegate_->NavigateToPasswordManagerSettingsPage();
393 ->NavigateToPasswordManagerSettingsPage();
394 } 377 }
395 } 378 }
396 379
397 void ManagePasswordsBubbleModel::OnBrandLinkClicked() { 380 void ManagePasswordsBubbleModel::OnBrandLinkClicked() {
398 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_BRAND_NAME); 381 interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_BRAND_NAME);
399 PasswordsModelDelegateFromWebContents(web_contents()) 382 delegate_->NavigateToSmartLockHelpPage();
400 ->NavigateToSmartLockHelpPage();
401 } 383 }
402 384
403 void ManagePasswordsBubbleModel::OnAutoSignInToastTimeout() { 385 void ManagePasswordsBubbleModel::OnAutoSignInToastTimeout() {
404 interaction_keeper_->set_dismissal_reason( 386 interaction_keeper_->set_dismissal_reason(
405 metrics_util::AUTO_SIGNIN_TOAST_TIMEOUT); 387 metrics_util::AUTO_SIGNIN_TOAST_TIMEOUT);
406 } 388 }
407 389
408 void ManagePasswordsBubbleModel::OnPasswordAction( 390 void ManagePasswordsBubbleModel::OnPasswordAction(
409 const autofill::PasswordForm& password_form, 391 const autofill::PasswordForm& password_form,
410 PasswordAction action) { 392 PasswordAction action) {
411 Profile* profile = GetProfile(); 393 Profile* profile = GetProfile();
412 if (!profile) 394 if (!profile)
413 return; 395 return;
414 password_manager::PasswordStore* password_store = 396 password_manager::PasswordStore* password_store =
415 PasswordStoreFactory::GetForProfile( 397 PasswordStoreFactory::GetForProfile(
416 profile, ServiceAccessType::EXPLICIT_ACCESS).get(); 398 profile, ServiceAccessType::EXPLICIT_ACCESS).get();
417 DCHECK(password_store); 399 DCHECK(password_store);
418 if (action == REMOVE_PASSWORD) 400 if (action == REMOVE_PASSWORD)
419 password_store->RemoveLogin(password_form); 401 password_store->RemoveLogin(password_form);
420 else 402 else
421 password_store->AddLogin(password_form); 403 password_store->AddLogin(password_form);
422 } 404 }
423 405
424 void ManagePasswordsBubbleModel::OnSignInToChromeClicked() { 406 void ManagePasswordsBubbleModel::OnSignInToChromeClicked() {
425 interaction_keeper_->set_sign_in_promo_dismissal_reason( 407 interaction_keeper_->set_sign_in_promo_dismissal_reason(
426 metrics_util::CHROME_SIGNIN_OK); 408 metrics_util::CHROME_SIGNIN_OK);
427 GetProfile()->GetPrefs()->SetBoolean( 409 GetProfile()->GetPrefs()->SetBoolean(
428 password_manager::prefs::kWasSignInPasswordPromoClicked, true); 410 password_manager::prefs::kWasSignInPasswordPromoClicked, true);
429 PasswordsModelDelegateFromWebContents(web_contents()) 411 delegate_->NavigateToChromeSignIn();
430 ->NavigateToChromeSignIn();
431 } 412 }
432 413
433 void ManagePasswordsBubbleModel::OnSkipSignInClicked() { 414 void ManagePasswordsBubbleModel::OnSkipSignInClicked() {
434 interaction_keeper_->set_sign_in_promo_dismissal_reason( 415 interaction_keeper_->set_sign_in_promo_dismissal_reason(
435 metrics_util::CHROME_SIGNIN_CANCEL); 416 metrics_util::CHROME_SIGNIN_CANCEL);
436 GetProfile()->GetPrefs()->SetBoolean( 417 GetProfile()->GetPrefs()->SetBoolean(
437 password_manager::prefs::kWasSignInPasswordPromoClicked, true); 418 password_manager::prefs::kWasSignInPasswordPromoClicked, true);
438 } 419 }
439 420
440 Profile* ManagePasswordsBubbleModel::GetProfile() const { 421 Profile* ManagePasswordsBubbleModel::GetProfile() const {
441 return GetProfileFromWebContents(web_contents()); 422 return GetProfileFromWebContents(GetWebContents());
423 }
424
425 content::WebContents* ManagePasswordsBubbleModel::GetWebContents() const {
426 return delegate_ ? delegate_->GetWebContents() : nullptr;
442 } 427 }
443 428
444 bool ManagePasswordsBubbleModel::ShouldShowMultipleAccountUpdateUI() const { 429 bool ManagePasswordsBubbleModel::ShouldShowMultipleAccountUpdateUI() const {
445 return state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE && 430 return state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE &&
446 local_credentials_.size() > 1 && !password_overridden_; 431 local_credentials_.size() > 1 && !password_overridden_;
447 } 432 }
448 433
449 bool ManagePasswordsBubbleModel::ShouldShowGoogleSmartLockWelcome() const { 434 bool ManagePasswordsBubbleModel::ShouldShowGoogleSmartLockWelcome() const {
450 Profile* profile = GetProfile(); 435 Profile* profile = GetProfile();
451 if (GetSmartLockBrandingState(profile) == 436 if (GetSmartLockBrandingState(profile) ==
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 469
485 void ManagePasswordsBubbleModel::UpdatePendingStateTitle() { 470 void ManagePasswordsBubbleModel::UpdatePendingStateTitle() {
486 title_brand_link_range_ = gfx::Range(); 471 title_brand_link_range_ = gfx::Range();
487 PasswordTittleType type = 472 PasswordTittleType type =
488 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE 473 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE
489 ? PasswordTittleType::UPDATE_PASSWORD 474 ? PasswordTittleType::UPDATE_PASSWORD
490 : (pending_password_.federation_origin.unique() 475 : (pending_password_.federation_origin.unique()
491 ? PasswordTittleType::SAVE_PASSWORD 476 ? PasswordTittleType::SAVE_PASSWORD
492 : PasswordTittleType::SAVE_ACCOUNT); 477 : PasswordTittleType::SAVE_ACCOUNT);
493 GetSavePasswordDialogTitleTextAndLinkRange( 478 GetSavePasswordDialogTitleTextAndLinkRange(
494 web_contents()->GetVisibleURL(), origin_, 479 GetWebContents()->GetVisibleURL(), origin_,
495 GetSmartLockBrandingState(GetProfile()) != 480 GetSmartLockBrandingState(GetProfile()) !=
496 password_bubble_experiment::SmartLockBranding::NONE, 481 password_bubble_experiment::SmartLockBranding::NONE,
497 type, &title_, &title_brand_link_range_); 482 type, &title_, &title_brand_link_range_);
498 } 483 }
499 484
500 void ManagePasswordsBubbleModel::UpdateManageStateTitle() { 485 void ManagePasswordsBubbleModel::UpdateManageStateTitle() {
501 GetManagePasswordsDialogTitleText(web_contents()->GetVisibleURL(), origin_, 486 GetManagePasswordsDialogTitleText(GetWebContents()->GetVisibleURL(), origin_,
502 &title_); 487 &title_);
503 } 488 }
504 489
505 metrics_util::UpdatePasswordSubmissionEvent 490 metrics_util::UpdatePasswordSubmissionEvent
506 ManagePasswordsBubbleModel::GetUpdateDismissalReason( 491 ManagePasswordsBubbleModel::GetUpdateDismissalReason(
507 UserBehaviorOnUpdateBubble behavior) const { 492 UserBehaviorOnUpdateBubble behavior) const {
508 static const metrics_util::UpdatePasswordSubmissionEvent update_events[4][3] = 493 static const metrics_util::UpdatePasswordSubmissionEvent update_events[4][3] =
509 {{metrics_util::NO_ACCOUNTS_CLICKED_UPDATE, 494 {{metrics_util::NO_ACCOUNTS_CLICKED_UPDATE,
510 metrics_util::NO_ACCOUNTS_CLICKED_NOPE, 495 metrics_util::NO_ACCOUNTS_CLICKED_NOPE,
511 metrics_util::NO_ACCOUNTS_NO_INTERACTION}, 496 metrics_util::NO_ACCOUNTS_NO_INTERACTION},
(...skipping 13 matching lines...) Expand all
525 return metrics_util::NO_UPDATE_SUBMISSION; 510 return metrics_util::NO_UPDATE_SUBMISSION;
526 } 511 }
527 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) 512 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE)
528 return metrics_util::NO_UPDATE_SUBMISSION; 513 return metrics_util::NO_UPDATE_SUBMISSION;
529 if (password_overridden_) 514 if (password_overridden_)
530 return update_events[3][behavior]; 515 return update_events[3][behavior];
531 if (ShouldShowMultipleAccountUpdateUI()) 516 if (ShouldShowMultipleAccountUpdateUI())
532 return update_events[2][behavior]; 517 return update_events[2][behavior];
533 return update_events[1][behavior]; 518 return update_events[1][behavior];
534 } 519 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698