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

Unified Diff: content/browser/storage_partition_impl_map.h

Issue 11366140: Fix on-disk structure for persistent storage in webview tags. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address Nasko's comments 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/storage_partition_impl_map.h
diff --git a/content/browser/storage_partition_impl_map.h b/content/browser/storage_partition_impl_map.h
index 14b78ceebb78938298a3d7032088ff6683fa0a0b..9da35c304aa0e76f4c4e0bfd34322ee947973715 100644
--- a/content/browser/storage_partition_impl_map.h
+++ b/content/browser/storage_partition_impl_map.h
@@ -9,6 +9,7 @@
#include <string>
#include "base/callback_forward.h"
+#include "base/gtest_prod_util.h"
#include "base/supports_user_data.h"
#include "content/browser/storage_partition_impl.h"
#include "content/public/browser/browser_context.h"
@@ -34,11 +35,58 @@ class StoragePartitionImplMap : public base::SupportsUserData::Data {
void ForEach(const BrowserContext::StoragePartitionCallback& callback);
private:
- typedef std::map<StoragePartitionImpl::StoragePartitionConfig,
+ FRIEND_TEST_ALL_PREFIXES(StoragePartitionConfigTest, OperatorLess);
+
+ // Each StoragePartition is uniquely identified by which partition domain
+ // it belongs to (such as an app or the browser itself), the user supplied
+ // partition name and the bit indicating whether it should be persisted on
+ // disk or not. This structure contains those elements and is used as
+ // uniqueness key to lookup StoragePartition objects in the global map.
+ //
+ // TODO(nasko): It is equivalent, though not identical to the same structure
+ // that lives in chrome profiles. The difference is that this one has
+ // partition_domain and partition_name separate, while the latter one has
+ // the path produced by combining the two pieces together.
+ // The fix for http://crbug.com/159193 will remove the chrome version.
+ struct StoragePartitionConfig {
+ const std::string partition_domain;
+ const std::string partition_name;
+ const bool in_memory;
+
+ StoragePartitionConfig(const std::string& domain,
+ const std::string& partition,
+ const bool& in_memory_only)
+ : partition_domain(domain),
+ partition_name(partition),
+ in_memory(in_memory_only) {}
+ };
+
+ // Functor for operator <.
+ struct StoragePartitionConfigLess {
+ bool operator()(const StoragePartitionConfig& lhs,
+ const StoragePartitionConfig& rhs) const {
+ if (lhs.partition_domain != rhs.partition_domain)
+ return lhs.partition_domain < rhs.partition_domain;
+ else if (lhs.partition_name != rhs.partition_name)
+ return lhs.partition_name < rhs.partition_name;
+ else if (lhs.in_memory != rhs.in_memory)
+ return lhs.in_memory < rhs.in_memory;
+ else
+ return false;
+ }
+ };
+
+ typedef std::map<StoragePartitionConfig,
StoragePartitionImpl*,
- StoragePartitionImpl::StoragePartitionConfigLess>
+ StoragePartitionConfigLess>
PartitionMap;
+ // Returns the relative path from the profile's base directory, to the
+ // directory that holds all the state for storage contexts in the given
+ // |partition_domain| and |partition_name|.
+ static FilePath GetStoragePartitionPath(const std::string& partition_domain,
+ const std::string& partition_name);
+
// This must always be called *after* |partition| has been added to the
// partitions_.
//

Powered by Google App Engine
This is Rietveld 408576698