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

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

Issue 475063004: IndexedDB + Coding Style: re-order enums/typedefs/... to match guide (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased after r291485 Created 6 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 | Annotate | Revision Log
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_BACKING_STORE_H_ 5 #ifndef CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_BACKING_STORE_H_
6 #define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_BACKING_STORE_H_ 6 #define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_BACKING_STORE_H_
7 7
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 49
50 class IndexedDBFactory; 50 class IndexedDBFactory;
51 class LevelDBComparator; 51 class LevelDBComparator;
52 class LevelDBDatabase; 52 class LevelDBDatabase;
53 class LevelDBFactory; 53 class LevelDBFactory;
54 struct IndexedDBValue; 54 struct IndexedDBValue;
55 55
56 class CONTENT_EXPORT IndexedDBBackingStore 56 class CONTENT_EXPORT IndexedDBBackingStore
57 : public base::RefCounted<IndexedDBBackingStore> { 57 : public base::RefCounted<IndexedDBBackingStore> {
58 public: 58 public:
59 class CONTENT_EXPORT Transaction;
60
61 class CONTENT_EXPORT Comparator : public LevelDBComparator { 59 class CONTENT_EXPORT Comparator : public LevelDBComparator {
62 public: 60 public:
63 virtual int Compare(const base::StringPiece& a, 61 virtual int Compare(const base::StringPiece& a,
64 const base::StringPiece& b) const OVERRIDE; 62 const base::StringPiece& b) const OVERRIDE;
65 virtual const char* Name() const OVERRIDE; 63 virtual const char* Name() const OVERRIDE;
66 }; 64 };
67 65
66 class CONTENT_EXPORT RecordIdentifier {
67 public:
68 RecordIdentifier(const std::string& primary_key, int64 version);
69 RecordIdentifier();
70 ~RecordIdentifier();
71
72 const std::string& primary_key() const { return primary_key_; }
73 int64 version() const { return version_; }
74 void Reset(const std::string& primary_key, int64 version) {
75 primary_key_ = primary_key;
76 version_ = version;
77 }
78
79 private:
80 // TODO(jsbell): Make it more clear that this is the *encoded* version of
81 // the key.
82 std::string primary_key_;
83 int64 version_;
84 DISALLOW_COPY_AND_ASSIGN(RecordIdentifier);
85 };
86
87 class BlobWriteCallback : public base::RefCounted<BlobWriteCallback> {
88 public:
89 virtual void Run(bool succeeded) = 0;
90
91 protected:
92 friend class base::RefCounted<BlobWriteCallback>;
93 virtual ~BlobWriteCallback() {}
94 };
95
96 class BlobChangeRecord {
97 public:
98 BlobChangeRecord(const std::string& key, int64 object_store_id);
99 ~BlobChangeRecord();
100
101 const std::string& key() const { return key_; }
102 int64 object_store_id() const { return object_store_id_; }
103 void SetBlobInfo(std::vector<IndexedDBBlobInfo>* blob_info);
104 std::vector<IndexedDBBlobInfo>& mutable_blob_info() { return blob_info_; }
105 const std::vector<IndexedDBBlobInfo>& blob_info() const {
106 return blob_info_;
107 }
108 void SetHandles(ScopedVector<storage::BlobDataHandle>* handles);
109 scoped_ptr<BlobChangeRecord> Clone() const;
110
111 private:
112 std::string key_;
113 int64 object_store_id_;
114 std::vector<IndexedDBBlobInfo> blob_info_;
115 ScopedVector<storage::BlobDataHandle> handles_;
116 DISALLOW_COPY_AND_ASSIGN(BlobChangeRecord);
117 };
118 typedef std::map<std::string, BlobChangeRecord*> BlobChangeMap;
119
120 class CONTENT_EXPORT Transaction {
121 public:
122 explicit Transaction(IndexedDBBackingStore* backing_store);
123 virtual ~Transaction();
124
125 virtual void Begin();
126 // The callback will be called eventually on success or failure, or
127 // immediately if phase one is complete due to lack of any blobs to write.
128 virtual leveldb::Status CommitPhaseOne(scoped_refptr<BlobWriteCallback>);
129 virtual leveldb::Status CommitPhaseTwo();
130 virtual void Rollback();
131 void Reset() {
132 backing_store_ = NULL;
133 transaction_ = NULL;
134 }
135 leveldb::Status PutBlobInfoIfNeeded(
136 int64 database_id,
137 int64 object_store_id,
138 const std::string& object_store_data_key,
139 std::vector<IndexedDBBlobInfo>*,
140 ScopedVector<storage::BlobDataHandle>* handles);
141 void PutBlobInfo(int64 database_id,
142 int64 object_store_id,
143 const std::string& object_store_data_key,
144 std::vector<IndexedDBBlobInfo>*,
145 ScopedVector<storage::BlobDataHandle>* handles);
146
147 LevelDBTransaction* transaction() { return transaction_; }
148
149 leveldb::Status GetBlobInfoForRecord(
150 int64 database_id,
151 const std::string& object_store_data_key,
152 IndexedDBValue* value);
153
154 // This holds a BlobEntryKey and the encoded IndexedDBBlobInfo vector stored
155 // under that key.
156 typedef std::vector<std::pair<BlobEntryKey, std::string> >
157 BlobEntryKeyValuePairVec;
158
159 class WriteDescriptor {
160 public:
161 WriteDescriptor(const GURL& url, int64_t key, int64_t size);
162 WriteDescriptor(const base::FilePath& path,
163 int64_t key,
164 int64_t size,
165 base::Time last_modified);
166
167 bool is_file() const { return is_file_; }
168 const GURL& url() const {
169 DCHECK(!is_file_);
170 return url_;
171 }
172 const base::FilePath& file_path() const {
173 DCHECK(is_file_);
174 return file_path_;
175 }
176 int64_t key() const { return key_; }
177 int64_t size() const { return size_; }
178 base::Time last_modified() const { return last_modified_; }
179
180 private:
181 bool is_file_;
182 GURL url_;
183 base::FilePath file_path_;
184 int64_t key_;
185 int64_t size_;
186 base::Time last_modified_;
187 };
188
189 class ChainedBlobWriter
190 : public base::RefCountedThreadSafe<ChainedBlobWriter> {
191 public:
192 virtual void set_delegate(
193 scoped_ptr<storage::FileWriterDelegate> delegate) = 0;
194
195 // TODO(ericu): Add a reason in the event of failure.
196 virtual void ReportWriteCompletion(bool succeeded,
197 int64 bytes_written) = 0;
198
199 virtual void Abort() = 0;
200
201 protected:
202 friend class base::RefCountedThreadSafe<ChainedBlobWriter>;
203 virtual ~ChainedBlobWriter() {}
204 };
205
206 class ChainedBlobWriterImpl;
207
208 typedef std::vector<WriteDescriptor> WriteDescriptorVec;
209
210 private:
211 class BlobWriteCallbackWrapper;
212
213 leveldb::Status HandleBlobPreTransaction(
214 BlobEntryKeyValuePairVec* new_blob_entries,
215 WriteDescriptorVec* new_files_to_write);
216 // Returns true on success, false on failure.
217 bool CollectBlobFilesToRemove();
218 // The callback will be called eventually on success or failure.
219 void WriteNewBlobs(BlobEntryKeyValuePairVec* new_blob_entries,
220 WriteDescriptorVec* new_files_to_write,
221 scoped_refptr<BlobWriteCallback> callback);
222 leveldb::Status SortBlobsToRemove();
223
224 IndexedDBBackingStore* backing_store_;
225 scoped_refptr<LevelDBTransaction> transaction_;
226 BlobChangeMap blob_change_map_;
227 BlobChangeMap incognito_blob_map_;
228 int64 database_id_;
229 BlobJournalType blobs_to_remove_;
230 scoped_refptr<ChainedBlobWriter> chained_blob_writer_;
231 };
232
233 class Cursor {
234 public:
235 enum IteratorState { READY = 0, SEEK };
236
237 virtual ~Cursor();
238
239 struct CursorOptions {
240 CursorOptions();
241 ~CursorOptions();
242 int64 database_id;
243 int64 object_store_id;
244 int64 index_id;
245 std::string low_key;
246 bool low_open;
247 std::string high_key;
248 bool high_open;
249 bool forward;
250 bool unique;
251 };
252
253 const IndexedDBKey& key() const { return *current_key_; }
254 bool Continue(leveldb::Status* s) { return Continue(NULL, NULL, SEEK, s); }
255 bool Continue(const IndexedDBKey* key,
256 IteratorState state,
257 leveldb::Status* s) {
258 return Continue(key, NULL, state, s);
259 }
260 bool Continue(const IndexedDBKey* key,
261 const IndexedDBKey* primary_key,
262 IteratorState state,
263 leveldb::Status*);
264 bool Advance(uint32 count, leveldb::Status*);
265 bool FirstSeek(leveldb::Status*);
266
267 virtual Cursor* Clone() = 0;
268 virtual const IndexedDBKey& primary_key() const;
269 virtual IndexedDBValue* value() = 0;
270 virtual const RecordIdentifier& record_identifier() const;
271 virtual bool LoadCurrentRow() = 0;
272
273 protected:
274 Cursor(scoped_refptr<IndexedDBBackingStore> backing_store,
275 Transaction* transaction,
276 int64 database_id,
277 const CursorOptions& cursor_options);
278 explicit Cursor(const IndexedDBBackingStore::Cursor* other);
279
280 virtual std::string EncodeKey(const IndexedDBKey& key) = 0;
281 virtual std::string EncodeKey(const IndexedDBKey& key,
282 const IndexedDBKey& primary_key) = 0;
283
284 bool IsPastBounds() const;
285 bool HaveEnteredRange() const;
286
287 IndexedDBBackingStore* backing_store_;
288 Transaction* transaction_;
289 int64 database_id_;
290 const CursorOptions cursor_options_;
291 scoped_ptr<LevelDBIterator> iterator_;
292 scoped_ptr<IndexedDBKey> current_key_;
293 IndexedDBBackingStore::RecordIdentifier record_identifier_;
294
295 private:
296 DISALLOW_COPY_AND_ASSIGN(Cursor);
297 };
298
68 const GURL& origin_url() const { return origin_url_; } 299 const GURL& origin_url() const { return origin_url_; }
69 IndexedDBFactory* factory() const { return indexed_db_factory_; } 300 IndexedDBFactory* factory() const { return indexed_db_factory_; }
70 base::SequencedTaskRunner* task_runner() const { return task_runner_.get(); } 301 base::SequencedTaskRunner* task_runner() const { return task_runner_.get(); }
71 base::OneShotTimer<IndexedDBBackingStore>* close_timer() { 302 base::OneShotTimer<IndexedDBBackingStore>* close_timer() {
72 return &close_timer_; 303 return &close_timer_;
73 } 304 }
74 IndexedDBActiveBlobRegistry* active_blob_registry() { 305 IndexedDBActiveBlobRegistry* active_blob_registry() {
75 return &active_blob_registry_; 306 return &active_blob_registry_;
76 } 307 }
77 308
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 int64 database_id, 373 int64 database_id,
143 int64 object_store_id, 374 int64 object_store_id,
144 const base::string16& name, 375 const base::string16& name,
145 const IndexedDBKeyPath& key_path, 376 const IndexedDBKeyPath& key_path,
146 bool auto_increment); 377 bool auto_increment);
147 virtual leveldb::Status DeleteObjectStore( 378 virtual leveldb::Status DeleteObjectStore(
148 IndexedDBBackingStore::Transaction* transaction, 379 IndexedDBBackingStore::Transaction* transaction,
149 int64 database_id, 380 int64 database_id,
150 int64 object_store_id) WARN_UNUSED_RESULT; 381 int64 object_store_id) WARN_UNUSED_RESULT;
151 382
152 class CONTENT_EXPORT RecordIdentifier {
153 public:
154 RecordIdentifier(const std::string& primary_key, int64 version);
155 RecordIdentifier();
156 ~RecordIdentifier();
157
158 const std::string& primary_key() const { return primary_key_; }
159 int64 version() const { return version_; }
160 void Reset(const std::string& primary_key, int64 version) {
161 primary_key_ = primary_key;
162 version_ = version;
163 }
164
165 private:
166 // TODO(jsbell): Make it more clear that this is the *encoded* version of
167 // the key.
168 std::string primary_key_;
169 int64 version_;
170 DISALLOW_COPY_AND_ASSIGN(RecordIdentifier);
171 };
172
173 class BlobWriteCallback : public base::RefCounted<BlobWriteCallback> {
174 public:
175 virtual void Run(bool succeeded) = 0;
176
177 protected:
178 friend class base::RefCounted<BlobWriteCallback>;
179 virtual ~BlobWriteCallback() {}
180 };
181
182 virtual leveldb::Status GetRecord( 383 virtual leveldb::Status GetRecord(
183 IndexedDBBackingStore::Transaction* transaction, 384 IndexedDBBackingStore::Transaction* transaction,
184 int64 database_id, 385 int64 database_id,
185 int64 object_store_id, 386 int64 object_store_id,
186 const IndexedDBKey& key, 387 const IndexedDBKey& key,
187 IndexedDBValue* record) WARN_UNUSED_RESULT; 388 IndexedDBValue* record) WARN_UNUSED_RESULT;
188 virtual leveldb::Status PutRecord( 389 virtual leveldb::Status PutRecord(
189 IndexedDBBackingStore::Transaction* transaction, 390 IndexedDBBackingStore::Transaction* transaction,
190 int64 database_id, 391 int64 database_id,
191 int64 object_store_id, 392 int64 object_store_id,
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 int64 index_id, 462 int64 index_id,
262 const IndexedDBKey& key, 463 const IndexedDBKey& key,
263 scoped_ptr<IndexedDBKey>* found_primary_key, 464 scoped_ptr<IndexedDBKey>* found_primary_key,
264 bool* exists) WARN_UNUSED_RESULT; 465 bool* exists) WARN_UNUSED_RESULT;
265 466
266 // Public for IndexedDBActiveBlobRegistry::ReleaseBlobRef. 467 // Public for IndexedDBActiveBlobRegistry::ReleaseBlobRef.
267 virtual void ReportBlobUnused(int64 database_id, int64 blob_key); 468 virtual void ReportBlobUnused(int64 database_id, int64 blob_key);
268 469
269 base::FilePath GetBlobFileName(int64 database_id, int64 key); 470 base::FilePath GetBlobFileName(int64 database_id, int64 key);
270 471
271 class Cursor {
272 public:
273 virtual ~Cursor();
274
275 enum IteratorState {
276 READY = 0,
277 SEEK
278 };
279
280 struct CursorOptions {
281 CursorOptions();
282 ~CursorOptions();
283 int64 database_id;
284 int64 object_store_id;
285 int64 index_id;
286 std::string low_key;
287 bool low_open;
288 std::string high_key;
289 bool high_open;
290 bool forward;
291 bool unique;
292 };
293
294 const IndexedDBKey& key() const { return *current_key_; }
295 bool Continue(leveldb::Status* s) { return Continue(NULL, NULL, SEEK, s); }
296 bool Continue(const IndexedDBKey* key,
297 IteratorState state,
298 leveldb::Status* s) {
299 return Continue(key, NULL, state, s);
300 }
301 bool Continue(const IndexedDBKey* key,
302 const IndexedDBKey* primary_key,
303 IteratorState state,
304 leveldb::Status*);
305 bool Advance(uint32 count, leveldb::Status*);
306 bool FirstSeek(leveldb::Status*);
307
308 virtual Cursor* Clone() = 0;
309 virtual const IndexedDBKey& primary_key() const;
310 virtual IndexedDBValue* value() = 0;
311 virtual const RecordIdentifier& record_identifier() const;
312 virtual bool LoadCurrentRow() = 0;
313
314 protected:
315 Cursor(scoped_refptr<IndexedDBBackingStore> backing_store,
316 Transaction* transaction,
317 int64 database_id,
318 const CursorOptions& cursor_options);
319 explicit Cursor(const IndexedDBBackingStore::Cursor* other);
320
321 virtual std::string EncodeKey(const IndexedDBKey& key) = 0;
322 virtual std::string EncodeKey(const IndexedDBKey& key,
323 const IndexedDBKey& primary_key) = 0;
324
325 bool IsPastBounds() const;
326 bool HaveEnteredRange() const;
327
328 IndexedDBBackingStore* backing_store_;
329 Transaction* transaction_;
330 int64 database_id_;
331 const CursorOptions cursor_options_;
332 scoped_ptr<LevelDBIterator> iterator_;
333 scoped_ptr<IndexedDBKey> current_key_;
334 IndexedDBBackingStore::RecordIdentifier record_identifier_;
335
336 private:
337 DISALLOW_COPY_AND_ASSIGN(Cursor);
338 };
339
340 virtual scoped_ptr<Cursor> OpenObjectStoreKeyCursor( 472 virtual scoped_ptr<Cursor> OpenObjectStoreKeyCursor(
341 IndexedDBBackingStore::Transaction* transaction, 473 IndexedDBBackingStore::Transaction* transaction,
342 int64 database_id, 474 int64 database_id,
343 int64 object_store_id, 475 int64 object_store_id,
344 const IndexedDBKeyRange& key_range, 476 const IndexedDBKeyRange& key_range,
345 blink::WebIDBCursorDirection, 477 blink::WebIDBCursorDirection,
346 leveldb::Status*); 478 leveldb::Status*);
347 virtual scoped_ptr<Cursor> OpenObjectStoreCursor( 479 virtual scoped_ptr<Cursor> OpenObjectStoreCursor(
348 IndexedDBBackingStore::Transaction* transaction, 480 IndexedDBBackingStore::Transaction* transaction,
349 int64 database_id, 481 int64 database_id,
(...skipping 11 matching lines...) Expand all
361 leveldb::Status*); 493 leveldb::Status*);
362 virtual scoped_ptr<Cursor> OpenIndexCursor( 494 virtual scoped_ptr<Cursor> OpenIndexCursor(
363 IndexedDBBackingStore::Transaction* transaction, 495 IndexedDBBackingStore::Transaction* transaction,
364 int64 database_id, 496 int64 database_id,
365 int64 object_store_id, 497 int64 object_store_id,
366 int64 index_id, 498 int64 index_id,
367 const IndexedDBKeyRange& key_range, 499 const IndexedDBKeyRange& key_range,
368 blink::WebIDBCursorDirection, 500 blink::WebIDBCursorDirection,
369 leveldb::Status*); 501 leveldb::Status*);
370 502
371 class BlobChangeRecord {
372 public:
373 BlobChangeRecord(const std::string& key, int64 object_store_id);
374 ~BlobChangeRecord();
375 const std::string& key() const { return key_; }
376 int64 object_store_id() const { return object_store_id_; }
377 void SetBlobInfo(std::vector<IndexedDBBlobInfo>* blob_info);
378 std::vector<IndexedDBBlobInfo>& mutable_blob_info() { return blob_info_; }
379 const std::vector<IndexedDBBlobInfo>& blob_info() const {
380 return blob_info_;
381 }
382 void SetHandles(ScopedVector<storage::BlobDataHandle>* handles);
383 scoped_ptr<BlobChangeRecord> Clone() const;
384
385 private:
386 std::string key_;
387 int64 object_store_id_;
388 std::vector<IndexedDBBlobInfo> blob_info_;
389 ScopedVector<storage::BlobDataHandle> handles_;
390 DISALLOW_COPY_AND_ASSIGN(BlobChangeRecord);
391 };
392 typedef std::map<std::string, BlobChangeRecord*> BlobChangeMap;
393
394 class Transaction {
395 public:
396 explicit Transaction(IndexedDBBackingStore* backing_store);
397 virtual ~Transaction();
398 virtual void Begin();
399 // The callback will be called eventually on success or failure, or
400 // immediately if phase one is complete due to lack of any blobs to write.
401 virtual leveldb::Status CommitPhaseOne(scoped_refptr<BlobWriteCallback>);
402 virtual leveldb::Status CommitPhaseTwo();
403 virtual void Rollback();
404 void Reset() {
405 backing_store_ = NULL;
406 transaction_ = NULL;
407 }
408 leveldb::Status PutBlobInfoIfNeeded(
409 int64 database_id,
410 int64 object_store_id,
411 const std::string& object_store_data_key,
412 std::vector<IndexedDBBlobInfo>*,
413 ScopedVector<storage::BlobDataHandle>* handles);
414 void PutBlobInfo(int64 database_id,
415 int64 object_store_id,
416 const std::string& object_store_data_key,
417 std::vector<IndexedDBBlobInfo>*,
418 ScopedVector<storage::BlobDataHandle>* handles);
419
420 LevelDBTransaction* transaction() { return transaction_; }
421
422 leveldb::Status GetBlobInfoForRecord(
423 int64 database_id,
424 const std::string& object_store_data_key,
425 IndexedDBValue* value);
426
427 // This holds a BlobEntryKey and the encoded IndexedDBBlobInfo vector stored
428 // under that key.
429 typedef std::vector<std::pair<BlobEntryKey, std::string> >
430 BlobEntryKeyValuePairVec;
431
432 class WriteDescriptor {
433 public:
434 WriteDescriptor(const GURL& url, int64_t key, int64_t size);
435 WriteDescriptor(const base::FilePath& path,
436 int64_t key,
437 int64_t size,
438 base::Time last_modified);
439
440 bool is_file() const { return is_file_; }
441 const GURL& url() const {
442 DCHECK(!is_file_);
443 return url_;
444 }
445 const base::FilePath& file_path() const {
446 DCHECK(is_file_);
447 return file_path_;
448 }
449 int64_t key() const { return key_; }
450 int64_t size() const { return size_; }
451 base::Time last_modified() const { return last_modified_; }
452
453 private:
454 bool is_file_;
455 GURL url_;
456 base::FilePath file_path_;
457 int64_t key_;
458 int64_t size_;
459 base::Time last_modified_;
460 };
461
462 class ChainedBlobWriter
463 : public base::RefCountedThreadSafe<ChainedBlobWriter> {
464 public:
465 virtual void set_delegate(
466 scoped_ptr<storage::FileWriterDelegate> delegate) = 0;
467
468 // TODO(ericu): Add a reason in the event of failure.
469 virtual void ReportWriteCompletion(bool succeeded,
470 int64 bytes_written) = 0;
471
472 virtual void Abort() = 0;
473
474 protected:
475 friend class base::RefCountedThreadSafe<ChainedBlobWriter>;
476 virtual ~ChainedBlobWriter() {}
477 };
478
479 class ChainedBlobWriterImpl;
480
481 typedef std::vector<WriteDescriptor> WriteDescriptorVec;
482
483 private:
484 class BlobWriteCallbackWrapper;
485
486 leveldb::Status HandleBlobPreTransaction(
487 BlobEntryKeyValuePairVec* new_blob_entries,
488 WriteDescriptorVec* new_files_to_write);
489 // Returns true on success, false on failure.
490 bool CollectBlobFilesToRemove();
491 // The callback will be called eventually on success or failure.
492 void WriteNewBlobs(BlobEntryKeyValuePairVec* new_blob_entries,
493 WriteDescriptorVec* new_files_to_write,
494 scoped_refptr<BlobWriteCallback> callback);
495 leveldb::Status SortBlobsToRemove();
496
497 IndexedDBBackingStore* backing_store_;
498 scoped_refptr<LevelDBTransaction> transaction_;
499 BlobChangeMap blob_change_map_;
500 BlobChangeMap incognito_blob_map_;
501 int64 database_id_;
502 BlobJournalType blobs_to_remove_;
503 scoped_refptr<ChainedBlobWriter> chained_blob_writer_;
504 };
505
506 protected: 503 protected:
507 friend class base::RefCounted<IndexedDBBackingStore>; 504 friend class base::RefCounted<IndexedDBBackingStore>;
505
508 IndexedDBBackingStore(IndexedDBFactory* indexed_db_factory, 506 IndexedDBBackingStore(IndexedDBFactory* indexed_db_factory,
509 const GURL& origin_url, 507 const GURL& origin_url,
510 const base::FilePath& blob_path, 508 const base::FilePath& blob_path,
511 net::URLRequestContext* request_context, 509 net::URLRequestContext* request_context,
512 scoped_ptr<LevelDBDatabase> db, 510 scoped_ptr<LevelDBDatabase> db,
513 scoped_ptr<LevelDBComparator> comparator, 511 scoped_ptr<LevelDBComparator> comparator,
514 base::SequencedTaskRunner* task_runner); 512 base::SequencedTaskRunner* task_runner);
515 virtual ~IndexedDBBackingStore(); 513 virtual ~IndexedDBBackingStore();
516 514
517 bool is_incognito() const { return !indexed_db_factory_; } 515 bool is_incognito() const { return !indexed_db_factory_; }
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 // will hold a reference to this backing store. 578 // will hold a reference to this backing store.
581 IndexedDBActiveBlobRegistry active_blob_registry_; 579 IndexedDBActiveBlobRegistry active_blob_registry_;
582 base::OneShotTimer<IndexedDBBackingStore> close_timer_; 580 base::OneShotTimer<IndexedDBBackingStore> close_timer_;
583 581
584 DISALLOW_COPY_AND_ASSIGN(IndexedDBBackingStore); 582 DISALLOW_COPY_AND_ASSIGN(IndexedDBBackingStore);
585 }; 583 };
586 584
587 } // namespace content 585 } // namespace content
588 586
589 #endif // CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_BACKING_STORE_H_ 587 #endif // CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_BACKING_STORE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698