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

Side by Side Diff: chrome/browser/ui/views/profiles/profile_chooser_view.cc

Issue 471333003: Make sure avatar menu does not use account_id for display purposes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add description to fake Created 6 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/views/profiles/profile_chooser_view.h ('k') | chrome/chrome_tests_unit.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 728 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 chrome::ShowUserManagerWithTutorial( 739 chrome::ShowUserManagerWithTutorial(
740 profiles::USER_MANAGER_TUTORIAL_OVERVIEW); 740 profiles::USER_MANAGER_TUTORIAL_OVERVIEW);
741 } else if (sender == remove_account_button_) { 741 } else if (sender == remove_account_button_) {
742 RemoveAccount(); 742 RemoveAccount();
743 } else if (sender == account_removal_cancel_button_) { 743 } else if (sender == account_removal_cancel_button_) {
744 account_id_to_remove_.clear(); 744 account_id_to_remove_.clear();
745 ShowView(profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT, avatar_menu_.get()); 745 ShowView(profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT, avatar_menu_.get());
746 } else if (sender == gaia_signin_cancel_button_) { 746 } else if (sender == gaia_signin_cancel_button_) {
747 std::string primary_account = 747 std::string primary_account =
748 SigninManagerFactory::GetForProfile(browser_->profile())-> 748 SigninManagerFactory::GetForProfile(browser_->profile())->
749 GetAuthenticatedUsername(); 749 GetAuthenticatedAccountId();
750 // The account management view is only available with the 750 // The account management view is only available with the
751 // --enable-account-consistency flag. 751 // --enable-account-consistency flag.
752 bool account_management_available = !primary_account.empty() && 752 bool account_management_available = !primary_account.empty() &&
753 switches::IsEnableAccountConsistency(); 753 switches::IsEnableAccountConsistency();
754 ShowView(account_management_available ? 754 ShowView(account_management_available ?
755 profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT : 755 profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT :
756 profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get()); 756 profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get());
757 } else if (sender == current_profile_photo_) { 757 } else if (sender == current_profile_photo_) {
758 avatar_menu_->EditProfile(avatar_menu_->GetActiveProfileIndex()); 758 avatar_menu_->EditProfile(avatar_menu_->GetActiveProfileIndex());
759 PostActionPerformed(ProfileMetrics::PROFILE_DESKTOP_MENU_EDIT_IMAGE); 759 PostActionPerformed(ProfileMetrics::PROFILE_DESKTOP_MENU_EDIT_IMAGE);
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
1311 views::View* ProfileChooserView::CreateCurrentProfileAccountsView( 1311 views::View* ProfileChooserView::CreateCurrentProfileAccountsView(
1312 const AvatarMenu::Item& avatar_item) { 1312 const AvatarMenu::Item& avatar_item) {
1313 DCHECK(avatar_item.signed_in); 1313 DCHECK(avatar_item.signed_in);
1314 views::View* view = new views::View(); 1314 views::View* view = new views::View();
1315 view->set_background(views::Background::CreateSolidBackground( 1315 view->set_background(views::Background::CreateSolidBackground(
1316 profiles::kAvatarBubbleAccountsBackgroundColor)); 1316 profiles::kAvatarBubbleAccountsBackgroundColor));
1317 views::GridLayout* layout = CreateSingleColumnLayout(view, kFixedMenuWidth); 1317 views::GridLayout* layout = CreateSingleColumnLayout(view, kFixedMenuWidth);
1318 1318
1319 Profile* profile = browser_->profile(); 1319 Profile* profile = browser_->profile();
1320 std::string primary_account = 1320 std::string primary_account =
1321 SigninManagerFactory::GetForProfile(profile)->GetAuthenticatedUsername(); 1321 SigninManagerFactory::GetForProfile(profile)->GetAuthenticatedAccountId();
1322 DCHECK(!primary_account.empty()); 1322 DCHECK(!primary_account.empty());
1323 std::vector<std::string>accounts = 1323 std::vector<std::string>accounts =
1324 profiles::GetSecondaryAccountsForProfile(profile, primary_account); 1324 profiles::GetSecondaryAccountsForProfile(profile, primary_account);
1325 1325
1326 // Get state of authentication error, if any. 1326 // Get state of authentication error, if any.
1327 std::string error_account_id = GetAuthErrorAccountId(profile); 1327 std::string error_account_id = GetAuthErrorAccountId(profile);
1328 1328
1329 // The primary account should always be listed first. 1329 // The primary account should always be listed first.
1330 // TODO(rogerta): we still need to further differentiate the primary account 1330 // TODO(rogerta): we still need to further differentiate the primary account
1331 // from the others in the UI, so more work is likely required here: 1331 // from the others in the UI, so more work is likely required here:
(...skipping 13 matching lines...) Expand all
1345 0, views::kButtonVEdgeMarginNew, 1345 0, views::kButtonVEdgeMarginNew,
1346 views::kRelatedControlVerticalSpacing, 0)); 1346 views::kRelatedControlVerticalSpacing, 0));
1347 layout->StartRow(1, 0); 1347 layout->StartRow(1, 0);
1348 layout->AddView(add_account_link_); 1348 layout->AddView(add_account_link_);
1349 } 1349 }
1350 1350
1351 return view; 1351 return view;
1352 } 1352 }
1353 1353
1354 void ProfileChooserView::CreateAccountButton(views::GridLayout* layout, 1354 void ProfileChooserView::CreateAccountButton(views::GridLayout* layout,
1355 const std::string& account, 1355 const std::string& account_id,
1356 bool is_primary_account, 1356 bool is_primary_account,
1357 bool reauth_required, 1357 bool reauth_required,
1358 int width) { 1358 int width) {
1359 std::string email = signin_ui_util::GetDisplayEmail(browser_->profile(),
1360 account_id);
1359 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); 1361 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance();
1360 const gfx::ImageSkia* delete_default_image = 1362 const gfx::ImageSkia* delete_default_image =
1361 rb->GetImageNamed(IDR_CLOSE_1).ToImageSkia(); 1363 rb->GetImageNamed(IDR_CLOSE_1).ToImageSkia();
1362 const int kDeleteButtonWidth = delete_default_image->width(); 1364 const int kDeleteButtonWidth = delete_default_image->width();
1363 const gfx::ImageSkia warning_default_image = reauth_required ? 1365 const gfx::ImageSkia warning_default_image = reauth_required ?
1364 *rb->GetImageNamed(IDR_ICON_PROFILES_ACCOUNT_BUTTON_ERROR).ToImageSkia() : 1366 *rb->GetImageNamed(IDR_ICON_PROFILES_ACCOUNT_BUTTON_ERROR).ToImageSkia() :
1365 gfx::ImageSkia(); 1367 gfx::ImageSkia();
1366 const int kWarningButtonWidth = reauth_required ? 1368 const int kWarningButtonWidth = reauth_required ?
1367 warning_default_image.width() + views::kRelatedButtonHSpacing : 0; 1369 warning_default_image.width() + views::kRelatedButtonHSpacing : 0;
1368 int available_width = width - 2 * views::kButtonHEdgeMarginNew 1370 int available_width = width - 2 * views::kButtonHEdgeMarginNew
1369 - kDeleteButtonWidth - kWarningButtonWidth; 1371 - kDeleteButtonWidth - kWarningButtonWidth;
1370 views::LabelButton* email_button = new BackgroundColorHoverButton( 1372 views::LabelButton* email_button = new BackgroundColorHoverButton(
1371 reauth_required ? this : NULL, 1373 reauth_required ? this : NULL,
1372 base::UTF8ToUTF16(account), 1374 base::UTF8ToUTF16(email),
1373 warning_default_image); 1375 warning_default_image);
1374 email_button->SetElideBehavior(gfx::ELIDE_EMAIL); 1376 email_button->SetElideBehavior(gfx::ELIDE_EMAIL);
1375 email_button->SetMinSize(gfx::Size(0, kButtonHeight)); 1377 email_button->SetMinSize(gfx::Size(0, kButtonHeight));
1376 email_button->SetMaxSize(gfx::Size(available_width, kButtonHeight)); 1378 email_button->SetMaxSize(gfx::Size(available_width, kButtonHeight));
1377 layout->StartRow(1, 0); 1379 layout->StartRow(1, 0);
1378 layout->AddView(email_button); 1380 layout->AddView(email_button);
1379 1381
1380 if (reauth_required) 1382 if (reauth_required)
1381 reauth_account_button_map_[email_button] = account; 1383 reauth_account_button_map_[email_button] = account_id;
1382 1384
1383 // Delete button. 1385 // Delete button.
1384 if (!browser_->profile()->IsSupervised()) { 1386 if (!browser_->profile()->IsSupervised()) {
1385 views::ImageButton* delete_button = new views::ImageButton(this); 1387 views::ImageButton* delete_button = new views::ImageButton(this);
1386 delete_button->SetImageAlignment(views::ImageButton::ALIGN_RIGHT, 1388 delete_button->SetImageAlignment(views::ImageButton::ALIGN_RIGHT,
1387 views::ImageButton::ALIGN_MIDDLE); 1389 views::ImageButton::ALIGN_MIDDLE);
1388 delete_button->SetImage(views::ImageButton::STATE_NORMAL, 1390 delete_button->SetImage(views::ImageButton::STATE_NORMAL,
1389 delete_default_image); 1391 delete_default_image);
1390 delete_button->SetImage(views::ImageButton::STATE_HOVERED, 1392 delete_button->SetImage(views::ImageButton::STATE_HOVERED,
1391 rb->GetImageSkiaNamed(IDR_CLOSE_1_H)); 1393 rb->GetImageSkiaNamed(IDR_CLOSE_1_H));
1392 delete_button->SetImage(views::ImageButton::STATE_PRESSED, 1394 delete_button->SetImage(views::ImageButton::STATE_PRESSED,
1393 rb->GetImageSkiaNamed(IDR_CLOSE_1_P)); 1395 rb->GetImageSkiaNamed(IDR_CLOSE_1_P));
1394 delete_button->SetBounds( 1396 delete_button->SetBounds(
1395 width - views::kButtonHEdgeMarginNew - kDeleteButtonWidth, 1397 width - views::kButtonHEdgeMarginNew - kDeleteButtonWidth,
1396 0, kDeleteButtonWidth, kButtonHeight); 1398 0, kDeleteButtonWidth, kButtonHeight);
1397 1399
1398 email_button->set_notify_enter_exit_on_child(true); 1400 email_button->set_notify_enter_exit_on_child(true);
1399 email_button->AddChildView(delete_button); 1401 email_button->AddChildView(delete_button);
1400 1402
1401 // Save the original email address, as the button text could be elided. 1403 // Save the original email address, as the button text could be elided.
1402 delete_account_button_map_[delete_button] = account; 1404 delete_account_button_map_[delete_button] = account_id;
1403 } 1405 }
1404 } 1406 }
1405 1407
1406 views::View* ProfileChooserView::CreateGaiaSigninView() { 1408 views::View* ProfileChooserView::CreateGaiaSigninView() {
1407 GURL url; 1409 GURL url;
1408 int message_id; 1410 int message_id;
1409 1411
1410 switch (view_mode_) { 1412 switch (view_mode_) {
1411 case profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN: 1413 case profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN:
1412 url = signin::GetPromoURL(signin::SOURCE_AVATAR_BUBBLE_SIGN_IN, 1414 url = signin::GetPromoURL(signin::SOURCE_AVATAR_BUBBLE_SIGN_IN,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1449 views::View* ProfileChooserView::CreateAccountRemovalView() { 1451 views::View* ProfileChooserView::CreateAccountRemovalView() {
1450 views::View* view = new views::View(); 1452 views::View* view = new views::View();
1451 views::GridLayout* layout = CreateSingleColumnLayout( 1453 views::GridLayout* layout = CreateSingleColumnLayout(
1452 view, kFixedAccountRemovalViewWidth - 2 * views::kButtonHEdgeMarginNew); 1454 view, kFixedAccountRemovalViewWidth - 2 * views::kButtonHEdgeMarginNew);
1453 layout->SetInsets(0, 1455 layout->SetInsets(0,
1454 views::kButtonHEdgeMarginNew, 1456 views::kButtonHEdgeMarginNew,
1455 views::kButtonVEdgeMarginNew, 1457 views::kButtonVEdgeMarginNew,
1456 views::kButtonHEdgeMarginNew); 1458 views::kButtonHEdgeMarginNew);
1457 1459
1458 const std::string& primary_account = SigninManagerFactory::GetForProfile( 1460 const std::string& primary_account = SigninManagerFactory::GetForProfile(
1459 browser_->profile())->GetAuthenticatedUsername(); 1461 browser_->profile())->GetAuthenticatedAccountId();
1460 bool is_primary_account = primary_account == account_id_to_remove_; 1462 bool is_primary_account = primary_account == account_id_to_remove_;
1461 1463
1462 // Adds main text. 1464 // Adds main text.
1463 layout->StartRowWithPadding(1, 0, 0, views::kUnrelatedControlVerticalSpacing); 1465 layout->StartRowWithPadding(1, 0, 0, views::kUnrelatedControlVerticalSpacing);
1464 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); 1466 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance();
1465 const gfx::FontList& small_font_list = 1467 const gfx::FontList& small_font_list =
1466 rb->GetFontList(ui::ResourceBundle::SmallFont); 1468 rb->GetFontList(ui::ResourceBundle::SmallFont);
1467 1469
1468 if (is_primary_account) { 1470 if (is_primary_account) {
1471 std::string email = signin_ui_util::GetDisplayEmail(browser_->profile(),
1472 account_id_to_remove_);
1469 std::vector<size_t> offsets; 1473 std::vector<size_t> offsets;
1470 const base::string16 settings_text = 1474 const base::string16 settings_text =
1471 l10n_util::GetStringUTF16(IDS_PROFILES_SETTINGS_LINK); 1475 l10n_util::GetStringUTF16(IDS_PROFILES_SETTINGS_LINK);
1472 const base::string16 primary_account_removal_text = 1476 const base::string16 primary_account_removal_text =
1473 l10n_util::GetStringFUTF16(IDS_PROFILES_PRIMARY_ACCOUNT_REMOVAL_TEXT, 1477 l10n_util::GetStringFUTF16(IDS_PROFILES_PRIMARY_ACCOUNT_REMOVAL_TEXT,
1474 base::UTF8ToUTF16(account_id_to_remove_), settings_text, &offsets); 1478 base::UTF8ToUTF16(email), settings_text, &offsets);
1475 views::StyledLabel* primary_account_removal_label = 1479 views::StyledLabel* primary_account_removal_label =
1476 new views::StyledLabel(primary_account_removal_text, this); 1480 new views::StyledLabel(primary_account_removal_text, this);
1477 primary_account_removal_label->AddStyleRange( 1481 primary_account_removal_label->AddStyleRange(
1478 gfx::Range(offsets[1], offsets[1] + settings_text.size()), 1482 gfx::Range(offsets[1], offsets[1] + settings_text.size()),
1479 views::StyledLabel::RangeStyleInfo::CreateForLink()); 1483 views::StyledLabel::RangeStyleInfo::CreateForLink());
1480 primary_account_removal_label->SetBaseFontList(small_font_list); 1484 primary_account_removal_label->SetBaseFontList(small_font_list);
1481 layout->AddView(primary_account_removal_label); 1485 layout->AddView(primary_account_removal_label);
1482 } else { 1486 } else {
1483 views::Label* content_label = new views::Label( 1487 views::Label* content_label = new views::Label(
1484 l10n_util::GetStringUTF16(IDS_PROFILES_ACCOUNT_REMOVAL_TEXT)); 1488 l10n_util::GetStringUTF16(IDS_PROFILES_ACCOUNT_REMOVAL_TEXT));
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
1640 IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) != 1644 IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) !=
1641 IncognitoModePrefs::DISABLED; 1645 IncognitoModePrefs::DISABLED;
1642 return incognito_available && !browser_->profile()->IsGuestSession(); 1646 return incognito_available && !browser_->profile()->IsGuestSession();
1643 } 1647 }
1644 1648
1645 void ProfileChooserView::PostActionPerformed( 1649 void ProfileChooserView::PostActionPerformed(
1646 ProfileMetrics::ProfileDesktopMenu action_performed) { 1650 ProfileMetrics::ProfileDesktopMenu action_performed) {
1647 ProfileMetrics::LogProfileDesktopMenu(action_performed, gaia_service_type_); 1651 ProfileMetrics::LogProfileDesktopMenu(action_performed, gaia_service_type_);
1648 gaia_service_type_ = signin::GAIA_SERVICE_TYPE_NONE; 1652 gaia_service_type_ = signin::GAIA_SERVICE_TYPE_NONE;
1649 } 1653 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/profiles/profile_chooser_view.h ('k') | chrome/chrome_tests_unit.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698