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

Unified Diff: content/browser/storage_partition_impl.cc

Issue 10913265: Redo the Storage Partition directory layout to support guest tags and origin based partitions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix typo Created 8 years, 3 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
« no previous file with comments | « content/browser/storage_partition_impl.h ('k') | content/browser/storage_partition_impl_map.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/storage_partition_impl.cc
diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc
index e906a6acb8dc22a68ba429db5a1370496b5a01d4..02cb5d71d7163ba4a827675d7bcd20231241583b 100644
--- a/content/browser/storage_partition_impl.cc
+++ b/content/browser/storage_partition_impl.cc
@@ -12,6 +12,46 @@
namespace content {
+namespace {
+
+// These constants are used to create the directory structure under the profile
+// where renderers with a non-default storage partition keep their persistent
+// state. This will contain a set of directories that partially mirror the
+// directory structure of BrowserContext::GetPath().
+//
+// The kStoragePartitionDirname is contains an extensions directory which is
+// further partitioned by extension id, followed by another level of directories
+// for the "default" extension storage partition and one directory for each
+// persistent partition used by an extension's browser tags. Example:
+//
+// {kStoragePartitionDirname}/extensions/ABCDEF/default
+// {kStoragePartitionDirname}/extensions/ABCDEF/{hash(guest partition)}
+//
+// The code in GetPartitionPath() constructs these path names.
+const FilePath::CharType kStoragePartitionDirname[] =
+ FILE_PATH_LITERAL("Storage Partitions");
+const FilePath::CharType kExtensionsDirname[] =
+ FILE_PATH_LITERAL("extensions");
+const FilePath::CharType kDefaultPartitionDirname[] =
+ FILE_PATH_LITERAL("default");
+
+} // namespace
+
+// static
+FilePath StoragePartition::GetPartitionPath(const std::string& partition_id) {
+ if (partition_id.empty()) {
+ // The default profile just sits inside the top-level profile directory.
+ return FilePath();
+ }
+
+ // TODO(ajwong): This should check that we create a valid path name.
+ CHECK(IsStringASCII(partition_id));
+ return FilePath(kStoragePartitionDirname)
+ .Append(kExtensionsDirname)
+ .AppendASCII(partition_id)
+ .Append(kDefaultPartitionDirname);
+}
+
StoragePartitionImpl::StoragePartitionImpl(
const FilePath& partition_path,
quota::QuotaManager* quota_manager,
@@ -47,12 +87,16 @@ StoragePartitionImpl::~StoragePartitionImpl() {
// need 3 pieces of info from it.
StoragePartitionImpl* StoragePartitionImpl::Create(
BrowserContext* context,
- const FilePath& partition_path) {
+ const std::string& partition_id,
+ const FilePath& profile_path) {
// Ensure that these methods are called on the UI thread, except for
// unittests where a UI thread might not have been created.
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) ||
!BrowserThread::IsMessageLoopValid(BrowserThread::UI));
+ FilePath partition_path =
+ profile_path.Append(GetPartitionPath(partition_id));
+
// All of the clients have to be created and registered with the
// QuotaManager prior to the QuotaManger being used. We do them
// all together here prior to handing out a reference to anything
@@ -99,6 +143,10 @@ StoragePartitionImpl* StoragePartitionImpl::Create(
indexed_db_context);
}
+FilePath StoragePartitionImpl::GetPath() {
+ return partition_path_;
+}
+
quota::QuotaManager* StoragePartitionImpl::GetQuotaManager() {
return quota_manager_;
}
« no previous file with comments | « content/browser/storage_partition_impl.h ('k') | content/browser/storage_partition_impl_map.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698