| 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_);
|
| 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
|
|
|