Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / extension_management_unittest.cc
index 773144c..b5a9690 100644 (file)
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include <algorithm>
+#include <string>
 #include <vector>
 
 #include "base/json/json_parser.h"
 #include "base/prefs/testing_pref_service.h"
 #include "base/values.h"
 #include "chrome/browser/extensions/extension_management.h"
+#include "chrome/browser/extensions/extension_management_internal.h"
 #include "chrome/browser/extensions/extension_management_test_util.h"
 #include "chrome/browser/extensions/external_policy_loader.h"
+#include "chrome/browser/extensions/standard_management_policy_provider.h"
 #include "extensions/browser/pref_names.h"
 #include "extensions/common/manifest.h"
 #include "extensions/common/manifest_constants.h"
+#include "extensions/common/permissions/api_permission.h"
+#include "extensions/common/permissions/permissions_info.h"
 #include "extensions/common/url_pattern.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
@@ -28,29 +33,41 @@ const char kTargetExtension[] = "abcdefghijklmnopabcdefghijklmnop";
 const char kTargetExtension2[] = "bcdefghijklmnopabcdefghijklmnopa";
 const char kTargetExtension3[] = "cdefghijklmnopabcdefghijklmnopab";
 const char kTargetExtension4[] = "defghijklmnopabcdefghijklmnopabc";
