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

Unified Diff: chrome/common/extensions/extension_manifests_unittest.cc

Issue 9317013: Add a centralized mechanism for whitelisting access to extension permissions. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: update CanSpecifyAPIPermission logic Created 8 years, 11 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/common/extensions/extension_manifests_unittest.cc
diff --git a/chrome/common/extensions/extension_manifests_unittest.cc b/chrome/common/extensions/extension_manifests_unittest.cc
index 0cadcb734c194709d37f7cb5a3b510f1b669f390..a7b2d9ad2444b81ec72fb08a0110064293e704dd 100644
--- a/chrome/common/extensions/extension_manifests_unittest.cc
+++ b/chrome/common/extensions/extension_manifests_unittest.cc
@@ -575,106 +575,6 @@ TEST_F(ExtensionManifestTest, OptionsPageInApps) {
errors::kInvalidOptionsPageExpectUrlInPackage);
}
-TEST_F(ExtensionManifestTest, HostedAppPermissions) {
- std::string error;
- scoped_ptr<DictionaryValue> manifest(
- LoadManifestFile("hosted_app_absolute_options.json", &error));
- ASSERT_TRUE(manifest.get());
- ListValue* permissions = NULL;
- ASSERT_TRUE(manifest->GetList("permissions", &permissions));
-
- int platform_app = ExtensionAPIPermission::kTypePlatformApp;
- ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance();
- ExtensionAPIPermissionSet api_perms = info->GetAll();
- for (ExtensionAPIPermissionSet::iterator i = api_perms.begin();
- i != api_perms.end(); ++i) {
- if (*i == ExtensionAPIPermission::kExperimental)
- continue;
-
- ExtensionAPIPermission* permission = info->GetByID(*i);
- const char* name = permission->name();
- StringValue* p = new StringValue(name);
- permissions->Clear();
- permissions->Append(p);
-
- // Some permissions are only available to component hosted apps.
- if (permission->is_component_only()) {
- LoadAndExpectError(Manifest(manifest.get(), name),
- errors::kPermissionNotAllowed,
- Extension::INTERNAL);
- scoped_refptr<Extension> extension(
- LoadAndExpectSuccess(Manifest(manifest.get(), name),
- Extension::COMPONENT));
- EXPECT_TRUE(extension->GetActivePermissions()->HasAPIPermission(
- permission->id()));
-
- } else if (permission->type_restrictions() == platform_app) {
- LoadAndExpectError(Manifest(manifest.get(), name),
- errors::kPermissionNotAllowed,
- Extension::INTERNAL,
- Extension::STRICT_ERROR_CHECKS);
- } else if (!permission->supports_hosted_apps()) {
- // Most normal extension permissions also aren't available to hosted apps.
- // For these, the error is only reported in strict mode for legacy
- // reasons: crbug.com/101993.
- LoadAndExpectError(Manifest(manifest.get(), name),
- errors::kPermissionNotAllowed,
- Extension::INTERNAL,
- Extension::STRICT_ERROR_CHECKS);
- scoped_refptr<Extension> extension(
- LoadAndExpectSuccess(Manifest(manifest.get(), name),
- Extension::INTERNAL));
- EXPECT_FALSE(extension->GetActivePermissions()->HasAPIPermission(
- permission->id()));
-
- // These permissions are also allowed for component hosted apps.
- extension = LoadAndExpectSuccess(Manifest(manifest.get(), name),
- Extension::COMPONENT);
- EXPECT_TRUE(extension->GetActivePermissions()->HasAPIPermission(
- permission->id()));
-
- } else {
- scoped_refptr<Extension> extension(
- LoadAndExpectSuccess(Manifest(manifest.get(), name)));
- EXPECT_TRUE(extension->GetActivePermissions()->HasAPIPermission(
- permission->id()));
- }
- }
-}
-
-TEST_F(ExtensionManifestTest, ComponentOnlyPermission) {
- std::string error;
- scoped_ptr<DictionaryValue> manifest(
- LoadManifestFile("init_valid_minimal.json", &error));
- ASSERT_TRUE(manifest.get());
- ListValue* permissions = new ListValue();
- manifest->Set("permissions", permissions);
-
- ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance();
- ExtensionAPIPermissionSet api_perms = info->GetAll();
- for (ExtensionAPIPermissionSet::iterator i = api_perms.begin();
- i != api_perms.end(); ++i) {
- if (*i == ExtensionAPIPermission::kExperimental)
- continue;
-
- ExtensionAPIPermission* permission = info->GetByID(*i);
- const char* name = permission->name();
- StringValue* p = new StringValue(name);
- permissions->Clear();
- permissions->Append(p);
-
- if (!permission->is_component_only())
- continue;
-
- // Component-only extensions should only be enabled for component
- // extensions.
- LoadAndExpectError(Manifest(manifest.get(), name),
- errors::kPermissionNotAllowed);
- LoadAndExpectSuccess(Manifest(manifest.get(), name),
- Extension::COMPONENT);
- }
-}
-
TEST_F(ExtensionManifestTest, AllowUnrecognizedPermissions) {
std::string error;
scoped_ptr<DictionaryValue> manifest(

Powered by Google App Engine
This is Rietveld 408576698