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

Unified Diff: content/browser/browser_context.cc

Issue 11234032: Webview tag creation should be using storage partitions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Disabling session storage test for isolated apps. Created 8 years, 1 month 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: content/browser/browser_context.cc
diff --git a/content/browser/browser_context.cc b/content/browser/browser_context.cc
index cbfd2ca7ddfe1fb7e45b733d0950c2775ffb2ef0..99905f8b3ba5602d265610036f5a55c4065f7c65 100644
--- a/content/browser/browser_context.cc
+++ b/content/browser/browser_context.cc
@@ -37,9 +37,11 @@ namespace {
const char* kDownloadManagerKeyName = "download_manager";
const char* kStorageParitionMapKeyName = "content_storage_partition_map";
-StoragePartition* GetStoragePartitionByPartitionId(
+StoragePartition* GetStoragePartitionFromConfig(
BrowserContext* browser_context,
- const std::string& partition_id) {
+ const std::string& partition_domain,
+ const std::string& partition_name,
+ bool in_memory) {
StoragePartitionImplMap* partition_map =
static_cast<StoragePartitionImplMap*>(
browser_context->GetUserData(kStorageParitionMapKeyName));
@@ -48,12 +50,20 @@ StoragePartition* GetStoragePartitionByPartitionId(
browser_context->SetUserData(kStorageParitionMapKeyName, partition_map);
}
- return partition_map->Get(partition_id);
+ if (browser_context->IsOffTheRecord())
+ in_memory = true;
+
+ // TODO(nasko): Webview tags with named partitions will have both
+ // partition_domain and partition_name set. In this case, mark them in-memory
+ // until the on-disk storage code has landed. http://crbug.com/159464
+ if (!partition_domain.empty() && !partition_name.empty())
+ in_memory = true;
+
+ return partition_map->Get(partition_domain, partition_name, in_memory);
}
// Run |callback| on each DOMStorageContextImpl in |browser_context|.
-void PurgeDOMStorageContextInPartition(const std::string& id,
- StoragePartition* storage_partition) {
+void PurgeDOMStorageContextInPartition(StoragePartition* storage_partition) {
static_cast<StoragePartitionImpl*>(storage_partition)->
GetDOMStorageContext()->PurgeMemory();
}
@@ -104,26 +114,34 @@ DownloadManager* BrowserContext::GetDownloadManager(
StoragePartition* BrowserContext::GetStoragePartition(
BrowserContext* browser_context,
SiteInstance* site_instance) {
- std::string partition_id; // Default to "" for NULL |site_instance|.
+ std::string partition_domain;
+ std::string partition_name;
+ bool in_memory = false;
// TODO(ajwong): After GetDefaultStoragePartition() is removed, get rid of
// this conditional and require that |site_instance| is non-NULL.
if (site_instance) {
- partition_id = GetContentClient()->browser()->
- GetStoragePartitionIdForSite(browser_context,
- site_instance->GetSiteURL());
+ GetContentClient()->browser()->GetStoragePartitionConfigForSite(
+ browser_context, site_instance->GetSiteURL(),
+ &partition_domain, &partition_name, &in_memory);
}
- return GetStoragePartitionByPartitionId(browser_context, partition_id);
+ return GetStoragePartitionFromConfig(
+ browser_context, partition_domain, partition_name, in_memory);
}
StoragePartition* BrowserContext::GetStoragePartitionForSite(
BrowserContext* browser_context,
const GURL& site) {
- std::string partition_id = GetContentClient()->browser()->
- GetStoragePartitionIdForSite(browser_context, site);
+ std::string partition_domain;
+ std::string partition_name;
+ bool in_memory;
+
+ GetContentClient()->browser()->GetStoragePartitionConfigForSite(
+ browser_context, site, &partition_domain, &partition_name, &in_memory);
- return GetStoragePartitionByPartitionId(browser_context, partition_id);
+ return GetStoragePartitionFromConfig(
+ browser_context, partition_domain, partition_name, in_memory);
}
void BrowserContext::ForEachStoragePartition(

Powered by Google App Engine
This is Rietveld 408576698