-const char kOtherExtension[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
 const char kExampleUpdateUrl[] = "http://example.com/update_url";
 
+const char kNonExistingExtension[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+const char kNonExistingUpdateUrl[] = "http://example.net/update.xml";
+
 const char kExampleDictPreference[] =
     "{"
     "  \"abcdefghijklmnopabcdefghijklmnop\": {"  // kTargetExtension
     "    \"installation_mode\": \"allowed\","
+    "    \"blocked_permissions\": [\"fileSystem\", \"bookmarks\"],"
     "  },"
     "  \"bcdefghijklmnopabcdefghijklmnopa\": {"  // kTargetExtension2
     "    \"installation_mode\": \"force_installed\","
     "    \"update_url\": \"http://example.com/update_url\","
+    "    \"allowed_permissions\": [\"fileSystem\", \"bookmarks\"],"
     "  },"
     "  \"cdefghijklmnopabcdefghijklmnopab\": {"  // kTargetExtension3
     "    \"installation_mode\": \"normal_installed\","
     "    \"update_url\": \"http://example.com/update_url\","
+    "    \"allowed_permissions\": [\"fileSystem\", \"downloads\"],"
+    "    \"blocked_permissions\": [\"fileSystem\", \"history\"],"
     "  },"
     "  \"defghijklmnopabcdefghijklmnopabc\": {"  // kTargetExtension4
     "    \"installation_mode\": \"blocked\","
     "  },"
+    "  \"update_url:http://example.com/update_url\": {"  // kExampleUpdateUrl
+    "    \"installation_mode\": \"allowed\","
+    "    \"allowed_permissions\": [\"downloads\"],"
+    "    \"blocked_permissions\": [\"bookmarks\"],"
+    "  },"
     "  \"*\": {"
     "    \"installation_mode\": \"blocked\","
     "    \"install_sources\": [\"*://foo.com/*\"],"
     "    \"allowed_types\": [\"theme\", \"user_script\"],"
+    "    \"blocked_permissions\": [\"fileSystem\", \"downloads\"],"
     "  },"
     "}";
 
@@ -61,12 +78,10 @@ class ExtensionManagementServiceTest : public testing::Test {
   typedef ExtensionManagementPrefUpdater<TestingPrefServiceSimple> PrefUpdater;
 
   ExtensionManagementServiceTest() {}
-  virtual ~ExtensionManagementServiceTest() {}
+  ~ExtensionManagementServiceTest() override {}
 
   // testing::Test:
-  virtual void SetUp() OVERRIDE {
-    InitPrefService();
-  }
+  void SetUp() override { InitPrefService(); }
 
   void InitPrefService() {
     extension_management_.reset();
@@ -97,6 +112,40 @@ class ExtensionManagementServiceTest : public testing::Test {
       pref_service_->RemoveUserPref(path);
   }
 
+  const internal::GlobalSettings* ReadGlobalSettings() {
+    return extension_management_->global_settings_.get();
+  }
+
+  ExtensionManagement::InstallationMode GetInstallationModeById(
+      const std::string& id) {
+    return GetInstallationMode(id, kNonExistingUpdateUrl);
+  }
+
+  ExtensionManagement::InstallationMode GetInstallationModeByUpdateUrl(
+      const std::string& update_url) {
+    return GetInstallationMode(kNonExistingExtension, update_url);
+  }
+
+  void CheckAutomaticallyInstalledUpdateUrl(const std::string& id,
+                                            const std::string& update_url) {
+    auto iter = extension_management_->settings_by_id_.find(id);
+    ASSERT_TRUE(iter != extension_management_->settings_by_id_.end());
+    ASSERT_TRUE((iter->second->installation_mode ==
+                 ExtensionManagement::INSTALLATION_FORCED) ||
+                (iter->second->installation_mode ==
+                 ExtensionManagement::INSTALLATION_RECOMMENDED));
+    EXPECT_EQ(iter->second->update_url, update_url);
+  }
+
+  APIPermissionSet GetBlockedAPIPermissionsById(const std::string& id) {
+    return GetBlockedAPIPermissions(id, kNonExistingUpdateUrl);
+  }
+
+  APIPermissionSet GetBlockedAPIPermissionsByUpdateUrl(
+      const std::string& update_url) {
+    return GetBlockedAPIPermissions(kNonExistingExtension, update_url);
+  }
+
   void SetExampleDictPref() {
     std::string error_msg;
     scoped_ptr<base::Value> parsed(base::JSONReader::ReadAndReturnError(
@@ -109,15 +158,53 @@ class ExtensionManagementServiceTest : public testing::Test {
     SetPref(true, pref_names::kExtensionManagement, parsed.release());
   }
 
+  ExtensionManagement::InstallationMode GetInstallationMode(
+      const std::string& id,
+      const std::string& update_url) {
+    scoped_refptr<const Extension> extension =
+        CreateExtensionWithIdAndUpdateUrl(Manifest::UNPACKED, id, update_url);
+    return extension_management_->GetInstallationMode(extension.get());
+  }
+
+  APIPermissionSet GetBlockedAPIPermissions(const std::string& id,
+                                            const std::string& update_url) {
+    scoped_refptr<const Extension> extension =
+        CreateExtensionWithIdAndUpdateUrl(Manifest::UNPACKED, id, update_url);
+    return extension_management_->GetBlockedAPIPermissions(extension.get());
+  }
+
  protected:
   scoped_ptr<TestingPrefServiceSimple> pref_service_;
   scoped_ptr<ExtensionManagement> extension_management_;
+
+ private:
+  // Create an extension with specified |location|, |id| and |update_url|.
+  scoped_refptr<const Extension> CreateExtensionWithIdAndUpdateUrl(
+      Manifest::Location location,
+      const std::string& id,
+      const std::string& update_url) {
+    base::DictionaryValue manifest_dict;
+    manifest_dict.SetString(manifest_keys::kName, "test");
+    manifest_dict.SetString(manifest_keys::kVersion, "0.1");
+    manifest_dict.SetString(manifest_keys::kUpdateURL, update_url);
+    std::string error;
+    scoped_refptr<const Extension> extension =
+        Extension::Create(base::FilePath(), location, manifest_dict,
+                          Extension::NO_FLAGS, id, &error);
+    CHECK(extension.get()) << error;
+    return extension;
+  }
 };
 
 class ExtensionAdminPolicyTest : public ExtensionManagementServiceTest {
  public:
   ExtensionAdminPolicyTest() {}
-  virtual ~ExtensionAdminPolicyTest() {}
+  ~ExtensionAdminPolicyTest() override {}
+
+  void SetUpPolicyProvider() {
+    provider_.reset(
+        new StandardManagementPolicyProvider(extension_management_.get()));
+  }
 
   void CreateExtension(Manifest::Location location) {
     base::DictionaryValue values;
@@ -154,12 +241,13 @@ class ExtensionAdminPolicyTest : public ExtensionManagementServiceTest {
   bool MustRemainEnabled(const Extension* extension, base::string16* error);
 
  protected:
+  scoped_ptr<StandardManagementPolicyProvider> provider_;
   scoped_refptr<Extension> extension_;
 };
 
 bool ExtensionAdminPolicyTest::BlacklistedByDefault(
     const base::ListValue* blacklist) {
-  InitPrefService();
+  SetUpPolicyProvider();
   if (blacklist)
     SetPref(true, pref_names::kInstallDenyList, blacklist->DeepCopy());
   return extension_management_->BlacklistedByDefault();
@@ -172,7 +260,7 @@ bool ExtensionAdminPolicyTest::UserMayLoad(
     const base::ListValue* allowed_types,
     const Extension* extension,
     base::string16* error) {
-  InitPrefService();
+  SetUpPolicyProvider();
   if (blacklist)
     SetPref(true, pref_names::kInstallDenyList, blacklist->DeepCopy());
   if (whitelist)
@@ -181,21 +269,19 @@ bool ExtensionAdminPolicyTest::UserMayLoad(
     SetPref(true, pref_names::kInstallForceList, forcelist->DeepCopy());
   if (allowed_types)
     SetPref(true, pref_names::kAllowedTypes, allowed_types->DeepCopy());
-  return extension_management_->GetProvider()->UserMayLoad(extension, error);
+  return provider_->UserMayLoad(extension, error);
 }
 
 bool ExtensionAdminPolicyTest::UserMayModifySettings(const Extension* extension,
                                                      base::string16* error) {
-  InitPrefService();
-  return extension_management_->GetProvider()->UserMayModifySettings(extension,
-                                                                     error);
+  SetUpPolicyProvider();
+  return provider_->UserMayModifySettings(extension, error);
 }
 
 bool ExtensionAdminPolicyTest::MustRemainEnabled(const Extension* extension,
                                                  base::string16* error) {
-  InitPrefService();
-  return extension_management_->GetProvider()->MustRemainEnabled(extension,
-                                                                 error);
+  SetUpPolicyProvider();
+  return provider_->MustRemainEnabled(extension, error);
 }
 
 // Verify that preference controlled by legacy ExtensionInstallSources policy is
@@ -206,10 +292,8 @@ TEST_F(ExtensionManagementServiceTest, LegacyInstallSources) {
   allowed_sites_pref.AppendString("https://corp.mycompany.com/*");
   SetPref(
       true, pref_names::kAllowedInstallSites, allowed_sites_pref.DeepCopy());
-  const URLPatternSet& allowed_sites =
-      extension_management_->ReadGlobalSettings().install_sources;
-  ASSERT_TRUE(extension_management_->ReadGlobalSettings()
-                  .has_restricted_install_sources);
+  const URLPatternSet& allowed_sites = ReadGlobalSettings()->install_sources;
+  ASSERT_TRUE(ReadGlobalSettings()->has_restricted_install_sources);
   EXPECT_FALSE(allowed_sites.is_empty());
   EXPECT_TRUE(allowed_sites.MatchesURL(GURL("https://www.example.com/foo")));
   EXPECT_FALSE(allowed_sites.MatchesURL(GURL("https://www.example.com/bar")));
@@ -228,10 +312,9 @@ TEST_F(ExtensionManagementServiceTest, LegacyAllowedTypes) {
 
   SetPref(true, pref_names::kAllowedTypes, allowed_types_pref.DeepCopy());
   const std::vector<Manifest::Type>& allowed_types =
-      extension_management_->ReadGlobalSettings().allowed_types;
-  ASSERT_TRUE(
-      extension_management_->ReadGlobalSettings().has_restricted_allowed_types);
-  EXPECT_TRUE(allowed_types.size() == 2);
+      ReadGlobalSettings()->allowed_types;
+  ASSERT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types);
+  EXPECT_EQ(allowed_types.size(), 2u);
   EXPECT_FALSE(std::find(allowed_types.begin(),
                          allowed_types.end(),
                          Manifest::TYPE_EXTENSION) != allowed_types.end());
@@ -250,9 +333,9 @@ TEST_F(ExtensionManagementServiceTest, LegacyInstallBlacklist) {
   denied_list_pref.AppendString(kTargetExtension);
 
   SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy());
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension),
             ExtensionManagement::INSTALLATION_BLOCKED);
-  EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kNonExistingExtension),
             ExtensionManagement::INSTALLATION_ALLOWED);
 }
 
@@ -266,15 +349,15 @@ TEST_F(ExtensionManagementServiceTest, LegacyInstallWhitelist) {
 
   SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy());
   SetPref(true, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy());
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension),
             ExtensionManagement::INSTALLATION_ALLOWED);
-  EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kNonExistingExtension),
             ExtensionManagement::INSTALLATION_BLOCKED);
 
   // Verify that install whitelist preference set by user is ignored.
   RemovePref(true, pref_names::kInstallAllowList);
   SetPref(false, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy());
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension),
             ExtensionManagement::INSTALLATION_BLOCKED);
 }
 
