Chromium Code Reviews| Index: chrome/browser/ui/views/new_avatar_menu_button_browsertest.cc |
| diff --git a/chrome/browser/ui/views/avatar_menu_button_browsertest.cc b/chrome/browser/ui/views/new_avatar_menu_button_browsertest.cc |
| similarity index 52% |
| copy from chrome/browser/ui/views/avatar_menu_button_browsertest.cc |
| copy to chrome/browser/ui/views/new_avatar_menu_button_browsertest.cc |
| index a3c01250caacef69479aa69063f6c0b6ba4e3fa1..1bd886d20b21bfcf2f0f6f05e9a4dff117818f86 100644 |
| --- a/chrome/browser/ui/views/avatar_menu_button_browsertest.cc |
| +++ b/chrome/browser/ui/views/new_avatar_menu_button_browsertest.cc |
| @@ -1,174 +1,119 @@ |
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| -// Use of this source code is governed by a BSD-style license that can be |
| -// found in the LICENSE file. |
| - |
| -#include "chrome/browser/ui/views/avatar_menu_button.h" |
| - |
| -#include "base/command_line.h" |
| -#include "base/path_service.h" |
| -#include "base/strings/utf_string_conversions.h" |
| -#include "chrome/browser/chrome_notification_types.h" |
| -#include "chrome/browser/profiles/avatar_menu.h" |
| -#include "chrome/browser/profiles/profile_manager.h" |
| -#include "chrome/browser/profiles/profiles_state.h" |
| -#include "chrome/browser/ui/browser_list.h" |
| -#include "chrome/browser/ui/views/avatar_menu_bubble_view.h" |
| -#include "chrome/browser/ui/views/frame/browser_view.h" |
| -#include "chrome/browser/ui/views/profile_chooser_view.h" |
| -#include "chrome/browser/ui/views/user_manager_view.h" |
| -#include "chrome/common/chrome_paths.h" |
| -#include "chrome/common/chrome_switches.h" |
| -#include "chrome/test/base/in_process_browser_test.h" |
| -#include "chrome/test/base/test_switches.h" |
| -#include "chrome/test/base/testing_browser_process.h" |
| -#include "content/public/test/test_utils.h" |
| -#include "grit/generated_resources.h" |
| -#include "ui/base/l10n/l10n_util.h" |
| -#include "ui/views/controls/button/label_button.h" |
| - |
| -class AvatarMenuButtonTest : public InProcessBrowserTest, |
| - public testing::WithParamInterface<bool> { |
| - public: |
| - AvatarMenuButtonTest(); |
| - virtual ~AvatarMenuButtonTest(); |
| - |
| - protected: |
| - virtual void SetUp() OVERRIDE; |
| - |
| - bool UsingNewProfileChooser(); |
| - void CreateTestingProfile(); |
| - AvatarMenuButton* GetAvatarMenuButton(); |
| - void StartAvatarMenu(); |
| - |
| - private: |
| - DISALLOW_COPY_AND_ASSIGN(AvatarMenuButtonTest); |
| -}; |
| - |
| -AvatarMenuButtonTest::AvatarMenuButtonTest() { |
| -} |
| - |
| -AvatarMenuButtonTest::~AvatarMenuButtonTest() { |
| -} |
| - |
| -void AvatarMenuButtonTest::SetUp() { |
| - if (GetParam()) { |
| - if (!UsingNewProfileChooser()) { |
| - CommandLine::ForCurrentProcess()->AppendSwitch( |
| - switches::kNewProfileManagement); |
| - } |
| - DCHECK(UsingNewProfileChooser()); |
| - } else { |
| - DCHECK(!UsingNewProfileChooser()); |
| - } |
| - |
| - InProcessBrowserTest::SetUp(); |
| -} |
| - |
| -bool AvatarMenuButtonTest::UsingNewProfileChooser() { |
| - return CommandLine::ForCurrentProcess()->HasSwitch( |
| - switches::kNewProfileManagement); |
| -} |
| - |
| -void AvatarMenuButtonTest::CreateTestingProfile() { |
| - ProfileManager* profile_manager = g_browser_process->profile_manager(); |
| - EXPECT_EQ(1u, profile_manager->GetNumberOfProfiles()); |
| - |
| - // Sign in the default profile |
| - ProfileInfoCache& cache = profile_manager->GetProfileInfoCache(); |
| - cache.SetUserNameOfProfileAtIndex(0, UTF8ToUTF16("user_name")); |
| - |
| - base::FilePath path; |
| - PathService::Get(chrome::DIR_USER_DATA, &path); |
| - path = path.AppendASCII("test_profile"); |
| - if (!base::PathExists(path)) |
| - ASSERT_TRUE(file_util::CreateDirectory(path)); |
| - Profile* profile = |
| - Profile::CreateProfile(path, NULL, Profile::CREATE_MODE_SYNCHRONOUS); |
| - profile_manager->RegisterTestingProfile(profile, true, false); |
| - EXPECT_EQ(2u, profile_manager->GetNumberOfProfiles()); |
| -} |
| - |
| -AvatarMenuButton* AvatarMenuButtonTest::GetAvatarMenuButton() { |
| - BrowserView* browser_view = reinterpret_cast<BrowserView*>( |
| - browser()->window()); |
| - return browser_view->frame()->GetAvatarMenuButton(); |
| -} |
| - |
| -void AvatarMenuButtonTest::StartAvatarMenu() { |
| - AvatarMenuButton* button = GetAvatarMenuButton(); |
| - ASSERT_TRUE(button); |
| - |
| - AvatarMenuBubbleView::set_close_on_deactivate(false); |
| - ProfileChooserView::set_close_on_deactivate(false); |
| - static_cast<views::MenuButtonListener*>(button)->OnMenuButtonClicked( |
| - NULL, gfx::Point()); |
| - base::MessageLoop::current()->RunUntilIdle(); |
| - EXPECT_NE(AvatarMenuBubbleView::IsShowing(), |
| - ProfileChooserView::IsShowing()); |
| -} |
| - |
| -IN_PROC_BROWSER_TEST_P(AvatarMenuButtonTest, HideOnSecondClick) { |
| -#if defined(OS_WIN) && defined(USE_ASH) |
| - // Disable this test in Metro+Ash for now (http://crbug.com/262796). |
| - if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) |
| - return; |
| -#endif |
| - |
| - if (!profiles::IsMultipleProfilesEnabled() || |
| - UsingNewProfileChooser()) { |
| - return; |
| - } |
| - |
| - CreateTestingProfile(); |
| - StartAvatarMenu(); |
| - |
| - // Verify that clicking again doesn't reshow it. |
| - AvatarMenuButton* button = GetAvatarMenuButton(); |
| - static_cast<views::MenuButtonListener*>(button)->OnMenuButtonClicked( |
| - NULL, gfx::Point()); |
| - // Hide the bubble manually. In the browser this would normally happen during |
| - // the event processing. |
| - AvatarMenuBubbleView::Hide(); |
| - base::MessageLoop::current()->RunUntilIdle(); |
| - EXPECT_FALSE(AvatarMenuBubbleView::IsShowing()); |
| - EXPECT_FALSE(ProfileChooserView::IsShowing()); |
| -} |
| - |
| -IN_PROC_BROWSER_TEST_P(AvatarMenuButtonTest, NewSignOut) { |
| - if (!profiles::IsMultipleProfilesEnabled() || |
| - !UsingNewProfileChooser()) { |
| - return; |
| - } |
| - |
| - CreateTestingProfile(); |
| - StartAvatarMenu(); |
| - |
| - BrowserList* browser_list = |
| - BrowserList::GetInstance(chrome::GetActiveDesktop()); |
| - EXPECT_EQ(1U, browser_list->size()); |
| - content::WindowedNotificationObserver window_close_observer( |
| - chrome::NOTIFICATION_BROWSER_CLOSED, |
| - content::Source<Browser>(browser())); |
| - |
| - AvatarMenu* menu = |
| - ProfileChooserView::profile_bubble_->avatar_menu_.get(); |
| - const AvatarMenu::Item& menu_item_before = |
| - menu->GetItemAt(menu->GetActiveProfileIndex()); |
| - EXPECT_FALSE(menu_item_before.signin_required); |
| - |
| - ui::MouseEvent mouse_ev(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), 0); |
| - menu->SetLogoutURL("about:blank"); |
| - |
| - ProfileChooserView::profile_bubble_->LinkClicked( |
| - static_cast<views::Link*>( |
| - ProfileChooserView::profile_bubble_->signout_current_profile_link_), |
| - 0); |
| - |
| - EXPECT_TRUE(menu->GetItemAt(menu->GetActiveProfileIndex()).signin_required); |
| - |
| - window_close_observer.Wait(); // Rely on test timeout for failure indication. |
| - EXPECT_TRUE(browser_list->empty()); |
| -} |
| - |
| -INSTANTIATE_TEST_CASE_P(Old, AvatarMenuButtonTest, testing::Values(false)); |
| -INSTANTIATE_TEST_CASE_P(New, AvatarMenuButtonTest, testing::Values(true)); |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "base/command_line.h" |
| +#include "base/path_service.h" |
| +#include "base/strings/utf_string_conversions.h" |
| +#include "chrome/browser/chrome_notification_types.h" |
| +#include "chrome/browser/profiles/profile_manager.h" |
| +#include "chrome/browser/profiles/profiles_state.h" |
| +#include "chrome/browser/ui/browser_list.h" |
| +#include "chrome/browser/ui/views/avatar_menu_button.h" |
| +#include "chrome/browser/ui/views/frame/browser_view.h" |
| +#include "chrome/browser/ui/views/new_avatar_button.h" |
| +#include "chrome/browser/ui/views/profile_chooser_view.h" |
| +#include "chrome/common/chrome_paths.h" |
| +#include "chrome/common/chrome_switches.h" |
| +#include "chrome/test/base/in_process_browser_test.h" |
| +#include "chrome/test/base/test_switches.h" |
| +#include "chrome/test/base/testing_browser_process.h" |
| +#include "content/public/test/test_utils.h" |
| +#include "grit/generated_resources.h" |
| + |
| +class NewAvatarMenuButtonTest : public InProcessBrowserTest { |
| + public: |
| + NewAvatarMenuButtonTest(); |
| + virtual ~NewAvatarMenuButtonTest(); |
| + |
| + protected: |
| + virtual void SetUp() OVERRIDE; |
| + virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; |
| + void CreateTestingProfile(); |
| + void StartAvatarMenu(); |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(NewAvatarMenuButtonTest); |
| +}; |
| + |
| +NewAvatarMenuButtonTest::NewAvatarMenuButtonTest() { |
| +} |
| + |
| +NewAvatarMenuButtonTest::~NewAvatarMenuButtonTest() { |
| +} |
| + |
| +void NewAvatarMenuButtonTest::SetUp() { |
| + InProcessBrowserTest::SetUp(); |
| + DCHECK(CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kNewProfileManagement)); |
| +} |
| + |
| +void NewAvatarMenuButtonTest::SetUpCommandLine(CommandLine* command_line) { |
| + command_line->AppendSwitch(switches::kNewProfileManagement); |
| +} |
| + |
| +void NewAvatarMenuButtonTest::CreateTestingProfile() { |
| + ProfileManager* profile_manager = g_browser_process->profile_manager(); |
| + EXPECT_EQ(1u, profile_manager->GetNumberOfProfiles()); |
| + |
| + // Sign in the default profile |
| + ProfileInfoCache& cache = profile_manager->GetProfileInfoCache(); |
| + cache.SetUserNameOfProfileAtIndex(0, UTF8ToUTF16("user_name")); |
| + |
| + base::FilePath path; |
| + PathService::Get(chrome::DIR_USER_DATA, &path); |
| + path = path.AppendASCII("test_profile"); |
| + if (!base::PathExists(path)) |
| + ASSERT_TRUE(file_util::CreateDirectory(path)); |
| + Profile* profile = |
| + Profile::CreateProfile(path, NULL, Profile::CREATE_MODE_SYNCHRONOUS); |
| + profile_manager->RegisterTestingProfile(profile, true, false); |
| + EXPECT_EQ(2u, profile_manager->GetNumberOfProfiles()); |
| +} |
| + |
| +void NewAvatarMenuButtonTest::StartAvatarMenu() { |
| + BrowserView* browser_view = reinterpret_cast<BrowserView*>( |
| + browser()->window()); |
| + |
| + // Ensure that the avatar icon button is not also showing. |
| + NewAvatarButton* button = browser_view->frame()->GetNewAvatarMenuButton(); |
| + ASSERT_TRUE(button); |
| + ASSERT_FALSE(browser_view->frame()->GetAvatarMenuButton()); |
| + |
| + ProfileChooserView::set_close_on_deactivate(false); |
| + ui::MouseEvent mouse_ev(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), 0); |
| + button->OnMousePressed(mouse_ev); |
| + base::MessageLoop::current()->RunUntilIdle(); |
| + EXPECT_TRUE(ProfileChooserView::IsShowing()); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(NewAvatarMenuButtonTest, SignOut) { |
| + CreateTestingProfile(); |
| + StartAvatarMenu(); |
|
sky
2013/10/03 23:23:11
Any time you call a function that potentially asse
noms (inactive)
2013/10/07 21:18:15
Done.
|
| + |
| + BrowserList* browser_list = |
| + BrowserList::GetInstance(chrome::GetActiveDesktop()); |
| + EXPECT_EQ(1U, browser_list->size()); |
| + content::WindowedNotificationObserver window_close_observer( |
| + chrome::NOTIFICATION_BROWSER_CLOSED, |
| + content::Source<Browser>(browser())); |
| + |
| + AvatarMenu* menu = |
| + ProfileChooserView::profile_bubble_->avatar_menu_.get(); |
| + const AvatarMenu::Item& menu_item_before = |
| + menu->GetItemAt(menu->GetActiveProfileIndex()); |
| + EXPECT_FALSE(menu_item_before.signin_required); |
| + |
| + ui::MouseEvent mouse_ev(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), 0); |
| + menu->SetLogoutURL("about:blank"); |
| + |
| + ProfileChooserView::profile_bubble_->LinkClicked( |
| + static_cast<views::Link*>( |
| + ProfileChooserView::profile_bubble_->signout_current_profile_link_), |
| + 0); |
| + |
| + EXPECT_TRUE(menu->GetItemAt(menu->GetActiveProfileIndex()).signin_required); |
| + |
| + window_close_observer.Wait(); // Rely on test timeout for failure indication. |
| + EXPECT_TRUE(browser_list->empty()); |
| +} |