Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(916)

Side by Side Diff: chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_unittest.cc

Issue 2804913002: mash: Test ChromeLauncherControllerImpl more like production use. (Closed)
Patch Set: Address comments. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/ui/toolbar/app_menu_model_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h" 5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <map> 10 #include <map>
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 const ItemSelectedCallback& callback) override { 270 const ItemSelectedCallback& callback) override {
271 callback.Run(ash::SHELF_ACTION_WINDOW_ACTIVATED, base::nullopt); 271 callback.Run(ash::SHELF_ACTION_WINDOW_ACTIVATED, base::nullopt);
272 } 272 }
273 void ExecuteCommand(uint32_t command_id, int32_t event_flags) override {} 273 void ExecuteCommand(uint32_t command_id, int32_t event_flags) override {}
274 void Close() override {} 274 void Close() override {}
275 275
276 private: 276 private:
277 DISALLOW_COPY_AND_ASSIGN(TestV2AppLauncherItemController); 277 DISALLOW_COPY_AND_ASSIGN(TestV2AppLauncherItemController);
278 }; 278 };
279 279
280 // Proxies to ShelfDelegate invocation to the given
281 // ChromeLauncherControllerImpl instance. Because of ownership management,
282 // ChromeLauncherControllerImpl instance cannot be injected to WmShell.
283 // This wraps the instance, so that it can be injected.
284 class ProxyShelfDelegate : public ash::ShelfDelegate {
285 public:
286 explicit ProxyShelfDelegate(ChromeLauncherControllerImpl* controller)
287 : controller_(controller) {}
288 ~ProxyShelfDelegate() override = default;
289
290 ash::ShelfID GetShelfIDForAppID(const std::string& app_id) override {
291 return controller_->GetShelfIDForAppID(app_id);
292 };
293
294 ash::ShelfID GetShelfIDForAppIDAndLaunchID(
295 const std::string& app_id,
296 const std::string& launch_id) override {
297 return controller_->GetShelfIDForAppIDAndLaunchID(app_id, launch_id);
298 }
299
300 const std::string& GetAppIDForShelfID(ash::ShelfID id) override {
301 return controller_->GetAppIDForShelfID(id);
302 }
303
304 void PinAppWithID(const std::string& app_id) override {
305 return controller_->PinAppWithID(app_id);
306 }
307
308 bool IsAppPinned(const std::string& app_id) override {
309 return controller_->IsAppPinned(app_id);
310 }
311
312 void UnpinAppWithID(const std::string& app_id) override {
313 return controller_->UnpinAppWithID(app_id);
314 }
315
316 private:
317 ChromeLauncherControllerImpl* const controller_;
318
319 DISALLOW_COPY_AND_ASSIGN(ProxyShelfDelegate);
320 };
321
322 // A callback that does nothing after shelf item selection handling. 280 // A callback that does nothing after shelf item selection handling.
323 void NoopCallback(ash::ShelfAction action, base::Optional<ash::MenuItemList>) {} 281 void NoopCallback(ash::ShelfAction action, base::Optional<ash::MenuItemList>) {}
324 282
325 // Simulates selection of the shelf item. 283 // Simulates selection of the shelf item.
326 void SelectItem(ash::ShelfItemDelegate* delegate) { 284 void SelectItem(ash::ShelfItemDelegate* delegate) {
327 std::unique_ptr<ui::Event> event = base::MakeUnique<ui::MouseEvent>( 285 std::unique_ptr<ui::Event> event = base::MakeUnique<ui::MouseEvent>(
328 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), 286 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(),
329 ui::EF_NONE, 0); 287 ui::EF_NONE, 0);
330 delegate->ItemSelected(std::move(event), display::kInvalidDisplayId, 288 delegate->ItemSelected(std::move(event), display::kInvalidDisplayId,
331 ash::LAUNCH_FROM_UNKNOWN, base::Bind(&NoopCallback)); 289 ash::LAUNCH_FROM_UNKNOWN, base::Bind(&NoopCallback));
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 InsertAddPinChange(user_b, 0, extension6_->id()); 459 InsertAddPinChange(user_b, 0, extension6_->id());
502 InsertAddPinChange(user_b, 1, extension7_->id()); 460 InsertAddPinChange(user_b, 1, extension7_->id());
503 InsertAddPinChange(user_b, 2, extension8_->id()); 461 InsertAddPinChange(user_b, 2, extension8_->id());
504 InsertAddPinChange(user_b, 3, extension_misc::kChromeAppId); 462 InsertAddPinChange(user_b, 3, extension_misc::kChromeAppId);
505 } 463 }
506 464
507 void TearDown() override { 465 void TearDown() override {
508 arc_test_.TearDown(); 466 arc_test_.TearDown();
509 model_->RemoveObserver(model_observer_.get()); 467 model_->RemoveObserver(model_observer_.get());
510 model_observer_.reset(); 468 model_observer_.reset();
511 launcher_controller_.reset(); 469 launcher_controller_ = nullptr;
512 BrowserWithTestWindowTest::TearDown(); 470 BrowserWithTestWindowTest::TearDown();
513 } 471 }
514 472
515 BrowserWindow* CreateBrowserWindow() override { 473 BrowserWindow* CreateBrowserWindow() override {
516 return CreateTestBrowserWindowAura(); 474 return CreateTestBrowserWindowAura();
517 } 475 }
518 476
519 std::unique_ptr<Browser> CreateBrowserWithTestWindowForProfile( 477 std::unique_ptr<Browser> CreateBrowserWithTestWindowForProfile(
520 Profile* profile) { 478 Profile* profile) {
521 TestBrowserWindow* browser_window = CreateTestBrowserWindowAura(); 479 TestBrowserWindow* browser_window = CreateTestBrowserWindowAura();
522 new TestBrowserWindowOwner(browser_window); 480 new TestBrowserWindowOwner(browser_window);
523 return base::WrapUnique( 481 return base::WrapUnique(
524 CreateBrowser(profile, Browser::TYPE_TABBED, false, browser_window)); 482 CreateBrowser(profile, Browser::TYPE_TABBED, false, browser_window));
525 } 483 }
526 484
527 void AddAppListLauncherItem() { 485 void AddAppListLauncherItem() {
528 ash::ShelfItem app_list; 486 ash::ShelfItem app_list;
529 app_list.type = ash::TYPE_APP_LIST; 487 app_list.type = ash::TYPE_APP_LIST;
530 model_->Add(app_list); 488 model_->Add(app_list);
531 } 489 }
532 490
533 void InitLauncherController() { 491 // Create a launcher controller instance and register it as the ShelfDelegate.
534 launcher_controller_.reset( 492 // Returns a pointer to the uninitialized controller, which is owned by Shell.
535 new ChromeLauncherControllerImpl(profile(), model_)); 493 ChromeLauncherControllerImpl* CreateLauncherController() {
536 launcher_controller_->Init(); 494 // Shell owns ChromeLauncherController as its ShelfDelegate. The lifetime
495 // of this instance should match production behavior as closely as possible.
496 DCHECK(!ChromeLauncherController::instance());
497 std::unique_ptr<ChromeLauncherControllerImpl> launcher_controller =
498 base::MakeUnique<ChromeLauncherControllerImpl>(profile(), model_);
499 launcher_controller_ = launcher_controller.get();
500 ash::test::ShellTestApi().SetShelfDelegate(std::move(launcher_controller));
501 return launcher_controller_;
537 } 502 }
538 503
504 // Create and initialize the controller.
505 // Returns a pointer to the initialized controller, which is owned by Shell.
506 void InitLauncherController() { CreateLauncherController()->Init(); }
507
508 // Create and initialize the controller; create a tab and show the browser.
539 void InitLauncherControllerWithBrowser() { 509 void InitLauncherControllerWithBrowser() {
540 InitLauncherController(); 510 InitLauncherController();
541 chrome::NewTab(browser()); 511 chrome::NewTab(browser());
542 browser()->window()->Show(); 512 browser()->window()->Show();
543 } 513 }
544 514
545 void RecreateChromeLauncher() { 515 // Destroy Shell's controller instance and clear the local pointer.
546 // Destroy controller first if it exists. 516 void ResetLauncherController() {
547 launcher_controller_.reset(); 517 launcher_controller_ = nullptr;
518 ash::test::ShellTestApi().SetShelfDelegate(nullptr);
519 }
520
521 // Destroy and recreate the controller; clear and reinitialize the ShelfModel.
522 // Returns a pointer to the uninitialized controller, which is owned by Shell.
523 // TODO(msw): This does not accurately represent ChromeLauncherControllerImpl
524 // lifetime or usage in production, and does not accurately simulate restarts.
525 ChromeLauncherControllerImpl* RecreateLauncherController() {
526 // Destroy any existing controller first; only one may exist at a time.
527 ResetLauncherController();
548 while (model_->item_count() > 0) 528 while (model_->item_count() > 0)
549 model_->RemoveItemAt(0); 529 model_->RemoveItemAt(0);
550 AddAppListLauncherItem(); 530 AddAppListLauncherItem();
551 launcher_controller_ = 531 return CreateLauncherController();
552 base::MakeUnique<ChromeLauncherControllerImpl>(profile(), model_);
553 launcher_controller_->Init();
554 }
555
556 // This needs to be called after InitLaunchController(), or its family.
557 // It is not supported to recreate the instance.
558 void SetShelfDelegate() {
559 ash::test::ShellTestApi().SetShelfDelegate(
560 base::MakeUnique<ProxyShelfDelegate>(launcher_controller_.get()));
561 } 532 }
562 533
563 void StartAppSyncService(const syncer::SyncDataList& init_sync_list) { 534 void StartAppSyncService(const syncer::SyncDataList& init_sync_list) {
564 app_service_->MergeDataAndStartSyncing( 535 app_service_->MergeDataAndStartSyncing(
565 syncer::APP_LIST, init_sync_list, 536 syncer::APP_LIST, init_sync_list,
566 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), 537 base::MakeUnique<syncer::FakeSyncChangeProcessor>(),
567 base::MakeUnique<syncer::SyncErrorFactoryMock>()); 538 base::MakeUnique<syncer::SyncErrorFactoryMock>());
568 EXPECT_EQ(init_sync_list.size(), app_service_->sync_items().size()); 539 EXPECT_EQ(init_sync_list.size(), app_service_->sync_items().size());
569 } 540 }
570 541
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
968 scoped_refptr<Extension> extension4_; 939 scoped_refptr<Extension> extension4_;
969 scoped_refptr<Extension> extension5_; 940 scoped_refptr<Extension> extension5_;
970 scoped_refptr<Extension> extension6_; 941 scoped_refptr<Extension> extension6_;
971 scoped_refptr<Extension> extension7_; 942 scoped_refptr<Extension> extension7_;
972 scoped_refptr<Extension> extension8_; 943 scoped_refptr<Extension> extension8_;
973 scoped_refptr<Extension> extension_platform_app_; 944 scoped_refptr<Extension> extension_platform_app_;
974 scoped_refptr<Extension> arc_support_host_; 945 scoped_refptr<Extension> arc_support_host_;
975 946
976 ArcAppTest arc_test_; 947 ArcAppTest arc_test_;
977 bool auto_start_arc_test_ = false; 948 bool auto_start_arc_test_ = false;
978 std::unique_ptr<ChromeLauncherControllerImpl> launcher_controller_; 949 ChromeLauncherControllerImpl* launcher_controller_ = nullptr;
979 std::unique_ptr<TestShelfModelObserver> model_observer_; 950 std::unique_ptr<TestShelfModelObserver> model_observer_;
980 ash::ShelfModel* model_ = nullptr; 951 ash::ShelfModel* model_ = nullptr;
981 std::unique_ptr<TestingProfileManager> profile_manager_; 952 std::unique_ptr<TestingProfileManager> profile_manager_;
982 953
983 // |item_delegate_manager_| owns |test_controller_|. 954 // |item_delegate_manager_| owns |test_controller_|.
984 ash::ShelfItemDelegate* test_controller_ = nullptr; 955 ash::ShelfItemDelegate* test_controller_ = nullptr;
985 956
986 ExtensionService* extension_service_ = nullptr; 957 ExtensionService* extension_service_ = nullptr;
987 958
988 app_list::AppListSyncableService* app_service_ = nullptr; 959 app_list::AppListSyncableService* app_service_ = nullptr;
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
1338 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id2)); 1309 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id2));
1339 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); 1310 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id()));
1340 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3)); 1311 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3));
1341 EXPECT_EQ("AppList, App1, Chrome, App2, App3", GetPinnedAppStatus()); 1312 EXPECT_EQ("AppList, App1, Chrome, App2, App3", GetPinnedAppStatus());
1342 1313
1343 // Persist pin state, we don't have active pin for ARC apps yet, but pin 1314 // Persist pin state, we don't have active pin for ARC apps yet, but pin
1344 // model should have it. 1315 // model should have it.
1345 syncer::SyncDataList copy_sync_list = 1316 syncer::SyncDataList copy_sync_list =
1346 app_service_->GetAllSyncData(syncer::APP_LIST); 1317 app_service_->GetAllSyncData(syncer::APP_LIST);
1347 1318
1348 launcher_controller_.reset(); 1319 ResetLauncherController();
1349 SendPinChanges(syncer::SyncChangeList(), true); 1320 SendPinChanges(syncer::SyncChangeList(), true);
1350 StopAppSyncService(); 1321 StopAppSyncService();
1351 EXPECT_EQ(0U, app_service_->sync_items().size()); 1322 EXPECT_EQ(0U, app_service_->sync_items().size());
1352 1323
1353 // Move to ARC enabled platform, restart syncing with stored data. 1324 // Move to ARC enabled platform, restart syncing with stored data.
1354 StartAppSyncService(copy_sync_list); 1325 StartAppSyncService(copy_sync_list);
1355 RecreateChromeLauncher(); 1326 RecreateLauncherController()->Init();
1356 1327
1357 // Pins must be automatically updated. 1328 // Pins must be automatically updated.
1358 SendListOfArcApps(); 1329 SendListOfArcApps();
1359 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); 1330 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id()));
1360 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id1)); 1331 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id1));
1361 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); 1332 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id()));
1362 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id2)); 1333 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id2));
1363 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); 1334 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id()));
1364 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3)); 1335 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3));
1365 1336
1366 EXPECT_EQ("AppList, App1, Chrome, Fake App 0, App2, Fake App 1, App3", 1337 EXPECT_EQ("AppList, App1, Chrome, Fake App 0, App2, Fake App 1, App3",
1367 GetPinnedAppStatus()); 1338 GetPinnedAppStatus());
1368 1339
1369 // Now move pins on ARC enabled platform. 1340 // Now move pins on ARC enabled platform.
1370 model_->Move(1, 4); 1341 model_->Move(1, 4);
1371 model_->Move(3, 1); 1342 model_->Move(3, 1);
1372 model_->Move(3, 5); 1343 model_->Move(3, 5);
1373 model_->Move(4, 2); 1344 model_->Move(4, 2);
1374 EXPECT_EQ("AppList, App2, Fake App 1, Chrome, App1, Fake App 0, App3", 1345 EXPECT_EQ("AppList, App2, Fake App 1, Chrome, App1, Fake App 0, App3",
1375 GetPinnedAppStatus()); 1346 GetPinnedAppStatus());
1376 1347
1377 copy_sync_list = app_service_->GetAllSyncData(syncer::APP_LIST); 1348 copy_sync_list = app_service_->GetAllSyncData(syncer::APP_LIST);
1378 1349
1379 launcher_controller_.reset(); 1350 ResetLauncherController();
1380 ResetPinModel(); 1351 ResetPinModel();
1381 1352
1382 SendPinChanges(syncer::SyncChangeList(), true); 1353 SendPinChanges(syncer::SyncChangeList(), true);
1383 StopAppSyncService(); 1354 StopAppSyncService();
1384 EXPECT_EQ(0U, app_service_->sync_items().size()); 1355 EXPECT_EQ(0U, app_service_->sync_items().size());
1385 1356
1386 // Move back to ARC disabled platform. 1357 // Move back to ARC disabled platform.
1387 // TODO(victorhsieh): Implement opt-out. 1358 // TODO(victorhsieh): Implement opt-out.
1388 if (arc::ShouldArcAlwaysStart()) 1359 if (arc::ShouldArcAlwaysStart())
1389 return; 1360 return;
1390 EnablePlayStore(false); 1361 EnablePlayStore(false);
1391 StartAppSyncService(copy_sync_list); 1362 StartAppSyncService(copy_sync_list);
1392 RecreateChromeLauncher(); 1363 RecreateLauncherController()->Init();
1393 1364
1394 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); 1365 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id()));
1395 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id1)); 1366 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id1));
1396 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); 1367 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id()));
1397 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id2)); 1368 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id2));
1398 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); 1369 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id()));
1399 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3)); 1370 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3));
1400 EXPECT_EQ("AppList, App2, Chrome, App1, App3", GetPinnedAppStatus()); 1371 EXPECT_EQ("AppList, App2, Chrome, App1, App3", GetPinnedAppStatus());
1401 1372
1402 // Now move/remove pins on ARC disabled platform. 1373 // Now move/remove pins on ARC disabled platform.
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
1849 // Check that removing more items does not crash and changes nothing. 1820 // Check that removing more items does not crash and changes nothing.
1850 launcher_controller_->SetV1AppStatus(extension2_->id(), ash::STATUS_CLOSED); 1821 launcher_controller_->SetV1AppStatus(extension2_->id(), ash::STATUS_CLOSED);
1851 RestoreUnpinnedRunningApplicationOrder(current_account_id); 1822 RestoreUnpinnedRunningApplicationOrder(current_account_id);
1852 EXPECT_EQ("AppList, Chrome, app3", GetPinnedAppStatus()); 1823 EXPECT_EQ("AppList, Chrome, app3", GetPinnedAppStatus());
1853 launcher_controller_->SetV1AppStatus(extension3_->id(), ash::STATUS_CLOSED); 1824 launcher_controller_->SetV1AppStatus(extension3_->id(), ash::STATUS_CLOSED);
1854 RestoreUnpinnedRunningApplicationOrder(current_account_id); 1825 RestoreUnpinnedRunningApplicationOrder(current_account_id);
1855 EXPECT_EQ("AppList, Chrome", GetPinnedAppStatus()); 1826 EXPECT_EQ("AppList, Chrome", GetPinnedAppStatus());
1856 } 1827 }
1857 1828
1858 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcDeferredLaunch) { 1829 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcDeferredLaunch) {
1859 RecreateChromeLauncher(); 1830 InitLauncherController();
1860 1831
1861 const arc::mojom::AppInfo& app1 = arc_test_.fake_apps()[0]; 1832 const arc::mojom::AppInfo& app1 = arc_test_.fake_apps()[0];
1862 const arc::mojom::AppInfo& app2 = arc_test_.fake_apps()[1]; 1833 const arc::mojom::AppInfo& app2 = arc_test_.fake_apps()[1];
1863 const arc::mojom::AppInfo& app3 = arc_test_.fake_apps()[2]; 1834 const arc::mojom::AppInfo& app3 = arc_test_.fake_apps()[2];
1864 const arc::mojom::ShortcutInfo& shortcut = arc_test_.fake_shortcuts()[0]; 1835 const arc::mojom::ShortcutInfo& shortcut = arc_test_.fake_shortcuts()[0];
1865 const std::string arc_app_id1 = ArcAppTest::GetAppId(app1); 1836 const std::string arc_app_id1 = ArcAppTest::GetAppId(app1);
1866 const std::string arc_app_id2 = ArcAppTest::GetAppId(app2); 1837 const std::string arc_app_id2 = ArcAppTest::GetAppId(app2);
1867 const std::string arc_app_id3 = ArcAppTest::GetAppId(app3); 1838 const std::string arc_app_id3 = ArcAppTest::GetAppId(app3);
1868 const std::string arc_shortcut_id = ArcAppTest::GetAppId(shortcut); 1839 const std::string arc_shortcut_id = ArcAppTest::GetAppId(shortcut);
1869 1840
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1939 1910
1940 EXPECT_TRUE((request1->IsForApp(app2) && request2->IsForApp(app3)) || 1911 EXPECT_TRUE((request1->IsForApp(app2) && request2->IsForApp(app3)) ||
1941 (request1->IsForApp(app3) && request2->IsForApp(app2))); 1912 (request1->IsForApp(app3) && request2->IsForApp(app2)));
1942 EXPECT_EQ(arc_test_.app_instance()->launch_intents()[0].c_str(), 1913 EXPECT_EQ(arc_test_.app_instance()->launch_intents()[0].c_str(),
1943 shortcut.intent_uri); 1914 shortcut.intent_uri);
1944 } 1915 }
1945 1916
1946 // Ensure the deferred controller does not override the active app controller 1917 // Ensure the deferred controller does not override the active app controller
1947 // (crbug.com/701152). 1918 // (crbug.com/701152).
1948 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcDeferredLaunchForActiveApp) { 1919 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcDeferredLaunchForActiveApp) {
1949 RecreateChromeLauncher(); 1920 InitLauncherController();
1950 SendListOfArcApps(); 1921 SendListOfArcApps();
1951 arc_test_.StopArcInstance(); 1922 arc_test_.StopArcInstance();
1952 1923
1953 const arc::mojom::AppInfo& app = arc_test_.fake_apps()[0]; 1924 const arc::mojom::AppInfo& app = arc_test_.fake_apps()[0];
1954 const std::string app_id = ArcAppTest::GetAppId(app); 1925 const std::string app_id = ArcAppTest::GetAppId(app);
1955 1926
1956 launcher_controller_->PinAppWithID(app_id); 1927 launcher_controller_->PinAppWithID(app_id);
1957 EXPECT_TRUE(launcher_controller_->IsAppPinned(app_id)); 1928 EXPECT_TRUE(launcher_controller_->IsAppPinned(app_id));
1958 const ash::ShelfID shelf_id = 1929 const ash::ShelfID shelf_id =
1959 launcher_controller_->GetShelfIDForAppID(app_id); 1930 launcher_controller_->GetShelfIDForAppID(app_id);
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after
2718 extension_service_->AddExtension(extension4_.get()); 2689 extension_service_->AddExtension(extension4_.get());
2719 2690
2720 InitLauncherController(); 2691 InitLauncherController();
2721 2692
2722 syncer::SyncChangeList sync_list; 2693 syncer::SyncChangeList sync_list;
2723 InsertAddPinChange(&sync_list, 10, extension_misc::kChromeAppId); 2694 InsertAddPinChange(&sync_list, 10, extension_misc::kChromeAppId);
2724 SendPinChanges(sync_list, true); 2695 SendPinChanges(sync_list, true);
2725 2696
2726 std::vector<std::string> expected_launchers; 2697 std::vector<std::string> expected_launchers;
2727 std::vector<std::string> actual_launchers; 2698 std::vector<std::string> actual_launchers;
2728 GetAppLaunchers(launcher_controller_.get(), &actual_launchers); 2699 GetAppLaunchers(launcher_controller_, &actual_launchers);
2729 EXPECT_EQ(expected_launchers, actual_launchers); 2700 EXPECT_EQ(expected_launchers, actual_launchers);
2730 2701
2731 // Unavailable extensions don't create launcher items. 2702 // Unavailable extensions don't create launcher items.
2732 sync_list.clear(); 2703 sync_list.clear();
2733 InsertAddPinChange(&sync_list, 0, extension1_->id()); 2704 InsertAddPinChange(&sync_list, 0, extension1_->id());
2734 InsertAddPinChange(&sync_list, 1, extension2_->id()); 2705 InsertAddPinChange(&sync_list, 1, extension2_->id());
2735 InsertAddPinChange(&sync_list, 3, extension4_->id()); 2706 InsertAddPinChange(&sync_list, 3, extension4_->id());
2736 SendPinChanges(sync_list, false); 2707 SendPinChanges(sync_list, false);
2737 2708
2738 expected_launchers.push_back(extension2_->id()); 2709 expected_launchers.push_back(extension2_->id());
2739 expected_launchers.push_back(extension4_->id()); 2710 expected_launchers.push_back(extension4_->id());
2740 GetAppLaunchers(launcher_controller_.get(), &actual_launchers); 2711 GetAppLaunchers(launcher_controller_, &actual_launchers);
2741 EXPECT_EQ(expected_launchers, actual_launchers); 2712 EXPECT_EQ(expected_launchers, actual_launchers);
2742 2713
2743 sync_list.clear(); 2714 sync_list.clear();
2744 InsertAddPinChange(&sync_list, 2, extension3_->id()); 2715 InsertAddPinChange(&sync_list, 2, extension3_->id());
2745 SendPinChanges(sync_list, false); 2716 SendPinChanges(sync_list, false);
2746 expected_launchers.insert(expected_launchers.begin() + 1, extension3_->id()); 2717 expected_launchers.insert(expected_launchers.begin() + 1, extension3_->id());
2747 GetAppLaunchers(launcher_controller_.get(), &actual_launchers); 2718 GetAppLaunchers(launcher_controller_, &actual_launchers);
2748 EXPECT_EQ(expected_launchers, actual_launchers); 2719 EXPECT_EQ(expected_launchers, actual_launchers);
2749 2720
2750 sync_list.clear(); 2721 sync_list.clear();
2751 InsertUpdatePinChange(&sync_list, 0, extension4_->id()); 2722 InsertUpdatePinChange(&sync_list, 0, extension4_->id());
2752 InsertUpdatePinChange(&sync_list, 1, extension3_->id()); 2723 InsertUpdatePinChange(&sync_list, 1, extension3_->id());
2753 InsertUpdatePinChange(&sync_list, 2, extension2_->id()); 2724 InsertUpdatePinChange(&sync_list, 2, extension2_->id());
2754 SendPinChanges(sync_list, false); 2725 SendPinChanges(sync_list, false);
2755 std::reverse(expected_launchers.begin(), expected_launchers.end()); 2726 std::reverse(expected_launchers.begin(), expected_launchers.end());
2756 GetAppLaunchers(launcher_controller_.get(), &actual_launchers); 2727 GetAppLaunchers(launcher_controller_, &actual_launchers);
2757 EXPECT_EQ(expected_launchers, actual_launchers); 2728 EXPECT_EQ(expected_launchers, actual_launchers);
2758 2729
2759 // Sending legacy sync change without pin info should not affect pin model. 2730 // Sending legacy sync change without pin info should not affect pin model.
2760 sync_list.clear(); 2731 sync_list.clear();
2761 InsertLegacyPinChange(&sync_list, extension4_->id()); 2732 InsertLegacyPinChange(&sync_list, extension4_->id());
2762 SendPinChanges(sync_list, false); 2733 SendPinChanges(sync_list, false);
2763 GetAppLaunchers(launcher_controller_.get(), &actual_launchers); 2734 GetAppLaunchers(launcher_controller_, &actual_launchers);
2764 EXPECT_EQ(expected_launchers, actual_launchers); 2735 EXPECT_EQ(expected_launchers, actual_launchers);
2765 2736
2766 sync_list.clear(); 2737 sync_list.clear();
2767 InsertRemovePinChange(&sync_list, extension4_->id()); 2738 InsertRemovePinChange(&sync_list, extension4_->id());
2768 SendPinChanges(sync_list, false); 2739 SendPinChanges(sync_list, false);
2769 expected_launchers.erase(expected_launchers.begin()); 2740 expected_launchers.erase(expected_launchers.begin());
2770 GetAppLaunchers(launcher_controller_.get(), &actual_launchers); 2741 GetAppLaunchers(launcher_controller_, &actual_launchers);
2771 EXPECT_EQ(expected_launchers, actual_launchers); 2742 EXPECT_EQ(expected_launchers, actual_launchers);
2772 2743
2773 sync_list.clear(); 2744 sync_list.clear();
2774 InsertRemovePinChange(&sync_list, extension3_->id()); 2745 InsertRemovePinChange(&sync_list, extension3_->id());
2775 InsertRemovePinChange(&sync_list, extension2_->id()); 2746 InsertRemovePinChange(&sync_list, extension2_->id());
2776 SendPinChanges(sync_list, false); 2747 SendPinChanges(sync_list, false);
2777 expected_launchers.clear(); 2748 expected_launchers.clear();
2778 GetAppLaunchers(launcher_controller_.get(), &actual_launchers); 2749 GetAppLaunchers(launcher_controller_, &actual_launchers);
2779 EXPECT_EQ(expected_launchers, actual_launchers); 2750 EXPECT_EQ(expected_launchers, actual_launchers);
2780 } 2751 }
2781 2752
2782 TEST_F(ChromeLauncherControllerImplTest, ImportLegacyPin) { 2753 TEST_F(ChromeLauncherControllerImplTest, ImportLegacyPin) {
2783 // Note extension3_ is actually Gmail app which is default pinned. 2754 // Note extension3_ is actually Gmail app which is default pinned.
2784 extension_service_->AddExtension(extension3_.get()); 2755 extension_service_->AddExtension(extension3_.get());
2785 InitLauncherController(); 2756 InitLauncherController();
2786 2757
2787 // Default pins should contain Gmail. Pref is not syncing now. 2758 // Default pins should contain Gmail. Pref is not syncing now.
2788 EXPECT_EQ("AppList, Chrome, App3", GetPinnedAppStatus()); 2759 EXPECT_EQ("AppList, Chrome, App3", GetPinnedAppStatus());
(...skipping 24 matching lines...) Expand all
2813 SendPinChanges(sync_list, false); 2784 SendPinChanges(sync_list, false);
2814 EXPECT_EQ("AppList, Chrome, App4, App2, App5", GetPinnedAppStatus()); 2785 EXPECT_EQ("AppList, Chrome, App4, App2, App5", GetPinnedAppStatus());
2815 2786
2816 // At this point changing old pref based model does not affect pin model. 2787 // At this point changing old pref based model does not affect pin model.
2817 InsertPrefValue(&value, 3, extension5_->id()); 2788 InsertPrefValue(&value, 3, extension5_->id());
2818 StopPrefSyncService(); 2789 StopPrefSyncService();
2819 StartPrefSyncServiceForPins(value); 2790 StartPrefSyncServiceForPins(value);
2820 EXPECT_EQ("AppList, Chrome, App4, App2, App5", GetPinnedAppStatus()); 2791 EXPECT_EQ("AppList, Chrome, App4, App2, App5", GetPinnedAppStatus());
2821 2792
2822 // Next Chrome start should preserve pins. 2793 // Next Chrome start should preserve pins.
2823 RecreateChromeLauncher(); 2794 RecreateLauncherController()->Init();
2824 StopPrefSyncService(); 2795 StopPrefSyncService();
2825 StartPrefSyncService(syncer::SyncDataList()); 2796 StartPrefSyncService(syncer::SyncDataList());
2826 EXPECT_EQ("AppList, Chrome, App4, App2, App5", GetPinnedAppStatus()); 2797 EXPECT_EQ("AppList, Chrome, App4, App2, App5", GetPinnedAppStatus());
2827 } 2798 }
2828 2799
2829 TEST_F(ChromeLauncherControllerImplTest, PendingInsertionOrder) { 2800 TEST_F(ChromeLauncherControllerImplTest, PendingInsertionOrder) {
2830 extension_service_->AddExtension(extension1_.get()); 2801 extension_service_->AddExtension(extension1_.get());
2831 extension_service_->AddExtension(extension3_.get()); 2802 extension_service_->AddExtension(extension3_.get());
2832 2803
2833 InitLauncherController(); 2804 InitLauncherController();
2834 2805
2835 syncer::SyncChangeList sync_list; 2806 syncer::SyncChangeList sync_list;
2836 InsertAddPinChange(&sync_list, 0, extension1_->id()); 2807 InsertAddPinChange(&sync_list, 0, extension1_->id());
2837 InsertAddPinChange(&sync_list, 1, extension2_->id()); 2808 InsertAddPinChange(&sync_list, 1, extension2_->id());
2838 InsertAddPinChange(&sync_list, 2, extension3_->id()); 2809 InsertAddPinChange(&sync_list, 2, extension3_->id());
2839 SendPinChanges(sync_list, true); 2810 SendPinChanges(sync_list, true);
2840 2811
2841 std::vector<std::string> expected_launchers; 2812 std::vector<std::string> expected_launchers;
2842 expected_launchers.push_back(extension1_->id()); 2813 expected_launchers.push_back(extension1_->id());
2843 expected_launchers.push_back(extension3_->id()); 2814 expected_launchers.push_back(extension3_->id());
2844 std::vector<std::string> actual_launchers; 2815 std::vector<std::string> actual_launchers;
2845 2816
2846 GetAppLaunchers(launcher_controller_.get(), &actual_launchers); 2817 GetAppLaunchers(launcher_controller_, &actual_launchers);
2847 EXPECT_EQ(expected_launchers, actual_launchers); 2818 EXPECT_EQ(expected_launchers, actual_launchers);
2848 2819
2849 // Install |extension2| and verify it shows up between the other two. 2820 // Install |extension2| and verify it shows up between the other two.
2850 extension_service_->AddExtension(extension2_.get()); 2821 extension_service_->AddExtension(extension2_.get());
2851 expected_launchers.insert(expected_launchers.begin() + 1, extension2_->id()); 2822 expected_launchers.insert(expected_launchers.begin() + 1, extension2_->id());
2852 GetAppLaunchers(launcher_controller_.get(), &actual_launchers); 2823 GetAppLaunchers(launcher_controller_, &actual_launchers);
2853 EXPECT_EQ(expected_launchers, actual_launchers); 2824 EXPECT_EQ(expected_launchers, actual_launchers);
2854 } 2825 }
2855 2826
2856 // Ensure |controller| creates the expected menu items for the given shelf item. 2827 // Ensure |controller| creates the expected menu items for the given shelf item.
2857 void CheckAppMenu(ChromeLauncherControllerImpl* controller, 2828 void CheckAppMenu(ChromeLauncherControllerImpl* controller,
2858 const ash::ShelfItem& item, 2829 const ash::ShelfItem& item,
2859 size_t expected_item_count, 2830 size_t expected_item_count,
2860 base::string16 expected_item_titles[]) { 2831 base::string16 expected_item_titles[]) {
2861 ash::MenuItemList items = controller->GetAppMenuItemsForTesting(item); 2832 ash::MenuItemList items = controller->GetAppMenuItemsForTesting(item);
2862 ASSERT_EQ(expected_item_count, items.size()); 2833 ASSERT_EQ(expected_item_count, items.size());
2863 for (size_t i = 0; i < expected_item_count; i++) 2834 for (size_t i = 0; i < expected_item_count; i++)
2864 EXPECT_EQ(expected_item_titles[i], items[i]->label); 2835 EXPECT_EQ(expected_item_titles[i], items[i]->label);
2865 } 2836 }
2866 2837
2867 // Check that browsers get reflected correctly in the launcher menu. 2838 // Check that browsers get reflected correctly in the launcher menu.
2868 TEST_F(ChromeLauncherControllerImplTest, BrowserMenuGeneration) { 2839 TEST_F(ChromeLauncherControllerImplTest, BrowserMenuGeneration) {
2869 EXPECT_EQ(1U, chrome::GetTotalBrowserCount()); 2840 EXPECT_EQ(1U, chrome::GetTotalBrowserCount());
2870 chrome::NewTab(browser()); 2841 chrome::NewTab(browser());
2871 2842
2872 InitLauncherController(); 2843 InitLauncherController();
2873 2844
2874 // Check that the browser list is empty at this time. 2845 // Check that the browser list is empty at this time.
2875 ash::ShelfItem item_browser; 2846 ash::ShelfItem item_browser;
2876 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; 2847 item_browser.type = ash::TYPE_BROWSER_SHORTCUT;
2877 item_browser.id = 2848 item_browser.id =
2878 launcher_controller_->GetShelfIDForAppID(extension_misc::kChromeAppId); 2849 launcher_controller_->GetShelfIDForAppID(extension_misc::kChromeAppId);
2879 CheckAppMenu(launcher_controller_.get(), item_browser, 0, nullptr); 2850 CheckAppMenu(launcher_controller_, item_browser, 0, nullptr);
2880 2851
2881 // Now make the created browser() visible by showing its browser window. 2852 // Now make the created browser() visible by showing its browser window.
2882 browser()->window()->Show(); 2853 browser()->window()->Show();
2883 base::string16 title1 = ASCIIToUTF16("Test1"); 2854 base::string16 title1 = ASCIIToUTF16("Test1");
2884 NavigateAndCommitActiveTabWithTitle(browser(), GURL("http://test1"), title1); 2855 NavigateAndCommitActiveTabWithTitle(browser(), GURL("http://test1"), title1);
2885 base::string16 one_menu_item[] = { title1 }; 2856 base::string16 one_menu_item[] = { title1 };
2886 2857
2887 CheckAppMenu(launcher_controller_.get(), item_browser, 1, one_menu_item); 2858 CheckAppMenu(launcher_controller_, item_browser, 1, one_menu_item);
2888 2859
2889 // Create one more browser/window and check that one more was added. 2860 // Create one more browser/window and check that one more was added.
2890 std::unique_ptr<Browser> browser2( 2861 std::unique_ptr<Browser> browser2(
2891 CreateBrowserWithTestWindowForProfile(profile())); 2862 CreateBrowserWithTestWindowForProfile(profile()));
2892 chrome::NewTab(browser2.get()); 2863 chrome::NewTab(browser2.get());
2893 browser2->window()->Show(); 2864 browser2->window()->Show();
2894 base::string16 title2 = ASCIIToUTF16("Test2"); 2865 base::string16 title2 = ASCIIToUTF16("Test2");
2895 NavigateAndCommitActiveTabWithTitle(browser2.get(), GURL("http://test2"), 2866 NavigateAndCommitActiveTabWithTitle(browser2.get(), GURL("http://test2"),
2896 title2); 2867 title2);
2897 2868
2898 // Check that the list contains now two entries - make furthermore sure that 2869 // Check that the list contains now two entries - make furthermore sure that
2899 // the active item is the first entry. 2870 // the active item is the first entry.
2900 base::string16 two_menu_items[] = {title1, title2}; 2871 base::string16 two_menu_items[] = {title1, title2};
2901 CheckAppMenu(launcher_controller_.get(), item_browser, 2, two_menu_items); 2872 CheckAppMenu(launcher_controller_, item_browser, 2, two_menu_items);
2902 2873
2903 // Apparently we have to close all tabs we have. 2874 // Apparently we have to close all tabs we have.
2904 chrome::CloseTab(browser2.get()); 2875 chrome::CloseTab(browser2.get());
2905 } 2876 }
2906 2877
2907 // Check the multi profile case where only user related browsers should show up. 2878 // Check the multi profile case where only user related browsers should show up.
2908 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest, 2879 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest,
2909 BrowserMenuGenerationTwoUsers) { 2880 BrowserMenuGenerationTwoUsers) {
2910 // Create a browser item in the LauncherController. 2881 // Create a browser item in the LauncherController.
2911 InitLauncherController(); 2882 InitLauncherController();
2912 2883
2913 ash::ShelfItem item_browser; 2884 ash::ShelfItem item_browser;
2914 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; 2885 item_browser.type = ash::TYPE_BROWSER_SHORTCUT;
2915 item_browser.id = 2886 item_browser.id =
2916 launcher_controller_->GetShelfIDForAppID(extension_misc::kChromeAppId); 2887 launcher_controller_->GetShelfIDForAppID(extension_misc::kChromeAppId);
2917 2888
2918 // Check that the menu is empty. 2889 // Check that the menu is empty.
2919 chrome::NewTab(browser()); 2890 chrome::NewTab(browser());
2920 CheckAppMenu(launcher_controller_.get(), item_browser, 0, nullptr); 2891 CheckAppMenu(launcher_controller_, item_browser, 0, nullptr);
2921 2892
2922 // Show the created |browser()| by showing its window. 2893 // Show the created |browser()| by showing its window.
2923 browser()->window()->Show(); 2894 browser()->window()->Show();
2924 base::string16 title1 = ASCIIToUTF16("Test1"); 2895 base::string16 title1 = ASCIIToUTF16("Test1");
2925 NavigateAndCommitActiveTabWithTitle(browser(), GURL("http://test1"), title1); 2896 NavigateAndCommitActiveTabWithTitle(browser(), GURL("http://test1"), title1);
2926 base::string16 one_menu_item1[] = { title1 }; 2897 base::string16 one_menu_item1[] = { title1 };
2927 CheckAppMenu(launcher_controller_.get(), item_browser, 1, one_menu_item1); 2898 CheckAppMenu(launcher_controller_, item_browser, 1, one_menu_item1);
2928 2899
2929 // Create a browser for another user and check that it is not included in the 2900 // Create a browser for another user and check that it is not included in the
2930 // users running browser list. 2901 // users running browser list.
2931 std::string user2 = "user2"; 2902 std::string user2 = "user2";
2932 TestingProfile* profile2 = CreateMultiUserProfile(user2); 2903 TestingProfile* profile2 = CreateMultiUserProfile(user2);
2933 const AccountId account_id2( 2904 const AccountId account_id2(
2934 multi_user_util::GetAccountIdFromProfile(profile2)); 2905 multi_user_util::GetAccountIdFromProfile(profile2));
2935 std::unique_ptr<Browser> browser2( 2906 std::unique_ptr<Browser> browser2(
2936 CreateBrowserAndTabWithProfile(profile2, user2, "http://test2")); 2907 CreateBrowserAndTabWithProfile(profile2, user2, "http://test2"));
2937 base::string16 one_menu_item2[] = { ASCIIToUTF16(user2) }; 2908 base::string16 one_menu_item2[] = { ASCIIToUTF16(user2) };
2938 CheckAppMenu(launcher_controller_.get(), item_browser, 1, one_menu_item1); 2909 CheckAppMenu(launcher_controller_, item_browser, 1, one_menu_item1);
2939 2910
2940 // Switch to the other user and make sure that only that browser window gets 2911 // Switch to the other user and make sure that only that browser window gets
2941 // shown. 2912 // shown.
2942 SwitchActiveUser(account_id2); 2913 SwitchActiveUser(account_id2);
2943 CheckAppMenu(launcher_controller_.get(), item_browser, 1, one_menu_item2); 2914 CheckAppMenu(launcher_controller_, item_browser, 1, one_menu_item2);
2944 2915
2945 // Transferred browsers of other users should not show up in the list. 2916 // Transferred browsers of other users should not show up in the list.
2946 chrome::MultiUserWindowManager::GetInstance()->ShowWindowForUser( 2917 chrome::MultiUserWindowManager::GetInstance()->ShowWindowForUser(
2947 browser()->window()->GetNativeWindow(), account_id2); 2918 browser()->window()->GetNativeWindow(), account_id2);
2948 CheckAppMenu(launcher_controller_.get(), item_browser, 1, one_menu_item2); 2919 CheckAppMenu(launcher_controller_, item_browser, 1, one_menu_item2);
2949 2920
2950 chrome::CloseTab(browser2.get()); 2921 chrome::CloseTab(browser2.get());
2951 } 2922 }
2952 2923
2953 // Check that V1 apps are correctly reflected in the launcher menu using the 2924 // Check that V1 apps are correctly reflected in the launcher menu using the
2954 // refocus logic. 2925 // refocus logic.
2955 // Note that the extension matching logic is tested by the extension system 2926 // Note that the extension matching logic is tested by the extension system
2956 // and does not need a separate test here. 2927 // and does not need a separate test here.
2957 TEST_F(ChromeLauncherControllerImplTest, V1AppMenuGeneration) { 2928 TEST_F(ChromeLauncherControllerImplTest, V1AppMenuGeneration) {
2958 EXPECT_EQ(1U, chrome::GetTotalBrowserCount()); 2929 EXPECT_EQ(1U, chrome::GetTotalBrowserCount());
(...skipping 16 matching lines...) Expand all
2975 2946
2976 // Check the menu content. 2947 // Check the menu content.
2977 ash::ShelfItem item_browser; 2948 ash::ShelfItem item_browser;
2978 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; 2949 item_browser.type = ash::TYPE_BROWSER_SHORTCUT;
2979 item_browser.id = 2950 item_browser.id =
2980 launcher_controller_->GetShelfIDForAppID(extension_misc::kChromeAppId); 2951 launcher_controller_->GetShelfIDForAppID(extension_misc::kChromeAppId);
2981 2952
2982 ash::ShelfItem item_gmail; 2953 ash::ShelfItem item_gmail;
2983 item_gmail.type = ash::TYPE_PINNED_APP; 2954 item_gmail.type = ash::TYPE_PINNED_APP;
2984 item_gmail.id = gmail_id; 2955 item_gmail.id = gmail_id;
2985 CheckAppMenu(launcher_controller_.get(), item_gmail, 0, nullptr); 2956 CheckAppMenu(launcher_controller_, item_gmail, 0, nullptr);
2986 2957
2987 // Set the gmail URL to a new tab. 2958 // Set the gmail URL to a new tab.
2988 base::string16 title1 = ASCIIToUTF16("Test1"); 2959 base::string16 title1 = ASCIIToUTF16("Test1");
2989 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); 2960 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1);
2990 2961
2991 base::string16 one_menu_item[] = { title1 }; 2962 base::string16 one_menu_item[] = { title1 };
2992 CheckAppMenu(launcher_controller_.get(), item_gmail, 1, one_menu_item); 2963 CheckAppMenu(launcher_controller_, item_gmail, 1, one_menu_item);
2993 2964
2994 // Create one empty tab. 2965 // Create one empty tab.
2995 chrome::NewTab(browser()); 2966 chrome::NewTab(browser());
2996 base::string16 title2 = ASCIIToUTF16("Test2"); 2967 base::string16 title2 = ASCIIToUTF16("Test2");
2997 NavigateAndCommitActiveTabWithTitle( 2968 NavigateAndCommitActiveTabWithTitle(
2998 browser(), 2969 browser(),
2999 GURL("https://bla"), 2970 GURL("https://bla"),
3000 title2); 2971 title2);
3001 2972
3002 // and another one with another gmail instance. 2973 // and another one with another gmail instance.
3003 chrome::NewTab(browser()); 2974 chrome::NewTab(browser());
3004 base::string16 title3 = ASCIIToUTF16("Test3"); 2975 base::string16 title3 = ASCIIToUTF16("Test3");
3005 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title3); 2976 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title3);
3006 base::string16 two_menu_items[] = {title1, title3}; 2977 base::string16 two_menu_items[] = {title1, title3};
3007 CheckAppMenu(launcher_controller_.get(), item_gmail, 2, two_menu_items); 2978 CheckAppMenu(launcher_controller_, item_gmail, 2, two_menu_items);
3008 2979
3009 // Even though the item is in the V1 app list, it should also be in the 2980 // Even though the item is in the V1 app list, it should also be in the
3010 // browser list. 2981 // browser list.
3011 base::string16 browser_menu_item[] = {title3}; 2982 base::string16 browser_menu_item[] = {title3};
3012 CheckAppMenu(launcher_controller_.get(), item_browser, 1, browser_menu_item); 2983 CheckAppMenu(launcher_controller_, item_browser, 1, browser_menu_item);
3013 2984
3014 // Test that closing of (all) the item(s) does work (and all menus get 2985 // Test that closing of (all) the item(s) does work (and all menus get
3015 // updated properly). 2986 // updated properly).
3016 launcher_controller_->Close(item_gmail.id); 2987 launcher_controller_->Close(item_gmail.id);
3017 2988
3018 CheckAppMenu(launcher_controller_.get(), item_gmail, 0, nullptr); 2989 CheckAppMenu(launcher_controller_, item_gmail, 0, nullptr);
3019 base::string16 browser_menu_item2[] = { title2 }; 2990 base::string16 browser_menu_item2[] = { title2 };
3020 CheckAppMenu(launcher_controller_.get(), item_browser, 1, browser_menu_item2); 2991 CheckAppMenu(launcher_controller_, item_browser, 1, browser_menu_item2);
3021 } 2992 }
3022 2993
3023 // Check the multi profile case where only user related apps should show up. 2994 // Check the multi profile case where only user related apps should show up.
3024 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest, 2995 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest,
3025 V1AppMenuGenerationTwoUsers) { 2996 V1AppMenuGenerationTwoUsers) {
3026 // Create a browser item in the LauncherController. 2997 // Create a browser item in the LauncherController.
3027 InitLauncherController(); 2998 InitLauncherController();
3028 chrome::NewTab(browser()); 2999 chrome::NewTab(browser());
3029 3000
3030 // Installing |extension3_| adds it to the launcher. 3001 // Installing |extension3_| adds it to the launcher.
3031 ash::ShelfID gmail_id = model_->next_id(); 3002 ash::ShelfID gmail_id = model_->next_id();
3032 extension_service_->AddExtension(extension3_.get()); 3003 extension_service_->AddExtension(extension3_.get());
3033 EXPECT_EQ(3, model_->item_count()); 3004 EXPECT_EQ(3, model_->item_count());
3034 int gmail_index = model_->ItemIndexByID(gmail_id); 3005 int gmail_index = model_->ItemIndexByID(gmail_id);
3035 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[gmail_index].type); 3006 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[gmail_index].type);
3036 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); 3007 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id()));
3037 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); 3008 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url));
3038 3009
3039 // Check the menu content. 3010 // Check the menu content.
3040 ash::ShelfItem item_browser; 3011 ash::ShelfItem item_browser;
3041 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; 3012 item_browser.type = ash::TYPE_BROWSER_SHORTCUT;
3042 item_browser.id = 3013 item_browser.id =
3043 launcher_controller_->GetShelfIDForAppID(extension_misc::kChromeAppId); 3014 launcher_controller_->GetShelfIDForAppID(extension_misc::kChromeAppId);
3044 3015
3045 ash::ShelfItem item_gmail; 3016 ash::ShelfItem item_gmail;
3046 item_gmail.type = ash::TYPE_PINNED_APP; 3017 item_gmail.type = ash::TYPE_PINNED_APP;
3047 item_gmail.id = gmail_id; 3018 item_gmail.id = gmail_id;
3048 CheckAppMenu(launcher_controller_.get(), item_gmail, 0, nullptr); 3019 CheckAppMenu(launcher_controller_, item_gmail, 0, nullptr);
3049 3020
3050 // Set the gmail URL to a new tab. 3021 // Set the gmail URL to a new tab.
3051 base::string16 title1 = ASCIIToUTF16("Test1"); 3022 base::string16 title1 = ASCIIToUTF16("Test1");
3052 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); 3023 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1);
3053 3024
3054 base::string16 one_menu_item[] = { title1 }; 3025 base::string16 one_menu_item[] = { title1 };
3055 CheckAppMenu(launcher_controller_.get(), item_gmail, 1, one_menu_item); 3026 CheckAppMenu(launcher_controller_, item_gmail, 1, one_menu_item);
3056 3027
3057 // Create a second profile and switch to that user. 3028 // Create a second profile and switch to that user.
3058 std::string user2 = "user2"; 3029 std::string user2 = "user2";
3059 TestingProfile* profile2 = CreateMultiUserProfile(user2); 3030 TestingProfile* profile2 = CreateMultiUserProfile(user2);
3060 const AccountId account_id2( 3031 const AccountId account_id2(
3061 multi_user_util::GetAccountIdFromProfile(profile2)); 3032 multi_user_util::GetAccountIdFromProfile(profile2));
3062 SwitchActiveUser(account_id2); 3033 SwitchActiveUser(account_id2);
3063 3034
3064 // No item should have content yet. 3035 // No item should have content yet.
3065 CheckAppMenu(launcher_controller_.get(), item_browser, 0, nullptr); 3036 CheckAppMenu(launcher_controller_, item_browser, 0, nullptr);
3066 CheckAppMenu(launcher_controller_.get(), item_gmail, 0, nullptr); 3037 CheckAppMenu(launcher_controller_, item_gmail, 0, nullptr);
3067 3038
3068 // Transfer the browser of the first user - it should still not show up. 3039 // Transfer the browser of the first user - it should still not show up.
3069 chrome::MultiUserWindowManager::GetInstance()->ShowWindowForUser( 3040 chrome::MultiUserWindowManager::GetInstance()->ShowWindowForUser(
3070 browser()->window()->GetNativeWindow(), account_id2); 3041 browser()->window()->GetNativeWindow(), account_id2);
3071 3042
3072 CheckAppMenu(launcher_controller_.get(), item_browser, 0, nullptr); 3043 CheckAppMenu(launcher_controller_, item_browser, 0, nullptr);
3073 CheckAppMenu(launcher_controller_.get(), item_gmail, 0, nullptr); 3044 CheckAppMenu(launcher_controller_, item_gmail, 0, nullptr);
3074 } 3045 }
3075 3046
3076 // Check that V2 applications are creating items properly in the launcher when 3047 // Check that V2 applications are creating items properly in the launcher when
3077 // instantiated by the current user. 3048 // instantiated by the current user.
3078 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest, 3049 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest,
3079 V2AppHandlingTwoUsers) { 3050 V2AppHandlingTwoUsers) {
3080 InitLauncherController(); 3051 InitLauncherController();
3081 // Create a profile for our second user (will be destroyed by the framework). 3052 // Create a profile for our second user (will be destroyed by the framework).
3082 TestingProfile* profile2 = CreateMultiUserProfile("user2"); 3053 TestingProfile* profile2 = CreateMultiUserProfile("user2");
3083 const AccountId account_id( 3054 const AccountId account_id(
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
3301 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); 3272 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1);
3302 chrome::NewTab(browser()); 3273 chrome::NewTab(browser());
3303 base::string16 title2 = ASCIIToUTF16("Test2"); 3274 base::string16 title2 = ASCIIToUTF16("Test2");
3304 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title2); 3275 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title2);
3305 3276
3306 // Check that the menu is properly set. 3277 // Check that the menu is properly set.
3307 ash::ShelfItem item_gmail; 3278 ash::ShelfItem item_gmail;
3308 item_gmail.type = ash::TYPE_PINNED_APP; 3279 item_gmail.type = ash::TYPE_PINNED_APP;
3309 item_gmail.id = gmail_id; 3280 item_gmail.id = gmail_id;
3310 base::string16 two_menu_items[] = {title1, title2}; 3281 base::string16 two_menu_items[] = {title1, title2};
3311 CheckAppMenu(launcher_controller_.get(), item_gmail, 2, two_menu_items); 3282 CheckAppMenu(launcher_controller_, item_gmail, 2, two_menu_items);
3312 ash::ShelfItemDelegate* item_delegate = 3283 ash::ShelfItemDelegate* item_delegate =
3313 launcher_controller_->GetShelfItemDelegate(gmail_id); 3284 launcher_controller_->GetShelfItemDelegate(gmail_id);
3314 ASSERT_TRUE(item_delegate); 3285 ASSERT_TRUE(item_delegate);
3315 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); 3286 EXPECT_EQ(1, browser()->tab_strip_model()->active_index());
3316 // Execute the second item in the menu, after the title and two separators, 3287 // Execute the second item in the menu, after the title and two separators,
3317 // this shouldn't do anything since that item is already the active tab. 3288 // this shouldn't do anything since that item is already the active tab.
3318 { 3289 {
3319 ash::ShelfApplicationMenuModel menu( 3290 ash::ShelfApplicationMenuModel menu(
3320 base::string16(), 3291 base::string16(),
3321 launcher_controller_->GetAppMenuItemsForTesting(item_gmail), 3292 launcher_controller_->GetAppMenuItemsForTesting(item_gmail),
(...skipping 27 matching lines...) Expand all
3349 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); 3320 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1);
3350 chrome::NewTab(browser()); 3321 chrome::NewTab(browser());
3351 base::string16 title2 = ASCIIToUTF16("Test2"); 3322 base::string16 title2 = ASCIIToUTF16("Test2");
3352 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title2); 3323 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title2);
3353 3324
3354 // Check that the menu is properly set. 3325 // Check that the menu is properly set.
3355 ash::ShelfItem item_gmail; 3326 ash::ShelfItem item_gmail;
3356 item_gmail.type = ash::TYPE_PINNED_APP; 3327 item_gmail.type = ash::TYPE_PINNED_APP;
3357 item_gmail.id = gmail_id; 3328 item_gmail.id = gmail_id;
3358 base::string16 two_menu_items[] = {title1, title2}; 3329 base::string16 two_menu_items[] = {title1, title2};
3359 CheckAppMenu(launcher_controller_.get(), item_gmail, 2, two_menu_items); 3330 CheckAppMenu(launcher_controller_, item_gmail, 2, two_menu_items);
3360 3331
3361 ash::ShelfItemDelegate* item_delegate = 3332 ash::ShelfItemDelegate* item_delegate =
3362 launcher_controller_->GetShelfItemDelegate(gmail_id); 3333 launcher_controller_->GetShelfItemDelegate(gmail_id);
3363 ASSERT_TRUE(item_delegate); 3334 ASSERT_TRUE(item_delegate);
3364 int tabs = browser()->tab_strip_model()->count(); 3335 int tabs = browser()->tab_strip_model()->count();
3365 // Activate the proper tab through the menu item. 3336 // Activate the proper tab through the menu item.
3366 { 3337 {
3367 ash::MenuItemList items = 3338 ash::MenuItemList items =
3368 launcher_controller_->GetAppMenuItemsForTesting(item_gmail); 3339 launcher_controller_->GetAppMenuItemsForTesting(item_gmail);
3369 item_delegate->ExecuteCommand(items[1]->command_id, ui::EF_NONE); 3340 item_delegate->ExecuteCommand(items[1]->command_id, ui::EF_NONE);
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
3509 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); 3480 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type);
3510 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[3].type); 3481 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[3].type);
3511 3482
3512 // Move browser shortcut item from index 1 to index 3. 3483 // Move browser shortcut item from index 1 to index 3.
3513 model_->Move(1, 3); 3484 model_->Move(1, 3);
3514 EXPECT_EQ(ash::TYPE_APP_LIST, model_->items()[0].type); 3485 EXPECT_EQ(ash::TYPE_APP_LIST, model_->items()[0].type);
3515 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[1].type); 3486 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[1].type);
3516 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); 3487 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type);
3517 EXPECT_EQ(ash::TYPE_BROWSER_SHORTCUT, model_->items()[3].type); 3488 EXPECT_EQ(ash::TYPE_BROWSER_SHORTCUT, model_->items()[3].type);
3518 3489
3519 launcher_controller_.reset(); 3490 RecreateLauncherController();
3520 while (!model_->items().empty())
3521 model_->RemoveItemAt(0);
3522
3523 AddAppListLauncherItem();
3524 launcher_controller_ =
3525 base::MakeUnique<ChromeLauncherControllerImpl>(profile(), model_);
3526 helper = new TestLauncherControllerHelper(profile()); 3491 helper = new TestLauncherControllerHelper(profile());
3527 helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1"); 3492 helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1");
3528 helper->SetAppID(tab_strip_model->GetWebContentsAt(1), "2"); 3493 helper->SetAppID(tab_strip_model->GetWebContentsAt(1), "2");
3529 SetLauncherControllerHelper(helper); 3494 SetLauncherControllerHelper(helper);
3530 launcher_controller_->Init(); 3495 launcher_controller_->Init();
3531 3496
3532 // Check ShelfItems are restored after resetting ChromeLauncherControllerImpl. 3497 // Check ShelfItems are restored after resetting ChromeLauncherControllerImpl.
3533 EXPECT_EQ(ash::TYPE_APP_LIST, model_->items()[0].type); 3498 EXPECT_EQ(ash::TYPE_APP_LIST, model_->items()[0].type);
3534 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[1].type); 3499 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[1].type);
3535 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); 3500 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type);
(...skipping 20 matching lines...) Expand all
3556 3521
3557 launcher_controller_->PinAppWithID("1"); 3522 launcher_controller_->PinAppWithID("1");
3558 ash::ShelfID id = launcher_controller_->GetShelfIDForAppID("1"); 3523 ash::ShelfID id = launcher_controller_->GetShelfIDForAppID("1");
3559 int app_index = model_->ItemIndexByID(id); 3524 int app_index = model_->ItemIndexByID(id);
3560 EXPECT_EQ(1, app_icon_loader->fetch_count()); 3525 EXPECT_EQ(1, app_icon_loader->fetch_count());
3561 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[app_index].type); 3526 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[app_index].type);
3562 EXPECT_TRUE(launcher_controller_->IsAppPinned("1")); 3527 EXPECT_TRUE(launcher_controller_->IsAppPinned("1"));
3563 EXPECT_FALSE(launcher_controller_->IsAppPinned("0")); 3528 EXPECT_FALSE(launcher_controller_->IsAppPinned("0"));
3564 EXPECT_EQ(initial_size + 1, model_->items().size()); 3529 EXPECT_EQ(initial_size + 1, model_->items().size());
3565 3530
3566 launcher_controller_.reset(); 3531 RecreateLauncherController();
3567 while (!model_->items().empty())
3568 model_->RemoveItemAt(0);
3569
3570 AddAppListLauncherItem();
3571 launcher_controller_ =
3572 base::MakeUnique<ChromeLauncherControllerImpl>(profile(), model_);
3573 helper = new TestLauncherControllerHelper(profile()); 3532 helper = new TestLauncherControllerHelper(profile());
3574 helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1"); 3533 helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1");
3575 SetLauncherControllerHelper(helper); 3534 SetLauncherControllerHelper(helper);
3576 // app_icon_loader is owned by ChromeLauncherControllerImpl. 3535 // app_icon_loader is owned by ChromeLauncherControllerImpl.
3577 app_icon_loader = new TestAppIconLoaderImpl; 3536 app_icon_loader = new TestAppIconLoaderImpl;
3578 app_icon_loader->AddSupportedApp("1"); 3537 app_icon_loader->AddSupportedApp("1");
3579 SetAppIconLoader(std::unique_ptr<AppIconLoader>(app_icon_loader)); 3538 SetAppIconLoader(std::unique_ptr<AppIconLoader>(app_icon_loader));
3580 launcher_controller_->Init(); 3539 launcher_controller_->Init();
3581 3540
3582 EXPECT_EQ(1, app_icon_loader->fetch_count()); 3541 EXPECT_EQ(1, app_icon_loader->fetch_count());
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
3677 extension_service_->AddExtension(arc_support_host_.get()); 3636 extension_service_->AddExtension(arc_support_host_.get());
3678 // Test enables ARC, so turn it off for initial values. 3637 // Test enables ARC, so turn it off for initial values.
3679 EnablePlayStore(false); 3638 EnablePlayStore(false);
3680 3639
3681 InitLauncherController(); 3640 InitLauncherController();
3682 3641
3683 // To prevent import legacy pins each time. 3642 // To prevent import legacy pins each time.
3684 // Initially pins are imported from legacy pref based model. 3643 // Initially pins are imported from legacy pref based model.
3685 StartPrefSyncService(syncer::SyncDataList()); 3644 StartPrefSyncService(syncer::SyncDataList());
3686 3645
3687 // Inject |launcher_controller_| as ShelfDelegate to verify the behavior
3688 // of removing pinned icon in ArcSessionManager::OnOptInPreferenceChanged().
3689 SetShelfDelegate();
3690
3691 // Initial run, ARC is not managed and disabled, Play Store pin should be 3646 // Initial run, ARC is not managed and disabled, Play Store pin should be
3692 // available. 3647 // available.
3693 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, 3648 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED,
3694 "AppList, Chrome, Play Store"); 3649 "AppList, Chrome, Play Store");
3695 3650
3696 // ARC is managed and enabled, Play Store pin should be available. 3651 // ARC is managed and enabled, Play Store pin should be available.
3697 // Note: NEGOTIATING_TERMS_OF_SERVICE here means that opt-in flow starts. 3652 // Note: NEGOTIATING_TERMS_OF_SERVICE here means that opt-in flow starts.
3698 profile()->GetTestingPrefService()->SetManagedPref( 3653 profile()->GetTestingPrefService()->SetManagedPref(
3699 prefs::kArcEnabled, base::MakeUnique<base::Value>(true)); 3654 prefs::kArcEnabled, base::MakeUnique<base::Value>(true));
3700 base::RunLoop().RunUntilIdle(); 3655 base::RunLoop().RunUntilIdle();
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
4041 display::Screen::GetScreen()->GetPrimaryDisplay().rotation()); 3996 display::Screen::GetScreen()->GetPrimaryDisplay().rotation());
4042 3997
4043 // Manually unlock first. 3998 // Manually unlock first.
4044 NotifyOnTaskOrientationLockRequested(task_id_none_, OrientationLock::NONE); 3999 NotifyOnTaskOrientationLockRequested(task_id_none_, OrientationLock::NONE);
4045 EXPECT_FALSE(controller->rotation_locked()); 4000 EXPECT_FALSE(controller->rotation_locked());
4046 } 4001 }
4047 4002
4048 TEST_P(ChromeLauncherControllerArcDefaultAppsTest, DefaultApps) { 4003 TEST_P(ChromeLauncherControllerArcDefaultAppsTest, DefaultApps) {
4049 arc_test_.SetUp(profile()); 4004 arc_test_.SetUp(profile());
4050 InitLauncherController(); 4005 InitLauncherController();
4051 ChromeLauncherController::set_instance_for_test(launcher_controller_.get()); 4006 // TODO(crbug.com/709297): Fix this workaround to prevent a TearDown crash.
4007 std::vector<std::unique_ptr<AppIconLoader>> no_loaders;
4008 launcher_controller_->SetAppIconLoadersForTest(no_loaders);
4052 4009
4053 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs(); 4010 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs();
4054 EnablePlayStore(false); 4011 EnablePlayStore(false);
4055 EXPECT_FALSE(arc::IsArcPlayStoreEnabledForProfile(profile())); 4012 EXPECT_FALSE(arc::IsArcPlayStoreEnabledForProfile(profile()));
4056 ASSERT_TRUE(prefs->GetAppIds().size()); 4013 ASSERT_TRUE(prefs->GetAppIds().size());
4057 4014
4058 const std::string app_id = 4015 const std::string app_id =
4059 ArcAppTest::GetAppId(arc_test_.fake_default_apps()[0]); 4016 ArcAppTest::GetAppId(arc_test_.fake_default_apps()[0]);
4060 EXPECT_EQ(ash::kInvalidShelfID, 4017 EXPECT_EQ(ash::kInvalidShelfID,
4061 launcher_controller_->GetShelfIDForAppID(app_id)); 4018 launcher_controller_->GetShelfIDForAppID(app_id));
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
4177 InsertAddPinChange(&sync_list, 1, extension1_->id()); 4134 InsertAddPinChange(&sync_list, 1, extension1_->id());
4178 InsertAddPinChange(&sync_list, 1, extension2_->id()); 4135 InsertAddPinChange(&sync_list, 1, extension2_->id());
4179 SendPinChanges(sync_list, true); 4136 SendPinChanges(sync_list, true);
4180 4137
4181 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); 4138 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus());
4182 4139
4183 syncer::SyncDataList copy_sync_list = 4140 syncer::SyncDataList copy_sync_list =
4184 app_service_->GetAllSyncData(syncer::APP_LIST); 4141 app_service_->GetAllSyncData(syncer::APP_LIST);
4185 4142
4186 app_service_->StopSyncing(syncer::APP_LIST); 4143 app_service_->StopSyncing(syncer::APP_LIST);
4187 RecreateChromeLauncher(); 4144 RecreateLauncherController()->Init();
4188 4145
4189 // Pinned state should not change. 4146 // Pinned state should not change.
4190 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); 4147 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus());
4191 launcher_controller_->UnpinAppWithID(extension2_->id()); 4148 launcher_controller_->UnpinAppWithID(extension2_->id());
4192 EXPECT_EQ("AppList, Chrome, App1", GetPinnedAppStatus()); 4149 EXPECT_EQ("AppList, Chrome, App1", GetPinnedAppStatus());
4193 4150
4194 // Resume syncing and sync information overrides local copy. 4151 // Resume syncing and sync information overrides local copy.
4195 StartAppSyncService(copy_sync_list); 4152 StartAppSyncService(copy_sync_list);
4196 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); 4153 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus());
4197 } 4154 }
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
4338 EXPECT_EQ(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, 4295 EXPECT_EQ(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
4339 shelf_controller->auto_hide()); 4296 shelf_controller->auto_hide());
4340 EXPECT_EQ(2u, shelf_controller->auto_hide_change_count()); 4297 EXPECT_EQ(2u, shelf_controller->auto_hide_change_count());
4341 4298
4342 PrefService* prefs = profile()->GetTestingPrefService(); 4299 PrefService* prefs = profile()->GetTestingPrefService();
4343 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignmentLocal)); 4300 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignmentLocal));
4344 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignment)); 4301 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignment));
4345 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehaviorLocal)); 4302 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehaviorLocal));
4346 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehavior)); 4303 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehavior));
4347 } 4304 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/toolbar/app_menu_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698