@@ -286,17 +369,16 @@ TEST_F(ExtensionManagementServiceTest, LegacyInstallForcelist) {
       &forced_list_pref, kTargetExtension, kExampleUpdateUrl);
 
   SetPref(true, pref_names::kInstallForceList, forced_list_pref.DeepCopy());
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension),
             ExtensionManagement::INSTALLATION_FORCED);
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension).update_url,
-            kExampleUpdateUrl);
-  EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
+  CheckAutomaticallyInstalledUpdateUrl(kTargetExtension, kExampleUpdateUrl);
+  EXPECT_EQ(GetInstallationModeById(kNonExistingExtension),
             ExtensionManagement::INSTALLATION_ALLOWED);
 
   // Verify that install forcelist preference set by user is ignored.
   RemovePref(true, pref_names::kInstallForceList);
   SetPref(false, pref_names::kInstallForceList, forced_list_pref.DeepCopy());
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension),
             ExtensionManagement::INSTALLATION_ALLOWED);
 }
 
@@ -306,34 +388,29 @@ TEST_F(ExtensionManagementServiceTest, PreferenceParsing) {
 
   // Verifies the installation mode settings.
   EXPECT_TRUE(extension_management_->BlacklistedByDefault());
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension),
             ExtensionManagement::INSTALLATION_ALLOWED);
