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

Side by Side Diff: content/browser/indexed_db/indexed_db_database.h

Issue 1963293002: Replacing Indexed DB Chromium IPC with Mojo Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Refactoring after Passing URLRequestContextGetter. Created 4 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 CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_DATABASE_H_ 5 #ifndef CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_DATABASE_H_
6 #define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_DATABASE_H_ 6 #define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_DATABASE_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <list> 11 #include <list>
12 #include <map> 12 #include <map>
13 #include <memory> 13 #include <memory>
14 #include <queue> 14 #include <queue>
15 #include <string> 15 #include <string>
16 #include <utility> 16 #include <utility>
17 #include <vector> 17 #include <vector>
18 18
19 #include "base/macros.h" 19 #include "base/macros.h"
20 #include "base/memory/ref_counted.h" 20 #include "base/memory/ref_counted.h"
21 #include "content/browser/indexed_db/indexed_db.h" 21 #include "content/browser/indexed_db/indexed_db.h"
22 #include "content/browser/indexed_db/indexed_db_backing_store.h" 22 #include "content/browser/indexed_db/indexed_db_backing_store.h"
23 #include "content/browser/indexed_db/indexed_db_callbacks.h"
24 #include "content/browser/indexed_db/indexed_db_metadata.h" 23 #include "content/browser/indexed_db/indexed_db_metadata.h"
25 #include "content/browser/indexed_db/indexed_db_observer.h" 24 #include "content/browser/indexed_db/indexed_db_observer.h"
26 #include "content/browser/indexed_db/indexed_db_pending_connection.h"
27 #include "content/browser/indexed_db/indexed_db_transaction_coordinator.h" 25 #include "content/browser/indexed_db/indexed_db_transaction_coordinator.h"
28 #include "content/browser/indexed_db/list_set.h" 26 #include "content/browser/indexed_db/list_set.h"
29 #include "third_party/WebKit/public/platform/modules/indexeddb/WebIDBTypes.h" 27 #include "third_party/WebKit/public/platform/modules/indexeddb/WebIDBTypes.h"
30 28
31 namespace url { 29 namespace url {
32 class Origin; 30 class Origin;
33 } 31 }
34 32
35 namespace content { 33 namespace content {
36 34
37 class IndexedDBBlobInfo; 35 class IndexedDBBlobInfo;
36 class IndexedDBChangeHandler;
38 class IndexedDBConnection; 37 class IndexedDBConnection;
39 class IndexedDBDatabaseCallbacks; 38 class IndexedDBContext;
39 class IndexedDBDatabaseError;
40 class IndexedDBFactory; 40 class IndexedDBFactory;
41 class IndexedDBKey; 41 class IndexedDBKey;
42 class IndexedDBKeyPath; 42 class IndexedDBKeyPath;
43 class IndexedDBKeyRange; 43 class IndexedDBKeyRange;
44 class IndexedDBObservation; 44 class IndexedDBObservation;
45 class IndexedDBObserverChanges; 45 class IndexedDBObserverChanges;
46 class IndexedDBPendingConnection;
47 class IndexedDBPendingDelete;
46 class IndexedDBTransaction; 48 class IndexedDBTransaction;
47 struct IndexedDBValue; 49 struct IndexedDBValue;
48 50
49 class CONTENT_EXPORT IndexedDBDatabase 51 class CONTENT_EXPORT IndexedDBDatabase
50 : NON_EXPORTED_BASE(public base::RefCounted<IndexedDBDatabase>) { 52 : NON_EXPORTED_BASE(public base::RefCounted<IndexedDBDatabase>) {
51 public: 53 public:
52 // An index and corresponding set of keys 54 // An index and corresponding set of keys
53 using IndexKeys = std::pair<int64_t, std::vector<IndexedDBKey>>; 55 using IndexKeys = std::pair<int64_t, std::vector<IndexedDBKey>>;
54 56
55 // Identifier is pair of (origin, database name). 57 // Identifier is pair of (origin, database name).
(...skipping 17 matching lines...) Expand all
73 75
74 void AddObjectStore(const IndexedDBObjectStoreMetadata& metadata, 76 void AddObjectStore(const IndexedDBObjectStoreMetadata& metadata,
75 int64_t new_max_object_store_id); 77 int64_t new_max_object_store_id);
76 void RemoveObjectStore(int64_t object_store_id); 78 void RemoveObjectStore(int64_t object_store_id);
77 void AddIndex(int64_t object_store_id, 79 void AddIndex(int64_t object_store_id,
78 const IndexedDBIndexMetadata& metadata, 80 const IndexedDBIndexMetadata& metadata,
79 int64_t new_max_index_id); 81 int64_t new_max_index_id);
80 void RemoveIndex(int64_t object_store_id, int64_t index_id); 82 void RemoveIndex(int64_t object_store_id, int64_t index_id);
81 83
82 void OpenConnection(std::unique_ptr<IndexedDBPendingConnection> connection); 84 void OpenConnection(std::unique_ptr<IndexedDBPendingConnection> connection);
83 void DeleteDatabase(scoped_refptr<IndexedDBCallbacks> callbacks); 85 void DeleteDatabase(std::unique_ptr<IndexedDBPendingDelete> pending_delete);
84 const IndexedDBDatabaseMetadata& metadata() const { return metadata_; } 86 const IndexedDBDatabaseMetadata& metadata() const { return metadata_; }
85 87
86 void CreateObjectStore(int64_t transaction_id, 88 void CreateObjectStore(int64_t transaction_id,
87 int64_t object_store_id, 89 int64_t object_store_id,
88 const base::string16& name, 90 const base::string16& name,
89 const IndexedDBKeyPath& key_path, 91 const IndexedDBKeyPath& key_path,
90 bool auto_increment); 92 bool auto_increment);
91 void DeleteObjectStore(int64_t transaction_id, int64_t object_store_id); 93 void DeleteObjectStore(int64_t transaction_id, int64_t object_store_id);
92 94
93 // Returns a pointer to a newly created transaction. The object is owned 95 // Returns a pointer to a newly created transaction. The object is owned
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 int64_t object_store_id, 145 int64_t object_store_id,
144 blink::WebIDBOperationType type, 146 blink::WebIDBOperationType type,
145 const IndexedDBKeyRange& key_range); 147 const IndexedDBKeyRange& key_range);
146 void SendObservations( 148 void SendObservations(
147 std::map<int32_t, std::unique_ptr<IndexedDBObserverChanges>> change_map); 149 std::map<int32_t, std::unique_ptr<IndexedDBObserverChanges>> change_map);
148 150
149 void Get(int64_t transaction_id, 151 void Get(int64_t transaction_id,
150 int64_t object_store_id, 152 int64_t object_store_id,
151 int64_t index_id, 153 int64_t index_id,
152 std::unique_ptr<IndexedDBKeyRange> key_range, 154 std::unique_ptr<IndexedDBKeyRange> key_range,
153 bool key_only, 155 bool key_only);
154 scoped_refptr<IndexedDBCallbacks> callbacks);
155 void GetAll(int64_t transaction_id, 156 void GetAll(int64_t transaction_id,
156 int64_t object_store_id, 157 int64_t object_store_id,
157 int64_t index_id, 158 int64_t index_id,
158 std::unique_ptr<IndexedDBKeyRange> key_range, 159 std::unique_ptr<IndexedDBKeyRange> key_range,
159 bool key_only, 160 bool key_only,
160 int64_t max_count, 161 int64_t max_count);
161 scoped_refptr<IndexedDBCallbacks> callbacks);
162 void Put(int64_t transaction_id, 162 void Put(int64_t transaction_id,
163 int64_t object_store_id, 163 int64_t object_store_id,
164 IndexedDBValue* value, 164 IndexedDBValue* value,
165 ScopedVector<storage::BlobDataHandle>* handles, 165 ScopedVector<storage::BlobDataHandle>* handles,
166 std::unique_ptr<IndexedDBKey> key, 166 std::unique_ptr<IndexedDBKey> key,
167 blink::WebIDBPutMode mode, 167 blink::WebIDBPutMode mode,
168 scoped_refptr<IndexedDBCallbacks> callbacks,
169 const std::vector<IndexKeys>& index_keys); 168 const std::vector<IndexKeys>& index_keys);
170 void SetIndexKeys(int64_t transaction_id, 169 void SetIndexKeys(int64_t transaction_id,
171 int64_t object_store_id, 170 int64_t object_store_id,
172 std::unique_ptr<IndexedDBKey> primary_key, 171 std::unique_ptr<IndexedDBKey> primary_key,
173 const std::vector<IndexKeys>& index_keys); 172 const std::vector<IndexKeys>& index_keys);
174 void SetIndexesReady(int64_t transaction_id, 173 void SetIndexesReady(int64_t transaction_id,
175 int64_t object_store_id, 174 int64_t object_store_id,
176 const std::vector<int64_t>& index_ids); 175 const std::vector<int64_t>& index_ids);
177 void OpenCursor(int64_t transaction_id, 176 void OpenCursor(int64_t transaction_id,
178 int64_t object_store_id, 177 int64_t object_store_id,
179 int64_t index_id, 178 int64_t index_id,
180 std::unique_ptr<IndexedDBKeyRange> key_range, 179 std::unique_ptr<IndexedDBKeyRange> key_range,
181 blink::WebIDBCursorDirection, 180 blink::WebIDBCursorDirection,
182 bool key_only, 181 bool key_only,
183 blink::WebIDBTaskType task_type, 182 blink::WebIDBTaskType task_type);
184 scoped_refptr<IndexedDBCallbacks> callbacks);
185 void Count(int64_t transaction_id, 183 void Count(int64_t transaction_id,
186 int64_t object_store_id, 184 int64_t object_store_id,
187 int64_t index_id, 185 int64_t index_id,
188 std::unique_ptr<IndexedDBKeyRange> key_range, 186 std::unique_ptr<IndexedDBKeyRange> key_range);
189 scoped_refptr<IndexedDBCallbacks> callbacks);
190 void DeleteRange(int64_t transaction_id, 187 void DeleteRange(int64_t transaction_id,
191 int64_t object_store_id, 188 int64_t object_store_id,
192 std::unique_ptr<IndexedDBKeyRange> key_range, 189 std::unique_ptr<IndexedDBKeyRange> key_range);
193 scoped_refptr<IndexedDBCallbacks> callbacks); 190 void Clear(int64_t transaction_id, int64_t object_store_id);
194 void Clear(int64_t transaction_id,
195 int64_t object_store_id,
196 scoped_refptr<IndexedDBCallbacks> callbacks);
197 191
198 // Number of connections that have progressed passed initial open call. 192 // Number of connections that have progressed passed initial open call.
199 size_t ConnectionCount() const { return connections_.size(); } 193 size_t ConnectionCount() const { return connections_.size(); }
200 194
201 // Number of active open/delete calls (running or blocked on other 195 // Number of active open/delete calls (running or blocked on other
202 // connections). 196 // connections).
203 size_t ActiveOpenDeleteCount() const { return active_request_ ? 1 : 0; } 197 size_t ActiveOpenDeleteCount() const { return active_request_ ? 1 : 0; }
204 198
205 // Number of open/delete calls that are waiting their turn. 199 // Number of open/delete calls that are waiting their turn.
206 size_t PendingOpenDeleteCount() const { return pending_requests_.size(); } 200 size_t PendingOpenDeleteCount() const { return pending_requests_.size(); }
207 201
208 // Asynchronous tasks scheduled within transactions: 202 // Asynchronous tasks scheduled within transactions:
209 void CreateObjectStoreAbortOperation(int64_t object_store_id, 203 void CreateObjectStoreAbortOperation(int64_t object_store_id,
210 IndexedDBTransaction* transaction); 204 IndexedDBTransaction* transaction);
211 void DeleteObjectStoreOperation(int64_t object_store_id, 205 void DeleteObjectStoreOperation(int64_t object_store_id,
212 IndexedDBTransaction* transaction); 206 IndexedDBTransaction* transaction);
213 void DeleteObjectStoreAbortOperation( 207 void DeleteObjectStoreAbortOperation(
214 const IndexedDBObjectStoreMetadata& object_store_metadata, 208 const IndexedDBObjectStoreMetadata& object_store_metadata,
215 IndexedDBTransaction* transaction); 209 IndexedDBTransaction* transaction);
216 void VersionChangeOperation(int64_t version, 210 void VersionChangeOperation(
217 scoped_refptr<IndexedDBCallbacks> callbacks, 211 const IndexedDBPendingConnection* pending_connection,
218 IndexedDBTransaction* transaction); 212 IndexedDBTransaction* transaction);
219 void VersionChangeAbortOperation(int64_t previous_version, 213 void VersionChangeAbortOperation(int64_t previous_version,
220 IndexedDBTransaction* transaction); 214 IndexedDBTransaction* transaction);
221 void DeleteIndexOperation(int64_t object_store_id, 215 void DeleteIndexOperation(int64_t object_store_id,
222 int64_t index_id, 216 int64_t index_id,
223 IndexedDBTransaction* transaction); 217 IndexedDBTransaction* transaction);
224 void CreateIndexAbortOperation(int64_t object_store_id, 218 void CreateIndexAbortOperation(int64_t object_store_id,
225 int64_t index_id, 219 int64_t index_id,
226 IndexedDBTransaction* transaction); 220 IndexedDBTransaction* transaction);
227 void DeleteIndexAbortOperation(int64_t object_store_id, 221 void DeleteIndexAbortOperation(int64_t object_store_id,
228 const IndexedDBIndexMetadata& index_metadata, 222 const IndexedDBIndexMetadata& index_metadata,
229 IndexedDBTransaction* transaction); 223 IndexedDBTransaction* transaction);
230 void GetOperation(int64_t object_store_id, 224 void GetOperation(int64_t object_store_id,
231 int64_t index_id, 225 int64_t index_id,
232 std::unique_ptr<IndexedDBKeyRange> key_range, 226 std::unique_ptr<IndexedDBKeyRange> key_range,
233 indexed_db::CursorType cursor_type, 227 indexed_db::CursorType cursor_type,
234 scoped_refptr<IndexedDBCallbacks> callbacks,
235 IndexedDBTransaction* transaction); 228 IndexedDBTransaction* transaction);
236 void GetAllOperation(int64_t object_store_id, 229 void GetAllOperation(int64_t object_store_id,
237 int64_t index_id, 230 int64_t index_id,
238 std::unique_ptr<IndexedDBKeyRange> key_range, 231 std::unique_ptr<IndexedDBKeyRange> key_range,
239 indexed_db::CursorType cursor_type, 232 indexed_db::CursorType cursor_type,
240 int64_t max_count, 233 int64_t max_count,
241 scoped_refptr<IndexedDBCallbacks> callbacks,
242 IndexedDBTransaction* transaction); 234 IndexedDBTransaction* transaction);
243 struct PutOperationParams; 235 struct PutOperationParams;
244 void PutOperation(std::unique_ptr<PutOperationParams> params, 236 void PutOperation(std::unique_ptr<PutOperationParams> params,
245 IndexedDBTransaction* transaction); 237 IndexedDBTransaction* transaction);
246 void SetIndexesReadyOperation(size_t index_count, 238 void SetIndexesReadyOperation(size_t index_count,
247 IndexedDBTransaction* transaction); 239 IndexedDBTransaction* transaction);
248 struct OpenCursorOperationParams; 240 struct OpenCursorOperationParams;
249 void OpenCursorOperation(std::unique_ptr<OpenCursorOperationParams> params, 241 void OpenCursorOperation(std::unique_ptr<OpenCursorOperationParams> params,
250 IndexedDBTransaction* transaction); 242 IndexedDBTransaction* transaction);
251 void CountOperation(int64_t object_store_id, 243 void CountOperation(int64_t object_store_id,
252 int64_t index_id, 244 int64_t index_id,
253 std::unique_ptr<IndexedDBKeyRange> key_range, 245 std::unique_ptr<IndexedDBKeyRange> key_range,
254 scoped_refptr<IndexedDBCallbacks> callbacks,
255 IndexedDBTransaction* transaction); 246 IndexedDBTransaction* transaction);
256 void DeleteRangeOperation(int64_t object_store_id, 247 void DeleteRangeOperation(int64_t object_store_id,
257 std::unique_ptr<IndexedDBKeyRange> key_range, 248 std::unique_ptr<IndexedDBKeyRange> key_range,
258 scoped_refptr<IndexedDBCallbacks> callbacks,
259 IndexedDBTransaction* transaction); 249 IndexedDBTransaction* transaction);
260 void ClearOperation(int64_t object_store_id, 250 void ClearOperation(int64_t object_store_id,
261 scoped_refptr<IndexedDBCallbacks> callbacks,
262 IndexedDBTransaction* transaction); 251 IndexedDBTransaction* transaction);
263 252
253 IndexedDBContext* context() const;
254
264 protected: 255 protected:
265 IndexedDBDatabase(const base::string16& name, 256 IndexedDBDatabase(const base::string16& name,
266 IndexedDBBackingStore* backing_store, 257 IndexedDBBackingStore* backing_store,
267 IndexedDBFactory* factory, 258 IndexedDBFactory* factory,
268 const Identifier& unique_identifier); 259 const Identifier& unique_identifier);
269 virtual ~IndexedDBDatabase(); 260 virtual ~IndexedDBDatabase();
270 261
271 // May be overridden in tests. 262 // May be overridden in tests.
272 virtual size_t GetMaxMessageSizeInBytes() const; 263 virtual size_t GetMaxMessageSizeInBytes() const;
273 264
(...skipping 13 matching lines...) Expand all
287 278
288 // Called by requests when complete. The request will be freed, so the 279 // Called by requests when complete. The request will be freed, so the
289 // request must do no other work after calling this. If there are pending 280 // request must do no other work after calling this. If there are pending
290 // requests, the queue will be synchronously processed. 281 // requests, the queue will be synchronously processed.
291 void RequestComplete(ConnectionRequest* request); 282 void RequestComplete(ConnectionRequest* request);
292 283
293 // Pop the first request from the queue and start it. 284 // Pop the first request from the queue and start it.
294 void ProcessRequestQueue(); 285 void ProcessRequestQueue();
295 286
296 std::unique_ptr<IndexedDBConnection> CreateConnection( 287 std::unique_ptr<IndexedDBConnection> CreateConnection(
297 scoped_refptr<IndexedDBDatabaseCallbacks> database_callbacks, 288 scoped_refptr<IndexedDBChangeHandler> change_handler,
298 int child_process_id); 289 int child_process_id);
299 290
300 IndexedDBTransaction* GetTransaction(int64_t transaction_id) const; 291 IndexedDBTransaction* GetTransaction(int64_t transaction_id) const;
301 292
302 bool ValidateObjectStoreId(int64_t object_store_id) const; 293 bool ValidateObjectStoreId(int64_t object_store_id) const;
303 bool ValidateObjectStoreIdAndIndexId(int64_t object_store_id, 294 bool ValidateObjectStoreIdAndIndexId(int64_t object_store_id,
304 int64_t index_id) const; 295 int64_t index_id) const;
305 bool ValidateObjectStoreIdAndOptionalIndexId(int64_t object_store_id, 296 bool ValidateObjectStoreIdAndOptionalIndexId(int64_t object_store_id,
306 int64_t index_id) const; 297 int64_t index_id) const;
307 bool ValidateObjectStoreIdAndNewIndexId(int64_t object_store_id, 298 bool ValidateObjectStoreIdAndNewIndexId(int64_t object_store_id,
(...skipping 27 matching lines...) Expand all
335 bool processing_pending_requests_ = false; 326 bool processing_pending_requests_ = false;
336 327
337 bool experimental_web_platform_features_enabled_; 328 bool experimental_web_platform_features_enabled_;
338 329
339 DISALLOW_COPY_AND_ASSIGN(IndexedDBDatabase); 330 DISALLOW_COPY_AND_ASSIGN(IndexedDBDatabase);
340 }; 331 };
341 332
342 } // namespace content 333 } // namespace content
343 334
344 #endif // CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_DATABASE_H_ 335 #endif // CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_DATABASE_H_
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_cursor.cc ('k') | content/browser/indexed_db/indexed_db_database.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698