| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/extensions/extension_service_unittest.h" | 5 #include "chrome/browser/extensions/extension_service_unittest.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 2768 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2779 // Now, the good_crx is blacklisted. | 2779 // Now, the good_crx is blacklisted. |
| 2780 ValidateBooleanPref(good_crx, "blacklist", true); | 2780 ValidateBooleanPref(good_crx, "blacklist", true); |
| 2781 | 2781 |
| 2782 // We can not install good_crx. | 2782 // We can not install good_crx. |
| 2783 FilePath path = data_dir_.AppendASCII("good.crx"); | 2783 FilePath path = data_dir_.AppendASCII("good.crx"); |
| 2784 InstallCRX(path, INSTALL_FAILED); | 2784 InstallCRX(path, INSTALL_FAILED); |
| 2785 EXPECT_EQ(0u, service_->extensions()->size()); | 2785 EXPECT_EQ(0u, service_->extensions()->size()); |
| 2786 ValidateBooleanPref(good_crx, "blacklist", true); | 2786 ValidateBooleanPref(good_crx, "blacklist", true); |
| 2787 } | 2787 } |
| 2788 | 2788 |
| 2789 // Unload blacklisted extension on policy change. |
| 2790 TEST_F(ExtensionServiceTest, UnloadBlacklistedExtensionPolicy) { |
| 2791 InitializeEmptyExtensionService(); |
| 2792 FilePath path = data_dir_.AppendASCII("good.crx"); |
| 2793 |
| 2794 const Extension* good = InstallCRX(path, INSTALL_NEW); |
| 2795 EXPECT_EQ(good_crx, good->id()); |
| 2796 UpdateExtension(good_crx, path, FAILED_SILENTLY); |
| 2797 EXPECT_EQ(1u, service_->extensions()->size()); |
| 2798 |
| 2799 base::ListValue whitelist; |
| 2800 PrefService* prefs = service_->extension_prefs()->pref_service(); |
| 2801 whitelist.Append(base::Value::CreateStringValue(good_crx)); |
| 2802 prefs->Set(prefs::kExtensionInstallAllowList, whitelist); |
| 2803 |
| 2804 std::vector<std::string> blacklist; |
| 2805 blacklist.push_back(good_crx); |
| 2806 service_->UpdateExtensionBlacklist(blacklist); |
| 2807 // Make sure pref is updated |
| 2808 |
| 2809 // Now, the good_crx is blacklisted but whitelist negates it. |
| 2810 ValidateBooleanPref(good_crx, "blacklist", true); |
| 2811 EXPECT_EQ(1u, service_->extensions()->size()); |
| 2812 |
| 2813 whitelist.Clear(); |
| 2814 prefs->Set(prefs::kExtensionInstallAllowList, whitelist); |
| 2815 |
| 2816 // Now, the good_crx is blacklisted for good. |
| 2817 ValidateBooleanPref(good_crx, "blacklist", true); |
| 2818 EXPECT_EQ(0u, service_->extensions()->size()); |
| 2819 } |
| 2820 |
| 2821 // Allow Google-blacklisted extension if policy explicitly allows it (blacklist |
| 2822 // then set policy). |
| 2823 TEST_F(ExtensionServiceTest, WhitelistGoogleBlacklistedExtension) { |
| 2824 InitializeEmptyExtensionService(); |
| 2825 |
| 2826 std::vector<std::string> blacklist; |
| 2827 blacklist.push_back(good_crx); |
| 2828 service_->UpdateExtensionBlacklist(blacklist); |
| 2829 |
| 2830 FilePath path = data_dir_.AppendASCII("good.crx"); |
| 2831 InstallCRX(path, INSTALL_FAILED); |
| 2832 |
| 2833 base::ListValue whitelist; |
| 2834 whitelist.Append(base::Value::CreateStringValue(good_crx)); |
| 2835 service_->extension_prefs()->pref_service()->Set( |
| 2836 prefs::kExtensionInstallAllowList, whitelist); |
| 2837 |
| 2838 InstallCRX(path, INSTALL_NEW); |
| 2839 } |
| 2840 |
| 2841 // Allow Google-blacklisted extension if policy requires it (blacklist then set |
| 2842 // policy). |
| 2843 TEST_F(ExtensionServiceTest, ForcelistGoogleBlacklistedExtension) { |
| 2844 InitializeEmptyExtensionService(); |
| 2845 |
| 2846 std::vector<std::string> blacklist; |
| 2847 blacklist.push_back(good_crx); |
| 2848 service_->UpdateExtensionBlacklist(blacklist); |
| 2849 |
| 2850 FilePath path = data_dir_.AppendASCII("good.crx"); |
| 2851 InstallCRX(path, INSTALL_FAILED); |
| 2852 |
| 2853 base::ListValue forcelist; |
| 2854 forcelist.Append(base::Value::CreateStringValue(good_crx)); |
| 2855 service_->extension_prefs()->pref_service()->Set( |
| 2856 prefs::kExtensionInstallAllowList, forcelist); |
| 2857 |
| 2858 InstallCRX(path, INSTALL_NEW); |
| 2859 } |
| 2860 |
| 2861 // Allow Google-blacklisted extension if policy explicitly allows it (set policy |
| 2862 // then blacklist). |
| 2863 TEST_F(ExtensionServiceTest, GoogleBlacklistWhitelistedExtension) { |
| 2864 InitializeEmptyExtensionService(); |
| 2865 |
| 2866 base::ListValue whitelist; |
| 2867 whitelist.Append(base::Value::CreateStringValue(good_crx)); |
| 2868 service_->extension_prefs()->pref_service()->Set( |
| 2869 prefs::kExtensionInstallAllowList, whitelist); |
| 2870 |
| 2871 std::vector<std::string> blacklist; |
| 2872 blacklist.push_back(good_crx); |
| 2873 service_->UpdateExtensionBlacklist(blacklist); |
| 2874 |
| 2875 InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); |
| 2876 } |
| 2877 |
| 2878 // Allow Google-blacklisted extension if policy requires it (set policy then |
| 2879 // blacklist). |
| 2880 TEST_F(ExtensionServiceTest, GoogleBlacklistForcelistedExtension) { |
| 2881 InitializeEmptyExtensionService(); |
| 2882 |
| 2883 base::ListValue forcelist; |
| 2884 forcelist.Append(base::Value::CreateStringValue(good_crx)); |
| 2885 service_->extension_prefs()->pref_service()->Set( |
| 2886 prefs::kExtensionInstallAllowList, forcelist); |
| 2887 |
| 2888 std::vector<std::string> blacklist; |
| 2889 blacklist.push_back(good_crx); |
| 2890 service_->UpdateExtensionBlacklist(blacklist); |
| 2891 |
| 2892 InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); |
| 2893 } |
| 2894 |
| 2789 // Test loading extensions from the profile directory, except | 2895 // Test loading extensions from the profile directory, except |
| 2790 // blacklisted ones. | 2896 // blacklisted ones. |
| 2791 TEST_F(ExtensionServiceTest, WillNotLoadBlacklistedExtensionsFromDirectory) { | 2897 TEST_F(ExtensionServiceTest, WillNotLoadBlacklistedExtensionsFromDirectory) { |
| 2792 // Initialize the test dir with a good Preferences/extensions. | 2898 // Initialize the test dir with a good Preferences/extensions. |
| 2793 FilePath source_install_dir = data_dir_ | 2899 FilePath source_install_dir = data_dir_ |
| 2794 .AppendASCII("good") | 2900 .AppendASCII("good") |
| 2795 .AppendASCII("Extensions"); | 2901 .AppendASCII("Extensions"); |
| 2796 FilePath pref_path = source_install_dir | 2902 FilePath pref_path = source_install_dir |
| 2797 .DirName() | 2903 .DirName() |
| 2798 .AppendASCII("Preferences"); | 2904 .AppendASCII("Preferences"); |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3060 InstallCRX(data_dir_.AppendASCII("page_action.crx"), INSTALL_NEW); | 3166 InstallCRX(data_dir_.AppendASCII("page_action.crx"), INSTALL_NEW); |
| 3061 EXPECT_EQ(2u, service_->extensions()->size()); | 3167 EXPECT_EQ(2u, service_->extensions()->size()); |
| 3062 EXPECT_EQ(0u, service_->disabled_extensions()->size()); | 3168 EXPECT_EQ(0u, service_->disabled_extensions()->size()); |
| 3063 | 3169 |
| 3064 management_policy_->UnregisterAllProviders(); | 3170 management_policy_->UnregisterAllProviders(); |
| 3065 extensions::TestManagementPolicyProvider provider( | 3171 extensions::TestManagementPolicyProvider provider( |
| 3066 extensions::TestManagementPolicyProvider::PROHIBIT_LOAD); | 3172 extensions::TestManagementPolicyProvider::PROHIBIT_LOAD); |
| 3067 management_policy_->RegisterProvider(&provider); | 3173 management_policy_->RegisterProvider(&provider); |
| 3068 | 3174 |
| 3069 // Run the policy check. | 3175 // Run the policy check. |
| 3070 service_->CheckAdminBlacklist(); | 3176 service_->CheckManagementPolicy(); |
| 3071 EXPECT_EQ(0u, service_->extensions()->size()); | 3177 EXPECT_EQ(0u, service_->extensions()->size()); |
| 3072 EXPECT_EQ(0u, service_->disabled_extensions()->size()); | 3178 EXPECT_EQ(0u, service_->disabled_extensions()->size()); |
| 3073 } | 3179 } |
| 3074 | 3180 |
| 3075 // Tests that previously disabled extensions that are now required to be | 3181 // Tests that previously disabled extensions that are now required to be |
| 3076 // enabled are re-enabled on reinstall. | 3182 // enabled are re-enabled on reinstall. |
| 3077 TEST_F(ExtensionServiceTest, ManagementPolicyRequiresEnable) { | 3183 TEST_F(ExtensionServiceTest, ManagementPolicyRequiresEnable) { |
| 3078 InitializeEmptyExtensionService(); | 3184 InitializeEmptyExtensionService(); |
| 3079 | 3185 |
| 3080 // Install, then disable, an extension. | 3186 // Install, then disable, an extension. |
| (...skipping 2165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5246 // This should NOT trigger an alert. | 5352 // This should NOT trigger an alert. |
| 5247 provider->UpdateOrAddExtension(hosted_app, "1.0.0.0", | 5353 provider->UpdateOrAddExtension(hosted_app, "1.0.0.0", |
| 5248 data_dir_.AppendASCII("hosted_app.crx")); | 5354 data_dir_.AppendASCII("hosted_app.crx")); |
| 5249 | 5355 |
| 5250 service_->CheckForExternalUpdates(); | 5356 service_->CheckForExternalUpdates(); |
| 5251 loop_.RunAllPending(); | 5357 loop_.RunAllPending(); |
| 5252 | 5358 |
| 5253 ASSERT_TRUE(service_->PopulateExtensionErrorUI(extension_error_ui.get())); | 5359 ASSERT_TRUE(service_->PopulateExtensionErrorUI(extension_error_ui.get())); |
| 5254 ASSERT_EQ(1u, extension_error_ui->get_external_extension_ids()->size()); | 5360 ASSERT_EQ(1u, extension_error_ui->get_external_extension_ids()->size()); |
| 5255 } | 5361 } |
| OLD | NEW |