-  EXPECT_EQ(
-      extension_management_->ReadById(kTargetExtension2).installation_mode,
-      ExtensionManagement::INSTALLATION_FORCED);
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension2).update_url,
-            kExampleUpdateUrl);
-  EXPECT_EQ(
-      extension_management_->ReadById(kTargetExtension3).installation_mode,
-      ExtensionManagement::INSTALLATION_RECOMMENDED);
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension3).update_url,
-            kExampleUpdateUrl);
-  EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension2),
+            ExtensionManagement::INSTALLATION_FORCED);
+  CheckAutomaticallyInstalledUpdateUrl(kTargetExtension2, kExampleUpdateUrl);
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension3),
+            ExtensionManagement::INSTALLATION_RECOMMENDED);
+  CheckAutomaticallyInstalledUpdateUrl(kTargetExtension3, kExampleUpdateUrl);
+  EXPECT_EQ(GetInstallationModeById(kNonExistingExtension),
             ExtensionManagement::INSTALLATION_BLOCKED);
+  EXPECT_EQ(GetInstallationModeByUpdateUrl(kExampleUpdateUrl),
+            ExtensionManagement::INSTALLATION_ALLOWED);
 
   // Verifies global settings.
-  EXPECT_TRUE(extension_management_->ReadGlobalSettings()
-                  .has_restricted_install_sources);
-  const URLPatternSet& allowed_sites =
-      extension_management_->ReadGlobalSettings().install_sources;
+  EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources);
+  const URLPatternSet& allowed_sites = ReadGlobalSettings()->install_sources;
   EXPECT_EQ(allowed_sites.size(), 1u);
   EXPECT_TRUE(allowed_sites.MatchesURL(GURL("http://foo.com/entry")));
   EXPECT_FALSE(allowed_sites.MatchesURL(GURL("http://bar.com/entry")));
 
-  EXPECT_TRUE(
-      extension_management_->ReadGlobalSettings().has_restricted_allowed_types);
+  EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types);
   const std::vector<Manifest::Type>& allowed_types =
