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 1449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1460 InsertAddPinChange(&sync_list, 0, extension1_->id()); | 1460 InsertAddPinChange(&sync_list, 0, extension1_->id()); |
1461 InsertAddPinChange(&sync_list, 1, extension_misc::kChromeAppId); | 1461 InsertAddPinChange(&sync_list, 1, extension_misc::kChromeAppId); |
1462 InsertAddPinChange(&sync_list, 2, extension3_->id()); | 1462 InsertAddPinChange(&sync_list, 2, extension3_->id()); |
1463 SendPinChanges(sync_list, true); | 1463 SendPinChanges(sync_list, true); |
1464 | 1464 |
1465 base::ListValue policy_value; | 1465 base::ListValue policy_value; |
1466 // extension 2 4 are pinned by policy | 1466 // extension 2 4 are pinned by policy |
1467 InsertPrefValue(&policy_value, 0, extension2_->id()); | 1467 InsertPrefValue(&policy_value, 0, extension2_->id()); |
1468 InsertPrefValue(&policy_value, 1, extension4_->id()); | 1468 InsertPrefValue(&policy_value, 1, extension4_->id()); |
1469 profile()->GetTestingPrefService()->SetManagedPref( | 1469 profile()->GetTestingPrefService()->SetManagedPref( |
1470 prefs::kPolicyPinnedLauncherApps, policy_value.DeepCopy()); | 1470 prefs::kPolicyPinnedLauncherApps, policy_value.CreateDeepCopy()); |
1471 | 1471 |
1472 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 1472 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
1473 // 2 is not pinned as it's not installed | 1473 // 2 is not pinned as it's not installed |
1474 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); | 1474 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); |
1475 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); | 1475 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); |
1476 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension4_->id())); | 1476 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension4_->id())); |
1477 // install extension 2 and check | 1477 // install extension 2 and check |
1478 extension_service_->AddExtension(extension2_.get()); | 1478 extension_service_->AddExtension(extension2_.get()); |
1479 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); | 1479 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); |
1480 | 1480 |
(...skipping 1221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2702 InitLauncherController(); | 2702 InitLauncherController(); |
2703 | 2703 |
2704 syncer::SyncChangeList sync_list; | 2704 syncer::SyncChangeList sync_list; |
2705 InsertAddPinChange(&sync_list, 0, extension_misc::kChromeAppId); | 2705 InsertAddPinChange(&sync_list, 0, extension_misc::kChromeAppId); |
2706 SendPinChanges(sync_list, true); | 2706 SendPinChanges(sync_list, true); |
2707 | 2707 |
2708 base::ListValue policy_value; | 2708 base::ListValue policy_value; |
2709 InsertPrefValue(&policy_value, 0, extension1_->id()); | 2709 InsertPrefValue(&policy_value, 0, extension1_->id()); |
2710 InsertPrefValue(&policy_value, 1, extension2_->id()); | 2710 InsertPrefValue(&policy_value, 1, extension2_->id()); |
2711 profile()->GetTestingPrefService()->SetManagedPref( | 2711 profile()->GetTestingPrefService()->SetManagedPref( |
2712 prefs::kPolicyPinnedLauncherApps, policy_value.DeepCopy()); | 2712 prefs::kPolicyPinnedLauncherApps, policy_value.CreateDeepCopy()); |
2713 | 2713 |
2714 // Only |extension1_| should get pinned. |extension2_| is specified but not | 2714 // Only |extension1_| should get pinned. |extension2_| is specified but not |
2715 // installed, and |extension3_| is part of the default set, but that shouldn't | 2715 // installed, and |extension3_| is part of the default set, but that shouldn't |
2716 // take effect when the policy override is in place. | 2716 // take effect when the policy override is in place. |
2717 ASSERT_EQ(3, model_->item_count()); | 2717 ASSERT_EQ(3, model_->item_count()); |
2718 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[1].type); | 2718 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[1].type); |
2719 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 2719 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
2720 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); | 2720 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); |
2721 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); | 2721 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); |
2722 | 2722 |
2723 // Installing |extension2_| should add it to the launcher. | 2723 // Installing |extension2_| should add it to the launcher. |
2724 extension_service_->AddExtension(extension2_.get()); | 2724 extension_service_->AddExtension(extension2_.get()); |
2725 ASSERT_EQ(4, model_->item_count()); | 2725 ASSERT_EQ(4, model_->item_count()); |
2726 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[1].type); | 2726 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[1].type); |
2727 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); | 2727 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); |
2728 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 2728 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
2729 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); | 2729 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); |
2730 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); | 2730 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); |
2731 | 2731 |
2732 // Removing |extension1_| from the policy should not be reflected in the | 2732 // Removing |extension1_| from the policy should not be reflected in the |
2733 // launcher and pin will exist. | 2733 // launcher and pin will exist. |
2734 policy_value.Remove(0, NULL); | 2734 policy_value.Remove(0, NULL); |
2735 profile()->GetTestingPrefService()->SetManagedPref( | 2735 profile()->GetTestingPrefService()->SetManagedPref( |
2736 prefs::kPolicyPinnedLauncherApps, policy_value.DeepCopy()); | 2736 prefs::kPolicyPinnedLauncherApps, policy_value.CreateDeepCopy()); |
2737 EXPECT_EQ(4, model_->item_count()); | 2737 EXPECT_EQ(4, model_->item_count()); |
2738 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); | 2738 EXPECT_EQ(ash::TYPE_PINNED_APP, model_->items()[2].type); |
2739 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 2739 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
2740 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); | 2740 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); |
2741 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); | 2741 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); |
2742 } | 2742 } |
2743 | 2743 |
2744 TEST_F(ChromeLauncherControllerImplTest, UnpinWithUninstall) { | 2744 TEST_F(ChromeLauncherControllerImplTest, UnpinWithUninstall) { |
2745 extension_service_->AddExtension(extension3_.get()); | 2745 extension_service_->AddExtension(extension3_.get()); |
2746 extension_service_->AddExtension(extension4_.get()); | 2746 extension_service_->AddExtension(extension4_.get()); |
(...skipping 957 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3704 arc::mojom::AppInfo appinfo = CreateAppInfo( | 3704 arc::mojom::AppInfo appinfo = CreateAppInfo( |
3705 "Some App", "SomeActivity", "com.example.app", OrientationLock::NONE); | 3705 "Some App", "SomeActivity", "com.example.app", OrientationLock::NONE); |
3706 const std::string app_id = AddArcAppAndShortcut(appinfo); | 3706 const std::string app_id = AddArcAppAndShortcut(appinfo); |
3707 | 3707 |
3708 // Set policy, that makes pins ARC app. Unlike native extension, for ARC app | 3708 // Set policy, that makes pins ARC app. Unlike native extension, for ARC app |
3709 // package_name (not hash) specified as id. In this test we check that | 3709 // package_name (not hash) specified as id. In this test we check that |
3710 // by hash we can determine that appropriate package was set by policy. | 3710 // by hash we can determine that appropriate package was set by policy. |
3711 base::ListValue policy_value; | 3711 base::ListValue policy_value; |
3712 InsertPrefValue(&policy_value, 0, appinfo.package_name); | 3712 InsertPrefValue(&policy_value, 0, appinfo.package_name); |
3713 profile()->GetTestingPrefService()->SetManagedPref( | 3713 profile()->GetTestingPrefService()->SetManagedPref( |
3714 prefs::kPolicyPinnedLauncherApps, policy_value.DeepCopy()); | 3714 prefs::kPolicyPinnedLauncherApps, policy_value.CreateDeepCopy()); |
3715 | 3715 |
3716 EXPECT_TRUE(launcher_controller_->IsAppPinned(app_id)); | 3716 EXPECT_TRUE(launcher_controller_->IsAppPinned(app_id)); |
3717 EXPECT_EQ(AppListControllerDelegate::PIN_FIXED, | 3717 EXPECT_EQ(AppListControllerDelegate::PIN_FIXED, |
3718 GetPinnableForAppID(app_id, profile())); | 3718 GetPinnableForAppID(app_id, profile())); |
3719 } | 3719 } |
3720 | 3720 |
3721 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcManaged) { | 3721 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcManaged) { |
3722 // TODO(victorhsieh): Implement opt-in and opt-out. | 3722 // TODO(victorhsieh): Implement opt-in and opt-out. |
3723 if (arc::ShouldArcAlwaysStart()) | 3723 if (arc::ShouldArcAlwaysStart()) |
3724 return; | 3724 return; |
(...skipping 12 matching lines...) Expand all Loading... |
3737 // of removing pinned icon in ArcSessionManager::OnOptInPreferenceChanged(). | 3737 // of removing pinned icon in ArcSessionManager::OnOptInPreferenceChanged(). |
3738 SetShelfDelegate(); | 3738 SetShelfDelegate(); |
3739 | 3739 |
3740 // Initial run, ARC is not managed and disabled, Play Store pin should be | 3740 // Initial run, ARC is not managed and disabled, Play Store pin should be |
3741 // available. | 3741 // available. |
3742 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, | 3742 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, |
3743 "AppList, Chrome, Play Store"); | 3743 "AppList, Chrome, Play Store"); |
3744 | 3744 |
3745 // ARC is managed and enabled, Play Store pin should be available. | 3745 // ARC is managed and enabled, Play Store pin should be available. |
3746 // Note: NEGOTIATING_TERMS_OF_SERVICE here means that opt-in flow starts. | 3746 // Note: NEGOTIATING_TERMS_OF_SERVICE here means that opt-in flow starts. |
3747 profile()->GetTestingPrefService()->SetManagedPref(prefs::kArcEnabled, | 3747 profile()->GetTestingPrefService()->SetManagedPref( |
3748 new base::Value(true)); | 3748 prefs::kArcEnabled, base::MakeUnique<base::Value>(true)); |
3749 base::RunLoop().RunUntilIdle(); | 3749 base::RunLoop().RunUntilIdle(); |
3750 ValidateArcState(true, true, | 3750 ValidateArcState(true, true, |
3751 arc::ArcSessionManager::State::NEGOTIATING_TERMS_OF_SERVICE, | 3751 arc::ArcSessionManager::State::NEGOTIATING_TERMS_OF_SERVICE, |
3752 "AppList, Chrome, Play Store"); | 3752 "AppList, Chrome, Play Store"); |
3753 | 3753 |
3754 // ARC is managed and disabled, Play Store pin should not be available. | 3754 // ARC is managed and disabled, Play Store pin should not be available. |
3755 profile()->GetTestingPrefService()->SetManagedPref(prefs::kArcEnabled, | 3755 profile()->GetTestingPrefService()->SetManagedPref( |
3756 new base::Value(false)); | 3756 prefs::kArcEnabled, base::MakeUnique<base::Value>(false)); |
3757 base::RunLoop().RunUntilIdle(); | 3757 base::RunLoop().RunUntilIdle(); |
3758 ValidateArcState(false, true, arc::ArcSessionManager::State::STOPPED, | 3758 ValidateArcState(false, true, arc::ArcSessionManager::State::STOPPED, |
3759 "AppList, Chrome"); | 3759 "AppList, Chrome"); |
3760 | 3760 |
3761 // ARC is not managed and disabled, Play Store pin should be available. | 3761 // ARC is not managed and disabled, Play Store pin should be available. |
3762 profile()->GetTestingPrefService()->RemoveManagedPref(prefs::kArcEnabled); | 3762 profile()->GetTestingPrefService()->RemoveManagedPref(prefs::kArcEnabled); |
3763 base::RunLoop().RunUntilIdle(); | 3763 base::RunLoop().RunUntilIdle(); |
3764 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, | 3764 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, |
3765 "AppList, Chrome, Play Store"); | 3765 "AppList, Chrome, Play Store"); |
3766 | 3766 |
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4420 EXPECT_EQ(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, | 4420 EXPECT_EQ(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, |
4421 shelf_controller->auto_hide()); | 4421 shelf_controller->auto_hide()); |
4422 EXPECT_EQ(2u, shelf_controller->auto_hide_change_count()); | 4422 EXPECT_EQ(2u, shelf_controller->auto_hide_change_count()); |
4423 | 4423 |
4424 PrefService* prefs = profile()->GetTestingPrefService(); | 4424 PrefService* prefs = profile()->GetTestingPrefService(); |
4425 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignmentLocal)); | 4425 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignmentLocal)); |
4426 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignment)); | 4426 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignment)); |
4427 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehaviorLocal)); | 4427 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehaviorLocal)); |
4428 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehavior)); | 4428 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehavior)); |
4429 } | 4429 } |
OLD | NEW |