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

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

Issue 8424005: Loosen error reporting for hosted app permissions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: moar test Created 9 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/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 0008ef7189b40d24f448a166c01732f21bce6378..046c60edfaf7e5a63254d873b108e08f2eb144d0 100644
--- a/chrome/common/extensions/extension_manifests_unittest.cc
+++ b/chrome/common/extensions/extension_manifests_unittest.cc
@@ -640,18 +640,44 @@ TEST_F(ExtensionManifestTest, HostedAppPermissions) {
StringValue* p = new StringValue(name);
permissions->Clear();
permissions->Append(p);
- Extension::Location location = Extension::INTERNAL;
- // Many permissions are not available to hosted apps.
- if (!permission->is_hosted_app() || permission->is_component_only()) {
+ // Some permissions are only available to component hosted apps.
+ if (permission->is_component_only()) {
LoadAndExpectError(Manifest(manifest.get(), name),
- errors::kPermissionNotAllowed);
-
- // ... unless the hosted app is a component app.
- location = Extension::COMPONENT;
+ 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->is_hosted_app()) {
+ // 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()));
}
-
- LoadAndExpectSuccess(Manifest(manifest.get(), name), location);
}
}
« chrome/common/extensions/extension.cc ('K') | « chrome/common/extensions/extension.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698