summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/ui/browser.cc4
-rw-r--r--chrome/browser/ui/browser_command_controller.cc82
-rw-r--r--chrome/browser/ui/browser_command_controller.h16
-rw-r--r--chrome/browser/ui/browser_command_controller_unittest.cc52
-rw-r--r--chrome/browser/ui/cocoa/browser_window_cocoa.mm5
-rw-r--r--chrome/browser/ui/views/frame/browser_view.cc21
-rw-r--r--chrome/browser/ui/views/profiles/avatar_menu_bubble_view.cc2
-rw-r--r--chrome/browser/ui/views/profiles/avatar_menu_bubble_view.h1
-rw-r--r--chrome/browser/ui/views/profiles/avatar_menu_button.cc31
-rw-r--r--chrome/browser/ui/views/profiles/avatar_menu_button.h2
-rw-r--r--tools/valgrind/gtest_exclude/unit_tests.gtest-drmemory_win32.txt3
11 files changed, 63 insertions, 156 deletions
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index a06b099..d2e844b 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -66,7 +66,6 @@
#include "chrome/browser/prefs/incognito_mode_prefs.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_destroyer.h"
-#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/profiles/profile_metrics.h"
#include "chrome/browser/repost_form_warning_controller.h"
#include "chrome/browser/search/search.h"
@@ -347,8 +346,7 @@ Browser::Browser(const CreateParams& params)
tab_restore_service_delegate_(new BrowserTabRestoreServiceDelegate(this)),
synced_window_delegate_(new BrowserSyncedWindowDelegate(this)),
bookmark_bar_state_(BookmarkBar::HIDDEN),
- command_controller_(new chrome::BrowserCommandController(
- this, g_browser_process->profile_manager())),
+ command_controller_(new chrome::BrowserCommandController(this)),
window_has_shown_(false),
chrome_updater_factory_(this),
weak_factory_(this),
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc
index 354932e..d6bccf4 100644
--- a/chrome/browser/ui/browser_command_controller.cc
+++ b/chrome/browser/ui/browser_command_controller.cc
@@ -13,9 +13,7 @@
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/lifetime/application_lifetime.h"
#include "chrome/browser/prefs/incognito_mode_prefs.h"
-#include "chrome/browser/profiles/avatar_menu.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/sessions/tab_restore_service.h"
#include "chrome/browser/sessions/tab_restore_service_factory.h"
#include "chrome/browser/shell_integration.h"
@@ -183,17 +181,12 @@ namespace chrome {
///////////////////////////////////////////////////////////////////////////////
// BrowserCommandController, public:
-BrowserCommandController::BrowserCommandController(
- Browser* browser,
- ProfileManager* profile_manager)
+BrowserCommandController::BrowserCommandController(Browser* browser)
: browser_(browser),
- profile_manager_(profile_manager),
command_updater_(this),
block_command_execution_(false),
last_blocked_command_id_(-1),
last_blocked_command_disposition_(CURRENT_TAB) {
- if (profile_manager_)
- profile_manager_->GetProfileInfoCache().AddObserver(this);
browser_->tab_strip_model()->AddObserver(this);
PrefService* local_state = g_browser_process->local_state();
if (local_state) {
@@ -259,8 +252,6 @@ BrowserCommandController::~BrowserCommandController() {
profile_pref_registrar_.RemoveAll();
local_pref_registrar_.RemoveAll();
browser_->tab_strip_model()->RemoveObserver(this);
- if (profile_manager_)
- profile_manager_->GetProfileInfoCache().RemoveObserver(this);
}
bool BrowserCommandController::IsReservedCommandOrKey(
@@ -782,20 +773,6 @@ void BrowserCommandController::ExecuteCommandWithDisposition(
}
////////////////////////////////////////////////////////////////////////////////
-// BrowserCommandController, ProfileInfoCacheObserver implementation:
-
-void BrowserCommandController::OnProfileAdded(
- const base::FilePath& profile_path) {
- UpdateCommandsForMultipleProfiles();
-}
-
-void BrowserCommandController::OnProfileWasRemoved(
- const base::FilePath& profile_path,
- const base::string16& profile_name) {
- UpdateCommandsForMultipleProfiles();
-}
-
-////////////////////////////////////////////////////////////////////////////////
// BrowserCommandController, SigninPrefObserver implementation:
void BrowserCommandController::OnSigninAllowedPrefChange() {
@@ -969,29 +946,31 @@ void BrowserCommandController::InitCommandState() {
command_updater_.UpdateCommandEnabled(IDC_ZOOM_MINUS, true);
// Show various bits of UI
+ const bool guest_session = profile()->IsGuestSession();
+ const bool normal_window = browser_->is_type_tabbed();
UpdateOpenFileState(&command_updater_);
command_updater_.UpdateCommandEnabled(IDC_CREATE_SHORTCUTS, false);
UpdateCommandsForDevTools();
command_updater_.UpdateCommandEnabled(IDC_TASK_MANAGER, CanOpenTaskManager());
- command_updater_.UpdateCommandEnabled(IDC_SHOW_HISTORY,
- !profile()->IsGuestSession());
+ command_updater_.UpdateCommandEnabled(IDC_SHOW_HISTORY, !guest_session);
command_updater_.UpdateCommandEnabled(IDC_SHOW_DOWNLOADS, true);
command_updater_.UpdateCommandEnabled(IDC_HELP_PAGE_VIA_KEYBOARD, true);
command_updater_.UpdateCommandEnabled(IDC_HELP_PAGE_VIA_MENU, true);
- command_updater_.UpdateCommandEnabled(IDC_BOOKMARKS_MENU,
- !profile()->IsGuestSession());
+ command_updater_.UpdateCommandEnabled(IDC_BOOKMARKS_MENU, !guest_session);
command_updater_.UpdateCommandEnabled(IDC_RECENT_TABS_MENU,
- !profile()->IsGuestSession() &&
+ !guest_session &&
!profile()->IsOffTheRecord());
+ command_updater_.UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA, normal_window);
#if defined(OS_CHROMEOS)
command_updater_.UpdateCommandEnabled(IDC_TAKE_SCREENSHOT, true);
+#else
+ // Chrome OS uses the system tray menu to handle multi-profiles.
+ if (normal_window && (guest_session || !profile()->IsOffTheRecord()))
+ command_updater_.UpdateCommandEnabled(IDC_SHOW_AVATAR_MENU, true);
#endif
UpdateShowSyncState(true);
- // Initialize other commands based on the window type.
- bool normal_window = browser_->is_type_tabbed();
-
// Navigation commands
command_updater_.UpdateCommandEnabled(
IDC_HOME,
@@ -1015,39 +994,24 @@ void BrowserCommandController::InitCommandState() {
command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_7, normal_window);
command_updater_.UpdateCommandEnabled(IDC_SELECT_LAST_TAB, normal_window);
#if defined(OS_WIN)
-#if !defined(USE_AURA)
- const bool metro_mode = base::win::IsMetroProcess();
-#else
- const bool metro_mode =
- browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH ?
- true : false;
-#endif
- command_updater_.UpdateCommandEnabled(IDC_METRO_SNAP_ENABLE, metro_mode);
- command_updater_.UpdateCommandEnabled(IDC_METRO_SNAP_DISABLE, metro_mode);
- int restart_mode = metro_mode ?
- IDC_WIN8_DESKTOP_RESTART : IDC_WIN8_METRO_RESTART;
+ bool metro = browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH;
+ command_updater_.UpdateCommandEnabled(IDC_METRO_SNAP_ENABLE, metro);
+ command_updater_.UpdateCommandEnabled(IDC_METRO_SNAP_DISABLE, metro);
+ int restart_mode = metro ? IDC_WIN8_DESKTOP_RESTART : IDC_WIN8_METRO_RESTART;
command_updater_.UpdateCommandEnabled(restart_mode, normal_window);
#endif
- // Show various bits of UI
- command_updater_.UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA, normal_window);
-
- // The upgrade entry and the view incompatibility entry should always be
- // enabled. Whether they are visible is a separate matter determined on menu
- // show.
+ // These are always enabled; the menu determines their menu item visibility.
command_updater_.UpdateCommandEnabled(IDC_UPGRADE_DIALOG, true);
command_updater_.UpdateCommandEnabled(IDC_VIEW_INCOMPATIBILITIES, true);
// Toggle speech input
command_updater_.UpdateCommandEnabled(IDC_TOGGLE_SPEECH_INPUT, true);
- // Initialize other commands whose state changes based on fullscreen mode.
+ // Initialize other commands whose state changes based on various conditions.
UpdateCommandsForFullscreenMode();
-
UpdateCommandsForContentRestrictionState();
-
UpdateCommandsForBookmarkEditing();
-
UpdateCommandsForIncognitoAvailability();
}
@@ -1279,18 +1243,6 @@ void BrowserCommandController::UpdateCommandsForFullscreenMode() {
fullscreen_enabled);
UpdateCommandsForBookmarkBar();
- UpdateCommandsForMultipleProfiles();
-}
-
-void BrowserCommandController::UpdateCommandsForMultipleProfiles() {
- bool is_regular_or_guest_session =
- profile()->IsGuestSession() || !profile()->IsOffTheRecord();
- bool enable = IsShowingMainUI() &&
- is_regular_or_guest_session &&
- profile_manager_ &&
- AvatarMenu::ShouldShowAvatarMenu();
- command_updater_.UpdateCommandEnabled(IDC_SHOW_AVATAR_MENU,
- enable);
}
void BrowserCommandController::UpdatePrintingState() {
diff --git a/chrome/browser/ui/browser_command_controller.h b/chrome/browser/ui/browser_command_controller.h
index da9e995..bfba09e 100644
--- a/chrome/browser/ui/browser_command_controller.h
+++ b/chrome/browser/ui/browser_command_controller.h
@@ -11,7 +11,6 @@
#include "base/prefs/pref_member.h"
#include "chrome/browser/command_updater.h"
#include "chrome/browser/command_updater_delegate.h"
-#include "chrome/browser/profiles/profile_info_cache_observer.h"
#include "chrome/browser/sessions/tab_restore_service_observer.h"
#include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
#include "ui/base/window_open_disposition.h"
@@ -19,7 +18,6 @@
class Browser;
class BrowserWindow;
class Profile;
-class ProfileManager;
namespace content {
struct NativeWebKeyboardEvent;
@@ -28,11 +26,10 @@ struct NativeWebKeyboardEvent;
namespace chrome {
class BrowserCommandController : public CommandUpdaterDelegate,
- public ProfileInfoCacheObserver,
public TabStripModelObserver,
public TabRestoreServiceObserver {
public:
- BrowserCommandController(Browser* browser, ProfileManager* profile_manager);
+ explicit BrowserCommandController(Browser* browser);
virtual ~BrowserCommandController();
CommandUpdater* command_updater() { return &command_updater_; }
@@ -84,11 +81,6 @@ class BrowserCommandController : public CommandUpdaterDelegate,
int id,
WindowOpenDisposition disposition) OVERRIDE;
- // Overridden from ProfileInfoCacheObserver:
- virtual void OnProfileAdded(const base::FilePath& profile_path) OVERRIDE;
- virtual void OnProfileWasRemoved(const base::FilePath& profile_path,
- const base::string16& profile_name) OVERRIDE;
-
// Overridden from TabStripModelObserver:
virtual void TabInsertedAt(content::WebContents* contents,
int index,
@@ -141,10 +133,6 @@ class BrowserCommandController : public CommandUpdaterDelegate,
// window is in.
void UpdateCommandsForFullscreenMode();
- // Update commands whose state depends on whether multiple profiles are
- // allowed.
- void UpdateCommandsForMultipleProfiles();
-
// Updates the printing command state.
void UpdatePrintingState();
@@ -175,8 +163,6 @@ class BrowserCommandController : public CommandUpdaterDelegate,
Browser* browser_;
- ProfileManager* profile_manager_;
-
// The CommandUpdater that manages the browser window commands.
CommandUpdater command_updater_;
diff --git a/chrome/browser/ui/browser_command_controller_unittest.cc b/chrome/browser/ui/browser_command_controller_unittest.cc
index b080e71..1b0eb27 100644
--- a/chrome/browser/ui/browser_command_controller_unittest.cc
+++ b/chrome/browser/ui/browser_command_controller_unittest.cc
@@ -171,7 +171,7 @@ TEST_F(BrowserCommandControllerTest, AppFullScreen) {
EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN));
}
-TEST_F(BrowserCommandControllerTest, OldAvatarMenuDisabledWhenOnlyOneProfile) {
+TEST_F(BrowserCommandControllerTest, OldAvatarMenuEnabledForOneOrMoreProfiles) {
#if defined(OS_CHROMEOS)
// TODO(nkostylev): Cleanup this code once multi-profiles are enabled by
// default on CrOS. http://crbug.com/351655
@@ -188,26 +188,26 @@ TEST_F(BrowserCommandControllerTest, OldAvatarMenuDisabledWhenOnlyOneProfile) {
ASSERT_TRUE(testing_profile_manager.SetUp());
ProfileManager* profile_manager = testing_profile_manager.profile_manager();
- chrome::BrowserCommandController command_controller(browser(),
- profile_manager);
+ chrome::BrowserCommandController command_controller(browser());
const CommandUpdater* command_updater = command_controller.command_updater();
+ bool enabled = true;
+#if defined(OS_CHROMEOS)
+ // Chrome OS uses system tray menu to handle multi-profiles.
+ enabled = false;
+#endif
+
testing_profile_manager.CreateTestingProfile("p1");
ASSERT_EQ(1U, profile_manager->GetNumberOfProfiles());
- EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU));
+ EXPECT_EQ(enabled, command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU));
testing_profile_manager.CreateTestingProfile("p2");
ASSERT_EQ(2U, profile_manager->GetNumberOfProfiles());
-#if defined(OS_CHROMEOS)
- // Chrome OS uses system tray menu to handle multi-profiles.
- EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU));
-#else
- EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU));
-#endif
+ EXPECT_EQ(enabled, command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU));
testing_profile_manager.DeleteTestingProfile("p1");
ASSERT_EQ(1U, profile_manager->GetNumberOfProfiles());
- EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU));
+ EXPECT_EQ(enabled, command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU));
testing_profile_manager.DeleteTestingProfile("p2");
}
@@ -232,8 +232,7 @@ TEST_F(BrowserCommandControllerTest, NewAvatarMenuEnabledWhenOnlyOneProfile) {
ASSERT_TRUE(testing_profile_manager.SetUp());
ProfileManager* profile_manager = testing_profile_manager.profile_manager();
- chrome::BrowserCommandController command_controller(browser(),
- profile_manager);
+ chrome::BrowserCommandController command_controller(browser());
const CommandUpdater* command_updater = command_controller.command_updater();
testing_profile_manager.CreateTestingProfile("p1");
@@ -265,7 +264,6 @@ TEST_F(BrowserCommandControllerTest, NewAvatarMenuEnabledInGuestMode) {
TestingProfileManager testing_profile_manager(
TestingBrowserProcess::GetGlobal());
ASSERT_TRUE(testing_profile_manager.SetUp());
- ProfileManager* profile_manager = testing_profile_manager.profile_manager();
// Set up guest a profile.
TestingProfile::Builder guest_builder;
@@ -281,8 +279,7 @@ TEST_F(BrowserCommandControllerTest, NewAvatarMenuEnabledInGuestMode) {
chrome::GetActiveDesktop());
scoped_ptr<Browser> guest_browser(
chrome::CreateBrowserWithTestWindowForParams(&profile_params));
- chrome::BrowserCommandController command_controller(guest_browser.get(),
- profile_manager);
+ chrome::BrowserCommandController command_controller(guest_browser.get());
const CommandUpdater* command_updater = command_controller.command_updater();
#if defined(OS_CHROMEOS)
// Chrome OS uses system tray menu to handle multi-profiles.
@@ -302,10 +299,6 @@ TEST_F(BrowserCommandControllerTest, AvatarMenuAlwaysDisabledInIncognitoMode) {
if (!profiles::IsMultipleProfilesEnabled())
return;
- TestingProfileManager testing_profile_manager(
- TestingBrowserProcess::GetGlobal());
- ASSERT_TRUE(testing_profile_manager.SetUp());
-
// Set up a profile with an off the record profile.
TestingProfile::Builder normal_builder;
scoped_ptr<TestingProfile> original_profile = normal_builder.Build();
@@ -316,9 +309,7 @@ TEST_F(BrowserCommandControllerTest, AvatarMenuAlwaysDisabledInIncognitoMode) {
scoped_ptr<Browser> otr_browser(
chrome::CreateBrowserWithTestWindowForParams(&profile_params));
- ProfileManager* profile_manager = testing_profile_manager.profile_manager();
- chrome::BrowserCommandController command_controller(otr_browser.get(),
- profile_manager);
+ chrome::BrowserCommandController command_controller(otr_browser.get());
const CommandUpdater* command_updater = command_controller.command_updater();
// The old style avatar menu should be disabled.
@@ -465,10 +456,6 @@ TEST_F(BrowserCommandControllerFullscreenTest,
}
TEST_F(BrowserCommandControllerTest, IncognitoModeOnSigninAllowedPrefChange) {
- TestingProfileManager testing_profile_manager(
- TestingBrowserProcess::GetGlobal());
- ASSERT_TRUE(testing_profile_manager.SetUp());
-
// Set up a profile with an off the record profile.
TestingProfile::Builder builder;
builder.SetIncognito();
@@ -485,9 +472,7 @@ TEST_F(BrowserCommandControllerTest, IncognitoModeOnSigninAllowedPrefChange) {
scoped_ptr<Browser> browser2(
chrome::CreateBrowserWithTestWindowForParams(&profile_params));
- ProfileManager* profile_manager = testing_profile_manager.profile_manager();
- chrome::BrowserCommandController command_controller(browser2.get(),
- profile_manager);
+ chrome::BrowserCommandController command_controller(browser2.get());
const CommandUpdater* command_updater = command_controller.command_updater();
// Check that the SYNC_SETUP command is updated on preference change.
@@ -497,12 +482,7 @@ TEST_F(BrowserCommandControllerTest, IncognitoModeOnSigninAllowedPrefChange) {
}
TEST_F(BrowserCommandControllerTest, OnSigninAllowedPrefChange) {
- TestingProfileManager testing_profile_manager(
- TestingBrowserProcess::GetGlobal());
- ASSERT_TRUE(testing_profile_manager.SetUp());
- ProfileManager* profile_manager = testing_profile_manager.profile_manager();
- chrome::BrowserCommandController command_controller(browser(),
- profile_manager);
+ chrome::BrowserCommandController command_controller(browser());
const CommandUpdater* command_updater = command_controller.command_updater();
// Check that the SYNC_SETUP command is updated on preference change.
diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.mm b/chrome/browser/ui/cocoa/browser_window_cocoa.mm
index e503c92..f9ee6e7 100644
--- a/chrome/browser/ui/cocoa/browser_window_cocoa.mm
+++ b/chrome/browser/ui/cocoa/browser_window_cocoa.mm
@@ -706,7 +706,10 @@ void BrowserWindowCocoa::ShowAvatarBubble(WebContents* web_contents,
void BrowserWindowCocoa::ShowAvatarBubbleFromAvatarButton(
AvatarBubbleMode mode) {
AvatarBaseController* controller = [controller_ avatarButtonController];
- [controller showAvatarBubble:[controller buttonView] withMode:mode];
+ NSView* anchor = [controller buttonView];
+ if ([anchor isHiddenOrHasHiddenAncestor])
+ anchor = [[controller_ toolbarController] wrenchButton];
+ [controller showAvatarBubble:anchor withMode:mode];
}
void BrowserWindowCocoa::ShowPasswordGenerationBubble(
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
index 969869f..505532d 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -2369,7 +2369,8 @@ void BrowserView::ShowAvatarBubble(WebContents* web_contents,
views::View::ConvertPointToScreen(GetTabContentsContainerView(), &origin);
gfx::Rect bounds(origin, rect.size());
- AvatarMenuBubbleView::ShowBubble(this, views::BubbleBorder::TOP_RIGHT,
+ AvatarMenuBubbleView::ShowBubble(
+ this, views::BubbleBorder::TOP_RIGHT, views::BubbleBorder::PAINT_NORMAL,
views::BubbleBorder::ALIGN_EDGE_TO_ANCHOR_EDGE, bounds, browser_.get());
}
@@ -2390,9 +2391,21 @@ void BrowserView::ShowAvatarBubbleFromAvatarButton(AvatarBubbleMode mode) {
views::BubbleBorder::ALIGN_EDGE_TO_ANCHOR_EDGE, bounds, browser());
}
} else {
- AvatarMenuButton* button = frame_->GetAvatarMenuButton();
- if (button)
- button->ShowAvatarBubble();
+ views::BubbleBorder::Arrow arrow = views::BubbleBorder::TOP_RIGHT;
+ views::View* anchor_view = frame_->GetAvatarMenuButton();
+ if (!anchor_view)
+ anchor_view = toolbar_->app_menu();
+ else if (!frame_->GetAvatarMenuButton()->button_on_right())
+ arrow = views::BubbleBorder::TOP_LEFT;
+ gfx::Point origin;
+ views::View::ConvertPointToScreen(anchor_view, &origin);
+ gfx::Rect bounds(origin, anchor_view->size());
+ views::BubbleBorder::ArrowPaintType arrow_paint_type =
+ ShouldHideUIForFullscreen() ? views::BubbleBorder::PAINT_TRANSPARENT :
+ views::BubbleBorder::PAINT_NORMAL;
+ AvatarMenuBubbleView::ShowBubble(anchor_view, arrow, arrow_paint_type,
+ views::BubbleBorder::ALIGN_ARROW_TO_MID_ANCHOR, bounds, browser());
+ ProfileMetrics::LogProfileOpenMethod(ProfileMetrics::ICON_AVATAR_BUBBLE);
}
}
diff --git a/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.cc b/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.cc
index 710e5e0..87cb056 100644
--- a/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.cc
+++ b/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.cc
@@ -485,6 +485,7 @@ bool AvatarMenuBubbleView::close_on_deactivate_for_testing_ = true;
void AvatarMenuBubbleView::ShowBubble(
views::View* anchor_view,
views::BubbleBorder::Arrow arrow,
+ views::BubbleBorder::ArrowPaintType arrow_paint_type,
views::BubbleBorder::BubbleAlignment border_alignment,
const gfx::Rect& anchor_rect,
Browser* browser) {
@@ -498,6 +499,7 @@ void AvatarMenuBubbleView::ShowBubble(
avatar_bubble_->set_close_on_deactivate(close_on_deactivate_for_testing_);
avatar_bubble_->SetBackgroundColors();
avatar_bubble_->SetAlignment(border_alignment);
+ avatar_bubble_->SetArrowPaintType(arrow_paint_type);
avatar_bubble_->GetWidget()->Show();
}
diff --git a/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.h b/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.h
index ee22469..313c2c6 100644
--- a/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.h
+++ b/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.h
@@ -50,6 +50,7 @@ class AvatarMenuBubbleView : public views::BubbleDelegateView,
// and (2) will correctly hide the old bubble instance.
static void ShowBubble(views::View* anchor_view,
views::BubbleBorder::Arrow arrow,
+ views::BubbleBorder::ArrowPaintType arrow_paint_type,
views::BubbleBorder::BubbleAlignment border_alignment,
const gfx::Rect& anchor_rect,
Browser* browser);
diff --git a/chrome/browser/ui/views/profiles/avatar_menu_button.cc b/chrome/browser/ui/views/profiles/avatar_menu_button.cc
index 73bf30d..4900e41 100644
--- a/chrome/browser/ui/views/profiles/avatar_menu_button.cc
+++ b/chrome/browser/ui/views/profiles/avatar_menu_button.cc
@@ -12,6 +12,7 @@
#include "chrome/browser/profiles/profile_avatar_icon_util.h"
#include "chrome/browser/profiles/profile_metrics.h"
#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/profiles/avatar_menu_bubble_view.h"
#include "chrome/browser/ui/views/profiles/profile_chooser_view.h"
@@ -77,9 +78,7 @@ void AvatarMenuButton::OnPaint(gfx::Canvas* canvas) {
}
bool AvatarMenuButton::HitTestRect(const gfx::Rect& rect) const {
- if (disabled_)
- return false;
- return views::MenuButton::HitTestRect(rect);
+ return !disabled_ && views::MenuButton::HitTestRect(rect);
}
void AvatarMenuButton::SetAvatarIcon(const gfx::Image& icon,
@@ -93,28 +92,6 @@ void AvatarMenuButton::SetAvatarIcon(const gfx::Image& icon,
// views::MenuButtonListener implementation
void AvatarMenuButton::OnMenuButtonClicked(views::View* source,
const gfx::Point& point) {
- if (disabled_)
- return;
-
- ShowAvatarBubble();
-}
-
-void AvatarMenuButton::ShowAvatarBubble() {
- gfx::Point origin;
- views::View::ConvertPointToScreen(this, &origin);
- gfx::Rect bounds(origin, size());
- views::BubbleBorder::Arrow arrow = button_on_right_ ?
- views::BubbleBorder::TOP_RIGHT : views::BubbleBorder::TOP_LEFT;
- if (switches::IsNewAvatarMenu()) {
- ProfileChooserView::ShowBubble(
- ProfileChooserView::BUBBLE_VIEW_MODE_PROFILE_CHOOSER,
- this, arrow, views::BubbleBorder::ALIGN_ARROW_TO_MID_ANCHOR, bounds,
- browser_);
- } else {
- AvatarMenuBubbleView::ShowBubble(
- this, arrow, views::BubbleBorder::ALIGN_ARROW_TO_MID_ANCHOR, bounds,
- browser_);
- }
-
- ProfileMetrics::LogProfileOpenMethod(ProfileMetrics::ICON_AVATAR_BUBBLE);
+ if (!disabled_)
+ chrome::ShowAvatarMenu(browser_);
}
diff --git a/chrome/browser/ui/views/profiles/avatar_menu_button.h b/chrome/browser/ui/views/profiles/avatar_menu_button.h
index 8c48b36..189ed75 100644
--- a/chrome/browser/ui/views/profiles/avatar_menu_button.h
+++ b/chrome/browser/ui/views/profiles/avatar_menu_button.h
@@ -49,8 +49,6 @@ class AvatarMenuButton : public views::MenuButton,
}
bool button_on_right() { return button_on_right_; }
- void ShowAvatarBubble();
-
private:
// views::MenuButtonListener:
virtual void OnMenuButtonClicked(views::View* source,
diff --git a/tools/valgrind/gtest_exclude/unit_tests.gtest-drmemory_win32.txt b/tools/valgrind/gtest_exclude/unit_tests.gtest-drmemory_win32.txt
index 24c5b46..d1fd850 100644
--- a/tools/valgrind/gtest_exclude/unit_tests.gtest-drmemory_win32.txt
+++ b/tools/valgrind/gtest_exclude/unit_tests.gtest-drmemory_win32.txt
@@ -50,9 +50,6 @@ GAIAInfoUpdateServiceTest.*
ProfileManagerTest.*
ProfileInfoCacheTest.*
-# Failing on the bot. http://crbug.com/167014
-BrowserCommandControllerTest.AvatarMenuDisabledWhenOnlyOneProfile
-
# Failing on the bot. http://crbug.com/168882
UserCloudPolicyStoreTest.LoadWithInvalidFile
UserCloudPolicyStoreTest.LoadWithNoFile