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 fc100f5a15517e0c04557a359253f5a07a7aac2d..0576648dde8d4d6a66d9a6440c4296ca12207603 100644 |
--- a/chrome/browser/extensions/extension_management_unittest.cc |
+++ b/chrome/browser/extensions/extension_management_unittest.cc |
@@ -14,9 +14,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" |
@@ -35,19 +38,24 @@ 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\"]," |
" }," |
" \"*\": {" |
" \"installation_mode\": \"blocked\"," |
" \"install_sources\": [\"*://foo.com/*\"]," |
" \"allowed_types\": [\"theme\", \"user_script\"]," |
+ " \"blocked_permissions\": [\"fileSystem\", \"downloads\"]," |
" }," |
"}"; |
@@ -124,6 +132,11 @@ class ExtensionAdminPolicyTest : public ExtensionManagementServiceTest { |
ExtensionAdminPolicyTest() {} |
virtual ~ExtensionAdminPolicyTest() {} |
+ void SetUpPolicyProvider() { |
+ provider_.reset( |
+ new StandardManagementPolicyProvider(extension_management_.get())); |
+ } |
+ |
void CreateExtension(Manifest::Location location) { |
base::DictionaryValue values; |
CreateExtensionFromValues(location, &values); |
@@ -159,12 +172,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(); |
@@ -177,7 +191,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) |
@@ -186,21 +200,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 |
@@ -335,6 +347,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)); |
Joao da Silva
2014/10/15 14:39:26
Add tests with parsing errors in the permissions p
binjin
2014/10/16 18:13:58
I think this tests along with unit tests for Permi
Joao da Silva
2014/10/17 12:52:39
So what happens if the policy has an invalid permi
binjin
2014/10/17 13:03:19
To clarify, the permission parser actually allows
binjin
2014/10/17 14:04:22
Done.
|
} |
// Tests functionality of new preference as to deprecate legacy |