OLD | NEW |
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 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 | 233 |
234 bool IsValidIDForCurrentUser(const std::string& id) const override { | 234 bool IsValidIDForCurrentUser(const std::string& id) const override { |
235 for (TabToStringMap::const_iterator i = tab_id_map_.begin(); | 235 for (TabToStringMap::const_iterator i = tab_id_map_.begin(); |
236 i != tab_id_map_.end(); ++i) { | 236 i != tab_id_map_.end(); ++i) { |
237 if (i->second == id) | 237 if (i->second == id) |
238 return true; | 238 return true; |
239 } | 239 } |
240 return false; | 240 return false; |
241 } | 241 } |
242 | 242 |
243 void SetCurrentUser(Profile* profile) override { | |
244 // We can ignore this for now. | |
245 } | |
246 | |
247 ArcAppListPrefs* GetArcAppListPrefs() const override { return nullptr; } | 243 ArcAppListPrefs* GetArcAppListPrefs() const override { return nullptr; } |
248 | 244 |
249 private: | 245 private: |
250 typedef std::map<content::WebContents*, std::string> TabToStringMap; | 246 typedef std::map<content::WebContents*, std::string> TabToStringMap; |
251 | 247 |
252 TabToStringMap tab_id_map_; | 248 TabToStringMap tab_id_map_; |
253 | 249 |
254 DISALLOW_COPY_AND_ASSIGN(TestLauncherControllerHelper); | 250 DISALLOW_COPY_AND_ASSIGN(TestLauncherControllerHelper); |
255 }; | 251 }; |
256 | 252 |
(...skipping 29 matching lines...) Expand all Loading... |
286 new ChromeLauncherAppMenuItem(base::string16(), NULL, false)); | 282 new ChromeLauncherAppMenuItem(base::string16(), NULL, false)); |
287 items.push_back( | 283 items.push_back( |
288 new ChromeLauncherAppMenuItem(base::string16(), NULL, false)); | 284 new ChromeLauncherAppMenuItem(base::string16(), NULL, false)); |
289 return items; | 285 return items; |
290 } | 286 } |
291 ash::ShelfMenuModel* CreateApplicationMenu(int event_flags) override { | 287 ash::ShelfMenuModel* CreateApplicationMenu(int event_flags) override { |
292 return NULL; | 288 return NULL; |
293 } | 289 } |
294 bool IsDraggable() override { return false; } | 290 bool IsDraggable() override { return false; } |
295 bool CanPin() const override { | 291 bool CanPin() const override { |
296 return GetPinnableForAppID(app_id(), launcher_controller()->GetProfile()) == | 292 return GetPinnableForAppID(app_id(), launcher_controller()->profile()) == |
297 AppListControllerDelegate::PIN_EDITABLE; | 293 AppListControllerDelegate::PIN_EDITABLE; |
298 } | 294 } |
299 bool ShouldShowTooltip() override { return false; } | 295 bool ShouldShowTooltip() override { return false; } |
300 | 296 |
301 private: | 297 private: |
302 DISALLOW_COPY_AND_ASSIGN(TestV2AppLauncherItemController); | 298 DISALLOW_COPY_AND_ASSIGN(TestV2AppLauncherItemController); |
303 }; | 299 }; |
304 | 300 |
305 } // namespace | 301 } // namespace |
306 | 302 |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
496 void AddAppListLauncherItem() { | 492 void AddAppListLauncherItem() { |
497 ash::ShelfItem app_list; | 493 ash::ShelfItem app_list; |
498 app_list.type = ash::TYPE_APP_LIST; | 494 app_list.type = ash::TYPE_APP_LIST; |
499 model_->Add(app_list); | 495 model_->Add(app_list); |
500 } | 496 } |
501 | 497 |
502 void InitLauncherController() { | 498 void InitLauncherController() { |
503 AddAppListLauncherItem(); | 499 AddAppListLauncherItem(); |
504 launcher_controller_.reset( | 500 launcher_controller_.reset( |
505 new ChromeLauncherControllerImpl(profile(), model_.get())); | 501 new ChromeLauncherControllerImpl(profile(), model_.get())); |
| 502 // TODO(crbug.com/654622): Some tests break with a non-null static instance. |
| 503 ChromeLauncherControllerImpl::set_instance_for_test(nullptr); |
506 launcher_controller_->Init(); | 504 launcher_controller_->Init(); |
507 } | 505 } |
508 | 506 |
509 void InitLauncherControllerWithBrowser() { | 507 void InitLauncherControllerWithBrowser() { |
510 InitLauncherController(); | 508 InitLauncherController(); |
511 chrome::NewTab(browser()); | 509 chrome::NewTab(browser()); |
512 browser()->window()->Show(); | 510 browser()->window()->Show(); |
513 } | 511 } |
514 | 512 |
515 void RecreateChromeLauncher() { | 513 void RecreateChromeLauncher() { |
516 // Destroy controller first if it exists. | 514 // Destroy controller first if it exists. |
517 launcher_controller_.reset(); | 515 launcher_controller_.reset(); |
518 model_.reset(new ash::ShelfModel); | 516 model_.reset(new ash::ShelfModel); |
519 AddAppListLauncherItem(); | 517 AddAppListLauncherItem(); |
520 launcher_controller_.reset( | 518 launcher_controller_ = |
521 ChromeLauncherControllerImpl::CreateInstance(profile(), model_.get())); | 519 base::MakeUnique<ChromeLauncherControllerImpl>(profile(), model_.get()); |
522 launcher_controller_->Init(); | 520 launcher_controller_->Init(); |
523 } | 521 } |
524 | 522 |
525 void StartAppSyncService(const syncer::SyncDataList& init_sync_list) { | 523 void StartAppSyncService(const syncer::SyncDataList& init_sync_list) { |
526 app_service_->MergeDataAndStartSyncing( | 524 app_service_->MergeDataAndStartSyncing( |
527 syncer::APP_LIST, init_sync_list, | 525 syncer::APP_LIST, init_sync_list, |
528 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), | 526 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
529 base::MakeUnique<syncer::SyncErrorFactoryMock>()); | 527 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
530 EXPECT_EQ(init_sync_list.size(), app_service_->sync_items().size()); | 528 EXPECT_EQ(init_sync_list.size(), app_service_->sync_items().size()); |
531 } | 529 } |
532 | 530 |
533 void StopAppSyncService() { app_service_->StopSyncing(syncer::APP_LIST); } | 531 void StopAppSyncService() { app_service_->StopSyncing(syncer::APP_LIST); } |
534 | 532 |
535 void SetAppIconLoader(std::unique_ptr<AppIconLoader> loader) { | 533 void SetAppIconLoader(std::unique_ptr<AppIconLoader> loader) { |
536 std::vector<std::unique_ptr<AppIconLoader>> loaders; | 534 std::vector<std::unique_ptr<AppIconLoader>> loaders; |
537 loaders.push_back(std::move(loader)); | 535 loaders.push_back(std::move(loader)); |
538 launcher_controller_->SetAppIconLoadersForTest(loaders); | 536 launcher_controller_->SetAppIconLoadersForTest(loaders); |
539 } | 537 } |
540 | 538 |
541 void SetAppIconLoaders(std::unique_ptr<AppIconLoader> loader1, | 539 void SetAppIconLoaders(std::unique_ptr<AppIconLoader> loader1, |
542 std::unique_ptr<AppIconLoader> loader2) { | 540 std::unique_ptr<AppIconLoader> loader2) { |
543 std::vector<std::unique_ptr<AppIconLoader>> loaders; | 541 std::vector<std::unique_ptr<AppIconLoader>> loaders; |
544 loaders.push_back(std::move(loader1)); | 542 loaders.push_back(std::move(loader1)); |
545 loaders.push_back(std::move(loader2)); | 543 loaders.push_back(std::move(loader2)); |
546 launcher_controller_->SetAppIconLoadersForTest(loaders); | 544 launcher_controller_->SetAppIconLoadersForTest(loaders); |
547 } | 545 } |
548 | 546 |
549 void SetLauncherControllerHelper(LauncherControllerHelper* helper) { | 547 void SetLauncherControllerHelper(LauncherControllerHelper* helper) { |
550 launcher_controller_->SetLauncherControllerHelperForTest(helper); | 548 launcher_controller_->SetLauncherControllerHelperForTest( |
| 549 base::WrapUnique<LauncherControllerHelper>(helper)); |
551 } | 550 } |
552 | 551 |
553 void InsertPrefValue(base::ListValue* pref_value, | 552 void InsertPrefValue(base::ListValue* pref_value, |
554 int index, | 553 int index, |
555 const std::string& extension_id) { | 554 const std::string& extension_id) { |
556 auto entry = base::MakeUnique<base::DictionaryValue>(); | 555 auto entry = base::MakeUnique<base::DictionaryValue>(); |
557 entry->SetString(ash::launcher::kPinnedAppsPrefAppIDPath, extension_id); | 556 entry->SetString(ash::launcher::kPinnedAppsPrefAppIDPath, extension_id); |
558 pref_value->Insert(index, std::move(entry)); | 557 pref_value->Insert(index, std::move(entry)); |
559 } | 558 } |
560 | 559 |
(...skipping 2852 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3413 model_->Move(1, 3); | 3412 model_->Move(1, 3); |
3414 EXPECT_EQ(ash::TYPE_APP_LIST, model_->items()[0].type); | 3413 EXPECT_EQ(ash::TYPE_APP_LIST, model_->items()[0].type); |
3415 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[1].type); | 3414 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[1].type); |
3416 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[2].type); | 3415 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[2].type); |
3417 EXPECT_EQ(ash::TYPE_BROWSER_SHORTCUT, model_->items()[3].type); | 3416 EXPECT_EQ(ash::TYPE_BROWSER_SHORTCUT, model_->items()[3].type); |
3418 | 3417 |
3419 launcher_controller_.reset(); | 3418 launcher_controller_.reset(); |
3420 model_.reset(new ash::ShelfModel); | 3419 model_.reset(new ash::ShelfModel); |
3421 | 3420 |
3422 AddAppListLauncherItem(); | 3421 AddAppListLauncherItem(); |
3423 launcher_controller_.reset( | 3422 launcher_controller_ = |
3424 ChromeLauncherControllerImpl::CreateInstance(profile(), model_.get())); | 3423 base::MakeUnique<ChromeLauncherControllerImpl>(profile(), model_.get()); |
3425 helper = new TestLauncherControllerHelper(profile()); | 3424 helper = new TestLauncherControllerHelper(profile()); |
3426 helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1"); | 3425 helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1"); |
3427 helper->SetAppID(tab_strip_model->GetWebContentsAt(1), "2"); | 3426 helper->SetAppID(tab_strip_model->GetWebContentsAt(1), "2"); |
3428 SetLauncherControllerHelper(helper); | 3427 SetLauncherControllerHelper(helper); |
3429 launcher_controller_->Init(); | 3428 launcher_controller_->Init(); |
3430 | 3429 |
3431 // Check ShelfItems are restored after resetting ChromeLauncherControllerImpl. | 3430 // Check ShelfItems are restored after resetting ChromeLauncherControllerImpl. |
3432 EXPECT_EQ(ash::TYPE_APP_LIST, model_->items()[0].type); | 3431 EXPECT_EQ(ash::TYPE_APP_LIST, model_->items()[0].type); |
3433 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[1].type); | 3432 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[1].type); |
3434 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[2].type); | 3433 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[2].type); |
(...skipping 24 matching lines...) Expand all Loading... |
3459 EXPECT_EQ(1, app_icon_loader->fetch_count()); | 3458 EXPECT_EQ(1, app_icon_loader->fetch_count()); |
3460 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[app_index].type); | 3459 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[app_index].type); |
3461 EXPECT_TRUE(launcher_controller_->IsAppPinned("1")); | 3460 EXPECT_TRUE(launcher_controller_->IsAppPinned("1")); |
3462 EXPECT_FALSE(launcher_controller_->IsAppPinned("0")); | 3461 EXPECT_FALSE(launcher_controller_->IsAppPinned("0")); |
3463 EXPECT_EQ(initial_size + 1, model_->items().size()); | 3462 EXPECT_EQ(initial_size + 1, model_->items().size()); |
3464 | 3463 |
3465 launcher_controller_.reset(); | 3464 launcher_controller_.reset(); |
3466 model_.reset(new ash::ShelfModel); | 3465 model_.reset(new ash::ShelfModel); |
3467 | 3466 |
3468 AddAppListLauncherItem(); | 3467 AddAppListLauncherItem(); |
3469 launcher_controller_.reset( | 3468 launcher_controller_ = |
3470 ChromeLauncherControllerImpl::CreateInstance(profile(), model_.get())); | 3469 base::MakeUnique<ChromeLauncherControllerImpl>(profile(), model_.get()); |
3471 helper = new TestLauncherControllerHelper(profile()); | 3470 helper = new TestLauncherControllerHelper(profile()); |
3472 helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1"); | 3471 helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1"); |
3473 SetLauncherControllerHelper(helper); | 3472 SetLauncherControllerHelper(helper); |
3474 // app_icon_loader is owned by ChromeLauncherControllerImpl. | 3473 // app_icon_loader is owned by ChromeLauncherControllerImpl. |
3475 app_icon_loader = new TestAppIconLoaderImpl; | 3474 app_icon_loader = new TestAppIconLoaderImpl; |
3476 app_icon_loader->AddSupportedApp("1"); | 3475 app_icon_loader->AddSupportedApp("1"); |
3477 SetAppIconLoader(std::unique_ptr<AppIconLoader>(app_icon_loader)); | 3476 SetAppIconLoader(std::unique_ptr<AppIconLoader>(app_icon_loader)); |
3478 launcher_controller_->Init(); | 3477 launcher_controller_->Init(); |
3479 | 3478 |
3480 EXPECT_EQ(1, app_icon_loader->fetch_count()); | 3479 EXPECT_EQ(1, app_icon_loader->fetch_count()); |
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3926 NotifyOnTaskOrientationLockRequested(task_id_current_, | 3925 NotifyOnTaskOrientationLockRequested(task_id_current_, |
3927 OrientationLock::CURRENT); | 3926 OrientationLock::CURRENT); |
3928 EXPECT_TRUE(controller->rotation_locked()); | 3927 EXPECT_TRUE(controller->rotation_locked()); |
3929 EXPECT_EQ(display::Display::ROTATE_0, | 3928 EXPECT_EQ(display::Display::ROTATE_0, |
3930 display::Screen::GetScreen()->GetPrimaryDisplay().rotation()); | 3929 display::Screen::GetScreen()->GetPrimaryDisplay().rotation()); |
3931 } | 3930 } |
3932 | 3931 |
3933 TEST_F(ChromeLauncherControllerArcDefaultAppsTest, DefaultApps) { | 3932 TEST_F(ChromeLauncherControllerArcDefaultAppsTest, DefaultApps) { |
3934 arc_test_.SetUp(profile()); | 3933 arc_test_.SetUp(profile()); |
3935 InitLauncherController(); | 3934 InitLauncherController(); |
3936 ChromeLauncherController::set_instance(launcher_controller_.get()); | 3935 ChromeLauncherController::set_instance_for_test(launcher_controller_.get()); |
3937 arc::ArcAuthService::SetShelfDelegateForTesting(launcher_controller_.get()); | 3936 arc::ArcAuthService::SetShelfDelegateForTesting(launcher_controller_.get()); |
3938 | 3937 |
3939 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs(); | 3938 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs(); |
3940 EnableArc(false); | 3939 EnableArc(false); |
3941 EXPECT_FALSE(arc_test_.arc_auth_service()->IsArcEnabled()); | 3940 EXPECT_FALSE(arc_test_.arc_auth_service()->IsArcEnabled()); |
3942 ASSERT_TRUE(prefs->GetAppIds().size()); | 3941 ASSERT_TRUE(prefs->GetAppIds().size()); |
3943 | 3942 |
3944 const std::string app_id = | 3943 const std::string app_id = |
3945 ArcAppTest::GetAppId(arc_test_.fake_default_apps()[0]); | 3944 ArcAppTest::GetAppId(arc_test_.fake_default_apps()[0]); |
3946 EXPECT_EQ(0, launcher_controller_->GetShelfIDForAppID(app_id)); | 3945 EXPECT_EQ(0, launcher_controller_->GetShelfIDForAppID(app_id)); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4009 app_service_->GetPinPosition(extension_misc::kChromeAppId))); | 4008 app_service_->GetPinPosition(extension_misc::kChromeAppId))); |
4010 EXPECT_TRUE( | 4009 EXPECT_TRUE( |
4011 position_1.Equals(app_service_->GetPinPosition(extension1_->id()))); | 4010 position_1.Equals(app_service_->GetPinPosition(extension1_->id()))); |
4012 EXPECT_TRUE( | 4011 EXPECT_TRUE( |
4013 position_1.Equals(app_service_->GetPinPosition(extension1_->id()))); | 4012 position_1.Equals(app_service_->GetPinPosition(extension1_->id()))); |
4014 EXPECT_TRUE( | 4013 EXPECT_TRUE( |
4015 position_2.Equals(app_service_->GetPinPosition(extension2_->id()))); | 4014 position_2.Equals(app_service_->GetPinPosition(extension2_->id()))); |
4016 EXPECT_TRUE( | 4015 EXPECT_TRUE( |
4017 position_3.Equals(app_service_->GetPinPosition(extension3_->id()))); | 4016 position_3.Equals(app_service_->GetPinPosition(extension3_->id()))); |
4018 } | 4017 } |
OLD | NEW |