-      extension_management_->ReadGlobalSettings().allowed_types;
+      ReadGlobalSettings()->allowed_types;
   EXPECT_EQ(allowed_types.size(), 2u);
   EXPECT_TRUE(std::find(allowed_types.begin(),
                         allowed_types.end(),
@@ -341,6 +418,83 @@ TEST_F(ExtensionManagementServiceTest, PreferenceParsing) {
   EXPECT_TRUE(std::find(allowed_types.begin(),
                         allowed_types.end(),
                         Manifest::TYPE_USER_SCRIPT) != allowed_types.end());
+
+  // Verifies blocked permission list settings.
+  APIPermissionSet api_permission_set;
+  api_permission_set.clear();
+  api_permission_set.insert(APIPermission::kFileSystem);
+  api_permission_set.insert(APIPermission::kDownloads);
+  EXPECT_EQ(api_permission_set,
+            GetBlockedAPIPermissionsById(kNonExistingExtension));
+
+  api_permission_set.clear();
+  api_permission_set.insert(APIPermission::kFileSystem);
+  api_permission_set.insert(APIPermission::kDownloads);
+  api_permission_set.insert(APIPermission::kBookmark);
+  EXPECT_EQ(api_permission_set, GetBlockedAPIPermissionsById(kTargetExtension));
+
+  api_permission_set.clear();
+  api_permission_set.insert(APIPermission::kDownloads);
+  EXPECT_EQ(api_permission_set,
+            GetBlockedAPIPermissionsById(kTargetExtension2));
+
+  api_permission_set.clear();
+  api_permission_set.insert(APIPermission::kFileSystem);
+  api_permission_set.insert(APIPermission::kHistory);
+  EXPECT_EQ(api_permission_set,
+            GetBlockedAPIPermissionsById(kTargetExtension3));
+
+  api_permission_set.clear();
+  api_permission_set.insert(APIPermission::kFileSystem);
+  api_permission_set.insert(APIPermission::kBookmark);
+  EXPECT_EQ(api_permission_set,
+            GetBlockedAPIPermissionsByUpdateUrl(kExampleUpdateUrl));
+}
+
+// Tests the handling of installation mode in case it's specified in both
+// per-extension and per-update-url settings.
+TEST_F(ExtensionManagementServiceTest, InstallationModeConflictHandling) {
+  SetExampleDictPref();
+
+  // Per-extension installation mode settings should always override
+  // per-update-url settings.
+  EXPECT_EQ(GetInstallationMode(kTargetExtension, kExampleUpdateUrl),
+            ExtensionManagement::INSTALLATION_ALLOWED);
+  EXPECT_EQ(GetInstallationMode(kTargetExtension2, kExampleUpdateUrl),
+            ExtensionManagement::INSTALLATION_FORCED);
+  EXPECT_EQ(GetInstallationMode(kTargetExtension3, kExampleUpdateUrl),
+            ExtensionManagement::INSTALLATION_RECOMMENDED);
+}
+
+// Tests the handling of blocked permissions in case it's specified in both
+// per-extension and per-update-url settings.
+TEST_F(ExtensionManagementServiceTest, BlockedPermissionsConflictHandling) {
+  SetExampleDictPref();
+
+  // Both settings should be enforced.
+  APIPermissionSet blocked_permissions_for_update_url;
+  blocked_permissions_for_update_url.insert(APIPermission::kFileSystem);
+  blocked_permissions_for_update_url.insert(APIPermission::kBookmark);
+
+  APIPermissionSet api_permission_set;
+
+  api_permission_set = blocked_permissions_for_update_url;
+  api_permission_set.insert(APIPermission::kFileSystem);
+  api_permission_set.insert(APIPermission::kDownloads);
+  api_permission_set.insert(APIPermission::kBookmark);
+  EXPECT_EQ(api_permission_set,
+            GetBlockedAPIPermissions(kTargetExtension, kExampleUpdateUrl));
+
+  api_permission_set = blocked_permissions_for_update_url;
+  api_permission_set.insert(APIPermission::kDownloads);
+  EXPECT_EQ(api_permission_set,
+            GetBlockedAPIPermissions(kTargetExtension2, kExampleUpdateUrl));
+
+  api_permission_set = blocked_permissions_for_update_url;
+  api_permission_set.insert(APIPermission::kFileSystem);
+  api_permission_set.insert(APIPermission::kHistory);
+  EXPECT_EQ(api_permission_set,
+            GetBlockedAPIPermissions(kTargetExtension3, kExampleUpdateUrl));
 }
 
 // Tests functionality of new preference as to deprecate legacy
@@ -351,11 +505,9 @@ TEST_F(ExtensionManagementServiceTest, NewInstallSources) {
   allowed_sites_pref.AppendString("https://www.example.com/foo");
   SetPref(
       true, pref_names::kAllowedInstallSites, allowed_sites_pref.DeepCopy());
-  EXPECT_TRUE(extension_management_->ReadGlobalSettings()
-                  .has_restricted_install_sources);
-  EXPECT_TRUE(
-      extension_management_->ReadGlobalSettings()
-          .install_sources.MatchesURL(GURL("https://www.example.com/foo")));
+  EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources);
+  EXPECT_TRUE(ReadGlobalSettings()->install_sources.MatchesURL(
+      GURL("https://www.example.com/foo")));
 
   // Set the new dictionary preference.
   {
@@ -363,22 +515,18 @@ TEST_F(ExtensionManagementServiceTest, NewInstallSources) {
     updater.ClearInstallSources();
   }
   // Verifies that the new one overrides the legacy ones.
-  EXPECT_TRUE(extension_management_->ReadGlobalSettings()
-                  .has_restricted_install_sources);
-  EXPECT_FALSE(
-      extension_management_->ReadGlobalSettings()
-          .install_sources.MatchesURL(GURL("https://www.example.com/foo")));
+  EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources);
+  EXPECT_FALSE(ReadGlobalSettings()->install_sources.MatchesURL(
+      GURL("https://www.example.com/foo")));
 
   // Updates the new dictionary preference.
   {
     PrefUpdater updater(pref_service_.get());
     updater.AddInstallSource("https://corp.mycompany.com/*");
   }
-  EXPECT_TRUE(extension_management_->ReadGlobalSettings()
-                  .has_restricted_install_sources);
-  EXPECT_TRUE(extension_management_->ReadGlobalSettings()
-                  .install_sources.MatchesURL(
-                      GURL("https://corp.mycompany.com/entry")));
+  EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources);
+  EXPECT_TRUE(ReadGlobalSettings()->install_sources.MatchesURL(
+      GURL("https://corp.mycompany.com/entry")));
 }
 
 // Tests functionality of new preference as to deprecate legacy
