| 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 1984510f3459599970ff20e94b2cdae442eee780..cc29bfd0d18ebb1eb9d7e788b96a3275fa6a6454 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
|
| @@ -277,48 +277,6 @@ class TestV2AppLauncherItemController : public ash::ShelfItemDelegate {
|
| DISALLOW_COPY_AND_ASSIGN(TestV2AppLauncherItemController);
|
| };
|
|
|
| -// Proxies to ShelfDelegate invocation to the given
|
| -// ChromeLauncherControllerImpl instance. Because of ownership management,
|
| -// ChromeLauncherControllerImpl instance cannot be injected to WmShell.
|
| -// This wraps the instance, so that it can be injected.
|
| -class ProxyShelfDelegate : public ash::ShelfDelegate {
|
| - public:
|
| - explicit ProxyShelfDelegate(ChromeLauncherControllerImpl* controller)
|
| - : controller_(controller) {}
|
| - ~ProxyShelfDelegate() override = default;
|
| -
|
| - ash::ShelfID GetShelfIDForAppID(const std::string& app_id) override {
|
| - return controller_->GetShelfIDForAppID(app_id);
|
| - };
|
| -
|
| - ash::ShelfID GetShelfIDForAppIDAndLaunchID(
|
| - const std::string& app_id,
|
| - const std::string& launch_id) override {
|
| - return controller_->GetShelfIDForAppIDAndLaunchID(app_id, launch_id);
|
| - }
|
| -
|
| - const std::string& GetAppIDForShelfID(ash::ShelfID id) override {
|
| - return controller_->GetAppIDForShelfID(id);
|
| - }
|
| -
|
| - void PinAppWithID(const std::string& app_id) override {
|
| - return controller_->PinAppWithID(app_id);
|
| - }
|
| -
|
| - bool IsAppPinned(const std::string& app_id) override {
|
| - return controller_->IsAppPinned(app_id);
|
| - }
|
| -
|
| - void UnpinAppWithID(const std::string& app_id) override {
|
| - return controller_->UnpinAppWithID(app_id);
|
| - }
|
| -
|
| - private:
|
| - ChromeLauncherControllerImpl* const controller_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ProxyShelfDelegate);
|
| -};
|
| -
|
| // A callback that does nothing after shelf item selection handling.
|
| void NoopCallback(ash::ShelfAction action, base::Optional<ash::MenuItemList>) {}
|
|
|
| @@ -508,7 +466,7 @@ class ChromeLauncherControllerImplTest : public BrowserWithTestWindowTest {
|
| arc_test_.TearDown();
|
| model_->RemoveObserver(model_observer_.get());
|
| model_observer_.reset();
|
| - launcher_controller_.reset();
|
| + launcher_controller_ = nullptr;
|
| BrowserWithTestWindowTest::TearDown();
|
| }
|
|
|
| @@ -530,34 +488,47 @@ class ChromeLauncherControllerImplTest : public BrowserWithTestWindowTest {
|
| model_->Add(app_list);
|
| }
|
|
|
| - void InitLauncherController() {
|
| - launcher_controller_.reset(
|
| - new ChromeLauncherControllerImpl(profile(), model_));
|
| - launcher_controller_->Init();
|
| + // Create a launcher controller instance and register it as the ShelfDelegate.
|
| + // Returns a pointer to the uninitialized controller, which is owned by Shell.
|
| + ChromeLauncherControllerImpl* CreateLauncherController() {
|
| + // Shell owns ChromeLauncherController as its ShelfDelegate. The lifetime
|
| + // of this instance should match production behavior as closely as possible.
|
| + DCHECK(!ChromeLauncherController::instance());
|
| + std::unique_ptr<ChromeLauncherControllerImpl> launcher_controller =
|
| + base::MakeUnique<ChromeLauncherControllerImpl>(profile(), model_);
|
| + launcher_controller_ = launcher_controller.get();
|
| + ash::test::ShellTestApi().SetShelfDelegate(std::move(launcher_controller));
|
| + return launcher_controller_;
|
| }
|
|
|
| + // Create and initialize the controller.
|
| + // Returns a pointer to the initialized controller, which is owned by Shell.
|
| + void InitLauncherController() { CreateLauncherController()->Init(); }
|
| +
|
| + // Create and initialize the controller; create a tab and show the browser.
|
| void InitLauncherControllerWithBrowser() {
|
| InitLauncherController();
|
| chrome::NewTab(browser());
|
| browser()->window()->Show();
|
| }
|
|
|
| - void RecreateChromeLauncher() {
|
| - // Destroy controller first if it exists.
|
| - launcher_controller_.reset();
|
| + // Destroy Shell's controller instance and clear the local pointer.
|
| + void ResetLauncherController() {
|
| + launcher_controller_ = nullptr;
|
| + ash::test::ShellTestApi().SetShelfDelegate(nullptr);
|
| + }
|
| +
|
| + // Destroy and recreate the controller; clear and reinitialize the ShelfModel.
|
| + // Returns a pointer to the uninitialized controller, which is owned by Shell.
|
| + // TODO(msw): This does not accurately represent ChromeLauncherControllerImpl
|
| + // lifetime or usage in production, and does not accurately simulate restarts.
|
| + ChromeLauncherControllerImpl* RecreateLauncherController() {
|
| + // Destroy any existing controller first; only one may exist at a time.
|
| + ResetLauncherController();
|
| while (model_->item_count() > 0)
|
| model_->RemoveItemAt(0);
|
| AddAppListLauncherItem();
|
| - launcher_controller_ =
|
| - base::MakeUnique<ChromeLauncherControllerImpl>(profile(), model_);
|
| - launcher_controller_->Init();
|
| - }
|
| -
|
| - // This needs to be called after InitLaunchController(), or its family.
|
| - // It is not supported to recreate the instance.
|
| - void SetShelfDelegate() {
|
| - ash::test::ShellTestApi().SetShelfDelegate(
|
| - base::MakeUnique<ProxyShelfDelegate>(launcher_controller_.get()));
|
| + return CreateLauncherController();
|
| }
|
|
|
| void StartAppSyncService(const syncer::SyncDataList& init_sync_list) {
|
| @@ -975,7 +946,7 @@ class ChromeLauncherControllerImplTest : public BrowserWithTestWindowTest {
|
|
|
| ArcAppTest arc_test_;
|
| bool auto_start_arc_test_ = false;
|
| - std::unique_ptr<ChromeLauncherControllerImpl> launcher_controller_;
|
| + ChromeLauncherControllerImpl* launcher_controller_ = nullptr;
|
| std::unique_ptr<TestShelfModelObserver> model_observer_;
|
| ash::ShelfModel* model_ = nullptr;
|
| std::unique_ptr<TestingProfileManager> profile_manager_;
|
| @@ -1345,14 +1316,14 @@ TEST_P(ChromeLauncherControllerImplWithArcTest,
|
| syncer::SyncDataList copy_sync_list =
|
| app_service_->GetAllSyncData(syncer::APP_LIST);
|
|
|
| - launcher_controller_.reset();
|
| + ResetLauncherController();
|
| SendPinChanges(syncer::SyncChangeList(), true);
|
| StopAppSyncService();
|
| EXPECT_EQ(0U, app_service_->sync_items().size());
|
|
|
| // Move to ARC enabled platform, restart syncing with stored data.
|
| StartAppSyncService(copy_sync_list);
|
| - RecreateChromeLauncher();
|
| + RecreateLauncherController()->Init();
|
|
|
| // Pins must be automatically updated.
|
| SendListOfArcApps();
|
| @@ -1376,7 +1347,7 @@ TEST_P(ChromeLauncherControllerImplWithArcTest,
|
|
|
| copy_sync_list = app_service_->GetAllSyncData(syncer::APP_LIST);
|
|
|
| - launcher_controller_.reset();
|
| + ResetLauncherController();
|
| ResetPinModel();
|
|
|
| SendPinChanges(syncer::SyncChangeList(), true);
|
| @@ -1389,7 +1360,7 @@ TEST_P(ChromeLauncherControllerImplWithArcTest,
|
| return;
|
| EnablePlayStore(false);
|
| StartAppSyncService(copy_sync_list);
|
| - RecreateChromeLauncher();
|
| + RecreateLauncherController()->Init();
|
|
|
| EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id()));
|
| EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id1));
|
| @@ -1856,7 +1827,7 @@ TEST_F(ChromeLauncherControllerImplTest, CheckRunningV1AppOrder) {
|
| }
|
|
|
| TEST_P(ChromeLauncherControllerImplWithArcTest, ArcDeferredLaunch) {
|
| - RecreateChromeLauncher();
|
| + InitLauncherController();
|
|
|
| const arc::mojom::AppInfo& app1 = arc_test_.fake_apps()[0];
|
| const arc::mojom::AppInfo& app2 = arc_test_.fake_apps()[1];
|
| @@ -1946,7 +1917,7 @@ TEST_P(ChromeLauncherControllerImplWithArcTest, ArcDeferredLaunch) {
|
| // Ensure the deferred controller does not override the active app controller
|
| // (crbug.com/701152).
|
| TEST_P(ChromeLauncherControllerImplWithArcTest, ArcDeferredLaunchForActiveApp) {
|
| - RecreateChromeLauncher();
|
| + InitLauncherController();
|
| SendListOfArcApps();
|
| arc_test_.StopArcInstance();
|
|
|
| @@ -2725,7 +2696,7 @@ TEST_F(ChromeLauncherControllerImplTest, SyncUpdates) {
|
|
|
| std::vector<std::string> expected_launchers;
|
| std::vector<std::string> actual_launchers;
|
| - GetAppLaunchers(launcher_controller_.get(), &actual_launchers);
|
| + GetAppLaunchers(launcher_controller_, &actual_launchers);
|
| EXPECT_EQ(expected_launchers, actual_launchers);
|
|
|
| // Unavailable extensions don't create launcher items.
|
| @@ -2737,14 +2708,14 @@ TEST_F(ChromeLauncherControllerImplTest, SyncUpdates) {
|
|
|
| expected_launchers.push_back(extension2_->id());
|
| expected_launchers.push_back(extension4_->id());
|
| - GetAppLaunchers(launcher_controller_.get(), &actual_launchers);
|
| + GetAppLaunchers(launcher_controller_, &actual_launchers);
|
| EXPECT_EQ(expected_launchers, actual_launchers);
|
|
|
| sync_list.clear();
|
| InsertAddPinChange(&sync_list, 2, extension3_->id());
|
| SendPinChanges(sync_list, false);
|
| expected_launchers.insert(expected_launchers.begin() + 1, extension3_->id());
|
| - GetAppLaunchers(launcher_controller_.get(), &actual_launchers);
|
| + GetAppLaunchers(launcher_controller_, &actual_launchers);
|
| EXPECT_EQ(expected_launchers, actual_launchers);
|
|
|
| sync_list.clear();
|
| @@ -2753,21 +2724,21 @@ TEST_F(ChromeLauncherControllerImplTest, SyncUpdates) {
|
| InsertUpdatePinChange(&sync_list, 2, extension2_->id());
|
| SendPinChanges(sync_list, false);
|
| std::reverse(expected_launchers.begin(), expected_launchers.end());
|
| - GetAppLaunchers(launcher_controller_.get(), &actual_launchers);
|
| + GetAppLaunchers(launcher_controller_, &actual_launchers);
|
| EXPECT_EQ(expected_launchers, actual_launchers);
|
|
|
| // Sending legacy sync change without pin info should not affect pin model.
|
| sync_list.clear();
|
| InsertLegacyPinChange(&sync_list, extension4_->id());
|
| SendPinChanges(sync_list, false);
|
| - GetAppLaunchers(launcher_controller_.get(), &actual_launchers);
|
| + GetAppLaunchers(launcher_controller_, &actual_launchers);
|
| EXPECT_EQ(expected_launchers, actual_launchers);
|
|
|
| sync_list.clear();
|
| InsertRemovePinChange(&sync_list, extension4_->id());
|
| SendPinChanges(sync_list, false);
|
| expected_launchers.erase(expected_launchers.begin());
|
| - GetAppLaunchers(launcher_controller_.get(), &actual_launchers);
|
| + GetAppLaunchers(launcher_controller_, &actual_launchers);
|
| EXPECT_EQ(expected_launchers, actual_launchers);
|
|
|
| sync_list.clear();
|
| @@ -2775,7 +2746,7 @@ TEST_F(ChromeLauncherControllerImplTest, SyncUpdates) {
|
| InsertRemovePinChange(&sync_list, extension2_->id());
|
| SendPinChanges(sync_list, false);
|
| expected_launchers.clear();
|
| - GetAppLaunchers(launcher_controller_.get(), &actual_launchers);
|
| + GetAppLaunchers(launcher_controller_, &actual_launchers);
|
| EXPECT_EQ(expected_launchers, actual_launchers);
|
| }
|
|
|
| @@ -2820,7 +2791,7 @@ TEST_F(ChromeLauncherControllerImplTest, ImportLegacyPin) {
|
| EXPECT_EQ("AppList, Chrome, App4, App2, App5", GetPinnedAppStatus());
|
|
|
| // Next Chrome start should preserve pins.
|
| - RecreateChromeLauncher();
|
| + RecreateLauncherController()->Init();
|
| StopPrefSyncService();
|
| StartPrefSyncService(syncer::SyncDataList());
|
| EXPECT_EQ("AppList, Chrome, App4, App2, App5", GetPinnedAppStatus());
|
| @@ -2843,13 +2814,13 @@ TEST_F(ChromeLauncherControllerImplTest, PendingInsertionOrder) {
|
| expected_launchers.push_back(extension3_->id());
|
| std::vector<std::string> actual_launchers;
|
|
|
| - GetAppLaunchers(launcher_controller_.get(), &actual_launchers);
|
| + GetAppLaunchers(launcher_controller_, &actual_launchers);
|
| EXPECT_EQ(expected_launchers, actual_launchers);
|
|
|
| // Install |extension2| and verify it shows up between the other two.
|
| extension_service_->AddExtension(extension2_.get());
|
| expected_launchers.insert(expected_launchers.begin() + 1, extension2_->id());
|
| - GetAppLaunchers(launcher_controller_.get(), &actual_launchers);
|
| + GetAppLaunchers(launcher_controller_, &actual_launchers);
|
| EXPECT_EQ(expected_launchers, actual_launchers);
|
| }
|
|
|
| @@ -2876,7 +2847,7 @@ TEST_F(ChromeLauncherControllerImplTest, BrowserMenuGeneration) {
|
| item_browser.type = ash::TYPE_BROWSER_SHORTCUT;
|
| item_browser.id =
|
| launcher_controller_->GetShelfIDForAppID(extension_misc::kChromeAppId);
|
| - CheckAppMenu(launcher_controller_.get(), item_browser, 0, nullptr);
|
| + CheckAppMenu(launcher_controller_, item_browser, 0, nullptr);
|
|
|
| // Now make the created browser() visible by showing its browser window.
|
| browser()->window()->Show();
|
| @@ -2884,7 +2855,7 @@ TEST_F(ChromeLauncherControllerImplTest, BrowserMenuGeneration) {
|
| NavigateAndCommitActiveTabWithTitle(browser(), GURL("http://test1"), title1);
|
| base::string16 one_menu_item[] = { title1 };
|
|
|
| - CheckAppMenu(launcher_controller_.get(), item_browser, 1, one_menu_item);
|
| + CheckAppMenu(launcher_controller_, item_browser, 1, one_menu_item);
|
|
|
| // Create one more browser/window and check that one more was added.
|
| std::unique_ptr<Browser> browser2(
|
| @@ -2898,7 +2869,7 @@ TEST_F(ChromeLauncherControllerImplTest, BrowserMenuGeneration) {
|
| // Check that the list contains now two entries - make furthermore sure that
|
| // the active item is the first entry.
|
| base::string16 two_menu_items[] = {title1, title2};
|
| - CheckAppMenu(launcher_controller_.get(), item_browser, 2, two_menu_items);
|
| + CheckAppMenu(launcher_controller_, item_browser, 2, two_menu_items);
|
|
|
| // Apparently we have to close all tabs we have.
|
| chrome::CloseTab(browser2.get());
|
| @@ -2917,14 +2888,14 @@ TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest,
|
|
|
| // Check that the menu is empty.
|
| chrome::NewTab(browser());
|
| - CheckAppMenu(launcher_controller_.get(), item_browser, 0, nullptr);
|
| + CheckAppMenu(launcher_controller_, item_browser, 0, nullptr);
|
|
|
| // Show the created |browser()| by showing its window.
|
| browser()->window()->Show();
|
| base::string16 title1 = ASCIIToUTF16("Test1");
|
| NavigateAndCommitActiveTabWithTitle(browser(), GURL("http://test1"), title1);
|
| base::string16 one_menu_item1[] = { title1 };
|
| - CheckAppMenu(launcher_controller_.get(), item_browser, 1, one_menu_item1);
|
| + CheckAppMenu(launcher_controller_, item_browser, 1, one_menu_item1);
|
|
|
| // Create a browser for another user and check that it is not included in the
|
| // users running browser list.
|
| @@ -2935,17 +2906,17 @@ TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest,
|
| std::unique_ptr<Browser> browser2(
|
| CreateBrowserAndTabWithProfile(profile2, user2, "http://test2"));
|
| base::string16 one_menu_item2[] = { ASCIIToUTF16(user2) };
|
| - CheckAppMenu(launcher_controller_.get(), item_browser, 1, one_menu_item1);
|
| + CheckAppMenu(launcher_controller_, item_browser, 1, one_menu_item1);
|
|
|
| // Switch to the other user and make sure that only that browser window gets
|
| // shown.
|
| SwitchActiveUser(account_id2);
|
| - CheckAppMenu(launcher_controller_.get(), item_browser, 1, one_menu_item2);
|
| + CheckAppMenu(launcher_controller_, item_browser, 1, one_menu_item2);
|
|
|
| // Transferred browsers of other users should not show up in the list.
|
| chrome::MultiUserWindowManager::GetInstance()->ShowWindowForUser(
|
| browser()->window()->GetNativeWindow(), account_id2);
|
| - CheckAppMenu(launcher_controller_.get(), item_browser, 1, one_menu_item2);
|
| + CheckAppMenu(launcher_controller_, item_browser, 1, one_menu_item2);
|
|
|
| chrome::CloseTab(browser2.get());
|
| }
|
| @@ -2982,14 +2953,14 @@ TEST_F(ChromeLauncherControllerImplTest, V1AppMenuGeneration) {
|
| ash::ShelfItem item_gmail;
|
| item_gmail.type = ash::TYPE_PINNED_APP;
|
| item_gmail.id = gmail_id;
|
| - CheckAppMenu(launcher_controller_.get(), item_gmail, 0, nullptr);
|
| + CheckAppMenu(launcher_controller_, item_gmail, 0, nullptr);
|
|
|
| // Set the gmail URL to a new tab.
|
| base::string16 title1 = ASCIIToUTF16("Test1");
|
| NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1);
|
|
|
| base::string16 one_menu_item[] = { title1 };
|
| - CheckAppMenu(launcher_controller_.get(), item_gmail, 1, one_menu_item);
|
| + CheckAppMenu(launcher_controller_, item_gmail, 1, one_menu_item);
|
|
|
| // Create one empty tab.
|
| chrome::NewTab(browser());
|
| @@ -3004,20 +2975,20 @@ TEST_F(ChromeLauncherControllerImplTest, V1AppMenuGeneration) {
|
| base::string16 title3 = ASCIIToUTF16("Test3");
|
| NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title3);
|
| base::string16 two_menu_items[] = {title1, title3};
|
| - CheckAppMenu(launcher_controller_.get(), item_gmail, 2, two_menu_items);
|
| + CheckAppMenu(launcher_controller_, item_gmail, 2, two_menu_items);
|
|
|
| // Even though the item is in the V1 app list, it should also be in the
|
| // browser list.
|
| base::string16 browser_menu_item[] = {title3};
|
| - CheckAppMenu(launcher_controller_.get(), item_browser, 1, browser_menu_item);
|
| + CheckAppMenu(launcher_controller_, item_browser, 1, browser_menu_item);
|
|
|
| // Test that closing of (all) the item(s) does work (and all menus get
|
| // updated properly).
|
| launcher_controller_->Close(item_gmail.id);
|
|
|
| - CheckAppMenu(launcher_controller_.get(), item_gmail, 0, nullptr);
|
| + CheckAppMenu(launcher_controller_, item_gmail, 0, nullptr);
|
| base::string16 browser_menu_item2[] = { title2 };
|
| - CheckAppMenu(launcher_controller_.get(), item_browser, 1, browser_menu_item2);
|
| + CheckAppMenu(launcher_controller_, item_browser, 1, browser_menu_item2);
|
| }
|
|
|
| // Check the multi profile case where only user related apps should show up.
|
| @@ -3045,14 +3016,14 @@ TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest,
|
| ash::ShelfItem item_gmail;
|
| item_gmail.type = ash::TYPE_PINNED_APP;
|
| item_gmail.id = gmail_id;
|
| - CheckAppMenu(launcher_controller_.get(), item_gmail, 0, nullptr);
|
| + CheckAppMenu(launcher_controller_, item_gmail, 0, nullptr);
|
|
|
| // Set the gmail URL to a new tab.
|
| base::string16 title1 = ASCIIToUTF16("Test1");
|
| NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1);
|
|
|
| base::string16 one_menu_item[] = { title1 };
|
| - CheckAppMenu(launcher_controller_.get(), item_gmail, 1, one_menu_item);
|
| + CheckAppMenu(launcher_controller_, item_gmail, 1, one_menu_item);
|
|
|
| // Create a second profile and switch to that user.
|
| std::string user2 = "user2";
|
| @@ -3062,15 +3033,15 @@ TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest,
|
| SwitchActiveUser(account_id2);
|
|
|
| // No item should have content yet.
|
| - CheckAppMenu(launcher_controller_.get(), item_browser, 0, nullptr);
|
| - CheckAppMenu(launcher_controller_.get(), item_gmail, 0, nullptr);
|
| + CheckAppMenu(launcher_controller_, item_browser, 0, nullptr);
|
| + CheckAppMenu(launcher_controller_, item_gmail, 0, nullptr);
|
|
|
| // Transfer the browser of the first user - it should still not show up.
|
| chrome::MultiUserWindowManager::GetInstance()->ShowWindowForUser(
|
| browser()->window()->GetNativeWindow(), account_id2);
|
|
|
| - CheckAppMenu(launcher_controller_.get(), item_browser, 0, nullptr);
|
| - CheckAppMenu(launcher_controller_.get(), item_gmail, 0, nullptr);
|
| + CheckAppMenu(launcher_controller_, item_browser, 0, nullptr);
|
| + CheckAppMenu(launcher_controller_, item_gmail, 0, nullptr);
|
| }
|
|
|
| // Check that V2 applications are creating items properly in the launcher when
|
| @@ -3308,7 +3279,7 @@ TEST_F(ChromeLauncherControllerImplTest, V1AppMenuExecution) {
|
| item_gmail.type = ash::TYPE_PINNED_APP;
|
| item_gmail.id = gmail_id;
|
| base::string16 two_menu_items[] = {title1, title2};
|
| - CheckAppMenu(launcher_controller_.get(), item_gmail, 2, two_menu_items);
|
| + CheckAppMenu(launcher_controller_, item_gmail, 2, two_menu_items);
|
| ash::ShelfItemDelegate* item_delegate =
|
| launcher_controller_->GetShelfItemDelegate(gmail_id);
|
| ASSERT_TRUE(item_delegate);
|
| @@ -3356,7 +3327,7 @@ TEST_F(ChromeLauncherControllerImplTest, V1AppMenuDeletionExecution) {
|
| item_gmail.type = ash::TYPE_PINNED_APP;
|
| item_gmail.id = gmail_id;
|
| base::string16 two_menu_items[] = {title1, title2};
|
| - CheckAppMenu(launcher_controller_.get(), item_gmail, 2, two_menu_items);
|
| + CheckAppMenu(launcher_controller_, item_gmail, 2, two_menu_items);
|
|
|
| ash::ShelfItemDelegate* item_delegate =
|
| launcher_controller_->GetShelfItemDelegate(gmail_id);
|
| @@ -3516,13 +3487,7 @@ TEST_F(ChromeLauncherControllerImplTest, PersistLauncherItemPositions) {
|
| EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type);
|
| EXPECT_EQ(ash::TYPE_BROWSER_SHORTCUT, model_->items()[3].type);
|
|
|
| - launcher_controller_.reset();
|
| - while (!model_->items().empty())
|
| - model_->RemoveItemAt(0);
|
| -
|
| - AddAppListLauncherItem();
|
| - launcher_controller_ =
|
| - base::MakeUnique<ChromeLauncherControllerImpl>(profile(), model_);
|
| + RecreateLauncherController();
|
| helper = new TestLauncherControllerHelper(profile());
|
| helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1");
|
| helper->SetAppID(tab_strip_model->GetWebContentsAt(1), "2");
|
| @@ -3563,13 +3528,7 @@ TEST_F(ChromeLauncherControllerImplTest, PersistPinned) {
|
| EXPECT_FALSE(launcher_controller_->IsAppPinned("0"));
|
| EXPECT_EQ(initial_size + 1, model_->items().size());
|
|
|
| - launcher_controller_.reset();
|
| - while (!model_->items().empty())
|
| - model_->RemoveItemAt(0);
|
| -
|
| - AddAppListLauncherItem();
|
| - launcher_controller_ =
|
| - base::MakeUnique<ChromeLauncherControllerImpl>(profile(), model_);
|
| + RecreateLauncherController();
|
| helper = new TestLauncherControllerHelper(profile());
|
| helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1");
|
| SetLauncherControllerHelper(helper);
|
| @@ -3684,10 +3643,6 @@ TEST_P(ChromeLauncherControllerImplWithArcTest, ArcManaged) {
|
| // Initially pins are imported from legacy pref based model.
|
| StartPrefSyncService(syncer::SyncDataList());
|
|
|
| - // Inject |launcher_controller_| as ShelfDelegate to verify the behavior
|
| - // of removing pinned icon in ArcSessionManager::OnOptInPreferenceChanged().
|
| - SetShelfDelegate();
|
| -
|
| // Initial run, ARC is not managed and disabled, Play Store pin should be
|
| // available.
|
| ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED,
|
| @@ -4048,7 +4003,9 @@ TEST_P(ChromeLauncherControllerOrientationTest, ArcOrientationLock) {
|
| TEST_P(ChromeLauncherControllerArcDefaultAppsTest, DefaultApps) {
|
| arc_test_.SetUp(profile());
|
| InitLauncherController();
|
| - ChromeLauncherController::set_instance_for_test(launcher_controller_.get());
|
| + // TODO(crbug.com/709297): Fix this workaround to prevent a TearDown crash.
|
| + std::vector<std::unique_ptr<AppIconLoader>> no_loaders;
|
| + launcher_controller_->SetAppIconLoadersForTest(no_loaders);
|
|
|
| ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs();
|
| EnablePlayStore(false);
|
| @@ -4184,7 +4141,7 @@ TEST_F(ChromeLauncherControllerImplTest, SyncOffLocalUpdate) {
|
| app_service_->GetAllSyncData(syncer::APP_LIST);
|
|
|
| app_service_->StopSyncing(syncer::APP_LIST);
|
| - RecreateChromeLauncher();
|
| + RecreateLauncherController()->Init();
|
|
|
| // Pinned state should not change.
|
| EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus());
|
|
|