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

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

Issue 2617543002: Create Desktop to iOS Promotion skeleton. (Closed)
Patch Set: Created 3 years, 11 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>
11 #include <string> 11 #include <string>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/metrics/histogram_macros.h" 14 #include "base/metrics/histogram_macros.h"
15 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
16 #include "base/time/default_clock.h" 16 #include "base/time/default_clock.h"
17 #include "chrome/browser/password_manager/password_store_factory.h" 17 #include "chrome/browser/password_manager/password_store_factory.h"
18 #include "chrome/browser/profiles/profile.h" 18 #include "chrome/browser/profiles/profile.h"
19 #include "chrome/browser/sync/profile_sync_service_factory.h" 19 #include "chrome/browser/sync/profile_sync_service_factory.h"
20 #include "chrome/browser/ui/desktop_ios_promotion/desktop_ios_promotion_util.h"
20 #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h" 21 #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h"
21 #include "chrome/browser/ui/passwords/passwords_model_delegate.h" 22 #include "chrome/browser/ui/passwords/passwords_model_delegate.h"
22 #include "chrome/grit/chromium_strings.h" 23 #include "chrome/grit/chromium_strings.h"
23 #include "chrome/grit/generated_resources.h" 24 #include "chrome/grit/generated_resources.h"
24 #include "components/browser_sync/profile_sync_service.h" 25 #include "components/browser_sync/profile_sync_service.h"
25 #include "components/password_manager/core/browser/password_bubble_experiment.h" 26 #include "components/password_manager/core/browser/password_bubble_experiment.h"
26 #include "components/password_manager/core/browser/password_manager_constants.h" 27 #include "components/password_manager/core/browser/password_manager_constants.h"
27 #include "components/password_manager/core/browser/password_store.h" 28 #include "components/password_manager/core/browser/password_store.h"
28 #include "components/password_manager/core/common/password_manager_pref_names.h" 29 #include "components/password_manager/core/common/password_manager_pref_names.h"
29 #include "components/password_manager/core/common/password_manager_ui.h" 30 #include "components/password_manager/core/common/password_manager_ui.h"
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 display_disposition = 276 display_disposition =
276 metrics_util::MANUAL_WITH_PASSWORD_PENDING_UPDATE; 277 metrics_util::MANUAL_WITH_PASSWORD_PENDING_UPDATE;
277 break; 278 break;
278 case password_manager::ui::MANAGE_STATE: 279 case password_manager::ui::MANAGE_STATE:
279 display_disposition = metrics_util::MANUAL_MANAGE_PASSWORDS; 280 display_disposition = metrics_util::MANUAL_MANAGE_PASSWORDS;
280 break; 281 break;
281 case password_manager::ui::CONFIRMATION_STATE: 282 case password_manager::ui::CONFIRMATION_STATE:
282 case password_manager::ui::CREDENTIAL_REQUEST_STATE: 283 case password_manager::ui::CREDENTIAL_REQUEST_STATE:
283 case password_manager::ui::AUTO_SIGNIN_STATE: 284 case password_manager::ui::AUTO_SIGNIN_STATE:
284 case password_manager::ui::CHROME_SIGN_IN_PROMO_STATE: 285 case password_manager::ui::CHROME_SIGN_IN_PROMO_STATE:
286 case password_manager::ui::CHROME_DESKTOP_IOS_PROMO_STATE:
285 case password_manager::ui::INACTIVE_STATE: 287 case password_manager::ui::INACTIVE_STATE:
286 NOTREACHED(); 288 NOTREACHED();
287 break; 289 break;
288 } 290 }
289 } else { 291 } else {
290 switch (state_) { 292 switch (state_) {
291 case password_manager::ui::PENDING_PASSWORD_STATE: 293 case password_manager::ui::PENDING_PASSWORD_STATE:
292 display_disposition = metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING; 294 display_disposition = metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING;
293 break; 295 break;
294 case password_manager::ui::PENDING_PASSWORD_UPDATE_STATE: 296 case password_manager::ui::PENDING_PASSWORD_UPDATE_STATE:
295 display_disposition = 297 display_disposition =
296 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING_UPDATE; 298 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING_UPDATE;
297 break; 299 break;
298 case password_manager::ui::CONFIRMATION_STATE: 300 case password_manager::ui::CONFIRMATION_STATE:
299 display_disposition = 301 display_disposition =
300 metrics_util::AUTOMATIC_GENERATED_PASSWORD_CONFIRMATION; 302 metrics_util::AUTOMATIC_GENERATED_PASSWORD_CONFIRMATION;
301 break; 303 break;
302 case password_manager::ui::AUTO_SIGNIN_STATE: 304 case password_manager::ui::AUTO_SIGNIN_STATE:
303 display_disposition = metrics_util::AUTOMATIC_SIGNIN_TOAST; 305 display_disposition = metrics_util::AUTOMATIC_SIGNIN_TOAST;
304 break; 306 break;
305 case password_manager::ui::MANAGE_STATE: 307 case password_manager::ui::MANAGE_STATE:
306 case password_manager::ui::CREDENTIAL_REQUEST_STATE: 308 case password_manager::ui::CREDENTIAL_REQUEST_STATE:
307 case password_manager::ui::CHROME_SIGN_IN_PROMO_STATE: 309 case password_manager::ui::CHROME_SIGN_IN_PROMO_STATE:
310 case password_manager::ui::CHROME_DESKTOP_IOS_PROMO_STATE:
308 case password_manager::ui::INACTIVE_STATE: 311 case password_manager::ui::INACTIVE_STATE:
309 NOTREACHED(); 312 NOTREACHED();
310 break; 313 break;
311 } 314 }
312 } 315 }
313 metrics_util::LogUIDisplayDisposition(display_disposition); 316 metrics_util::LogUIDisplayDisposition(display_disposition);
314 interaction_keeper_.reset(new InteractionKeeper(std::move(interaction_stats), 317 interaction_keeper_.reset(new InteractionKeeper(std::move(interaction_stats),
315 display_disposition)); 318 display_disposition));
316 319
317 delegate_->OnBubbleShown(); 320 delegate_->OnBubbleShown();
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 419
417 content::WebContents* ManagePasswordsBubbleModel::GetWebContents() const { 420 content::WebContents* ManagePasswordsBubbleModel::GetWebContents() const {
418 return delegate_ ? delegate_->GetWebContents() : nullptr; 421 return delegate_ ? delegate_->GetWebContents() : nullptr;
419 } 422 }
420 423
421 bool ManagePasswordsBubbleModel::ShouldShowMultipleAccountUpdateUI() const { 424 bool ManagePasswordsBubbleModel::ShouldShowMultipleAccountUpdateUI() const {
422 return state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE && 425 return state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE &&
423 local_credentials_.size() > 1 && !password_overridden_; 426 local_credentials_.size() > 1 && !password_overridden_;
424 } 427 }
425 428
426 bool ManagePasswordsBubbleModel::ReplaceToShowSignInPromoIfNeeded() { 429 bool ManagePasswordsBubbleModel::ReplaceToShowPromotionIfNeeded() {
427 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_); 430 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_);
428 PrefService* prefs = GetProfile()->GetPrefs(); 431 PrefService* prefs = GetProfile()->GetPrefs();
429 const browser_sync::ProfileSyncService* sync_service = 432 const browser_sync::ProfileSyncService* sync_service =
430 ProfileSyncServiceFactory::GetForProfile(GetProfile()); 433 ProfileSyncServiceFactory::GetForProfile(GetProfile());
434 // Signin promotion.
431 if (password_bubble_experiment::ShouldShowChromeSignInPasswordPromo( 435 if (password_bubble_experiment::ShouldShowChromeSignInPasswordPromo(
432 prefs, sync_service)) { 436 prefs, sync_service)) {
433 interaction_keeper_->ReportInteractions(this); 437 interaction_keeper_->ReportInteractions(this);
434 title_brand_link_range_ = gfx::Range(); 438 title_brand_link_range_ = gfx::Range();
435 title_ = l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SIGNIN_PROMO_TITLE); 439 title_ = l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SIGNIN_PROMO_TITLE);
436 state_ = password_manager::ui::CHROME_SIGN_IN_PROMO_STATE; 440 state_ = password_manager::ui::CHROME_SIGN_IN_PROMO_STATE;
437 int show_count = prefs->GetInteger( 441 int show_count = prefs->GetInteger(
438 password_manager::prefs::kNumberSignInPasswordPromoShown); 442 password_manager::prefs::kNumberSignInPasswordPromoShown);
439 show_count++; 443 show_count++;
440 prefs->SetInteger(password_manager::prefs::kNumberSignInPasswordPromoShown, 444 prefs->SetInteger(password_manager::prefs::kNumberSignInPasswordPromoShown,
441 show_count); 445 show_count);
442 interaction_keeper_->set_sign_in_promo_shown_count(show_count); 446 interaction_keeper_->set_sign_in_promo_shown_count(show_count);
443 return true; 447 return true;
444 } 448 }
449 // Desktop to mobile promotion.
450 if (desktop_ios_promotion::IsEligibleForIOSPromotion()) {
451 interaction_keeper_->ReportInteractions(this);
452 title_brand_link_range_ = gfx::Range();
453 title_ =
454 l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_DESKTOP_IOS_PROMO_TITLE);
455 state_ = password_manager::ui::CHROME_DESKTOP_IOS_PROMO_STATE;
456 // TODO(crbug.com/676655): Update impression count.
457 // TODO(crbug.com/676655): Add required logging.
458 return true;
459 }
445 return false; 460 return false;
446 } 461 }
447 462
448 void ManagePasswordsBubbleModel::SetClockForTesting( 463 void ManagePasswordsBubbleModel::SetClockForTesting(
449 std::unique_ptr<base::Clock> clock) { 464 std::unique_ptr<base::Clock> clock) {
450 interaction_keeper_->SetClockForTesting(std::move(clock)); 465 interaction_keeper_->SetClockForTesting(std::move(clock));
451 } 466 }
452 467
453 void ManagePasswordsBubbleModel::UpdatePendingStateTitle() { 468 void ManagePasswordsBubbleModel::UpdatePendingStateTitle() {
454 title_brand_link_range_ = gfx::Range(); 469 title_brand_link_range_ = gfx::Range();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 return metrics_util::NO_UPDATE_SUBMISSION; 506 return metrics_util::NO_UPDATE_SUBMISSION;
492 } 507 }
493 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) 508 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE)
494 return metrics_util::NO_UPDATE_SUBMISSION; 509 return metrics_util::NO_UPDATE_SUBMISSION;
495 if (password_overridden_) 510 if (password_overridden_)
496 return update_events[3][behavior]; 511 return update_events[3][behavior];
497 if (ShouldShowMultipleAccountUpdateUI()) 512 if (ShouldShowMultipleAccountUpdateUI())
498 return update_events[2][behavior]; 513 return update_events[2][behavior];
499 return update_events[1][behavior]; 514 return update_events[1][behavior];
500 } 515 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698