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( |
awong
2012/11/07 18:14:30
Can the parameters move back up to the preceding l
nasko
2012/11/07 18:48:05
The partition_domain parameter exceeds 80 cols onc
|
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( |