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

Unified Diff: chrome/browser/extensions/activity_log/activity_database.h

Issue 21646004: Compressed activity log database storage (Closed) Base URL: http://git.chromium.org/chromium/src.git@refactor-cleanups
Patch Set: Delete a debugging log message Created 7 years, 4 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
Index: chrome/browser/extensions/activity_log/activity_database.h
diff --git a/chrome/browser/extensions/activity_log/activity_database.h b/chrome/browser/extensions/activity_log/activity_database.h
index ea2cff97177f25dc6622485af4dfe39f57e91596..30b32f7a7fc705ab645fac907a3b8912227d0708 100644
--- a/chrome/browser/extensions/activity_log/activity_database.h
+++ b/chrome/browser/extensions/activity_log/activity_database.h
@@ -75,10 +75,13 @@ class ActivityDatabase {
// Initializes the database schema; this gives a policy a chance to create
// or update database tables as needed. Should return true on success.
+ // Will be called from within a database transaction.
virtual bool InitDatabase(sql::Connection* db) = 0;
// Requests that the policy flush any pending actions to the database.
- // Should return true on success or false on a database error.
+ // Should return true on success or false on a database error. Will not be
+ // called from a transaction (the implementation may wish to use a
+ // transaction for the flush).
virtual bool FlushDatabase(sql::Connection* db) = 0;
// Called if the database encounters a permanent error; the policy should
@@ -93,6 +96,9 @@ class ActivityDatabase {
virtual void OnDatabaseClose() = 0;
};
+ // Value to be passed to AdviseFlush below to force a database flush.
+ static const int kFlushImmediately = -1;
+
// Need to call Init to actually use the ActivityDatabase. The Delegate
// provides hooks for an ActivityLogPolicy to control the database schema and
// reads/writes.
@@ -106,11 +112,13 @@ class ActivityDatabase {
void Close();
// Inform the database that there may be additional data which could be
- // written out.
- // TODO(mvrable): Add a method to force a database flush, or perhaps pass
- // hints to the database about how much data is queued up so the database can
- // flush before the timeout if there is a large amount of data?
- void NotifyAction();
+ // written out. The size parameter should indicate (approximately) how many
+ // records are queued to be written; the database may use this information to
+ // schedule a flush early if too much data is queueing up. A value of
+ // kFlushImmediately will force an immediate call into
+ // Delegate::FlushDatabase(); otherwise, it is up to the database to
+ // determine when to flush.
+ void AdviseFlush(int size);
// Turns off batch I/O writing mode. This should only be used in unit tests,
// browser tests, or in our special --enable-extension-activity-log-testing
@@ -188,6 +196,7 @@ class ActivityDatabase {
friend class ActivityLogDatabasePolicy;
FRIEND_TEST_ALL_PREFIXES(ActivityDatabaseTest, BatchModeOff);
FRIEND_TEST_ALL_PREFIXES(ActivityDatabaseTest, BatchModeOn);
+ FRIEND_TEST_ALL_PREFIXES(ActivityDatabaseTest, BatchModeFlush);
DISALLOW_COPY_AND_ASSIGN(ActivityDatabase);
};

Powered by Google App Engine
This is Rietveld 408576698