@@ -388,12 +536,9 @@ TEST_F(ExtensionManagementServiceTest, NewAllowedTypes) {
   base::ListValue allowed_types_pref;
   allowed_types_pref.AppendInteger(Manifest::TYPE_USER_SCRIPT);
   SetPref(true, pref_names::kAllowedTypes, allowed_types_pref.DeepCopy());
-  EXPECT_TRUE(
-      extension_management_->ReadGlobalSettings().has_restricted_allowed_types);
-  EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types.size(),
-            1u);
-  EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types[0],
-            Manifest::TYPE_USER_SCRIPT);
+  EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types);
+  EXPECT_EQ(ReadGlobalSettings()->allowed_types.size(), 1u);
+  EXPECT_EQ(ReadGlobalSettings()->allowed_types[0], Manifest::TYPE_USER_SCRIPT);
 
   // Set the new dictionary preference.
   {
@@ -401,22 +546,17 @@ TEST_F(ExtensionManagementServiceTest, NewAllowedTypes) {
     updater.ClearAllowedTypes();
   }
   // Verifies that the new one overrides the legacy ones.
-  EXPECT_TRUE(
-      extension_management_->ReadGlobalSettings().has_restricted_allowed_types);
-  EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types.size(),
-            0u);
+  EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types);
+  EXPECT_EQ(ReadGlobalSettings()->allowed_types.size(), 0u);
 
   // Updates the new dictionary preference.
   {
     PrefUpdater updater(pref_service_.get());
     updater.AddAllowedType("theme");
   }
-  EXPECT_TRUE(
-      extension_management_->ReadGlobalSettings().has_restricted_allowed_types);
-  EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types.size(),
-            1u);
-  EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types[0],
-            Manifest::TYPE_THEME);
+  EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types);
+  EXPECT_EQ(ReadGlobalSettings()->allowed_types.size(), 1u);
+  EXPECT_EQ(ReadGlobalSettings()->allowed_types[0], Manifest::TYPE_THEME);
 }
 
 // Tests functionality of new preference as to deprecate legacy
@@ -428,12 +568,11 @@ TEST_F(ExtensionManagementServiceTest, NewInstallBlacklist) {
     updater.SetBlacklistedByDefault(false);  // Allowed by default.
     updater.SetIndividualExtensionInstallationAllowed(kTargetExtension, false);
     updater.ClearPerExtensionSettings(kTargetExtension2);
-    updater.ClearPerExtensionSettings(kOtherExtension);
   }
   EXPECT_FALSE(extension_management_->BlacklistedByDefault());
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension),
             ExtensionManagement::INSTALLATION_BLOCKED);
