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

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

Issue 15862008: Add SpecialStoragePolicy::HasIsolatedStorage (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 7 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_special_storage_policy.cc
diff --git a/chrome/browser/extensions/extension_special_storage_policy.cc b/chrome/browser/extensions/extension_special_storage_policy.cc
index 1f472fd7a44cac78f66ceab98bdd968d001aea0d..774582a775ead3cdb64bee019dd7facd2fcd04fd 100644
--- a/chrome/browser/extensions/extension_special_storage_policy.cc
+++ b/chrome/browser/extensions/extension_special_storage_policy.cc
@@ -14,6 +14,7 @@
#include "chrome/common/content_settings.h"
#include "chrome/common/content_settings_types.h"
#include "chrome/common/extensions/extension.h"
+#include "chrome/common/extensions/manifest_handlers/app_isolation_info.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/browser_thread.h"
#include "extensions/common/constants.h"
@@ -75,6 +76,11 @@ bool ExtensionSpecialStoragePolicy::IsFileHandler(
return file_handler_extensions_.ContainsExtension(extension_id);
}
+bool ExtensionSpecialStoragePolicy::HasIsolatedStorage(const GURL& origin) {
+ base::AutoLock locker(lock_);
+ return isolated_extensions_.Contains(origin);
+}
+
bool ExtensionSpecialStoragePolicy::NeedsProtection(
const extensions::Extension* extension) {
return extension->is_hosted_app() && !extension->from_bookmark();
@@ -92,6 +98,7 @@ void ExtensionSpecialStoragePolicy::GrantRightsForExtension(
if (!(NeedsProtection(extension) ||
extension->HasAPIPermission(APIPermission::kUnlimitedStorage) ||
extension->HasAPIPermission(APIPermission::kFileBrowserHandler) ||
+ extensions::AppIsolationInfo::HasIsolatedStorage(extension) ||
extension->is_app())) {
return;
}
@@ -111,6 +118,9 @@ void ExtensionSpecialStoragePolicy::GrantRightsForExtension(
if (extension->HasAPIPermission(APIPermission::kFileBrowserHandler))
file_handler_extensions_.Add(extension);
+
+ if (extensions::AppIsolationInfo::HasIsolatedStorage(extension))
+ isolated_extensions_.Add(extension);
}
if (change_flags) {
@@ -125,6 +135,7 @@ void ExtensionSpecialStoragePolicy::RevokeRightsForExtension(
if (!(NeedsProtection(extension) ||
extension->HasAPIPermission(APIPermission::kUnlimitedStorage) ||
extension->HasAPIPermission(APIPermission::kFileBrowserHandler) ||
+ extensions::AppIsolationInfo::HasIsolatedStorage(extension) ||
extension->is_app())) {
return;
}
@@ -143,6 +154,9 @@ void ExtensionSpecialStoragePolicy::RevokeRightsForExtension(
if (extension->HasAPIPermission(APIPermission::kFileBrowserHandler))
file_handler_extensions_.Remove(extension);
+
+ if (extensions::AppIsolationInfo::HasIsolatedStorage(extension))
+ isolated_extensions_.Remove(extension);
}
if (change_flags) {
@@ -158,6 +172,7 @@ void ExtensionSpecialStoragePolicy::RevokeRightsForAllExtensions() {
installed_apps_.Clear();
unlimited_extensions_.Clear();
file_handler_extensions_.Clear();
+ isolated_extensions_.Clear();
}
NotifyCleared();

Powered by Google App Engine
This is Rietveld 408576698