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

Side by Side Diff: chrome/browser/extensions/extension_service_unittest.cc

Issue 10854009: Extension white and force lists (set by policy) should have priority over auto-updated Google black… (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebased and merged Created 8 years, 4 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
OLDNEW
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_service.cc ('k') | chrome/browser/extensions/test_extension_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698