Index: chrome/common/extensions/extension.cc |
diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc |
index c26f225f585f046f4ccdedca419c85d46b7ed19c..4559943dc2139d55b1fcabbef995e92ee8488419 100644 |
--- a/chrome/common/extensions/extension.cc |
+++ b/chrome/common/extensions/extension.cc |
@@ -2693,7 +2693,21 @@ bool Extension::LoadContentSecurityPolicy(string16* error) { |
return true; |
} |
-bool Extension::LoadAppIsolation(string16* error) { |
+bool Extension::LoadAppIsolation( |
+ const ExtensionAPIPermissionSet& api_permissions, string16* error) { |
+ // Platform apps always get isolated storage. |
+ if (is_platform_app()) { |
+ is_storage_isolated_ = true; |
+ return true; |
+ } |
+ |
+ // Other apps only get it if it is requested _and_ experimental APIs are |
+ // enabled. |
+ if (!api_permissions.count(ExtensionAPIPermission::kExperimental) || |
+ !is_app()) { |
+ return true; |
+ } |
+ |
Value* temp = NULL; |
if (!manifest_->Get(keys::kIsolation, &temp)) |
return true; |
@@ -3080,9 +3094,7 @@ bool Extension::InitFromValue(int flags, string16* error) { |
return false; |
} |
- // App isolation. |
- if (api_permissions.count(ExtensionAPIPermission::kExperimental) && |
- is_app() && !LoadAppIsolation(error)) |
+ if (!LoadAppIsolation(api_permissions, error)) |
return false; |
if (!LoadSharedFeatures(api_permissions, error)) |