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_; |