-  EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kNonExistingExtension),
             ExtensionManagement::INSTALLATION_ALLOWED);
 
   // Set legacy preference.
@@ -448,12 +587,11 @@ TEST_F(ExtensionManagementServiceTest, NewInstallBlacklist) {
 
   // Verifies that the new one have higher priority over the legacy ones.
   EXPECT_FALSE(extension_management_->BlacklistedByDefault());
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension),
             ExtensionManagement::INSTALLATION_BLOCKED);
-  EXPECT_EQ(
-      extension_management_->ReadById(kTargetExtension2).installation_mode,
-      ExtensionManagement::INSTALLATION_BLOCKED);
-  EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension2),
+            ExtensionManagement::INSTALLATION_BLOCKED);
+  EXPECT_EQ(GetInstallationModeById(kNonExistingExtension),
             ExtensionManagement::INSTALLATION_ALLOWED);
 }
 
@@ -466,12 +604,11 @@ TEST_F(ExtensionManagementServiceTest, NewInstallWhitelist) {
     updater.SetBlacklistedByDefault(true);  // Disallowed by default.
     updater.SetIndividualExtensionInstallationAllowed(kTargetExtension, true);
     updater.ClearPerExtensionSettings(kTargetExtension2);
-    updater.ClearPerExtensionSettings(kOtherExtension);
   }
   EXPECT_TRUE(extension_management_->BlacklistedByDefault());
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension),
             ExtensionManagement::INSTALLATION_ALLOWED);
-  EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kNonExistingExtension),
             ExtensionManagement::INSTALLATION_BLOCKED);
 
   // Set legacy preference.
@@ -485,12 +622,11 @@ TEST_F(ExtensionManagementServiceTest, NewInstallWhitelist) {
 
   // Verifies that the new one have higher priority over the legacy ones.
   EXPECT_TRUE(extension_management_->BlacklistedByDefault());
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension),
+            ExtensionManagement::INSTALLATION_ALLOWED);
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension2),
             ExtensionManagement::INSTALLATION_ALLOWED);
-  EXPECT_EQ(
-      extension_management_->ReadById(kTargetExtension2).installation_mode,
-      ExtensionManagement::INSTALLATION_ALLOWED);
-  EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kNonExistingExtension),
             ExtensionManagement::INSTALLATION_BLOCKED);
 }
 
@@ -508,13 +644,11 @@ TEST_F(ExtensionManagementServiceTest, NewInstallForcelist) {
     PrefUpdater updater(pref_service_.get());
     updater.SetIndividualExtensionAutoInstalled(
         kTargetExtension, kExampleUpdateUrl, true);
-    updater.ClearPerExtensionSettings(kOtherExtension);
   }
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
+  EXPECT_EQ(GetInstallationModeById(kTargetExtension),
             ExtensionManagement::INSTALLATION_FORCED);
-  EXPECT_EQ(extension_management_->ReadById(kTargetExtension).update_url,
-            kExampleUpdateUrl);
-  EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
+  CheckAutomaticallyInstalledUpdateUrl(kTargetExtension, kExampleUpdateUrl);
+  EXPECT_EQ(GetInstallationModeById(kNonExistingExtension),
             ExtensionManagement::INSTALLATION_ALLOWED);
 }
 
@@ -528,7 +662,7 @@ TEST_F(ExtensionManagementServiceTest, IsInstallationExplicitlyAllowed) {
   const char* forced  = kTargetExtension2;
   const char* recommended = kTargetExtension3;
   const char* blocked = kTargetExtension4;
-  const char* not_specified = kOtherExtension;
+  const char* not_specified = kNonExistingExtension;
 
   // BlacklistedByDefault() is true in example preference.
   EXPECT_TRUE(extension_management_->IsInstallationExplicitlyAllowed(allowed));
@@ -560,7 +694,7 @@ TEST_F(ExtensionAdminPolicyTest, BlacklistedByDefault) {
   EXPECT_FALSE(BlacklistedByDefault(NULL));
 
   base::ListValue blacklist;
-  blacklist.Append(new base::StringValue(kOtherExtension));
+  blacklist.Append(new base::StringValue(kNonExistingExtension));
   EXPECT_FALSE(BlacklistedByDefault(&blacklist));
   blacklist.Append(new base::StringValue("*"));
   EXPECT_TRUE(BlacklistedByDefault(&blacklist));