Chromium Code Reviews| Index: chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_unittest.cc |
| diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_unittest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_unittest.cc |
| index 0ed295f97d6c81054c847ce96435f9299e6ca1f8..e7467c251e32fc9863393947832eb2e667daea3e 100644 |
| --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_unittest.cc |
| +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_unittest.cc |
| @@ -24,6 +24,7 @@ |
| #include "ash/display/screen_orientation_controller_chromeos.h" |
| #include "ash/public/cpp/app_launch_id.h" |
| #include "ash/public/cpp/shelf_item.h" |
| +#include "ash/public/cpp/shelf_item_delegate.h" |
| #include "ash/shell.h" |
| #include "ash/test/ash_test_helper.h" |
| #include "ash/test/shell_test_api.h" |
| @@ -63,7 +64,6 @@ |
| #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_util.h" |
| #include "chrome/browser/ui/ash/launcher/extension_app_window_launcher_item_controller.h" |
| #include "chrome/browser/ui/ash/launcher/launcher_controller_helper.h" |
| -#include "chrome/browser/ui/ash/launcher/launcher_item_controller.h" |
| #include "chrome/browser/ui/ash/multi_user/multi_user_util.h" |
| #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h" |
| #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h" |
| @@ -160,9 +160,8 @@ class TestShelfModelObserver : public ash::ShelfModelObserver { |
| last_index_ = target_index; |
| } |
| - void OnSetShelfItemDelegate( |
| - ash::ShelfID id, |
| - ash::mojom::ShelfItemDelegate* item_delegate) override {} |
| + void OnSetShelfItemDelegate(ash::ShelfID id, |
| + ash::ShelfItemDelegate* item_delegate) override {} |
| void clear_counts() { |
| added_ = 0; |
| @@ -256,15 +255,14 @@ class TestLauncherControllerHelper : public LauncherControllerHelper { |
| }; |
| // Test implementation of a V2 app launcher item controller. |
| -class TestV2AppLauncherItemController : public LauncherItemController { |
| +class TestV2AppLauncherItemController : public ash::ShelfItemDelegate { |
| public: |
| - TestV2AppLauncherItemController(const std::string& app_id, |
| - ChromeLauncherController* controller) |
| - : LauncherItemController(ash::AppLaunchId(app_id), controller) {} |
| + explicit TestV2AppLauncherItemController(const std::string& app_id) |
| + : ash::ShelfItemDelegate(ash::AppLaunchId(app_id)) {} |
| ~TestV2AppLauncherItemController() override {} |
| - // Override for LauncherItemController: |
| + // Override for ash::ShelfItemDelegate: |
| void ItemSelected(std::unique_ptr<ui::Event> event, |
| int64_t display_id, |
| ash::ShelfLaunchSource source, |
| @@ -321,10 +319,10 @@ class ProxyShelfDelegate : public ash::ShelfDelegate { |
| }; |
| // A callback that does nothing after shelf item selection handling. |
| -void NoopCallback(ash::ShelfAction action, base::Optional<MenuItemList>) {} |
| +void NoopCallback(ash::ShelfAction action, base::Optional<ash::MenuItemList>) {} |
| // Simulates selection of the shelf item. |
| -void SelectItem(ash::mojom::ShelfItemDelegate* delegate) { |
| +void SelectItem(ash::ShelfItemDelegate* delegate) { |
| std::unique_ptr<ui::Event> event = base::MakeUnique<ui::MouseEvent>( |
| ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), |
| ui::EF_NONE, 0); |
| @@ -455,8 +453,7 @@ class ChromeLauncherControllerImplTest : public BrowserWithTestWindowTest { |
| virtual void CreateRunningV2App(const std::string& app_id) { |
| DCHECK(!test_controller_); |
| // Change the created launcher controller into a V2 app controller. |
| - test_controller_ = new TestV2AppLauncherItemController(app_id, |
| - launcher_controller_.get()); |
| + test_controller_ = new TestV2AppLauncherItemController(app_id); |
| ash::ShelfID id = launcher_controller_->InsertAppLauncherItem( |
| test_controller_, ash::STATUS_RUNNING, model_->item_count(), |
| ash::TYPE_APP); |
| @@ -977,7 +974,7 @@ class ChromeLauncherControllerImplTest : public BrowserWithTestWindowTest { |
| std::unique_ptr<TestingProfileManager> profile_manager_; |
| // |item_delegate_manager_| owns |test_controller_|. |
| - LauncherItemController* test_controller_ = nullptr; |
| + ash::ShelfItemDelegate* test_controller_ = nullptr; |
| ExtensionService* extension_service_ = nullptr; |
| @@ -1048,15 +1045,6 @@ class WebContentsDestroyedWatcher : public content::WebContentsObserver { |
| class V1App : public TestBrowserWindow { |
| public: |
| V1App(Profile* profile, const std::string& app_name) { |
| - // Create a window. |
| - native_window_.reset(new aura::Window(NULL)); |
| - native_window_->set_id(0); |
| - native_window_->SetType(ui::wm::WINDOW_TYPE_POPUP); |
| - native_window_->Init(ui::LAYER_TEXTURED); |
| - native_window_->Show(); |
| - aura::client::ParentWindowWithContext(native_window_.get(), |
| - ash::Shell::GetPrimaryRootWindow(), |
| - gfx::Rect(10, 10, 20, 30)); |
| Browser::CreateParams params = Browser::CreateParams::CreateForApp( |
| kCrxAppPrefix + app_name, true /* trusted_source */, gfx::Rect(), |
| profile, true); |
| @@ -1072,18 +1060,10 @@ class V1App : public TestBrowserWindow { |
| Browser* browser() { return browser_.get(); } |
| - // TestBrowserWindow override: |
| - gfx::NativeWindow GetNativeWindow() const override { |
| - return native_window_.get(); |
| - } |
| - |
| private: |
| // The associated browser with this app. |
| std::unique_ptr<Browser> browser_; |
| - // The native window we use. |
| - std::unique_ptr<aura::Window> native_window_; |
| - |
| DISALLOW_COPY_AND_ASSIGN(V1App); |
| }; |
| @@ -1241,15 +1221,6 @@ class MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest |
| const std::string& app_name, |
| const std::string& url) { |
| V1App* v1_app = new V1App(profile, app_name); |
| - // Create a new launcher controller helper and assign it to the launcher so |
| - // that this app gets properly detected. |
| - // TODO(skuhne): Create a more intelligent launcher controller helper that |
| - // is able to detect all running apps properly. |
| - TestLauncherControllerHelper* helper = new TestLauncherControllerHelper; |
| - helper->SetAppID(v1_app->browser()->tab_strip_model()->GetWebContentsAt(0), |
| - app_name); |
| - SetLauncherControllerHelper(helper); |
| - |
| NavigateAndCommitActiveTabWithTitle(v1_app->browser(), GURL(url), |
| base::string16()); |
| return v1_app; |
| @@ -1916,7 +1887,7 @@ TEST_P(ChromeLauncherControllerImplWithArcTest, ArcDeferredLaunch) { |
| // We activated arc_app_id1 twice but expect one close for item controller |
| // stops launching request. |
| - LauncherItemController* item_controller = |
| + ash::ShelfItemDelegate* item_controller = |
| launcher_controller_->GetLauncherItemController(shelf_id_app_1); |
| ASSERT_NE(nullptr, item_controller); |
| item_controller->Close(); |
| @@ -1977,8 +1948,7 @@ TEST_P(ChromeLauncherControllerImplWithArcTest, ArcDeferredLaunchForActiveApp) { |
| // Play Store app is ARC app that might be represented by native Chrome |
| // platform app. |
| AppWindowLauncherItemController* app_controller = |
| - new ExtensionAppWindowLauncherItemController(ash::AppLaunchId(app_id), |
| - launcher_controller_.get()); |
| + new ExtensionAppWindowLauncherItemController(ash::AppLaunchId(app_id)); |
| launcher_controller_->SetItemController(shelf_id, app_controller); |
| launcher_controller_->SetItemStatus(shelf_id, ash::STATUS_RUNNING); |
| @@ -2294,8 +2264,6 @@ TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest, |
| V1AppUpdateOnUserSwitch) { |
| // Create a browser item in the LauncherController. |
| InitLauncherController(); |
| - // TODO(crbug.com/654622): This test breaks with a non-null static instance. |
|
James Cook
2017/04/04 15:34:45
Woo hoo, these are going away!
msw
2017/04/04 18:53:09
Acknowledged. (there is one left for an ARC test..
|
| - ChromeLauncherControllerImpl::set_instance_for_test(nullptr); |
| EXPECT_EQ(2, model_->item_count()); |
| { |
| @@ -2327,8 +2295,6 @@ TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest, |
| V1AppUpdateOnUserSwitchEdgecases) { |
| // Create a browser item in the LauncherController. |
| InitLauncherController(); |
| - // TODO(crbug.com/654622): This test breaks with a non-null static instance. |
| - ChromeLauncherControllerImpl::set_instance_for_test(nullptr); |
| // First test: Create an app when the user is not active. |
| std::string user2 = "user2"; |
| @@ -2365,8 +2331,6 @@ TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest, |
| V1CloseOnVisitingDesktop) { |
| // Create a browser item in the LauncherController. |
| InitLauncherController(); |
| - // TODO(crbug.com/654622): This test breaks with a non-null static instance. |
| - ChromeLauncherControllerImpl::set_instance_for_test(nullptr); |
| chrome::MultiUserWindowManager* manager = |
| chrome::MultiUserWindowManager::GetInstance(); |
| @@ -2411,10 +2375,6 @@ TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest, |
| V1AppUpdateOnUserSwitchEdgecases2) { |
| // Create a browser item in the LauncherController. |
| InitLauncherController(); |
| - // TODO(crbug.com/654622): This test breaks with a non-null static instance. |
| - ChromeLauncherControllerImpl::set_instance_for_test(nullptr); |
| - |
| - SetLauncherControllerHelper(new TestLauncherControllerHelper); |
| // First test: Create an app when the user is not active. |
| std::string user2 = "user2"; |
| @@ -2878,7 +2838,7 @@ void CheckAppMenu(ChromeLauncherControllerImpl* controller, |
| const ash::ShelfItem& item, |
| size_t expected_item_count, |
| base::string16 expected_item_titles[]) { |
| - MenuItemList items = controller->GetAppMenuItemsForTesting(item); |
| + ash::MenuItemList items = controller->GetAppMenuItemsForTesting(item); |
| ASSERT_EQ(expected_item_count, items.size()); |
| for (size_t i = 0; i < expected_item_count; i++) |
| EXPECT_EQ(expected_item_titles[i], items[i]->label); |
| @@ -3329,7 +3289,7 @@ TEST_F(ChromeLauncherControllerImplTest, V1AppMenuExecution) { |
| item_gmail.id = gmail_id; |
| base::string16 two_menu_items[] = {title1, title2}; |
| CheckAppMenu(launcher_controller_.get(), item_gmail, 2, two_menu_items); |
| - LauncherItemController* item_controller = |
| + ash::ShelfItemDelegate* item_controller = |
| launcher_controller_->GetLauncherItemController(gmail_id); |
| ASSERT_TRUE(item_controller); |
| EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
| @@ -3378,13 +3338,13 @@ TEST_F(ChromeLauncherControllerImplTest, V1AppMenuDeletionExecution) { |
| base::string16 two_menu_items[] = {title1, title2}; |
| CheckAppMenu(launcher_controller_.get(), item_gmail, 2, two_menu_items); |
| - LauncherItemController* item_controller = |
| + ash::ShelfItemDelegate* item_controller = |
| launcher_controller_->GetLauncherItemController(gmail_id); |
| ASSERT_TRUE(item_controller); |
| int tabs = browser()->tab_strip_model()->count(); |
| // Activate the proper tab through the menu item. |
| { |
| - MenuItemList items = |
| + ash::MenuItemList items = |
| launcher_controller_->GetAppMenuItemsForTesting(item_gmail); |
| item_controller->ExecuteCommand(items[1]->command_id, ui::EF_NONE); |
| EXPECT_EQ(tabs, browser()->tab_strip_model()->count()); |
| @@ -3392,7 +3352,7 @@ TEST_F(ChromeLauncherControllerImplTest, V1AppMenuDeletionExecution) { |
| // Delete one tab through the menu item. |
| { |
| - MenuItemList items = |
| + ash::MenuItemList items = |
| launcher_controller_->GetAppMenuItemsForTesting(item_gmail); |
| item_controller->ExecuteCommand(items[1]->command_id, ui::EF_SHIFT_DOWN); |
| EXPECT_EQ(--tabs, browser()->tab_strip_model()->count()); |
| @@ -3625,8 +3585,7 @@ TEST_F(ChromeLauncherControllerImplTest, MultipleAppIconLoaders) { |
| std::unique_ptr<AppIconLoader>(app_icon_loader2)); |
| AppWindowLauncherItemController* app_controller3 = |
| - new ExtensionAppWindowLauncherItemController(ash::AppLaunchId(app_id3), |
| - launcher_controller_.get()); |
| + new ExtensionAppWindowLauncherItemController(ash::AppLaunchId(app_id3)); |
| const ash::ShelfID shelfId3 = launcher_controller_->CreateAppLauncherItem( |
| app_controller3, ash::STATUS_RUNNING); |
| EXPECT_EQ(0, app_icon_loader1->fetch_count()); |
| @@ -3635,8 +3594,7 @@ TEST_F(ChromeLauncherControllerImplTest, MultipleAppIconLoaders) { |
| EXPECT_EQ(0, app_icon_loader2->clear_count()); |
| AppWindowLauncherItemController* app_controller2 = |
| - new ExtensionAppWindowLauncherItemController(ash::AppLaunchId(app_id2), |
| - launcher_controller_.get()); |
| + new ExtensionAppWindowLauncherItemController(ash::AppLaunchId(app_id2)); |
| const ash::ShelfID shelfId2 = launcher_controller_->CreateAppLauncherItem( |
| app_controller2, ash::STATUS_RUNNING); |
| EXPECT_EQ(0, app_icon_loader1->fetch_count()); |
| @@ -3645,8 +3603,7 @@ TEST_F(ChromeLauncherControllerImplTest, MultipleAppIconLoaders) { |
| EXPECT_EQ(0, app_icon_loader2->clear_count()); |
| AppWindowLauncherItemController* app_controller1 = |
| - new ExtensionAppWindowLauncherItemController(ash::AppLaunchId(app_id1), |
| - launcher_controller_.get()); |
| + new ExtensionAppWindowLauncherItemController(ash::AppLaunchId(app_id1)); |
| const ash::ShelfID shelfId1 = launcher_controller_->CreateAppLauncherItem( |
| app_controller1, ash::STATUS_RUNNING); |
| @@ -3783,7 +3740,7 @@ TEST_P(ChromeLauncherControllerImplWithArcTest, ShelfItemWithMultipleWindows) { |
| const ash::ShelfID shelf_id = |
| launcher_controller_->GetShelfIDForAppID(app_id); |
| - LauncherItemController* item_controller = |
| + ash::ShelfItemDelegate* item_controller = |
| launcher_controller_->GetLauncherItemController(shelf_id); |
| ASSERT_TRUE(item_controller); |
| @@ -3795,7 +3752,7 @@ TEST_P(ChromeLauncherControllerImplWithArcTest, ShelfItemWithMultipleWindows) { |
| // Command ids are just app window indices. Note, apps are registered in |
| // opposite order. Last created goes in front. |
| - MenuItemList items = item_controller->GetAppMenuItems(0); |
| + ash::MenuItemList items = item_controller->GetAppMenuItems(0); |
| ASSERT_EQ(items.size(), 2U); |
| EXPECT_EQ(items[0]->command_id, 0U); |
| EXPECT_EQ(items[1]->command_id, 1U); |