| Index: chrome/browser/extensions/extension_management_unittest.cc
|
| diff --git a/chrome/browser/extensions/extension_management_unittest.cc b/chrome/browser/extensions/extension_management_unittest.cc
|
| index b3a59e47345c7b0d92ce3f72793cc9ea264d9fd1..451b1a8a7a5d6390501a697ad13d09dcaeff3871 100644
|
| --- a/chrome/browser/extensions/extension_management_unittest.cc
|
| +++ b/chrome/browser/extensions/extension_management_unittest.cc
|
| @@ -3,6 +3,7 @@
|
| // found in the LICENSE file.
|
|
|
| #include <algorithm>
|
| +#include <string>
|
| #include <vector>
|
|
|
| #include "base/json/json_parser.h"
|
| @@ -14,9 +15,12 @@
|
| #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"
|
| @@ -36,14 +40,18 @@ 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\","
|
| @@ -52,6 +60,7 @@ const char kExampleDictPreference[] =
|
| " \"installation_mode\": \"blocked\","
|
| " \"install_sources\": [\"*://foo.com/*\"],"
|
| " \"allowed_types\": [\"theme\", \"user_script\"],"
|
| + " \"blocked_permissions\": [\"fileSystem\", \"downloads\"],"
|
| " },"
|
| "}";
|
|
|
| @@ -126,6 +135,11 @@ class ExtensionAdminPolicyTest : public ExtensionManagementServiceTest {
|
| ExtensionAdminPolicyTest() {}
|
| ~ExtensionAdminPolicyTest() override {}
|
|
|
| + void SetUpPolicyProvider() {
|
| + provider_.reset(
|
| + new StandardManagementPolicyProvider(extension_management_.get()));
|
| + }
|
| +
|
| void CreateExtension(Manifest::Location location) {
|
| base::DictionaryValue values;
|
| CreateExtensionFromValues(location, &values);
|
| @@ -161,12 +175,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();
|
| @@ -179,7 +194,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)
|
| @@ -188,21 +203,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
|
| @@ -235,7 +248,7 @@ TEST_F(ExtensionManagementServiceTest, LegacyAllowedTypes) {
|
| const std::vector<Manifest::Type>& allowed_types =
|
| ReadGlobalSettings()->allowed_types;
|
| ASSERT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types);
|
| - EXPECT_TRUE(allowed_types.size() == 2);
|
| + EXPECT_EQ(allowed_types.size(), 2u);
|
| EXPECT_FALSE(std::find(allowed_types.begin(),
|
| allowed_types.end(),
|
| Manifest::TYPE_EXTENSION) != allowed_types.end());
|
| @@ -337,6 +350,32 @@ 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,
|
| + extension_management_->GetBlockedAPIPermissions(kOtherExtension));
|
| +
|
| + 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,
|
| + extension_management_->GetBlockedAPIPermissions(kTargetExtension));
|
| +
|
| + api_permission_set.clear();
|
| + api_permission_set.insert(APIPermission::kDownloads);
|
| + EXPECT_EQ(api_permission_set,
|
| + extension_management_->GetBlockedAPIPermissions(kTargetExtension2));
|
| +
|
| + api_permission_set.clear();
|
| + api_permission_set.insert(APIPermission::kFileSystem);
|
| + api_permission_set.insert(APIPermission::kHistory);
|
| + EXPECT_EQ(api_permission_set,
|
| + extension_management_->GetBlockedAPIPermissions(kTargetExtension3));
|
| }
|
|
|
| // Tests functionality of new preference as to deprecate legacy
|
|
|