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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_ACTIVITY_DATABASE_H_ 5 #ifndef CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_ACTIVITY_DATABASE_H_
6 #define CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_ACTIVITY_DATABASE_H_ 6 #define CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_ACTIVITY_DATABASE_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 class Delegate { 68 class Delegate {
69 protected: 69 protected:
70 friend class ActivityDatabase; 70 friend class ActivityDatabase;
71 71
72 // A Delegate is never directly deleted; it should instead delete itself 72 // A Delegate is never directly deleted; it should instead delete itself
73 // after any final cleanup when OnDatabaseClose() is invoked. 73 // after any final cleanup when OnDatabaseClose() is invoked.
74 virtual ~Delegate() {} 74 virtual ~Delegate() {}
75 75
76 // Initializes the database schema; this gives a policy a chance to create 76 // Initializes the database schema; this gives a policy a chance to create
77 // or update database tables as needed. Should return true on success. 77 // or update database tables as needed. Should return true on success.
78 // Will be called from within a database transaction.
78 virtual bool InitDatabase(sql::Connection* db) = 0; 79 virtual bool InitDatabase(sql::Connection* db) = 0;
79 80
80 // Requests that the policy flush any pending actions to the database. 81 // Requests that the policy flush any pending actions to the database.
81 // Should return true on success or false on a database error. 82 // Should return true on success or false on a database error. Will not be
83 // called from a transaction (the implementation may wish to use a
84 // transaction for the flush).
82 virtual bool FlushDatabase(sql::Connection* db) = 0; 85 virtual bool FlushDatabase(sql::Connection* db) = 0;
83 86
84 // Called if the database encounters a permanent error; the policy should 87 // Called if the database encounters a permanent error; the policy should
85 // not expect to make any future writes to the database and may want to 88 // not expect to make any future writes to the database and may want to
86 // discard any queued data. 89 // discard any queued data.
87 virtual void OnDatabaseFailure() = 0; 90 virtual void OnDatabaseFailure() = 0;
88 91
89 // Called by ActivityDatabase just before the ActivityDatabase object is 92 // Called by ActivityDatabase just before the ActivityDatabase object is
90 // deleted. The database will make no further callbacks after invoking 93 // deleted. The database will make no further callbacks after invoking
91 // this method, so it is an appropriate time for the policy to delete 94 // this method, so it is an appropriate time for the policy to delete
92 // itself. 95 // itself.
93 virtual void OnDatabaseClose() = 0; 96 virtual void OnDatabaseClose() = 0;
94 }; 97 };
95 98
99 // Value to be passed to AdviseFlush below to force a database flush.
100 static const int kFlushImmediately = -1;
101
96 // Need to call Init to actually use the ActivityDatabase. The Delegate 102 // Need to call Init to actually use the ActivityDatabase. The Delegate
97 // provides hooks for an ActivityLogPolicy to control the database schema and 103 // provides hooks for an ActivityLogPolicy to control the database schema and
98 // reads/writes. 104 // reads/writes.
99 explicit ActivityDatabase(Delegate* delegate); 105 explicit ActivityDatabase(Delegate* delegate);
100 106
101 // Opens the DB. This invokes OnDatabaseInit in the delegate to create or 107 // Opens the DB. This invokes OnDatabaseInit in the delegate to create or
102 // update the database schema if needed. 108 // update the database schema if needed.
103 void Init(const base::FilePath& db_name); 109 void Init(const base::FilePath& db_name);
104 110
105 // An ActivityLogPolicy should call this to kill the ActivityDatabase. 111 // An ActivityLogPolicy should call this to kill the ActivityDatabase.
106 void Close(); 112 void Close();
107 113
108 // Inform the database that there may be additional data which could be 114 // Inform the database that there may be additional data which could be
109 // written out. 115 // written out. The size parameter should indicate (approximately) how many
110 // TODO(mvrable): Add a method to force a database flush, or perhaps pass 116 // records are queued to be written; the database may use this information to
111 // hints to the database about how much data is queued up so the database can 117 // schedule a flush early if too much data is queueing up. A value of
112 // flush before the timeout if there is a large amount of data? 118 // kFlushImmediately will force an immediate call into
113 void NotifyAction(); 119 // Delegate::FlushDatabase(); otherwise, it is up to the database to
120 // determine when to flush.
121 void AdviseFlush(int size);
114 122
115 // Turns off batch I/O writing mode. This should only be used in unit tests, 123 // Turns off batch I/O writing mode. This should only be used in unit tests,
116 // browser tests, or in our special --enable-extension-activity-log-testing 124 // browser tests, or in our special --enable-extension-activity-log-testing
117 // policy state. 125 // policy state.
118 void SetBatchModeForTesting(bool batch_mode); 126 void SetBatchModeForTesting(bool batch_mode);
119 127
120 bool is_db_valid() const { return valid_db_; } 128 bool is_db_valid() const { return valid_db_; }
121 129
122 // A helper method for initializing or upgrading a database table. The 130 // A helper method for initializing or upgrading a database table. The
123 // content_fields array should list the names of all of the columns in the 131 // content_fields array should list the names of all of the columns in the
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 sql::Connection db_; 189 sql::Connection db_;
182 bool valid_db_; 190 bool valid_db_;
183 bool batch_mode_; 191 bool batch_mode_;
184 base::RepeatingTimer<ActivityDatabase> timer_; 192 base::RepeatingTimer<ActivityDatabase> timer_;
185 bool already_closed_; 193 bool already_closed_;
186 bool did_init_; 194 bool did_init_;
187 195
188 friend class ActivityLogDatabasePolicy; 196 friend class ActivityLogDatabasePolicy;
189 FRIEND_TEST_ALL_PREFIXES(ActivityDatabaseTest, BatchModeOff); 197 FRIEND_TEST_ALL_PREFIXES(ActivityDatabaseTest, BatchModeOff);
190 FRIEND_TEST_ALL_PREFIXES(ActivityDatabaseTest, BatchModeOn); 198 FRIEND_TEST_ALL_PREFIXES(ActivityDatabaseTest, BatchModeOn);
199 FRIEND_TEST_ALL_PREFIXES(ActivityDatabaseTest, BatchModeFlush);
191 DISALLOW_COPY_AND_ASSIGN(ActivityDatabase); 200 DISALLOW_COPY_AND_ASSIGN(ActivityDatabase);
192 }; 201 };
193 202
194 } // namespace extensions 203 } // namespace extensions
195 #endif // CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_ACTIVITY_DATABASE_H_ 204 #endif // CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_ACTIVITY_DATABASE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698