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/lifetime/application_lifetime.h" | 10 #include "chrome/browser/lifetime/application_lifetime.h" |
(...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
737 chrome::ShowUserManagerWithTutorial( | 737 chrome::ShowUserManagerWithTutorial( |
738 profiles::USER_MANAGER_TUTORIAL_OVERVIEW); | 738 profiles::USER_MANAGER_TUTORIAL_OVERVIEW); |
739 } else if (sender == remove_account_button_) { | 739 } else if (sender == remove_account_button_) { |
740 RemoveAccount(); | 740 RemoveAccount(); |
741 } else if (sender == account_removal_cancel_button_) { | 741 } else if (sender == account_removal_cancel_button_) { |
742 account_id_to_remove_.clear(); | 742 account_id_to_remove_.clear(); |
743 ShowView(profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT, avatar_menu_.get()); | 743 ShowView(profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT, avatar_menu_.get()); |
744 } else if (sender == gaia_signin_cancel_button_) { | 744 } else if (sender == gaia_signin_cancel_button_) { |
745 std::string primary_account = | 745 std::string primary_account = |
746 SigninManagerFactory::GetForProfile(browser_->profile())-> | 746 SigninManagerFactory::GetForProfile(browser_->profile())-> |
747 GetAuthenticatedUsername(); | 747 GetAuthenticatedAccountId(); |
748 // The account management view is only available with the | 748 // The account management view is only available with the |
749 // --enable-account-consistency flag. | 749 // --enable-account-consistency flag. |
750 bool account_management_available = !primary_account.empty() && | 750 bool account_management_available = !primary_account.empty() && |
751 switches::IsEnableAccountConsistency(); | 751 switches::IsEnableAccountConsistency(); |
752 ShowView(account_management_available ? | 752 ShowView(account_management_available ? |
753 profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT : | 753 profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT : |
754 profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get()); | 754 profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get()); |
755 } else if (sender == current_profile_photo_) { | 755 } else if (sender == current_profile_photo_) { |
756 avatar_menu_->EditProfile(avatar_menu_->GetActiveProfileIndex()); | 756 avatar_menu_->EditProfile(avatar_menu_->GetActiveProfileIndex()); |
757 PostActionPerformed(ProfileMetrics::PROFILE_DESKTOP_MENU_EDIT_IMAGE); | 757 PostActionPerformed(ProfileMetrics::PROFILE_DESKTOP_MENU_EDIT_IMAGE); |
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1307 views::View* ProfileChooserView::CreateCurrentProfileAccountsView( | 1307 views::View* ProfileChooserView::CreateCurrentProfileAccountsView( |
1308 const AvatarMenu::Item& avatar_item) { | 1308 const AvatarMenu::Item& avatar_item) { |
1309 DCHECK(avatar_item.signed_in); | 1309 DCHECK(avatar_item.signed_in); |
1310 views::View* view = new views::View(); | 1310 views::View* view = new views::View(); |
1311 view->set_background(views::Background::CreateSolidBackground( | 1311 view->set_background(views::Background::CreateSolidBackground( |
1312 profiles::kAvatarBubbleAccountsBackgroundColor)); | 1312 profiles::kAvatarBubbleAccountsBackgroundColor)); |
1313 views::GridLayout* layout = CreateSingleColumnLayout(view, kFixedMenuWidth); | 1313 views::GridLayout* layout = CreateSingleColumnLayout(view, kFixedMenuWidth); |
1314 | 1314 |
1315 Profile* profile = browser_->profile(); | 1315 Profile* profile = browser_->profile(); |
1316 std::string primary_account = | 1316 std::string primary_account = |
1317 SigninManagerFactory::GetForProfile(profile)->GetAuthenticatedUsername(); | 1317 SigninManagerFactory::GetForProfile(profile)->GetAuthenticatedAccountId(); |
1318 DCHECK(!primary_account.empty()); | 1318 DCHECK(!primary_account.empty()); |
1319 std::vector<std::string>accounts = | 1319 std::vector<std::string>accounts = |
1320 profiles::GetSecondaryAccountsForProfile(profile, primary_account); | 1320 profiles::GetSecondaryAccountsForProfile(profile, primary_account); |
1321 | 1321 |
1322 // Get state of authentication error, if any. | 1322 // Get state of authentication error, if any. |
1323 std::string error_account_id = GetAuthErrorAccountId(profile); | 1323 std::string error_account_id = GetAuthErrorAccountId(profile); |
1324 | 1324 |
1325 // The primary account should always be listed first. | 1325 // The primary account should always be listed first. |
1326 // TODO(rogerta): we still need to further differentiate the primary account | 1326 // TODO(rogerta): we still need to further differentiate the primary account |
1327 // from the others in the UI, so more work is likely required here: | 1327 // from the others in the UI, so more work is likely required here: |
(...skipping 13 matching lines...) Expand all Loading... |
1341 0, views::kButtonVEdgeMarginNew, | 1341 0, views::kButtonVEdgeMarginNew, |
1342 views::kRelatedControlVerticalSpacing, 0)); | 1342 views::kRelatedControlVerticalSpacing, 0)); |
1343 layout->StartRow(1, 0); | 1343 layout->StartRow(1, 0); |
1344 layout->AddView(add_account_link_); | 1344 layout->AddView(add_account_link_); |
1345 } | 1345 } |
1346 | 1346 |
1347 return view; | 1347 return view; |
1348 } | 1348 } |
1349 | 1349 |
1350 void ProfileChooserView::CreateAccountButton(views::GridLayout* layout, | 1350 void ProfileChooserView::CreateAccountButton(views::GridLayout* layout, |
1351 const std::string& account, | 1351 const std::string& account_id, |
1352 bool is_primary_account, | 1352 bool is_primary_account, |
1353 bool reauth_required, | 1353 bool reauth_required, |
1354 int width) { | 1354 int width) { |
| 1355 std::string email = signin_ui_util::GetDisplayEmail(browser_->profile(), |
| 1356 account_id); |
1355 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); | 1357 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); |
1356 const gfx::ImageSkia* delete_default_image = | 1358 const gfx::ImageSkia* delete_default_image = |
1357 rb->GetImageNamed(IDR_CLOSE_1).ToImageSkia(); | 1359 rb->GetImageNamed(IDR_CLOSE_1).ToImageSkia(); |
1358 const int kDeleteButtonWidth = delete_default_image->width(); | 1360 const int kDeleteButtonWidth = delete_default_image->width(); |
1359 const gfx::ImageSkia warning_default_image = reauth_required ? | 1361 const gfx::ImageSkia warning_default_image = reauth_required ? |
1360 *rb->GetImageNamed(IDR_ICON_PROFILES_ACCOUNT_BUTTON_ERROR).ToImageSkia() : | 1362 *rb->GetImageNamed(IDR_ICON_PROFILES_ACCOUNT_BUTTON_ERROR).ToImageSkia() : |
1361 gfx::ImageSkia(); | 1363 gfx::ImageSkia(); |
1362 const int kWarningButtonWidth = reauth_required ? | 1364 const int kWarningButtonWidth = reauth_required ? |
1363 warning_default_image.width() + views::kRelatedButtonHSpacing : 0; | 1365 warning_default_image.width() + views::kRelatedButtonHSpacing : 0; |
1364 int available_width = width - 2 * views::kButtonHEdgeMarginNew | 1366 int available_width = width - 2 * views::kButtonHEdgeMarginNew |
1365 - kDeleteButtonWidth - kWarningButtonWidth; | 1367 - kDeleteButtonWidth - kWarningButtonWidth; |
1366 views::LabelButton* email_button = new BackgroundColorHoverButton( | 1368 views::LabelButton* email_button = new BackgroundColorHoverButton( |
1367 reauth_required ? this : NULL, | 1369 reauth_required ? this : NULL, |
1368 base::UTF8ToUTF16(account), | 1370 base::UTF8ToUTF16(email), |
1369 warning_default_image); | 1371 warning_default_image); |
1370 email_button->SetElideBehavior(gfx::ELIDE_EMAIL); | 1372 email_button->SetElideBehavior(gfx::ELIDE_EMAIL); |
1371 email_button->SetMinSize(gfx::Size(0, kButtonHeight)); | 1373 email_button->SetMinSize(gfx::Size(0, kButtonHeight)); |
1372 email_button->SetMaxSize(gfx::Size(available_width, kButtonHeight)); | 1374 email_button->SetMaxSize(gfx::Size(available_width, kButtonHeight)); |
1373 layout->StartRow(1, 0); | 1375 layout->StartRow(1, 0); |
1374 layout->AddView(email_button); | 1376 layout->AddView(email_button); |
1375 | 1377 |
1376 if (reauth_required) | 1378 if (reauth_required) |
1377 reauth_account_button_map_[email_button] = account; | 1379 reauth_account_button_map_[email_button] = account_id; |
1378 | 1380 |
1379 // Delete button. | 1381 // Delete button. |
1380 if (!browser_->profile()->IsSupervised()) { | 1382 if (!browser_->profile()->IsSupervised()) { |
1381 views::ImageButton* delete_button = new views::ImageButton(this); | 1383 views::ImageButton* delete_button = new views::ImageButton(this); |
1382 delete_button->SetImageAlignment(views::ImageButton::ALIGN_RIGHT, | 1384 delete_button->SetImageAlignment(views::ImageButton::ALIGN_RIGHT, |
1383 views::ImageButton::ALIGN_MIDDLE); | 1385 views::ImageButton::ALIGN_MIDDLE); |
1384 delete_button->SetImage(views::ImageButton::STATE_NORMAL, | 1386 delete_button->SetImage(views::ImageButton::STATE_NORMAL, |
1385 delete_default_image); | 1387 delete_default_image); |
1386 delete_button->SetImage(views::ImageButton::STATE_HOVERED, | 1388 delete_button->SetImage(views::ImageButton::STATE_HOVERED, |
1387 rb->GetImageSkiaNamed(IDR_CLOSE_1_H)); | 1389 rb->GetImageSkiaNamed(IDR_CLOSE_1_H)); |
1388 delete_button->SetImage(views::ImageButton::STATE_PRESSED, | 1390 delete_button->SetImage(views::ImageButton::STATE_PRESSED, |
1389 rb->GetImageSkiaNamed(IDR_CLOSE_1_P)); | 1391 rb->GetImageSkiaNamed(IDR_CLOSE_1_P)); |
1390 delete_button->SetBounds( | 1392 delete_button->SetBounds( |
1391 width - views::kButtonHEdgeMarginNew - kDeleteButtonWidth, | 1393 width - views::kButtonHEdgeMarginNew - kDeleteButtonWidth, |
1392 0, kDeleteButtonWidth, kButtonHeight); | 1394 0, kDeleteButtonWidth, kButtonHeight); |
1393 | 1395 |
1394 email_button->set_notify_enter_exit_on_child(true); | 1396 email_button->set_notify_enter_exit_on_child(true); |
1395 email_button->AddChildView(delete_button); | 1397 email_button->AddChildView(delete_button); |
1396 | 1398 |
1397 // Save the original email address, as the button text could be elided. | 1399 // Save the original email address, as the button text could be elided. |
1398 delete_account_button_map_[delete_button] = account; | 1400 delete_account_button_map_[delete_button] = account_id; |
1399 } | 1401 } |
1400 } | 1402 } |
1401 | 1403 |
1402 views::View* ProfileChooserView::CreateGaiaSigninView() { | 1404 views::View* ProfileChooserView::CreateGaiaSigninView() { |
1403 GURL url; | 1405 GURL url; |
1404 int message_id; | 1406 int message_id; |
1405 | 1407 |
1406 switch (view_mode_) { | 1408 switch (view_mode_) { |
1407 case profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN: | 1409 case profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN: |
1408 url = signin::GetPromoURL(signin::SOURCE_AVATAR_BUBBLE_SIGN_IN, | 1410 url = signin::GetPromoURL(signin::SOURCE_AVATAR_BUBBLE_SIGN_IN, |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1445 views::View* ProfileChooserView::CreateAccountRemovalView() { | 1447 views::View* ProfileChooserView::CreateAccountRemovalView() { |
1446 views::View* view = new views::View(); | 1448 views::View* view = new views::View(); |
1447 views::GridLayout* layout = CreateSingleColumnLayout( | 1449 views::GridLayout* layout = CreateSingleColumnLayout( |
1448 view, kFixedAccountRemovalViewWidth - 2 * views::kButtonHEdgeMarginNew); | 1450 view, kFixedAccountRemovalViewWidth - 2 * views::kButtonHEdgeMarginNew); |
1449 layout->SetInsets(0, | 1451 layout->SetInsets(0, |
1450 views::kButtonHEdgeMarginNew, | 1452 views::kButtonHEdgeMarginNew, |
1451 views::kButtonVEdgeMarginNew, | 1453 views::kButtonVEdgeMarginNew, |
1452 views::kButtonHEdgeMarginNew); | 1454 views::kButtonHEdgeMarginNew); |
1453 | 1455 |
1454 const std::string& primary_account = SigninManagerFactory::GetForProfile( | 1456 const std::string& primary_account = SigninManagerFactory::GetForProfile( |
1455 browser_->profile())->GetAuthenticatedUsername(); | 1457 browser_->profile())->GetAuthenticatedAccountId(); |
1456 bool is_primary_account = primary_account == account_id_to_remove_; | 1458 bool is_primary_account = primary_account == account_id_to_remove_; |
1457 | 1459 |
1458 // Adds main text. | 1460 // Adds main text. |
1459 layout->StartRowWithPadding(1, 0, 0, views::kUnrelatedControlVerticalSpacing); | 1461 layout->StartRowWithPadding(1, 0, 0, views::kUnrelatedControlVerticalSpacing); |
1460 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); | 1462 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); |
1461 const gfx::FontList& small_font_list = | 1463 const gfx::FontList& small_font_list = |
1462 rb->GetFontList(ui::ResourceBundle::SmallFont); | 1464 rb->GetFontList(ui::ResourceBundle::SmallFont); |
1463 | 1465 |
1464 if (is_primary_account) { | 1466 if (is_primary_account) { |
| 1467 std::string email = signin_ui_util::GetDisplayEmail(browser_->profile(), |
| 1468 account_id_to_remove_); |
1465 std::vector<size_t> offsets; | 1469 std::vector<size_t> offsets; |
1466 const base::string16 settings_text = | 1470 const base::string16 settings_text = |
1467 l10n_util::GetStringUTF16(IDS_PROFILES_SETTINGS_LINK); | 1471 l10n_util::GetStringUTF16(IDS_PROFILES_SETTINGS_LINK); |
1468 const base::string16 primary_account_removal_text = | 1472 const base::string16 primary_account_removal_text = |
1469 l10n_util::GetStringFUTF16(IDS_PROFILES_PRIMARY_ACCOUNT_REMOVAL_TEXT, | 1473 l10n_util::GetStringFUTF16(IDS_PROFILES_PRIMARY_ACCOUNT_REMOVAL_TEXT, |
1470 base::UTF8ToUTF16(account_id_to_remove_), settings_text, &offsets); | 1474 base::UTF8ToUTF16(email), settings_text, &offsets); |
1471 views::StyledLabel* primary_account_removal_label = | 1475 views::StyledLabel* primary_account_removal_label = |
1472 new views::StyledLabel(primary_account_removal_text, this); | 1476 new views::StyledLabel(primary_account_removal_text, this); |
1473 primary_account_removal_label->AddStyleRange( | 1477 primary_account_removal_label->AddStyleRange( |
1474 gfx::Range(offsets[1], offsets[1] + settings_text.size()), | 1478 gfx::Range(offsets[1], offsets[1] + settings_text.size()), |
1475 views::StyledLabel::RangeStyleInfo::CreateForLink()); | 1479 views::StyledLabel::RangeStyleInfo::CreateForLink()); |
1476 primary_account_removal_label->SetBaseFontList(small_font_list); | 1480 primary_account_removal_label->SetBaseFontList(small_font_list); |
1477 layout->AddView(primary_account_removal_label); | 1481 layout->AddView(primary_account_removal_label); |
1478 } else { | 1482 } else { |
1479 views::Label* content_label = new views::Label( | 1483 views::Label* content_label = new views::Label( |
1480 l10n_util::GetStringUTF16(IDS_PROFILES_ACCOUNT_REMOVAL_TEXT)); | 1484 l10n_util::GetStringUTF16(IDS_PROFILES_ACCOUNT_REMOVAL_TEXT)); |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1636 IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) != | 1640 IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) != |
1637 IncognitoModePrefs::DISABLED; | 1641 IncognitoModePrefs::DISABLED; |
1638 return incognito_available && !browser_->profile()->IsGuestSession(); | 1642 return incognito_available && !browser_->profile()->IsGuestSession(); |
1639 } | 1643 } |
1640 | 1644 |
1641 void ProfileChooserView::PostActionPerformed( | 1645 void ProfileChooserView::PostActionPerformed( |
1642 ProfileMetrics::ProfileDesktopMenu action_performed) { | 1646 ProfileMetrics::ProfileDesktopMenu action_performed) { |
1643 ProfileMetrics::LogProfileDesktopMenu(action_performed, gaia_service_type_); | 1647 ProfileMetrics::LogProfileDesktopMenu(action_performed, gaia_service_type_); |
1644 gaia_service_type_ = signin::GAIA_SERVICE_TYPE_NONE; | 1648 gaia_service_type_ = signin::GAIA_SERVICE_TYPE_NONE; |
1645 } | 1649 } |
OLD | NEW |