Add StandardManagementPolicyProvider implementation based on ExtensionManagement Service.
Make ExtensionManagement listening to preference changes.
Move all functionality of admin_policy into StandardManagementPolicyProvider, the latter was essentially a wrapper over admin_policy before.
Merge admin_policy_unittest into extension_management_unittests with minor changes.
BUG=177351
TEST=ExtensionServiceTest,ExtensionManagementTest,ExtensionAdminPolicyTest
Review URL: https://codereview.chromium.org/500043003
Cr-Commit-Position: refs/heads/master@{#293514}
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index efa301b2..0fc21b5 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -72,6 +72,7 @@
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/base/scoped_browser_locale.h"
+#include "chrome/test/base/testing_pref_service_syncable.h"
#include "chrome/test/base/testing_profile.h"
#include "components/crx_file/id_util.h"
#include "components/pref_registry/pref_registry_syncable.h"
@@ -1087,6 +1088,13 @@
profile(), ExtensionPrefs::Get(browser_context()), service()));
}
+ void InitializeEmptyExtensionServiceWithTestingPrefs() {
+ ExtensionServiceTestBase::ExtensionServiceInitParams params =
+ CreateDefaultInitParams();
+ params.pref_file = base::FilePath();
+ InitializeExtensionService(params);
+ }
+
extensions::ManagementPolicy* GetManagementPolicy() {
return ExtensionSystem::Get(browser_context())->management_policy();
}
@@ -3274,7 +3282,7 @@
extensions::TestBlacklist test_blacklist;
// A profile with no extensions installed.
- InitializeEmptyExtensionService();
+ InitializeEmptyExtensionServiceWithTestingPrefs();
test_blacklist.Attach(service()->blacklist_);
base::FilePath path = data_dir().AppendASCII("good.crx");
@@ -3285,9 +3293,9 @@
EXPECT_EQ(1u, registry()->enabled_extensions().size());
base::ListValue whitelist;
- PrefService* prefs = ExtensionPrefs::Get(profile())->pref_service();
whitelist.Append(new base::StringValue(good_crx));
- prefs->Set(extensions::pref_names::kInstallAllowList, whitelist);
+ profile_->GetTestingPrefService()->SetManagedPref(
+ extensions::pref_names::kInstallAllowList, whitelist.DeepCopy());
test_blacklist.SetBlacklistState(
good_crx, extensions::BLACKLISTED_MALWARE, true);
@@ -3575,7 +3583,7 @@
// Will not install extension blacklisted by policy.
TEST_F(ExtensionServiceTest, BlacklistedByPolicyWillNotInstall) {
- InitializeEmptyExtensionService();
+ InitializeEmptyExtensionServiceWithTestingPrefs();
// Blacklist everything.
{
@@ -3592,10 +3600,10 @@
// Now whitelist this particular extension.
{
- ListPrefUpdate update(profile()->GetPrefs(),
- extensions::pref_names::kInstallAllowList);
- base::ListValue* whitelist = update.Get();
- whitelist->Append(new base::StringValue(good_crx));
+ base::ListValue whitelist;
+ whitelist.Append(new base::StringValue(good_crx));
+ profile_->GetTestingPrefService()->SetManagedPref(
+ extensions::pref_names::kInstallAllowList, whitelist.DeepCopy());
}
// Ensure we can now install good_crx.
@@ -3674,7 +3682,7 @@
// Tests that policy-installed extensions are not blacklisted by policy.
TEST_F(ExtensionServiceTest, PolicyInstalledExtensionsWhitelisted) {
- InitializeEmptyExtensionService();
+ InitializeEmptyExtensionServiceWithTestingPrefs();
{
// Blacklist everything.
@@ -3682,12 +3690,15 @@
extensions::pref_names::kInstallDenyList);
base::ListValue* blacklist = blacklist_update.Get();
blacklist->AppendString("*");
+ }
+ {
// Mark good.crx for force-installation.
- DictionaryPrefUpdate forcelist_update(
- profile()->GetPrefs(), extensions::pref_names::kInstallForceList);
+ base::DictionaryValue forcelist;
extensions::ExternalPolicyLoader::AddExtension(
- forcelist_update.Get(), good_crx, "http://example.com/update_url");
+ &forcelist, good_crx, "http://example.com/update_url");
+ profile_->GetTestingPrefService()->SetManagedPref(
+ extensions::pref_names::kInstallForceList, forcelist.DeepCopy());
}
// Have policy force-install an extension.