Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/views/profiles/profile_chooser_view.h" | 5 #include "chrome/browser/ui/views/profiles/profile_chooser_view.h" |
| 6 | 6 |
| 7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/browser/browser_process.h" | 9 #include "chrome/browser/browser_process.h" |
| 10 #include "chrome/browser/first_run/first_run.h" | |
| 10 #include "chrome/browser/lifetime/application_lifetime.h" | 11 #include "chrome/browser/lifetime/application_lifetime.h" |
| 11 #include "chrome/browser/profiles/profile_avatar_icon_util.h" | 12 #include "chrome/browser/profiles/profile_avatar_icon_util.h" |
| 12 #include "chrome/browser/profiles/profile_info_cache.h" | 13 #include "chrome/browser/profiles/profile_info_cache.h" |
| 13 #include "chrome/browser/profiles/profile_manager.h" | 14 #include "chrome/browser/profiles/profile_manager.h" |
| 14 #include "chrome/browser/profiles/profile_metrics.h" | 15 #include "chrome/browser/profiles/profile_metrics.h" |
| 15 #include "chrome/browser/profiles/profile_window.h" | 16 #include "chrome/browser/profiles/profile_window.h" |
| 16 #include "chrome/browser/profiles/profiles_state.h" | 17 #include "chrome/browser/profiles/profiles_state.h" |
| 17 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" | 18 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" |
| 18 #include "chrome/browser/signin/signin_header_helper.h" | 19 #include "chrome/browser/signin/signin_header_helper.h" |
| 19 #include "chrome/browser/signin/signin_manager_factory.h" | 20 #include "chrome/browser/signin/signin_manager_factory.h" |
| 20 #include "chrome/browser/signin/signin_promo.h" | 21 #include "chrome/browser/signin/signin_promo.h" |
| 21 #include "chrome/browser/ui/browser.h" | 22 #include "chrome/browser/ui/browser.h" |
| 22 #include "chrome/browser/ui/browser_commands.h" | 23 #include "chrome/browser/ui/browser_commands.h" |
| 23 #include "chrome/browser/ui/browser_dialogs.h" | 24 #include "chrome/browser/ui/browser_dialogs.h" |
| 24 #include "chrome/browser/ui/chrome_pages.h" | 25 #include "chrome/browser/ui/chrome_pages.h" |
| 25 #include "chrome/browser/ui/singleton_tabs.h" | 26 #include "chrome/browser/ui/singleton_tabs.h" |
| 26 #include "chrome/browser/ui/views/profiles/user_manager_view.h" | 27 #include "chrome/browser/ui/views/profiles/user_manager_view.h" |
| 28 #include "chrome/browser/ui/webui/signin/login_ui_service.h" | |
| 29 #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" | |
| 27 #include "chrome/common/pref_names.h" | 30 #include "chrome/common/pref_names.h" |
| 28 #include "chrome/common/url_constants.h" | 31 #include "chrome/common/url_constants.h" |
| 29 #include "components/signin/core/browser/mutable_profile_oauth2_token_service.h" | 32 #include "components/signin/core/browser/mutable_profile_oauth2_token_service.h" |
| 30 #include "components/signin/core/browser/profile_oauth2_token_service.h" | 33 #include "components/signin/core/browser/profile_oauth2_token_service.h" |
| 31 #include "components/signin/core/browser/signin_error_controller.h" | 34 #include "components/signin/core/browser/signin_error_controller.h" |
| 32 #include "components/signin/core/browser/signin_manager.h" | 35 #include "components/signin/core/browser/signin_manager.h" |
| 33 #include "components/signin/core/common/profile_management_switches.h" | 36 #include "components/signin/core/common/profile_management_switches.h" |
| 34 #include "grit/chromium_strings.h" | 37 #include "grit/chromium_strings.h" |
| 35 #include "grit/generated_resources.h" | 38 #include "grit/generated_resources.h" |
| 36 #include "grit/theme_resources.h" | 39 #include "grit/theme_resources.h" |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 57 #include "ui/views/layout/grid_layout.h" | 60 #include "ui/views/layout/grid_layout.h" |
| 58 #include "ui/views/layout/layout_constants.h" | 61 #include "ui/views/layout/layout_constants.h" |
| 59 #include "ui/views/widget/widget.h" | 62 #include "ui/views/widget/widget.h" |
| 60 | 63 |
| 61 namespace { | 64 namespace { |
| 62 | 65 |
| 63 // Helpers -------------------------------------------------------------------- | 66 // Helpers -------------------------------------------------------------------- |
| 64 | 67 |
| 65 const int kFixedMenuWidth = 250; | 68 const int kFixedMenuWidth = 250; |
| 66 const int kButtonHeight = 32; | 69 const int kButtonHeight = 32; |
| 67 const int kProfileAvatarTutorialShowMax = 1; | |
| 68 const int kFixedGaiaViewHeight = 400; | 70 const int kFixedGaiaViewHeight = 400; |
| 69 const int kFixedGaiaViewWidth = 360; | 71 const int kFixedGaiaViewWidth = 360; |
| 70 const int kFixedAccountRemovalViewWidth = 280; | 72 const int kFixedAccountRemovalViewWidth = 280; |
| 71 const int kFixedEndPreviewViewWidth = 280; | 73 const int kFixedEndPreviewViewWidth = 280; |
| 72 const int kLargeImageSide = 88; | 74 const int kLargeImageSide = 88; |
| 73 | 75 |
| 76 // The maximum number of times to show the welcome tutorial for an upgrade user. | |
| 77 const int kUpgradeWelcomeTutorialShowMax = 1; | |
| 78 | |
| 74 // Creates a GridLayout with a single column. This ensures that all the child | 79 // Creates a GridLayout with a single column. This ensures that all the child |
| 75 // views added get auto-expanded to fill the full width of the bubble. | 80 // views added get auto-expanded to fill the full width of the bubble. |
| 76 views::GridLayout* CreateSingleColumnLayout(views::View* view, int width) { | 81 views::GridLayout* CreateSingleColumnLayout(views::View* view, int width) { |
| 77 views::GridLayout* layout = new views::GridLayout(view); | 82 views::GridLayout* layout = new views::GridLayout(view); |
| 78 view->SetLayoutManager(layout); | 83 view->SetLayoutManager(layout); |
| 79 | 84 |
| 80 views::ColumnSet* columns = layout->AddColumnSet(0); | 85 views::ColumnSet* columns = layout->AddColumnSet(0); |
| 81 columns->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 0, | 86 columns->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 0, |
| 82 views::GridLayout::FIXED, width, width); | 87 views::GridLayout::FIXED, width, width); |
| 83 return layout; | 88 return layout; |
| (...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 515 ProfileOAuth2TokenService* oauth2_token_service = | 520 ProfileOAuth2TokenService* oauth2_token_service = |
| 516 ProfileOAuth2TokenServiceFactory::GetForProfile(browser_->profile()); | 521 ProfileOAuth2TokenServiceFactory::GetForProfile(browser_->profile()); |
| 517 if (oauth2_token_service) | 522 if (oauth2_token_service) |
| 518 oauth2_token_service->RemoveObserver(this); | 523 oauth2_token_service->RemoveObserver(this); |
| 519 } | 524 } |
| 520 | 525 |
| 521 void ProfileChooserView::ResetView() { | 526 void ProfileChooserView::ResetView() { |
| 522 open_other_profile_indexes_map_.clear(); | 527 open_other_profile_indexes_map_.clear(); |
| 523 delete_account_button_map_.clear(); | 528 delete_account_button_map_.clear(); |
| 524 reauth_account_button_map_.clear(); | 529 reauth_account_button_map_.clear(); |
| 525 tutorial_learn_more_link_ = NULL; | |
| 526 tutorial_ok_button_ = NULL; | |
| 527 tutorial_enable_new_profile_management_button_ = NULL; | |
| 528 tutorial_end_preview_link_ = NULL; | |
| 529 tutorial_send_feedback_button_ = NULL; | |
| 530 manage_accounts_link_ = NULL; | 530 manage_accounts_link_ = NULL; |
| 531 signin_current_profile_link_ = NULL; | 531 signin_current_profile_link_ = NULL; |
| 532 question_mark_button_ = NULL; | |
| 533 auth_error_email_button_ = NULL; | 532 auth_error_email_button_ = NULL; |
| 534 current_profile_photo_ = NULL; | 533 current_profile_photo_ = NULL; |
| 535 current_profile_name_ = NULL; | 534 current_profile_name_ = NULL; |
| 536 users_button_ = NULL; | 535 users_button_ = NULL; |
| 537 go_incognito_button_ = NULL; | 536 go_incognito_button_ = NULL; |
| 538 lock_button_ = NULL; | 537 lock_button_ = NULL; |
| 539 add_account_link_ = NULL; | 538 add_account_link_ = NULL; |
| 540 gaia_signin_cancel_button_ = NULL; | 539 gaia_signin_cancel_button_ = NULL; |
| 541 remove_account_button_ = NULL; | 540 remove_account_button_ = NULL; |
| 542 account_removal_cancel_button_ = NULL; | 541 account_removal_cancel_button_ = NULL; |
| 543 end_preview_and_relaunch_button_ = NULL; | 542 tutorial_sync_settings_ok_button_ = NULL; |
| 544 end_preview_cancel_button_ = NULL; | 543 tutorial_sync_settings_link_ = NULL; |
| 544 tutorial_learn_more_link_ = NULL; | |
| 545 tutorial_see_whats_new_button_ = NULL; | |
| 546 tutorial_not_you_link_ = NULL; | |
| 545 tutorial_mode_ = profiles::TUTORIAL_MODE_NONE; | 547 tutorial_mode_ = profiles::TUTORIAL_MODE_NONE; |
| 546 } | 548 } |
| 547 | 549 |
| 548 void ProfileChooserView::Init() { | 550 void ProfileChooserView::Init() { |
| 549 // If view mode is PROFILE_CHOOSER but there is an auth error, force | 551 // If view mode is PROFILE_CHOOSER but there is an auth error, force |
| 550 // ACCOUNT_MANAGEMENT mode. | 552 // ACCOUNT_MANAGEMENT mode. |
| 551 if (view_mode_ == profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER && | 553 if (view_mode_ == profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER && |
| 552 HasAuthError(browser_->profile()) && | 554 HasAuthError(browser_->profile()) && |
| 553 switches::IsEnableAccountConsistency() && | 555 switches::IsEnableAccountConsistency() && |
| 554 avatar_menu_->GetItemAt(avatar_menu_->GetActiveProfileIndex()). | 556 avatar_menu_->GetItemAt(avatar_menu_->GetActiveProfileIndex()). |
| 555 signed_in) { | 557 signed_in) { |
| 556 view_mode_ = profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT; | 558 view_mode_ = profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT; |
| 557 } | 559 } |
| 558 | 560 |
| 559 ShowView(view_mode_, avatar_menu_.get()); | 561 ShowView(view_mode_, avatar_menu_.get()); |
| 560 } | 562 } |
| 561 | 563 |
| 562 void ProfileChooserView::OnAvatarMenuChanged( | 564 void ProfileChooserView::OnAvatarMenuChanged( |
| 563 AvatarMenu* avatar_menu) { | 565 AvatarMenu* avatar_menu) { |
| 566 if (view_mode_ == profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT || | |
| 567 view_mode_ == profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN || | |
| 568 view_mode_ == profiles::BUBBLE_VIEW_MODE_GAIA_ADD_ACCOUNT || | |
| 569 view_mode_ == profiles::BUBBLE_VIEW_MODE_GAIA_REAUTH) { | |
| 570 return; | |
| 571 } | |
|
Roger Tawa OOO till Jul 10th
2014/08/05 16:02:13
Add comment explaining why we ignore these modes?
guohui
2014/08/05 19:27:41
Done.
| |
| 572 | |
| 564 // Refresh the view with the new menu. We can't just update the local copy | 573 // Refresh the view with the new menu. We can't just update the local copy |
| 565 // as this may have been triggered by a sign out action, in which case | 574 // as this may have been triggered by a sign out action, in which case |
| 566 // the view is being destroyed. | 575 // the view is being destroyed. |
| 567 ShowView(profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu); | 576 ShowView(profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu); |
| 568 } | 577 } |
| 569 | 578 |
| 570 void ProfileChooserView::OnRefreshTokenAvailable( | 579 void ProfileChooserView::OnRefreshTokenAvailable( |
| 571 const std::string& account_id) { | 580 const std::string& account_id) { |
| 572 // Refresh the account management view when a new account is added to the | |
| 573 // profile. | |
| 574 if (view_mode_ == profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT || | 581 if (view_mode_ == profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT || |
| 575 view_mode_ == profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN || | 582 view_mode_ == profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN || |
| 576 view_mode_ == profiles::BUBBLE_VIEW_MODE_GAIA_ADD_ACCOUNT || | 583 view_mode_ == profiles::BUBBLE_VIEW_MODE_GAIA_ADD_ACCOUNT || |
| 577 view_mode_ == profiles::BUBBLE_VIEW_MODE_GAIA_REAUTH) { | 584 view_mode_ == profiles::BUBBLE_VIEW_MODE_GAIA_REAUTH) { |
| 585 if (view_mode_ == profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN) | |
| 586 tutorial_mode_ = profiles::TUTORIAL_MODE_CONFIRM_SIGNIN; | |
| 578 // The account management UI is only available through the | 587 // The account management UI is only available through the |
| 579 // --enable-account-consistency flag. | 588 // --enable-account-consistency flag. |
| 580 ShowView(switches::IsEnableAccountConsistency() ? | 589 ShowView(switches::IsEnableAccountConsistency() ? |
| 581 profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT : | 590 profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT : |
| 582 profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get()); | 591 profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get()); |
| 583 } | 592 } |
| 584 } | 593 } |
| 585 | 594 |
| 586 void ProfileChooserView::OnRefreshTokenRevoked(const std::string& account_id) { | 595 void ProfileChooserView::OnRefreshTokenRevoked(const std::string& account_id) { |
| 587 // Refresh the account management view when an account is removed from the | 596 // Refresh the account management view when an account is removed from the |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 620 case profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN: | 629 case profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN: |
| 621 case profiles::BUBBLE_VIEW_MODE_GAIA_ADD_ACCOUNT: | 630 case profiles::BUBBLE_VIEW_MODE_GAIA_ADD_ACCOUNT: |
| 622 case profiles::BUBBLE_VIEW_MODE_GAIA_REAUTH: | 631 case profiles::BUBBLE_VIEW_MODE_GAIA_REAUTH: |
| 623 layout = CreateSingleColumnLayout(this, kFixedGaiaViewWidth); | 632 layout = CreateSingleColumnLayout(this, kFixedGaiaViewWidth); |
| 624 sub_view = CreateGaiaSigninView(); | 633 sub_view = CreateGaiaSigninView(); |
| 625 break; | 634 break; |
| 626 case profiles::BUBBLE_VIEW_MODE_ACCOUNT_REMOVAL: | 635 case profiles::BUBBLE_VIEW_MODE_ACCOUNT_REMOVAL: |
| 627 layout = CreateSingleColumnLayout(this, kFixedAccountRemovalViewWidth); | 636 layout = CreateSingleColumnLayout(this, kFixedAccountRemovalViewWidth); |
| 628 sub_view = CreateAccountRemovalView(); | 637 sub_view = CreateAccountRemovalView(); |
| 629 break; | 638 break; |
| 630 case profiles::BUBBLE_VIEW_MODE_END_PREVIEW: | |
| 631 layout = CreateSingleColumnLayout(this, kFixedEndPreviewViewWidth); | |
| 632 sub_view = CreateEndPreviewView(); | |
| 633 break; | |
| 634 default: | 639 default: |
| 635 layout = CreateSingleColumnLayout(this, kFixedMenuWidth); | 640 layout = CreateSingleColumnLayout(this, kFixedMenuWidth); |
| 636 sub_view = CreateProfileChooserView(avatar_menu, last_tutorial_mode); | 641 sub_view = CreateProfileChooserView(avatar_menu, last_tutorial_mode); |
| 637 } | 642 } |
| 638 layout->StartRow(1, 0); | 643 layout->StartRow(1, 0); |
| 639 layout->AddView(sub_view); | 644 layout->AddView(sub_view); |
| 640 Layout(); | 645 Layout(); |
| 641 if (GetBubbleFrameView()) | 646 if (GetBubbleFrameView()) |
| 642 SizeToContents(); | 647 SizeToContents(); |
| 643 } | 648 } |
| 644 | 649 |
| 645 void ProfileChooserView::WindowClosing() { | 650 void ProfileChooserView::WindowClosing() { |
| 646 DCHECK_EQ(profile_bubble_, this); | 651 DCHECK_EQ(profile_bubble_, this); |
| 647 profile_bubble_ = NULL; | 652 profile_bubble_ = NULL; |
| 653 | |
| 654 if (tutorial_mode_ == profiles::TUTORIAL_MODE_CONFIRM_SIGNIN) { | |
| 655 LoginUIServiceFactory::GetForProfile(browser_->profile())-> | |
| 656 SyncConfirmationUIClosed(false /* configure_sync_first */); | |
| 657 } | |
| 648 } | 658 } |
| 649 | 659 |
| 650 void ProfileChooserView::ButtonPressed(views::Button* sender, | 660 void ProfileChooserView::ButtonPressed(views::Button* sender, |
| 651 const ui::Event& event) { | 661 const ui::Event& event) { |
| 652 // Disable button after clicking so that it doesn't get clicked twice and | 662 // Disable button after clicking so that it doesn't get clicked twice and |
| 653 // start a second action... which can crash Chrome. But don't disable if it | 663 // start a second action... which can crash Chrome. But don't disable if it |
| 654 // has no parent (like in tests) because that will also crash. | 664 // has no parent (like in tests) because that will also crash. |
| 655 if (sender->parent()) | 665 if (sender->parent()) |
| 656 sender->SetEnabled(false); | 666 sender->SetEnabled(false); |
| 657 | 667 |
| 658 if (sender == users_button_) { | 668 if (sender == users_button_) { |
| 659 profiles::ShowUserManagerMaybeWithTutorial(browser_->profile()); | 669 profiles::ShowUserManagerMaybeWithTutorial(browser_->profile()); |
| 660 // If this is a guest session, also close all the guest browser windows. | 670 // If this is a guest session, also close all the guest browser windows. |
| 661 if (browser_->profile()->IsGuestSession()) | 671 if (browser_->profile()->IsGuestSession()) |
| 662 profiles::CloseGuestProfileWindows(); | 672 profiles::CloseGuestProfileWindows(); |
| 663 } else if (sender == go_incognito_button_) { | 673 } else if (sender == go_incognito_button_) { |
| 664 DCHECK(!browser_->profile()->IsGuestSession()); | 674 DCHECK(!browser_->profile()->IsGuestSession()); |
| 665 chrome::NewIncognitoWindow(browser_); | 675 chrome::NewIncognitoWindow(browser_); |
| 666 } else if (sender == lock_button_) { | 676 } else if (sender == lock_button_) { |
| 667 profiles::LockProfile(browser_->profile()); | 677 profiles::LockProfile(browser_->profile()); |
| 668 PostActionPerformed(ProfileMetrics::PROFILE_DESKTOP_MENU_LOCK); | 678 PostActionPerformed(ProfileMetrics::PROFILE_DESKTOP_MENU_LOCK); |
| 669 } else if (sender == auth_error_email_button_) { | 679 } else if (sender == auth_error_email_button_) { |
| 670 ShowView(profiles::BUBBLE_VIEW_MODE_GAIA_REAUTH, avatar_menu_.get()); | 680 ShowView(profiles::BUBBLE_VIEW_MODE_GAIA_REAUTH, avatar_menu_.get()); |
| 671 } else if (sender == tutorial_ok_button_) { | 681 } else if (sender == tutorial_sync_settings_ok_button_) { |
| 672 // If the user manually dismissed the tutorial, never show it again by | 682 LoginUIServiceFactory::GetForProfile(browser_->profile())-> |
| 673 // setting the number of times shown to the maximum plus 1, so that later we | 683 SyncConfirmationUIClosed(false /* configure_sync_first */); |
| 674 // could distinguish between the dismiss case and the case when the tutorial | 684 tutorial_mode_ = profiles::TUTORIAL_MODE_NONE; |
| 675 // is indeed shown for the maximum number of times. | |
| 676 browser_->profile()->GetPrefs()->SetInteger( | |
| 677 prefs::kProfileAvatarTutorialShown, kProfileAvatarTutorialShowMax + 1); | |
| 678 | |
| 679 ProfileMetrics::LogProfileUpgradeEnrollment( | |
| 680 ProfileMetrics::PROFILE_ENROLLMENT_CLOSE_WELCOME_CARD); | |
| 681 ShowView(profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get()); | 685 ShowView(profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get()); |
| 682 } else if (sender == tutorial_enable_new_profile_management_button_) { | 686 } else if (sender == tutorial_see_whats_new_button_) { |
| 683 ProfileMetrics::LogProfileUpgradeEnrollment( | 687 chrome::ShowUserManagerWithTutorial( |
| 684 ProfileMetrics::PROFILE_ENROLLMENT_ACCEPT_NEW_PROFILE_MGMT); | 688 profiles::USER_MANAGER_TUTORIAL_OVERVIEW); |
| 685 profiles::EnableNewProfileManagementPreview(browser_->profile()); | |
| 686 } else if (sender == remove_account_button_) { | 689 } else if (sender == remove_account_button_) { |
| 687 RemoveAccount(); | 690 RemoveAccount(); |
| 688 } else if (sender == account_removal_cancel_button_) { | 691 } else if (sender == account_removal_cancel_button_) { |
| 689 account_id_to_remove_.clear(); | 692 account_id_to_remove_.clear(); |
| 690 ShowView(profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT, avatar_menu_.get()); | 693 ShowView(profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT, avatar_menu_.get()); |
| 691 } else if (sender == gaia_signin_cancel_button_) { | 694 } else if (sender == gaia_signin_cancel_button_) { |
| 692 std::string primary_account = | 695 std::string primary_account = |
| 693 SigninManagerFactory::GetForProfile(browser_->profile())-> | 696 SigninManagerFactory::GetForProfile(browser_->profile())-> |
| 694 GetAuthenticatedUsername(); | 697 GetAuthenticatedUsername(); |
| 695 // The account management view is only available with the | 698 // The account management view is only available with the |
| 696 // --enable-account-consistency flag. | 699 // --enable-account-consistency flag. |
| 697 bool account_management_available = !primary_account.empty() && | 700 bool account_management_available = !primary_account.empty() && |
| 698 switches::IsEnableAccountConsistency(); | 701 switches::IsEnableAccountConsistency(); |
| 699 ShowView(account_management_available ? | 702 ShowView(account_management_available ? |
| 700 profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT : | 703 profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT : |
| 701 profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get()); | 704 profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get()); |
| 702 } else if (sender == question_mark_button_) { | |
| 703 tutorial_mode_ = profiles::TUTORIAL_MODE_SEND_FEEDBACK; | |
| 704 ShowView(profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get()); | |
| 705 } else if (sender == tutorial_send_feedback_button_) { | |
| 706 ProfileMetrics::LogProfileUpgradeEnrollment( | |
| 707 ProfileMetrics::PROFILE_ENROLLMENT_SEND_FEEDBACK); | |
| 708 chrome::OpenFeedbackDialog(browser_); | |
| 709 } else if (sender == end_preview_and_relaunch_button_) { | |
| 710 ProfileMetrics::LogProfileUpgradeEnrollment( | |
| 711 ProfileMetrics::PROFILE_ENROLLMENT_DISABLE_NEW_PROFILE_MGMT); | |
| 712 profiles::DisableNewProfileManagementPreview(browser_->profile()); | |
| 713 } else if (sender == end_preview_cancel_button_) { | |
| 714 tutorial_mode_ = profiles::TUTORIAL_MODE_SEND_FEEDBACK; | |
| 715 ShowView(profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get()); | |
| 716 } else if (current_profile_photo_ && | 705 } else if (current_profile_photo_ && |
| 717 sender == current_profile_photo_->change_photo_button()) { | 706 sender == current_profile_photo_->change_photo_button()) { |
| 718 avatar_menu_->EditProfile(avatar_menu_->GetActiveProfileIndex()); | 707 avatar_menu_->EditProfile(avatar_menu_->GetActiveProfileIndex()); |
| 719 PostActionPerformed(ProfileMetrics::PROFILE_DESKTOP_MENU_EDIT_IMAGE); | 708 PostActionPerformed(ProfileMetrics::PROFILE_DESKTOP_MENU_EDIT_IMAGE); |
| 720 } else if (sender == signin_current_profile_link_) { | 709 } else if (sender == signin_current_profile_link_) { |
| 721 ShowView(profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN, avatar_menu_.get()); | 710 ShowView(profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN, avatar_menu_.get()); |
| 722 } else { | 711 } else { |
| 723 // Either one of the "other profiles", or one of the profile accounts | 712 // Either one of the "other profiles", or one of the profile accounts |
| 724 // buttons was pressed. | 713 // buttons was pressed. |
| 725 ButtonIndexes::const_iterator profile_match = | 714 ButtonIndexes::const_iterator profile_match = |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 766 // depending on which view it is displayed. ShowView() will DCHECK if | 755 // depending on which view it is displayed. ShowView() will DCHECK if |
| 767 // the account management view is displayed for non signed-in users. | 756 // the account management view is displayed for non signed-in users. |
| 768 ShowView( | 757 ShowView( |
| 769 view_mode_ == profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT ? | 758 view_mode_ == profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT ? |
| 770 profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER : | 759 profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER : |
| 771 profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT, | 760 profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT, |
| 772 avatar_menu_.get()); | 761 avatar_menu_.get()); |
| 773 } else if (sender == add_account_link_) { | 762 } else if (sender == add_account_link_) { |
| 774 ShowView(profiles::BUBBLE_VIEW_MODE_GAIA_ADD_ACCOUNT, avatar_menu_.get()); | 763 ShowView(profiles::BUBBLE_VIEW_MODE_GAIA_ADD_ACCOUNT, avatar_menu_.get()); |
| 775 PostActionPerformed(ProfileMetrics::PROFILE_DESKTOP_MENU_ADD_ACCT); | 764 PostActionPerformed(ProfileMetrics::PROFILE_DESKTOP_MENU_ADD_ACCT); |
| 765 } else if (sender == tutorial_sync_settings_link_) { | |
| 766 LoginUIServiceFactory::GetForProfile(browser_->profile())-> | |
| 767 SyncConfirmationUIClosed(true /* configure_sync_first */); | |
|
Roger Tawa OOO till Jul 10th
2014/08/05 16:02:13
Do you need to reset the tutorial mode to none her
guohui
2014/08/05 19:27:41
Done.
| |
| 776 } else if (sender == tutorial_learn_more_link_) { | 768 } else if (sender == tutorial_learn_more_link_) { |
| 777 ProfileMetrics::LogProfileUpgradeEnrollment( | 769 // TODO(mlerman): update the UMA stats. |
| 778 ProfileMetrics::PROFILE_ENROLLMENT_LAUNCH_LEARN_MORE); | |
| 779 // TODO(guohui): update |learn_more_url| once it is decided. | 770 // TODO(guohui): update |learn_more_url| once it is decided. |
| 780 const GURL lear_more_url("https://support.google.com/chrome/?hl=en#to"); | 771 const GURL lear_more_url("https://support.google.com/chrome/?hl=en#to"); |
| 781 chrome::NavigateParams params( | 772 chrome::NavigateParams params( |
| 782 browser_->profile(), | 773 browser_->profile(), |
| 783 lear_more_url, | 774 lear_more_url, |
| 784 content::PAGE_TRANSITION_LINK); | 775 content::PAGE_TRANSITION_LINK); |
| 785 params.disposition = NEW_FOREGROUND_TAB; | 776 params.disposition = NEW_FOREGROUND_TAB; |
| 786 chrome::Navigate(¶ms); | 777 chrome::Navigate(¶ms); |
| 787 } else { | 778 } else { |
| 788 DCHECK(sender == tutorial_end_preview_link_); | 779 DCHECK(sender == tutorial_not_you_link_); |
| 789 ShowView(profiles::BUBBLE_VIEW_MODE_END_PREVIEW, avatar_menu_.get()); | 780 // TODO(guohui): show a "not XXX" view. |
| 790 } | 781 } |
| 791 } | 782 } |
| 792 | 783 |
| 793 void ProfileChooserView::StyledLabelLinkClicked( | 784 void ProfileChooserView::StyledLabelLinkClicked( |
| 794 const gfx::Range& range, int event_flags) { | 785 const gfx::Range& range, int event_flags) { |
| 795 chrome::ShowSettings(browser_); | 786 chrome::ShowSettings(browser_); |
| 796 } | 787 } |
| 797 | 788 |
| 798 bool ProfileChooserView::HandleKeyEvent(views::Textfield* sender, | 789 bool ProfileChooserView::HandleKeyEvent(views::Textfield* sender, |
| 799 const ui::KeyEvent& key_event) { | 790 const ui::KeyEvent& key_event) { |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 846 views::View* current_profile_accounts = NULL; | 837 views::View* current_profile_accounts = NULL; |
| 847 views::View* option_buttons_view = NULL; | 838 views::View* option_buttons_view = NULL; |
| 848 bool is_enable_account_consistency = switches::IsEnableAccountConsistency(); | 839 bool is_enable_account_consistency = switches::IsEnableAccountConsistency(); |
| 849 for (size_t i = 0; i < avatar_menu->GetNumberOfItems(); ++i) { | 840 for (size_t i = 0; i < avatar_menu->GetNumberOfItems(); ++i) { |
| 850 const AvatarMenu::Item& item = avatar_menu->GetItemAt(i); | 841 const AvatarMenu::Item& item = avatar_menu->GetItemAt(i); |
| 851 if (item.active) { | 842 if (item.active) { |
| 852 option_buttons_view = CreateOptionsView( | 843 option_buttons_view = CreateOptionsView( |
| 853 switches::IsNewProfileManagement() && item.signed_in); | 844 switches::IsNewProfileManagement() && item.signed_in); |
| 854 current_profile_view = CreateCurrentProfileView(item, false); | 845 current_profile_view = CreateCurrentProfileView(item, false); |
| 855 if (view_mode_ == profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER) { | 846 if (view_mode_ == profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER) { |
| 856 if (is_enable_account_consistency) { | 847 switch (last_tutorial_mode) { |
| 857 tutorial_view = | 848 case profiles::TUTORIAL_MODE_NONE: |
| 858 last_tutorial_mode == profiles::TUTORIAL_MODE_SEND_FEEDBACK ? | 849 case profiles::TUTORIAL_MODE_WELCOME_UPGRADE: |
| 859 CreateSendPreviewFeedbackView() : | 850 tutorial_view = CreateWelcomeUpgradeTutorialViewIfNeeded( |
| 860 CreatePreviewEnabledTutorialView( | 851 last_tutorial_mode == profiles::TUTORIAL_MODE_WELCOME_UPGRADE, |
| 861 item, last_tutorial_mode == profiles::TUTORIAL_MODE_WELCOME); | 852 item); |
| 853 break; | |
| 854 case profiles::TUTORIAL_MODE_CONFIRM_SIGNIN: | |
| 855 tutorial_view = CreateSigninConfirmationView(); | |
| 856 break; | |
| 857 case profiles::TUTORIAL_MODE_SHOW_ERROR: | |
| 858 // TODO(guohui): not implemented yet. | |
| 859 NOTREACHED(); | |
| 862 } | 860 } |
| 863 } else { | 861 } else { |
| 864 current_profile_accounts = CreateCurrentProfileAccountsView(item); | 862 current_profile_accounts = CreateCurrentProfileAccountsView(item); |
| 865 } | 863 } |
| 866 } else { | 864 } else { |
| 867 other_profiles.push_back(i); | 865 other_profiles.push_back(i); |
| 868 } | 866 } |
| 869 } | 867 } |
| 870 | 868 |
| 871 if (tutorial_view) { | 869 if (tutorial_view) { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 914 layout->AddView(new views::Separator(views::Separator::HORIZONTAL)); | 912 layout->AddView(new views::Separator(views::Separator::HORIZONTAL)); |
| 915 | 913 |
| 916 if (option_buttons_view) { | 914 if (option_buttons_view) { |
| 917 layout->StartRow(0, 0); | 915 layout->StartRow(0, 0); |
| 918 layout->AddView(option_buttons_view); | 916 layout->AddView(option_buttons_view); |
| 919 } | 917 } |
| 920 | 918 |
| 921 return view; | 919 return view; |
| 922 } | 920 } |
| 923 | 921 |
| 924 views::View* ProfileChooserView::CreatePreviewEnabledTutorialView( | |
| 925 const AvatarMenu::Item& current_avatar_item, | |
| 926 bool tutorial_shown) { | |
| 927 if (!switches::IsNewProfileManagementPreviewEnabled()) | |
| 928 return NULL; | |
| 929 | |
| 930 Profile* profile = browser_->profile(); | |
| 931 const int show_count = profile->GetPrefs()->GetInteger( | |
| 932 prefs::kProfileAvatarTutorialShown); | |
| 933 // Do not show the tutorial if user has dismissed it. | |
| 934 if (show_count > kProfileAvatarTutorialShowMax) | |
| 935 return NULL; | |
| 936 | |
| 937 if (!tutorial_shown) { | |
| 938 if (show_count == kProfileAvatarTutorialShowMax) | |
| 939 return NULL; | |
| 940 profile->GetPrefs()->SetInteger( | |
| 941 prefs::kProfileAvatarTutorialShown, show_count + 1); | |
| 942 } | |
| 943 | |
| 944 return CreateTutorialView( | |
| 945 profiles::TUTORIAL_MODE_WELCOME, | |
| 946 l10n_util::GetStringUTF16(IDS_PROFILES_PREVIEW_ENABLED_TUTORIAL_TITLE), | |
| 947 l10n_util::GetStringUTF16( | |
| 948 IDS_PROFILES_PREVIEW_ENABLED_TUTORIAL_CONTENT_TEXT), | |
| 949 l10n_util::GetStringUTF16(IDS_PROFILES_PROFILE_TUTORIAL_LEARN_MORE), | |
| 950 l10n_util::GetStringUTF16(IDS_PROFILES_TUTORIAL_OK_BUTTON), | |
| 951 &tutorial_learn_more_link_, | |
| 952 &tutorial_ok_button_); | |
| 953 } | |
| 954 | |
| 955 views::View* ProfileChooserView::CreateSendPreviewFeedbackView() { | |
| 956 return CreateTutorialView( | |
| 957 profiles::TUTORIAL_MODE_SEND_FEEDBACK, | |
| 958 l10n_util::GetStringUTF16(IDS_PROFILES_FEEDBACK_TUTORIAL_TITLE), | |
| 959 l10n_util::GetStringUTF16( | |
| 960 IDS_PROFILES_FEEDBACK_TUTORIAL_CONTENT_TEXT), | |
| 961 l10n_util::GetStringUTF16(IDS_PROFILES_END_PREVIEW), | |
| 962 l10n_util::GetStringUTF16(IDS_PROFILES_SEND_FEEDBACK_BUTTON), | |
| 963 &tutorial_end_preview_link_, | |
| 964 &tutorial_send_feedback_button_); | |
| 965 } | |
| 966 | |
| 967 views::View* ProfileChooserView::CreateTutorialView( | 922 views::View* ProfileChooserView::CreateTutorialView( |
| 968 profiles::TutorialMode tutorial_mode, | 923 profiles::TutorialMode tutorial_mode, |
| 969 const base::string16& title_text, | 924 const base::string16& title_text, |
| 970 const base::string16& content_text, | 925 const base::string16& content_text, |
| 971 const base::string16& link_text, | 926 const base::string16& link_text, |
| 972 const base::string16& button_text, | 927 const base::string16& button_text, |
| 973 views::Link** link, | 928 views::Link** link, |
| 974 views::LabelButton** button) { | 929 views::LabelButton** button) { |
| 975 tutorial_mode_ = tutorial_mode; | 930 tutorial_mode_ = tutorial_mode; |
| 976 | 931 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1023 button_layout->AddView(*link); | 978 button_layout->AddView(*link); |
| 1024 | 979 |
| 1025 *button = new views::LabelButton(this, button_text); | 980 *button = new views::LabelButton(this, button_text); |
| 1026 (*button)->SetHorizontalAlignment(gfx::ALIGN_CENTER); | 981 (*button)->SetHorizontalAlignment(gfx::ALIGN_CENTER); |
| 1027 (*button)->SetStyle(views::Button::STYLE_BUTTON); | 982 (*button)->SetStyle(views::Button::STYLE_BUTTON); |
| 1028 button_layout->AddView(*button); | 983 button_layout->AddView(*button); |
| 1029 | 984 |
| 1030 layout->StartRowWithPadding(1, 0, 0, views::kUnrelatedControlVerticalSpacing); | 985 layout->StartRowWithPadding(1, 0, 0, views::kUnrelatedControlVerticalSpacing); |
| 1031 layout->AddView(button_row); | 986 layout->AddView(button_row); |
| 1032 | 987 |
| 1033 // Adds a padded caret image at the bottom. | 988 return view; |
| 1034 views::View* padded_caret_view = new views::View(); | |
| 1035 views::GridLayout* padded_caret_layout = | |
| 1036 new views::GridLayout(padded_caret_view); | |
| 1037 views::ColumnSet* padded_columns = padded_caret_layout->AddColumnSet(0); | |
| 1038 padded_columns->AddPaddingColumn(0, views::kButtonHEdgeMarginNew); | |
| 1039 padded_columns->AddColumn(views::GridLayout::LEADING, | |
| 1040 views::GridLayout::CENTER, 0, views::GridLayout::USE_PREF, 0, 0); | |
| 1041 padded_caret_view->SetLayoutManager(padded_caret_layout); | |
| 1042 | |
| 1043 views::ImageView* caret_image_view = new views::ImageView(); | |
| 1044 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); | |
| 1045 caret_image_view->SetImage( | |
| 1046 *rb->GetImageSkiaNamed(IDR_ICON_PROFILES_MENU_CARET)); | |
| 1047 | |
| 1048 padded_caret_layout->StartRow(1, 0); | |
| 1049 padded_caret_layout->AddView(caret_image_view); | |
| 1050 | |
| 1051 views::View* view_with_caret = new views::View(); | |
| 1052 views::GridLayout* layout_with_caret = | |
| 1053 CreateSingleColumnLayout(view_with_caret, kFixedMenuWidth); | |
| 1054 layout_with_caret->StartRow(1, 0); | |
| 1055 layout_with_caret->AddView(view); | |
| 1056 layout_with_caret->StartRow(1, 0); | |
| 1057 layout_with_caret->AddView(padded_caret_view); | |
| 1058 return view_with_caret; | |
| 1059 } | 989 } |
| 1060 | 990 |
| 1061 views::View* ProfileChooserView::CreateCurrentProfileView( | 991 views::View* ProfileChooserView::CreateCurrentProfileView( |
| 1062 const AvatarMenu::Item& avatar_item, | 992 const AvatarMenu::Item& avatar_item, |
| 1063 bool is_guest) { | 993 bool is_guest) { |
| 1064 views::View* view = new views::View(); | 994 views::View* view = new views::View(); |
| 1065 int column_width = kFixedMenuWidth - 2 * views::kButtonHEdgeMarginNew; | 995 int column_width = kFixedMenuWidth - 2 * views::kButtonHEdgeMarginNew; |
| 1066 views::GridLayout* layout = CreateSingleColumnLayout(view, column_width); | 996 views::GridLayout* layout = CreateSingleColumnLayout(view, column_width); |
| 1067 layout->SetInsets(views::kButtonVEdgeMarginNew, | 997 layout->SetInsets(views::kButtonVEdgeMarginNew, |
| 1068 views::kButtonHEdgeMarginNew, | 998 views::kButtonHEdgeMarginNew, |
| 1069 views::kUnrelatedControlVerticalSpacing, | 999 views::kUnrelatedControlVerticalSpacing, |
| 1070 views::kButtonHEdgeMarginNew); | 1000 views::kButtonHEdgeMarginNew); |
| 1071 | 1001 |
| 1072 // Profile icon, centered. | 1002 // Profile icon, centered. |
| 1073 int x_offset = (column_width - kLargeImageSide) / 2; | 1003 int x_offset = (column_width - kLargeImageSide) / 2; |
| 1074 current_profile_photo_ = new EditableProfilePhoto( | 1004 current_profile_photo_ = new EditableProfilePhoto( |
| 1075 this, avatar_item.icon, !is_guest, | 1005 this, avatar_item.icon, !is_guest, |
| 1076 gfx::Rect(x_offset, 0, kLargeImageSide, kLargeImageSide)); | 1006 gfx::Rect(x_offset, 0, kLargeImageSide, kLargeImageSide)); |
| 1077 SizedContainer* profile_icon_container = | 1007 SizedContainer* profile_icon_container = |
| 1078 new SizedContainer(gfx::Size(column_width, kLargeImageSide)); | 1008 new SizedContainer(gfx::Size(column_width, kLargeImageSide)); |
| 1079 profile_icon_container->AddChildView(current_profile_photo_); | 1009 profile_icon_container->AddChildView(current_profile_photo_); |
| 1080 | 1010 |
| 1081 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); | 1011 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); |
| 1082 if (switches::IsNewProfileManagementPreviewEnabled()) { | |
| 1083 question_mark_button_ = new views::ImageButton(this); | |
| 1084 question_mark_button_->SetImageAlignment( | |
| 1085 views::ImageButton::ALIGN_LEFT, views::ImageButton::ALIGN_MIDDLE); | |
| 1086 question_mark_button_->SetImage(views::ImageButton::STATE_NORMAL, | |
| 1087 rb->GetImageSkiaNamed(IDR_ICON_PROFILES_MENU_QUESTION_STABLE)); | |
| 1088 question_mark_button_->SetImage(views::ImageButton::STATE_HOVERED, | |
| 1089 rb->GetImageSkiaNamed(IDR_ICON_PROFILES_MENU_QUESTION_HOVER)); | |
| 1090 question_mark_button_->SetImage(views::ImageButton::STATE_PRESSED, | |
| 1091 rb->GetImageSkiaNamed(IDR_ICON_PROFILES_MENU_QUESTION_SELECT)); | |
| 1092 gfx::Size preferred_size = question_mark_button_->GetPreferredSize(); | |
| 1093 question_mark_button_->SetBounds( | |
| 1094 0, 0, preferred_size.width(), preferred_size.height()); | |
| 1095 profile_icon_container->AddChildView(question_mark_button_); | |
| 1096 } | |
| 1097 | |
| 1098 if (browser_->profile()->IsSupervised()) { | 1012 if (browser_->profile()->IsSupervised()) { |
| 1099 views::ImageView* supervised_icon = new views::ImageView(); | 1013 views::ImageView* supervised_icon = new views::ImageView(); |
| 1100 supervised_icon->SetImage( | 1014 supervised_icon->SetImage( |
| 1101 rb->GetImageSkiaNamed(IDR_ICON_PROFILES_MENU_SUPERVISED)); | 1015 rb->GetImageSkiaNamed(IDR_ICON_PROFILES_MENU_SUPERVISED)); |
| 1102 gfx::Size preferred_size = supervised_icon->GetPreferredSize(); | 1016 gfx::Size preferred_size = supervised_icon->GetPreferredSize(); |
| 1103 gfx::Rect parent_bounds = current_profile_photo_->bounds(); | 1017 gfx::Rect parent_bounds = current_profile_photo_->bounds(); |
| 1104 supervised_icon->SetBounds( | 1018 supervised_icon->SetBounds( |
| 1105 parent_bounds.right() - preferred_size.width(), | 1019 parent_bounds.right() - preferred_size.width(), |
| 1106 parent_bounds.bottom() - preferred_size.height(), | 1020 parent_bounds.bottom() - preferred_size.height(), |
| 1107 preferred_size.width(), | 1021 preferred_size.width(), |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1152 views::LabelButton::STATE_NORMAL, | 1066 views::LabelButton::STATE_NORMAL, |
| 1153 views::Link::GetDefaultEnabledColor()); | 1067 views::Link::GetDefaultEnabledColor()); |
| 1154 layout->AddView(auth_error_email_button_); | 1068 layout->AddView(auth_error_email_button_); |
| 1155 } else { | 1069 } else { |
| 1156 views::Label* email_label = new views::Label(avatar_item.sync_state); | 1070 views::Label* email_label = new views::Label(avatar_item.sync_state); |
| 1157 email_label->SetElideBehavior(gfx::ELIDE_EMAIL); | 1071 email_label->SetElideBehavior(gfx::ELIDE_EMAIL); |
| 1158 layout->AddView(email_label); | 1072 layout->AddView(email_label); |
| 1159 } | 1073 } |
| 1160 } | 1074 } |
| 1161 } else { | 1075 } else { |
| 1162 SigninManagerBase* signin_manager = | 1076 SigninManager* signin_manager = SigninManagerFactory::GetForProfile( |
| 1163 SigninManagerFactory::GetForProfile( | 1077 browser_->profile()->GetOriginalProfile()); |
| 1164 browser_->profile()->GetOriginalProfile()); | |
| 1165 if (signin_manager->IsSigninAllowed()) { | 1078 if (signin_manager->IsSigninAllowed()) { |
| 1166 views::Label* promo = new views::Label( | 1079 views::Label* promo = new views::Label( |
| 1167 l10n_util::GetStringUTF16(IDS_PROFILES_SIGNIN_PROMO)); | 1080 l10n_util::GetStringUTF16(IDS_PROFILES_SIGNIN_PROMO)); |
| 1168 promo->SetMultiLine(true); | 1081 promo->SetMultiLine(true); |
| 1169 promo->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 1082 promo->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
| 1170 layout->StartRowWithPadding(1, 0, 0, | 1083 layout->StartRowWithPadding(1, 0, 0, |
| 1171 views::kRelatedControlSmallVerticalSpacing); | 1084 views::kRelatedControlSmallVerticalSpacing); |
| 1172 layout->StartRow(1, 0); | 1085 layout->StartRow(1, 0); |
| 1173 layout->AddView(promo); | 1086 layout->AddView(promo); |
| 1174 | 1087 |
| (...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1480 } else { | 1393 } else { |
| 1481 layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing); | 1394 layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing); |
| 1482 } | 1395 } |
| 1483 | 1396 |
| 1484 TitleCard* title_card = new TitleCard(IDS_PROFILES_ACCOUNT_REMOVAL_TITLE, | 1397 TitleCard* title_card = new TitleCard(IDS_PROFILES_ACCOUNT_REMOVAL_TITLE, |
| 1485 this, &account_removal_cancel_button_); | 1398 this, &account_removal_cancel_button_); |
| 1486 return TitleCard::AddPaddedTitleCard(view, title_card, | 1399 return TitleCard::AddPaddedTitleCard(view, title_card, |
| 1487 kFixedAccountRemovalViewWidth); | 1400 kFixedAccountRemovalViewWidth); |
| 1488 } | 1401 } |
| 1489 | 1402 |
| 1490 views::View* ProfileChooserView::CreateNewProfileManagementPreviewView() { | 1403 views::View* ProfileChooserView::CreateWelcomeUpgradeTutorialViewIfNeeded( |
| 1404 bool tutorial_shown, const AvatarMenu::Item& avatar_item){ | |
| 1405 if (first_run::IsChromeFirstRun()) | |
| 1406 return NULL; | |
| 1407 | |
| 1408 Profile* profile = browser_->profile(); | |
| 1409 if (!avatar_item.signed_in) { | |
| 1410 profile->GetPrefs()->SetInteger( | |
| 1411 prefs::kProfileAvatarTutorialShown, kUpgradeWelcomeTutorialShowMax + 1); | |
| 1412 return NULL; | |
| 1413 } | |
| 1414 | |
| 1415 const int show_count = profile->GetPrefs()->GetInteger( | |
| 1416 prefs::kProfileAvatarTutorialShown); | |
| 1417 // Do not show the tutorial if user has dismissed it. | |
| 1418 if (show_count > kUpgradeWelcomeTutorialShowMax) | |
| 1419 return NULL; | |
| 1420 | |
| 1421 if (!tutorial_shown) { | |
| 1422 if (show_count == kUpgradeWelcomeTutorialShowMax) | |
| 1423 return NULL; | |
| 1424 profile->GetPrefs()->SetInteger( | |
| 1425 prefs::kProfileAvatarTutorialShown, show_count + 1); | |
| 1426 } | |
| 1427 | |
| 1491 return CreateTutorialView( | 1428 return CreateTutorialView( |
| 1492 profiles::TUTORIAL_MODE_ENABLE_PREVIEW, | 1429 profiles::TUTORIAL_MODE_WELCOME_UPGRADE, |
| 1493 l10n_util::GetStringUTF16(IDS_PROFILES_PREVIEW_TUTORIAL_TITLE), | 1430 l10n_util::GetStringFUTF16( |
| 1494 l10n_util::GetStringUTF16(IDS_PROFILES_PREVIEW_TUTORIAL_CONTENT_TEXT), | 1431 IDS_PROFILES_WELCOME_UPGRADE_TUTORIAL_TITLE, avatar_item.name), |
| 1495 l10n_util::GetStringUTF16(IDS_PROFILES_PROFILE_TUTORIAL_LEARN_MORE), | 1432 l10n_util::GetStringUTF16( |
| 1496 l10n_util::GetStringUTF16(IDS_PROFILES_TUTORIAL_TRY_BUTTON), | 1433 IDS_PROFILES_WELCOME_UPGRADE_TUTORIAL_CONTENT_TEXT), |
| 1497 &tutorial_learn_more_link_, | 1434 l10n_util::GetStringFUTF16( |
| 1498 &tutorial_enable_new_profile_management_button_); | 1435 IDS_PROFILES_TUTORIAL_NOT_YOU_LINK, avatar_item.name), |
| 1436 l10n_util::GetStringUTF16(IDS_PROFILES_TUTORIAL_WHATS_NEW_BUTTON), | |
| 1437 &tutorial_not_you_link_, | |
| 1438 &tutorial_see_whats_new_button_); | |
| 1499 } | 1439 } |
| 1500 | 1440 |
| 1501 views::View* ProfileChooserView::CreateEndPreviewView() { | 1441 views::View* ProfileChooserView::CreateSigninConfirmationView(){ |
| 1502 views::View* view = new views::View(); | 1442 return CreateTutorialView( |
| 1503 views::GridLayout* layout = CreateSingleColumnLayout( | 1443 profiles::TUTORIAL_MODE_CONFIRM_SIGNIN, |
| 1504 view, kFixedAccountRemovalViewWidth - 2 * views::kButtonHEdgeMarginNew); | 1444 l10n_util::GetStringUTF16(IDS_PROFILES_CONFIRM_SIGNIN_TUTORIAL_TITLE), |
| 1505 layout->SetInsets(0, | 1445 l10n_util::GetStringUTF16( |
| 1506 views::kButtonHEdgeMarginNew, | 1446 IDS_PROFILES_CONFIRM_SIGNIN_TUTORIAL_CONTENT_TEXT), |
| 1507 views::kButtonVEdgeMarginNew, | 1447 l10n_util::GetStringUTF16(IDS_PROFILES_SYNC_SETTINGS_LINK), |
| 1508 views::kButtonHEdgeMarginNew); | 1448 l10n_util::GetStringUTF16(IDS_PROFILES_TUTORIAL_OK_BUTTON), |
| 1509 | 1449 &tutorial_sync_settings_link_, |
| 1510 // Adds main text. | 1450 &tutorial_sync_settings_ok_button_); |
| 1511 views::Label* content_label = new views::Label( | |
| 1512 l10n_util::GetStringUTF16(IDS_PROFILES_END_PREVIEW_TEXT)); | |
| 1513 content_label->SetMultiLine(true); | |
| 1514 content_label->SetHorizontalAlignment(gfx::ALIGN_LEFT); | |
| 1515 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); | |
| 1516 const gfx::FontList& small_font_list = | |
| 1517 rb->GetFontList(ui::ResourceBundle::SmallFont); | |
| 1518 content_label->SetFontList(small_font_list); | |
| 1519 layout->StartRowWithPadding(1, 0, 0, views::kUnrelatedControlVerticalSpacing); | |
| 1520 layout->AddView(content_label); | |
| 1521 | |
| 1522 // Adds button. | |
| 1523 end_preview_and_relaunch_button_ = new views::BlueButton( | |
| 1524 this, l10n_util::GetStringUTF16(IDS_PROFILES_END_PREVIEW_AND_RELAUNCH)); | |
| 1525 end_preview_and_relaunch_button_->SetHorizontalAlignment( | |
| 1526 gfx::ALIGN_CENTER); | |
| 1527 layout->StartRowWithPadding( | |
| 1528 1, 0, 0, views::kUnrelatedControlVerticalSpacing); | |
| 1529 layout->AddView(end_preview_and_relaunch_button_); | |
| 1530 | |
| 1531 TitleCard* title_card = new TitleCard( | |
| 1532 IDS_PROFILES_END_PREVIEW, this, &end_preview_cancel_button_); | |
| 1533 return TitleCard::AddPaddedTitleCard( | |
| 1534 view, title_card, kFixedAccountRemovalViewWidth); | |
| 1535 } | 1451 } |
| OLD | NEW |