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

Unified Diff: content/browser/dom_storage/local_storage_context_mojo.h

Issue 2604963002: Store per-origin metadata for localstorage. (Closed)
Patch Set: delete metadata when no more data is stored for an origin Created 4 years 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/dom_storage/local_storage_context_mojo.h
diff --git a/content/browser/dom_storage/local_storage_context_mojo.h b/content/browser/dom_storage/local_storage_context_mojo.h
index b8b9fb1df09912d2792a4b202138723558e524bb..9f648d19f3e826cf3c7507d430abbfe6f32508ab 100644
--- a/content/browser/dom_storage/local_storage_context_mojo.h
+++ b/content/browser/dom_storage/local_storage_context_mojo.h
@@ -21,24 +21,35 @@ class Connector;
namespace content {
class LevelDBWrapperImpl;
+struct LocalStorageUsageInfo;
// Used for mojo-based LocalStorage implementation (behind --mojo-local-storage
// for now).
class CONTENT_EXPORT LocalStorageContextMojo {
public:
+ using GetStorageUsageCallback =
+ base::OnceCallback<void(std::vector<LocalStorageUsageInfo>)>;
+
LocalStorageContextMojo(service_manager::Connector* connector,
const base::FilePath& subdirectory);
~LocalStorageContextMojo();
void OpenLocalStorage(const url::Origin& origin,
mojom::LevelDBWrapperRequest request);
+ void GetStorageUsage(GetStorageUsageCallback callback);
void SetDatabaseForTesting(leveldb::mojom::LevelDBDatabasePtr database);
private:
+ // Runs |callback| immediately if already connected to a database, otherwise
+ // delays running |callback| untill after a connection has been established.
+ // Initiates connecting to the database if no connection is in progres yet.
+ void RunWhenConnected(base::OnceClosure callback);
+
void OnLevelDBWrapperHasNoBindings(const url::Origin& origin);
std::vector<leveldb::mojom::BatchedOperationPtr>
- OnLevelDBWrapperPrepareToCommit();
+ OnLevelDBWrapperPrepareToCommit(const url::Origin& origin,
+ const LevelDBWrapperImpl& wrapper);
void OnUserServiceConnectionComplete();
void OnUserServiceConnectionError();
@@ -53,6 +64,13 @@ class CONTENT_EXPORT LocalStorageContextMojo {
void BindLocalStorage(const url::Origin& origin,
mojom::LevelDBWrapperRequest request);
+ // The (possibly delayed) implementation of GetStorageUsage(). Can be called
+ // directly from that function, or through |on_database_open_callbacks_|.
+ void RetrieveStorageUsage(GetStorageUsageCallback callback);
+ void OnGotMetaData(GetStorageUsageCallback callback,
+ leveldb::mojom::DatabaseError status,
+ std::vector<leveldb::mojom::KeyValuePtr> data);
+
service_manager::Connector* const connector_;
const base::FilePath subdirectory_;

Powered by Google App Engine
This is Rietveld 408576698