Chromium Code Reviews| Index: chrome/browser/ui/ash/launcher/launcher_context_menu_unittest.cc |
| diff --git a/chrome/browser/ui/ash/launcher/launcher_context_menu_unittest.cc b/chrome/browser/ui/ash/launcher/launcher_context_menu_unittest.cc |
| index 9442943956a08317cfc4447b592ae9f41b4eeef1..e0c28350342fc0e5b5ed248ed9431179a9e5d6e0 100644 |
| --- a/chrome/browser/ui/ash/launcher/launcher_context_menu_unittest.cc |
| +++ b/chrome/browser/ui/ash/launcher/launcher_context_menu_unittest.cc |
| @@ -10,7 +10,9 @@ |
| #include "ash/root_window_controller.h" |
| #include "ash/shell.h" |
| #include "ash/test/ash_test_base.h" |
| +#include "ash/test/ash_test_helper.h" |
| #include "ash/test/shell_test_api.h" |
| +#include "ash/test/test_shell_delegate.h" |
| #include "ash/wm_window.h" |
| #include "base/macros.h" |
| #include "base/memory/ptr_util.h" |
| @@ -34,28 +36,47 @@ |
| #include "ui/display/screen.h" |
| #include "ui/views/widget/widget.h" |
| +namespace { |
| + |
| +// A shell delegate that owns a ChromeLauncherController, like production. |
| +class ChromeLauncherTestShellDelegate : public ash::test::TestShellDelegate { |
| + public: |
| + explicit ChromeLauncherTestShellDelegate(Profile* profile) |
| + : profile_(profile) {} |
| + |
| + ChromeLauncherControllerImpl* controller() { return controller_.get(); } |
| + |
| + // ash::test::TestShellDelegate: |
| + void ShelfInit() override { |
| + if (!controller_) { |
| + controller_ = base::MakeUnique<ChromeLauncherControllerImpl>( |
| + profile_, ash::Shell::Get()->shelf_model()); |
| + controller_->Init(); |
| + } |
| + } |
| + void ShelfShutdown() override { controller_.reset(); } |
| + |
| + private: |
| + Profile* profile_; |
| + std::unique_ptr<ChromeLauncherControllerImpl> controller_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ChromeLauncherTestShellDelegate); |
| +}; |
| + |
| class LauncherContextMenuTest : public ash::test::AshTestBase { |
| protected: |
| static bool IsItemPresentInMenu(LauncherContextMenu* menu, int command_id) { |
| return menu->GetIndexOfCommandId(command_id) != -1; |
| } |
| - LauncherContextMenuTest() : profile_(new TestingProfile()) {} |
| + LauncherContextMenuTest() {} |
| void SetUp() override { |
| - arc_test_.SetUp(profile_.get()); |
| + arc_test_.SetUp(&profile_); |
| session_manager_ = base::MakeUnique<session_manager::SessionManager>(); |
| + shell_delegate_ = new ChromeLauncherTestShellDelegate(&profile_); |
| + ash_test_helper()->set_test_shell_delegate(shell_delegate_); |
|
James Cook
2017/04/19 00:23:47
Ugh, this is tricky. It would be nice if set_test_
msw
2017/04/19 20:56:07
Seems reasonable, but outside the scope of this CL
|
| ash::test::AshTestBase::SetUp(); |
| - std::unique_ptr<ChromeLauncherControllerImpl> controller = |
| - base::MakeUnique<ChromeLauncherControllerImpl>( |
| - profile(), ash::Shell::Get()->shelf_model()); |
| - controller_ = controller.get(); |
| - controller_->Init(); |
| - ash::test::ShellTestApi().SetShelfDelegate(std::move(controller)); |
| - } |
| - |
| - void TearDown() override { |
| - ash::test::AshTestBase::TearDown(); |
| } |
| ash::WmShelf* GetWmShelf(int64_t display_id) { |
| @@ -71,13 +92,12 @@ class LauncherContextMenuTest : public ash::test::AshTestBase { |
| ash::ShelfItem item; |
| item.id = 123; // dummy id |
| item.type = shelf_item_type; |
| - return LauncherContextMenu::Create(controller_, &item, wm_shelf); |
| + return LauncherContextMenu::Create(controller(), &item, wm_shelf); |
| } |
| LauncherContextMenu* CreateLauncherContextMenuForDesktopShell( |
| ash::WmShelf* wm_shelf) { |
| - ash::ShelfItem* item = nullptr; |
| - return LauncherContextMenu::Create(controller_, item, wm_shelf); |
| + return LauncherContextMenu::Create(controller(), nullptr, wm_shelf); |
| } |
| // Creates app window and set optional ARC application id. |
| @@ -94,13 +114,15 @@ class LauncherContextMenuTest : public ash::test::AshTestBase { |
| ArcAppTest& arc_test() { return arc_test_; } |
| - Profile* profile() { return profile_.get(); } |
| + Profile* profile() { return &profile_; } |
| - ChromeLauncherControllerImpl* controller() { return controller_; } |
| + ChromeLauncherControllerImpl* controller() { |
| + return shell_delegate_->controller(); |
| + } |
| private: |
| - std::unique_ptr<TestingProfile> profile_; |
| - ChromeLauncherControllerImpl* controller_ = nullptr; |
| + TestingProfile profile_; |
| + ChromeLauncherTestShellDelegate* shell_delegate_ = nullptr; |
| ArcAppTest arc_test_; |
| std::unique_ptr<session_manager::SessionManager> session_manager_; |
| @@ -310,3 +332,5 @@ TEST_F(LauncherContextMenuTest, AutohideShelfOptionOnExternalDisplay) { |
| EXPECT_TRUE(IsItemPresentInMenu(secondary_menu.get(), |
| LauncherContextMenu::MENU_AUTO_HIDE)); |
| } |
| + |
| +} // namespace |
|
James Cook
2017/04/19 00:23:47
Hooray for anonymous namespace!
msw
2017/04/19 20:56:07
Acknowledged.
|