| 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 13 matching lines...) Expand all Loading... |
| 24 #include "ash/common/wm/maximize_mode/maximize_mode_controller.h" | 24 #include "ash/common/wm/maximize_mode/maximize_mode_controller.h" |
| 25 #include "ash/common/wm_shell.h" | 25 #include "ash/common/wm_shell.h" |
| 26 #include "ash/display/screen_orientation_controller_chromeos.h" | 26 #include "ash/display/screen_orientation_controller_chromeos.h" |
| 27 #include "ash/shell.h" | 27 #include "ash/shell.h" |
| 28 #include "ash/test/ash_test_helper.h" | 28 #include "ash/test/ash_test_helper.h" |
| 29 #include "ash/test/test_shell_delegate.h" | 29 #include "ash/test/test_shell_delegate.h" |
| 30 #include "ash/wm/window_util.h" | 30 #include "ash/wm/window_util.h" |
| 31 #include "base/command_line.h" | 31 #include "base/command_line.h" |
| 32 #include "base/compiler_specific.h" | 32 #include "base/compiler_specific.h" |
| 33 #include "base/files/file_path.h" | 33 #include "base/files/file_path.h" |
| 34 #include "base/json/json_string_value_serializer.h" |
| 34 #include "base/location.h" | 35 #include "base/location.h" |
| 35 #include "base/macros.h" | 36 #include "base/macros.h" |
| 36 #include "base/memory/ptr_util.h" | 37 #include "base/memory/ptr_util.h" |
| 37 #include "base/run_loop.h" | 38 #include "base/run_loop.h" |
| 38 #include "base/single_thread_task_runner.h" | 39 #include "base/single_thread_task_runner.h" |
| 39 #include "base/strings/utf_string_conversions.h" | 40 #include "base/strings/utf_string_conversions.h" |
| 40 #include "base/values.h" | 41 #include "base/values.h" |
| 41 #include "build/build_config.h" | 42 #include "build/build_config.h" |
| 42 #include "chrome/browser/chromeos/arc/arc_support_host.h" | 43 #include "chrome/browser/chromeos/arc/arc_support_host.h" |
| 43 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" | 44 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" |
| 44 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" | 45 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" |
| 45 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" | 46 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" |
| 46 #include "chrome/browser/extensions/extension_service.h" | 47 #include "chrome/browser/extensions/extension_service.h" |
| 47 #include "chrome/browser/extensions/test_extension_system.h" | 48 #include "chrome/browser/extensions/test_extension_system.h" |
| 48 #include "chrome/browser/lifetime/scoped_keep_alive.h" | 49 #include "chrome/browser/lifetime/scoped_keep_alive.h" |
| 50 #include "chrome/browser/prefs/browser_prefs.h" |
| 49 #include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" | 51 #include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" |
| 50 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h" | 52 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h" |
| 51 #include "chrome/browser/ui/app_list/arc/arc_app_test.h" | 53 #include "chrome/browser/ui/app_list/arc/arc_app_test.h" |
| 52 #include "chrome/browser/ui/app_list/arc/arc_app_utils.h" | 54 #include "chrome/browser/ui/app_list/arc/arc_app_utils.h" |
| 53 #include "chrome/browser/ui/app_list/arc/arc_default_app_list.h" | 55 #include "chrome/browser/ui/app_list/arc/arc_default_app_list.h" |
| 54 #include "chrome/browser/ui/apps/chrome_app_delegate.h" | 56 #include "chrome/browser/ui/apps/chrome_app_delegate.h" |
| 55 #include "chrome/browser/ui/ash/chrome_launcher_prefs.h" | 57 #include "chrome/browser/ui/ash/chrome_launcher_prefs.h" |
| 56 #include "chrome/browser/ui/ash/launcher/app_window_launcher_controller.h" | 58 #include "chrome/browser/ui/ash/launcher/app_window_launcher_controller.h" |
| 57 #include "chrome/browser/ui/ash/launcher/arc_app_deferred_launcher_controller.h" | 59 #include "chrome/browser/ui/ash/launcher/arc_app_deferred_launcher_controller.h" |
| 58 #include "chrome/browser/ui/ash/launcher/browser_status_monitor.h" | 60 #include "chrome/browser/ui/ash/launcher/browser_status_monitor.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 76 #include "chrome/common/pref_names.h" | 78 #include "chrome/common/pref_names.h" |
| 77 #include "chrome/test/base/browser_with_test_window_test.h" | 79 #include "chrome/test/base/browser_with_test_window_test.h" |
| 78 #include "chrome/test/base/test_browser_window_aura.h" | 80 #include "chrome/test/base/test_browser_window_aura.h" |
| 79 #include "chrome/test/base/testing_browser_process.h" | 81 #include "chrome/test/base/testing_browser_process.h" |
| 80 #include "chrome/test/base/testing_profile.h" | 82 #include "chrome/test/base/testing_profile.h" |
| 81 #include "chrome/test/base/testing_profile_manager.h" | 83 #include "chrome/test/base/testing_profile_manager.h" |
| 82 #include "chromeos/chromeos_switches.h" | 84 #include "chromeos/chromeos_switches.h" |
| 83 #include "components/arc/common/app.mojom.h" | 85 #include "components/arc/common/app.mojom.h" |
| 84 #include "components/arc/test/fake_app_instance.h" | 86 #include "components/arc/test/fake_app_instance.h" |
| 85 #include "components/exo/shell_surface.h" | 87 #include "components/exo/shell_surface.h" |
| 88 #include "components/prefs/pref_notifier_impl.h" |
| 86 #include "components/signin/core/account_id/account_id.h" | 89 #include "components/signin/core/account_id/account_id.h" |
| 90 #include "components/sync/model/attachments/attachment_service_proxy_for_test.h" |
| 87 #include "components/sync/model/fake_sync_change_processor.h" | 91 #include "components/sync/model/fake_sync_change_processor.h" |
| 88 #include "components/sync/model/sync_error_factory_mock.h" | 92 #include "components/sync/model/sync_error_factory_mock.h" |
| 89 #include "components/sync/protocol/sync.pb.h" | 93 #include "components/sync/protocol/sync.pb.h" |
| 94 #include "components/sync_preferences/pref_model_associator.h" |
| 90 #include "components/sync_preferences/testing_pref_service_syncable.h" | 95 #include "components/sync_preferences/testing_pref_service_syncable.h" |
| 91 #include "components/user_manager/fake_user_manager.h" | 96 #include "components/user_manager/fake_user_manager.h" |
| 92 #include "content/public/browser/web_contents.h" | 97 #include "content/public/browser/web_contents.h" |
| 93 #include "content/public/browser/web_contents_observer.h" | 98 #include "content/public/browser/web_contents_observer.h" |
| 94 #include "content/public/test/test_utils.h" | 99 #include "content/public/test/test_utils.h" |
| 95 #include "content/public/test/web_contents_tester.h" | 100 #include "content/public/test/web_contents_tester.h" |
| 96 #include "extensions/browser/app_window/app_window_contents.h" | 101 #include "extensions/browser/app_window/app_window_contents.h" |
| 97 #include "extensions/browser/app_window/app_window_registry.h" | 102 #include "extensions/browser/app_window/app_window_registry.h" |
| 98 #include "extensions/browser/app_window/native_app_window.h" | 103 #include "extensions/browser/app_window/native_app_window.h" |
| 99 #include "extensions/common/extension.h" | 104 #include "extensions/common/extension.h" |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 // Wait until |extension_system| is signaled as started. | 349 // Wait until |extension_system| is signaled as started. |
| 345 base::RunLoop run_loop; | 350 base::RunLoop run_loop; |
| 346 extension_system->ready().Post(FROM_HERE, run_loop.QuitClosure()); | 351 extension_system->ready().Post(FROM_HERE, run_loop.QuitClosure()); |
| 347 run_loop.Run(); | 352 run_loop.Run(); |
| 348 | 353 |
| 349 app_service_ = | 354 app_service_ = |
| 350 app_list::AppListSyncableServiceFactory::GetForProfile(profile()); | 355 app_list::AppListSyncableServiceFactory::GetForProfile(profile()); |
| 351 StartAppSyncService(syncer::SyncDataList()); | 356 StartAppSyncService(syncer::SyncDataList()); |
| 352 | 357 |
| 353 std::string error; | 358 std::string error; |
| 359 extension_chrome_ = Extension::Create(base::FilePath(), Manifest::UNPACKED, |
| 360 manifest, Extension::NO_FLAGS, |
| 361 extension_misc::kChromeAppId, &error); |
| 354 extension1_ = Extension::Create(base::FilePath(), Manifest::UNPACKED, | 362 extension1_ = Extension::Create(base::FilePath(), Manifest::UNPACKED, |
| 355 manifest, Extension::NO_FLAGS, | 363 manifest, Extension::NO_FLAGS, |
| 356 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", &error); | 364 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", &error); |
| 357 extension2_ = Extension::Create(base::FilePath(), Manifest::UNPACKED, | 365 extension2_ = Extension::Create(base::FilePath(), Manifest::UNPACKED, |
| 358 manifest, Extension::NO_FLAGS, | 366 manifest, Extension::NO_FLAGS, |
| 359 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", &error); | 367 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", &error); |
| 360 // Fake gmail extension. | 368 // Fake gmail extension. |
| 361 base::DictionaryValue manifest_gmail; | 369 base::DictionaryValue manifest_gmail; |
| 362 manifest_gmail.SetString(extensions::manifest_keys::kName, | 370 manifest_gmail.SetString(extensions::manifest_keys::kName, |
| 363 "Gmail launcher controller test extension"); | 371 "Gmail launcher controller test extension"); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 389 "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", &error); | 397 "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", &error); |
| 390 extension8_ = Extension::Create(base::FilePath(), Manifest::UNPACKED, | 398 extension8_ = Extension::Create(base::FilePath(), Manifest::UNPACKED, |
| 391 manifest, Extension::NO_FLAGS, | 399 manifest, Extension::NO_FLAGS, |
| 392 "ffffffffffffffffffffffffffffffff", &error); | 400 "ffffffffffffffffffffffffffffffff", &error); |
| 393 extension_platform_app_ = Extension::Create( | 401 extension_platform_app_ = Extension::Create( |
| 394 base::FilePath(), Manifest::UNPACKED, manifest_platform_app, | 402 base::FilePath(), Manifest::UNPACKED, manifest_platform_app, |
| 395 Extension::NO_FLAGS, "gggggggggggggggggggggggggggggggg", &error); | 403 Extension::NO_FLAGS, "gggggggggggggggggggggggggggggggg", &error); |
| 396 arc_support_host_ = Extension::Create(base::FilePath(), Manifest::UNPACKED, | 404 arc_support_host_ = Extension::Create(base::FilePath(), Manifest::UNPACKED, |
| 397 manifest, Extension::NO_FLAGS, | 405 manifest, Extension::NO_FLAGS, |
| 398 ArcSupportHost::kHostAppId, &error); | 406 ArcSupportHost::kHostAppId, &error); |
| 407 extension_service_->AddExtension(extension_chrome_.get()); |
| 399 } | 408 } |
| 400 | 409 |
| 401 // Creates a running platform V2 app (not pinned) of type |app_id|. | 410 // Creates a running platform V2 app (not pinned) of type |app_id|. |
| 402 virtual void CreateRunningV2App(const std::string& app_id) { | 411 virtual void CreateRunningV2App(const std::string& app_id) { |
| 403 DCHECK(!test_controller_); | 412 DCHECK(!test_controller_); |
| 404 ash::ShelfID id = | 413 ash::ShelfID id = |
| 405 launcher_controller_->CreateAppShortcutLauncherItemWithType( | 414 launcher_controller_->CreateAppShortcutLauncherItemWithType( |
| 406 ash::launcher::AppLauncherId(app_id), model_->item_count(), | 415 ash::launcher::AppLauncherId(app_id), model_->item_count(), |
| 407 ash::TYPE_APP); | 416 ash::TYPE_APP); |
| 408 DCHECK(id); | 417 DCHECK(id); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 509 void StartAppSyncService(const syncer::SyncDataList& init_sync_list) { | 518 void StartAppSyncService(const syncer::SyncDataList& init_sync_list) { |
| 510 app_service_->MergeDataAndStartSyncing( | 519 app_service_->MergeDataAndStartSyncing( |
| 511 syncer::APP_LIST, init_sync_list, | 520 syncer::APP_LIST, init_sync_list, |
| 512 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), | 521 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 513 base::MakeUnique<syncer::SyncErrorFactoryMock>()); | 522 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 514 EXPECT_EQ(init_sync_list.size(), app_service_->sync_items().size()); | 523 EXPECT_EQ(init_sync_list.size(), app_service_->sync_items().size()); |
| 515 } | 524 } |
| 516 | 525 |
| 517 void StopAppSyncService() { app_service_->StopSyncing(syncer::APP_LIST); } | 526 void StopAppSyncService() { app_service_->StopSyncing(syncer::APP_LIST); } |
| 518 | 527 |
| 528 sync_preferences::PrefModelAssociator* GetPrefSyncService() { |
| 529 sync_preferences::PrefServiceSyncable* pref_sync = |
| 530 profile()->GetTestingPrefService(); |
| 531 sync_preferences::PrefModelAssociator* pref_sync_service = |
| 532 reinterpret_cast<sync_preferences::PrefModelAssociator*>( |
| 533 pref_sync->GetSyncableService(syncer::PREFERENCES)); |
| 534 return pref_sync_service; |
| 535 } |
| 536 |
| 537 void StartPrefSyncService(const syncer::SyncDataList& init_sync_list) { |
| 538 syncer::SyncMergeResult r = GetPrefSyncService()->MergeDataAndStartSyncing( |
| 539 syncer::PREFERENCES, init_sync_list, |
| 540 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 541 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 542 EXPECT_FALSE(r.error().IsSet()); |
| 543 } |
| 544 |
| 545 void StartPrefSyncServiceForPins(const base::ListValue& init_value) { |
| 546 syncer::SyncDataList init_sync_list; |
| 547 std::string serialized; |
| 548 JSONStringValueSerializer json(&serialized); |
| 549 json.Serialize(init_value); |
| 550 sync_pb::EntitySpecifics one; |
| 551 sync_pb::PreferenceSpecifics* pref_one = one.mutable_preference(); |
| 552 pref_one->set_name(prefs::kPinnedLauncherApps); |
| 553 pref_one->set_value(serialized); |
| 554 init_sync_list.push_back(syncer::SyncData::CreateRemoteData( |
| 555 1, one, base::Time(), syncer::AttachmentIdList(), |
| 556 syncer::AttachmentServiceProxyForTest::Create())); |
| 557 StartPrefSyncService(init_sync_list); |
| 558 } |
| 559 |
| 560 void StopPrefSyncService() { |
| 561 GetPrefSyncService()->StopSyncing(syncer::PREFERENCES); |
| 562 } |
| 563 |
| 519 void SetAppIconLoader(std::unique_ptr<AppIconLoader> loader) { | 564 void SetAppIconLoader(std::unique_ptr<AppIconLoader> loader) { |
| 520 std::vector<std::unique_ptr<AppIconLoader>> loaders; | 565 std::vector<std::unique_ptr<AppIconLoader>> loaders; |
| 521 loaders.push_back(std::move(loader)); | 566 loaders.push_back(std::move(loader)); |
| 522 launcher_controller_->SetAppIconLoadersForTest(loaders); | 567 launcher_controller_->SetAppIconLoadersForTest(loaders); |
| 523 } | 568 } |
| 524 | 569 |
| 525 void SetAppIconLoaders(std::unique_ptr<AppIconLoader> loader1, | 570 void SetAppIconLoaders(std::unique_ptr<AppIconLoader> loader1, |
| 526 std::unique_ptr<AppIconLoader> loader2) { | 571 std::unique_ptr<AppIconLoader> loader2) { |
| 527 std::vector<std::unique_ptr<AppIconLoader>> loaders; | 572 std::vector<std::unique_ptr<AppIconLoader>> loaders; |
| 528 loaders.push_back(std::move(loader1)); | 573 loaders.push_back(std::move(loader1)); |
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 860 appinfo.name, std::string()); | 905 appinfo.name, std::string()); |
| 861 } | 906 } |
| 862 | 907 |
| 863 void NotifyOnTaskOrientationLockRequested(int32_t task_id, | 908 void NotifyOnTaskOrientationLockRequested(int32_t task_id, |
| 864 OrientationLock lock) { | 909 OrientationLock lock) { |
| 865 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs(); | 910 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs(); |
| 866 prefs->OnTaskOrientationLockRequested(task_id, lock); | 911 prefs->OnTaskOrientationLockRequested(task_id, lock); |
| 867 } | 912 } |
| 868 | 913 |
| 869 // Needed for extension service & friends to work. | 914 // Needed for extension service & friends to work. |
| 915 scoped_refptr<Extension> extension_chrome_; |
| 870 scoped_refptr<Extension> extension1_; | 916 scoped_refptr<Extension> extension1_; |
| 871 scoped_refptr<Extension> extension2_; | 917 scoped_refptr<Extension> extension2_; |
| 872 scoped_refptr<Extension> extension3_; | 918 scoped_refptr<Extension> extension3_; |
| 873 scoped_refptr<Extension> extension4_; | 919 scoped_refptr<Extension> extension4_; |
| 874 scoped_refptr<Extension> extension5_; | 920 scoped_refptr<Extension> extension5_; |
| 875 scoped_refptr<Extension> extension6_; | 921 scoped_refptr<Extension> extension6_; |
| 876 scoped_refptr<Extension> extension7_; | 922 scoped_refptr<Extension> extension7_; |
| 877 scoped_refptr<Extension> extension8_; | 923 scoped_refptr<Extension> extension8_; |
| 878 scoped_refptr<Extension> extension_platform_app_; | 924 scoped_refptr<Extension> extension_platform_app_; |
| 879 scoped_refptr<Extension> arc_support_host_; | 925 scoped_refptr<Extension> arc_support_host_; |
| (...skipping 1772 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2652 sync_list.clear(); | 2698 sync_list.clear(); |
| 2653 InsertRemovePinChange(&sync_list, extension3_->id()); | 2699 InsertRemovePinChange(&sync_list, extension3_->id()); |
| 2654 InsertRemovePinChange(&sync_list, extension2_->id()); | 2700 InsertRemovePinChange(&sync_list, extension2_->id()); |
| 2655 SendPinChanges(sync_list, false); | 2701 SendPinChanges(sync_list, false); |
| 2656 expected_launchers.clear(); | 2702 expected_launchers.clear(); |
| 2657 GetAppLaunchers(launcher_controller_.get(), &actual_launchers); | 2703 GetAppLaunchers(launcher_controller_.get(), &actual_launchers); |
| 2658 EXPECT_EQ(expected_launchers, actual_launchers); | 2704 EXPECT_EQ(expected_launchers, actual_launchers); |
| 2659 } | 2705 } |
| 2660 | 2706 |
| 2661 TEST_F(ChromeLauncherControllerImplTest, ImportLegacyPin) { | 2707 TEST_F(ChromeLauncherControllerImplTest, ImportLegacyPin) { |
| 2708 // Note extension3_ is actually Gmail app which is default pinned. |
| 2709 extension_service_->AddExtension(extension3_.get()); |
| 2710 InitLauncherController(); |
| 2711 |
| 2712 // Default pins should contain Gmail. Pref is not syncing now. |
| 2713 EXPECT_EQ("AppList, Chrome, App3", GetPinnedAppStatus()); |
| 2714 |
| 2662 extension_service_->AddExtension(extension2_.get()); | 2715 extension_service_->AddExtension(extension2_.get()); |
| 2663 extension_service_->AddExtension(extension3_.get()); | 2716 EXPECT_EQ("AppList, Chrome, App3", GetPinnedAppStatus()); |
| 2664 extension_service_->AddExtension(extension4_.get()); | |
| 2665 | 2717 |
| 2666 // Initially pins are imported from legacy pref based model. | 2718 // Initially pins are imported from legacy pref based model. |
| 2667 base::ListValue value; | 2719 base::ListValue value; |
| 2668 InsertPrefValue(&value, 0, extension4_->id()); | 2720 InsertPrefValue(&value, 0, extension4_->id()); |
| 2669 InsertPrefValue(&value, 1, extension2_->id()); | 2721 InsertPrefValue(&value, 1, extension2_->id()); |
| 2670 profile()->GetTestingPrefService()->SetManagedPref(prefs::kPinnedLauncherApps, | 2722 InsertPrefValue(&value, 2, extension3_->id()); |
| 2671 value.DeepCopy()); | 2723 StartPrefSyncServiceForPins(value); |
| 2672 | 2724 |
| 2673 InitLauncherController(); | 2725 // Imported pins contain App2. App2 should be added to pins now. |
| 2726 EXPECT_EQ("AppList, Chrome, App2, App3", GetPinnedAppStatus()); |
| 2674 | 2727 |
| 2675 EXPECT_EQ("AppList, Chrome, App4, App2", GetPinnedAppStatus()); | 2728 // extension4_ is in the pin list. |
| 2729 extension_service_->AddExtension(extension4_.get()); |
| 2730 // extension5_ is not in the pin list. |
| 2731 extension_service_->AddExtension(extension5_.get()); |
| 2732 EXPECT_EQ("AppList, Chrome, App4, App2, App3", GetPinnedAppStatus()); |
| 2733 |
| 2734 // Apply app sync, unpin one app and pin new one. |
| 2735 syncer::SyncChangeList sync_list; |
| 2736 InsertAddPinChange(&sync_list, -1, extension3_->id()); |
| 2737 InsertAddPinChange(&sync_list, 3, extension5_->id()); |
| 2738 SendPinChanges(sync_list, false); |
| 2739 EXPECT_EQ("AppList, Chrome, App4, App2, App5", GetPinnedAppStatus()); |
| 2676 | 2740 |
| 2677 // At this point changing old pref based model does not affect pin model. | 2741 // At this point changing old pref based model does not affect pin model. |
| 2678 InsertPrefValue(&value, 2, extension3_->id()); | 2742 InsertPrefValue(&value, 3, extension5_->id()); |
| 2679 profile()->GetTestingPrefService()->SetManagedPref(prefs::kPinnedLauncherApps, | 2743 StopPrefSyncService(); |
| 2680 value.DeepCopy()); | 2744 StartPrefSyncServiceForPins(value); |
| 2681 EXPECT_EQ("AppList, Chrome, App4, App2", GetPinnedAppStatus()); | 2745 EXPECT_EQ("AppList, Chrome, App4, App2, App5", GetPinnedAppStatus()); |
| 2746 |
| 2747 // Next Chrome start should preserve pins. |
| 2682 RecreateChromeLauncher(); | 2748 RecreateChromeLauncher(); |
| 2683 EXPECT_EQ("AppList, Chrome, App4, App2", GetPinnedAppStatus()); | 2749 StopPrefSyncService(); |
| 2750 StartPrefSyncService(syncer::SyncDataList()); |
| 2751 EXPECT_EQ("AppList, Chrome, App4, App2, App5", GetPinnedAppStatus()); |
| 2684 } | 2752 } |
| 2685 | 2753 |
| 2686 TEST_F(ChromeLauncherControllerImplTest, PendingInsertionOrder) { | 2754 TEST_F(ChromeLauncherControllerImplTest, PendingInsertionOrder) { |
| 2687 extension_service_->AddExtension(extension1_.get()); | 2755 extension_service_->AddExtension(extension1_.get()); |
| 2688 extension_service_->AddExtension(extension3_.get()); | 2756 extension_service_->AddExtension(extension3_.get()); |
| 2689 | 2757 |
| 2690 InitLauncherController(); | 2758 InitLauncherController(); |
| 2691 | 2759 |
| 2692 syncer::SyncChangeList sync_list; | 2760 syncer::SyncChangeList sync_list; |
| 2693 InsertAddPinChange(&sync_list, 0, extension1_->id()); | 2761 InsertAddPinChange(&sync_list, 0, extension1_->id()); |
| (...skipping 888 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3582 EXPECT_EQ(AppListControllerDelegate::PIN_FIXED, | 3650 EXPECT_EQ(AppListControllerDelegate::PIN_FIXED, |
| 3583 GetPinnableForAppID(app_id, profile())); | 3651 GetPinnableForAppID(app_id, profile())); |
| 3584 } | 3652 } |
| 3585 | 3653 |
| 3586 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcManaged) { | 3654 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcManaged) { |
| 3587 extension_service_->AddExtension(arc_support_host_.get()); | 3655 extension_service_->AddExtension(arc_support_host_.get()); |
| 3588 // Test enables Arc, so turn it off for initial values. | 3656 // Test enables Arc, so turn it off for initial values. |
| 3589 EnableArc(false); | 3657 EnableArc(false); |
| 3590 | 3658 |
| 3591 InitLauncherController(); | 3659 InitLauncherController(); |
| 3660 |
| 3661 // To prevent import legacy pins each time. |
| 3662 // Initially pins are imported from legacy pref based model. |
| 3663 StartPrefSyncService(syncer::SyncDataList()); |
| 3664 |
| 3592 arc::ArcSessionManager::SetShelfDelegateForTesting( | 3665 arc::ArcSessionManager::SetShelfDelegateForTesting( |
| 3593 launcher_controller_.get()); | 3666 launcher_controller_.get()); |
| 3594 | 3667 |
| 3595 // Initial run, Arc is not managed and disabled, Play Store pin should be | 3668 // Initial run, Arc is not managed and disabled, Play Store pin should be |
| 3596 // available. | 3669 // available. |
| 3597 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, | 3670 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, |
| 3598 "AppList, Chrome, Play Store"); | 3671 "AppList, Chrome, Play Store"); |
| 3599 | 3672 |
| 3600 // Arc is managed and enabled, Play Store pin should be available. | 3673 // Arc is managed and enabled, Play Store pin should be available. |
| 3601 // Note: SHOWING_TERMS_OF_SERVICE here means that opt-in flow starts. | 3674 // Note: SHOWING_TERMS_OF_SERVICE here means that opt-in flow starts. |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4063 | 4136 |
| 4064 // Pinned state should not change. | 4137 // Pinned state should not change. |
| 4065 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); | 4138 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); |
| 4066 launcher_controller_->UnpinAppWithID(extension2_->id()); | 4139 launcher_controller_->UnpinAppWithID(extension2_->id()); |
| 4067 EXPECT_EQ("AppList, Chrome, App1", GetPinnedAppStatus()); | 4140 EXPECT_EQ("AppList, Chrome, App1", GetPinnedAppStatus()); |
| 4068 | 4141 |
| 4069 // Resume syncing and sync information overrides local copy. | 4142 // Resume syncing and sync information overrides local copy. |
| 4070 StartAppSyncService(copy_sync_list); | 4143 StartAppSyncService(copy_sync_list); |
| 4071 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); | 4144 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); |
| 4072 } | 4145 } |
| OLD | NEW |