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

Unified Diff: chrome/browser/extensions/extension_management_unittest.cc

Issue 595363002: Add policy controlled permission block list for extensions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ext-fix
Patch Set: more minor format fix Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698