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

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

Issue 667943003: Standardize usage of virtual/override/final in content/browser/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 #include "content/browser/indexed_db/indexed_db_backing_store.h" 5 #include "content/browser/indexed_db/indexed_db_backing_store.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 if (!found) 479 if (!found)
480 *max_object_store_id = 0; 480 *max_object_store_id = 0;
481 481
482 DCHECK_GE(*max_object_store_id, 0); 482 DCHECK_GE(*max_object_store_id, 0);
483 return s; 483 return s;
484 } 484 }
485 485
486 class DefaultLevelDBFactory : public LevelDBFactory { 486 class DefaultLevelDBFactory : public LevelDBFactory {
487 public: 487 public:
488 DefaultLevelDBFactory() {} 488 DefaultLevelDBFactory() {}
489 virtual leveldb::Status OpenLevelDB(const base::FilePath& file_name, 489 leveldb::Status OpenLevelDB(const base::FilePath& file_name,
490 const LevelDBComparator* comparator, 490 const LevelDBComparator* comparator,
491 scoped_ptr<LevelDBDatabase>* db, 491 scoped_ptr<LevelDBDatabase>* db,
492 bool* is_disk_full) override { 492 bool* is_disk_full) override {
493 return LevelDBDatabase::Open(file_name, comparator, db, is_disk_full); 493 return LevelDBDatabase::Open(file_name, comparator, db, is_disk_full);
494 } 494 }
495 virtual leveldb::Status DestroyLevelDB(const base::FilePath& file_name) 495 leveldb::Status DestroyLevelDB(const base::FilePath& file_name) override {
496 override {
497 return LevelDBDatabase::Destroy(file_name); 496 return LevelDBDatabase::Destroy(file_name);
498 } 497 }
499 498
500 private: 499 private:
501 DISALLOW_COPY_AND_ASSIGN(DefaultLevelDBFactory); 500 DISALLOW_COPY_AND_ASSIGN(DefaultLevelDBFactory);
502 }; 501 };
503 502
504 static bool GetBlobKeyGeneratorCurrentNumber( 503 static bool GetBlobKeyGeneratorCurrentNumber(
505 LevelDBTransaction* leveldb_transaction, 504 LevelDBTransaction* leveldb_transaction,
506 int64 database_id, 505 int64 database_id,
(...skipping 1693 matching lines...) Expand 10 before | Expand all | Expand 10 after
2200 database_id_(database_id), 2199 database_id_(database_id),
2201 backing_store_(backing_store), 2200 backing_store_(backing_store),
2202 callback_(callback), 2201 callback_(callback),
2203 aborted_(false) { 2202 aborted_(false) {
2204 blobs_.swap(*blobs); 2203 blobs_.swap(*blobs);
2205 iter_ = blobs_.begin(); 2204 iter_ = blobs_.begin();
2206 backing_store->task_runner()->PostTask( 2205 backing_store->task_runner()->PostTask(
2207 FROM_HERE, base::Bind(&ChainedBlobWriterImpl::WriteNextFile, this)); 2206 FROM_HERE, base::Bind(&ChainedBlobWriterImpl::WriteNextFile, this));
2208 } 2207 }
2209 2208
2210 virtual void set_delegate(scoped_ptr<FileWriterDelegate> delegate) override { 2209 void set_delegate(scoped_ptr<FileWriterDelegate> delegate) override {
2211 delegate_.reset(delegate.release()); 2210 delegate_.reset(delegate.release());
2212 } 2211 }
2213 2212
2214 virtual void ReportWriteCompletion(bool succeeded, 2213 void ReportWriteCompletion(bool succeeded, int64 bytes_written) override {
2215 int64 bytes_written) override {
2216 DCHECK(waiting_for_callback_); 2214 DCHECK(waiting_for_callback_);
2217 DCHECK(!succeeded || bytes_written >= 0); 2215 DCHECK(!succeeded || bytes_written >= 0);
2218 waiting_for_callback_ = false; 2216 waiting_for_callback_ = false;
2219 if (delegate_.get()) // Only present for Blob, not File. 2217 if (delegate_.get()) // Only present for Blob, not File.
2220 content::BrowserThread::DeleteSoon( 2218 content::BrowserThread::DeleteSoon(
2221 content::BrowserThread::IO, FROM_HERE, delegate_.release()); 2219 content::BrowserThread::IO, FROM_HERE, delegate_.release());
2222 if (aborted_) { 2220 if (aborted_) {
2223 self_ref_ = NULL; 2221 self_ref_ = NULL;
2224 return; 2222 return;
2225 } 2223 }
2226 if (iter_->size() != -1 && iter_->size() != bytes_written) 2224 if (iter_->size() != -1 && iter_->size() != bytes_written)
2227 succeeded = false; 2225 succeeded = false;
2228 if (succeeded) { 2226 if (succeeded) {
2229 ++iter_; 2227 ++iter_;
2230 WriteNextFile(); 2228 WriteNextFile();
2231 } else { 2229 } else {
2232 callback_->Run(false); 2230 callback_->Run(false);
2233 } 2231 }
2234 } 2232 }
2235 2233
2236 virtual void Abort() override { 2234 void Abort() override {
2237 if (!waiting_for_callback_) 2235 if (!waiting_for_callback_)
2238 return; 2236 return;
2239 self_ref_ = this; 2237 self_ref_ = this;
2240 aborted_ = true; 2238 aborted_ = true;
2241 } 2239 }
2242 2240
2243 private: 2241 private:
2244 virtual ~ChainedBlobWriterImpl() {} 2242 ~ChainedBlobWriterImpl() override {}
2245 2243
2246 void WriteNextFile() { 2244 void WriteNextFile() {
2247 DCHECK(!waiting_for_callback_); 2245 DCHECK(!waiting_for_callback_);
2248 DCHECK(!aborted_); 2246 DCHECK(!aborted_);
2249 if (iter_ == blobs_.end()) { 2247 if (iter_ == blobs_.end()) {
2250 DCHECK(!self_ref_.get()); 2248 DCHECK(!self_ref_.get());
2251 callback_->Run(true); 2249 callback_->Run(true);
2252 return; 2250 return;
2253 } else { 2251 } else {
2254 if (!backing_store_->WriteBlobFile(database_id_, *iter_, this)) { 2252 if (!backing_store_->WriteBlobFile(database_id_, *iter_, this)) {
(...skipping 990 matching lines...) Expand 10 before | Expand all | Expand 10 after
3245 ObjectStoreKeyCursorImpl( 3243 ObjectStoreKeyCursorImpl(
3246 scoped_refptr<IndexedDBBackingStore> backing_store, 3244 scoped_refptr<IndexedDBBackingStore> backing_store,
3247 IndexedDBBackingStore::Transaction* transaction, 3245 IndexedDBBackingStore::Transaction* transaction,
3248 int64 database_id, 3246 int64 database_id,
3249 const IndexedDBBackingStore::Cursor::CursorOptions& cursor_options) 3247 const IndexedDBBackingStore::Cursor::CursorOptions& cursor_options)
3250 : IndexedDBBackingStore::Cursor(backing_store, 3248 : IndexedDBBackingStore::Cursor(backing_store,
3251 transaction, 3249 transaction,
3252 database_id, 3250 database_id,
3253 cursor_options) {} 3251 cursor_options) {}
3254 3252
3255 virtual Cursor* Clone() override { 3253 Cursor* Clone() override { return new ObjectStoreKeyCursorImpl(this); }
3256 return new ObjectStoreKeyCursorImpl(this);
3257 }
3258 3254
3259 // IndexedDBBackingStore::Cursor 3255 // IndexedDBBackingStore::Cursor
3260 virtual IndexedDBValue* value() override { 3256 IndexedDBValue* value() override {
3261 NOTREACHED(); 3257 NOTREACHED();
3262 return NULL; 3258 return NULL;
3263 } 3259 }
3264 virtual bool LoadCurrentRow() override; 3260 bool LoadCurrentRow() override;
3265 3261
3266 protected: 3262 protected:
3267 virtual std::string EncodeKey(const IndexedDBKey& key) override { 3263 std::string EncodeKey(const IndexedDBKey& key) override {
3268 return ObjectStoreDataKey::Encode( 3264 return ObjectStoreDataKey::Encode(
3269 cursor_options_.database_id, cursor_options_.object_store_id, key); 3265 cursor_options_.database_id, cursor_options_.object_store_id, key);
3270 } 3266 }
3271 virtual std::string EncodeKey(const IndexedDBKey& key, 3267 std::string EncodeKey(const IndexedDBKey& key,
3272 const IndexedDBKey& primary_key) override { 3268 const IndexedDBKey& primary_key) override {
3273 NOTREACHED(); 3269 NOTREACHED();
3274 return std::string(); 3270 return std::string();
3275 } 3271 }
3276 3272
3277 private: 3273 private:
3278 explicit ObjectStoreKeyCursorImpl(const ObjectStoreKeyCursorImpl* other) 3274 explicit ObjectStoreKeyCursorImpl(const ObjectStoreKeyCursorImpl* other)
3279 : IndexedDBBackingStore::Cursor(other) {} 3275 : IndexedDBBackingStore::Cursor(other) {}
3280 3276
3281 DISALLOW_COPY_AND_ASSIGN(ObjectStoreKeyCursorImpl); 3277 DISALLOW_COPY_AND_ASSIGN(ObjectStoreKeyCursorImpl);
3282 }; 3278 };
(...skipping 28 matching lines...) Expand all
3311 ObjectStoreCursorImpl( 3307 ObjectStoreCursorImpl(
3312 scoped_refptr<IndexedDBBackingStore> backing_store, 3308 scoped_refptr<IndexedDBBackingStore> backing_store,
3313 IndexedDBBackingStore::Transaction* transaction, 3309 IndexedDBBackingStore::Transaction* transaction,
3314 int64 database_id, 3310 int64 database_id,
3315 const IndexedDBBackingStore::Cursor::CursorOptions& cursor_options) 3311 const IndexedDBBackingStore::Cursor::CursorOptions& cursor_options)
3316 : IndexedDBBackingStore::Cursor(backing_store, 3312 : IndexedDBBackingStore::Cursor(backing_store,
3317 transaction, 3313 transaction,
3318 database_id, 3314 database_id,
3319 cursor_options) {} 3315 cursor_options) {}
3320 3316
3321 virtual Cursor* Clone() override { return new ObjectStoreCursorImpl(this); } 3317 Cursor* Clone() override { return new ObjectStoreCursorImpl(this); }
3322 3318
3323 // IndexedDBBackingStore::Cursor 3319 // IndexedDBBackingStore::Cursor
3324 virtual IndexedDBValue* value() override { return &current_value_; } 3320 IndexedDBValue* value() override { return &current_value_; }
3325 virtual bool LoadCurrentRow() override; 3321 bool LoadCurrentRow() override;
3326 3322
3327 protected: 3323 protected:
3328 virtual std::string EncodeKey(const IndexedDBKey& key) override { 3324 std::string EncodeKey(const IndexedDBKey& key) override {
3329 return ObjectStoreDataKey::Encode( 3325 return ObjectStoreDataKey::Encode(
3330 cursor_options_.database_id, cursor_options_.object_store_id, key); 3326 cursor_options_.database_id, cursor_options_.object_store_id, key);
3331 } 3327 }
3332 virtual std::string EncodeKey(const IndexedDBKey& key, 3328 std::string EncodeKey(const IndexedDBKey& key,
3333 const IndexedDBKey& primary_key) override { 3329 const IndexedDBKey& primary_key) override {
3334 NOTREACHED(); 3330 NOTREACHED();
3335 return std::string(); 3331 return std::string();
3336 } 3332 }
3337 3333
3338 private: 3334 private:
3339 explicit ObjectStoreCursorImpl(const ObjectStoreCursorImpl* other) 3335 explicit ObjectStoreCursorImpl(const ObjectStoreCursorImpl* other)
3340 : IndexedDBBackingStore::Cursor(other), 3336 : IndexedDBBackingStore::Cursor(other),
3341 current_value_(other->current_value_) {} 3337 current_value_(other->current_value_) {}
3342 3338
3343 IndexedDBValue current_value_; 3339 IndexedDBValue current_value_;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
3381 IndexKeyCursorImpl( 3377 IndexKeyCursorImpl(
3382 scoped_refptr<IndexedDBBackingStore> backing_store, 3378 scoped_refptr<IndexedDBBackingStore> backing_store,
3383 IndexedDBBackingStore::Transaction* transaction, 3379 IndexedDBBackingStore::Transaction* transaction,
3384 int64 database_id, 3380 int64 database_id,
3385 const IndexedDBBackingStore::Cursor::CursorOptions& cursor_options) 3381 const IndexedDBBackingStore::Cursor::CursorOptions& cursor_options)
3386 : IndexedDBBackingStore::Cursor(backing_store, 3382 : IndexedDBBackingStore::Cursor(backing_store,
3387 transaction, 3383 transaction,
3388 database_id, 3384 database_id,
3389 cursor_options) {} 3385 cursor_options) {}
3390 3386
3391 virtual Cursor* Clone() override { return new IndexKeyCursorImpl(this); } 3387 Cursor* Clone() override { return new IndexKeyCursorImpl(this); }
3392 3388
3393 // IndexedDBBackingStore::Cursor 3389 // IndexedDBBackingStore::Cursor
3394 virtual IndexedDBValue* value() override { 3390 IndexedDBValue* value() override {
3395 NOTREACHED(); 3391 NOTREACHED();
3396 return NULL; 3392 return NULL;
3397 } 3393 }
3398 virtual const IndexedDBKey& primary_key() const override { 3394 const IndexedDBKey& primary_key() const override { return *primary_key_; }
3399 return *primary_key_; 3395 const IndexedDBBackingStore::RecordIdentifier& record_identifier()
3400 }
3401 virtual const IndexedDBBackingStore::RecordIdentifier& record_identifier()
3402 const override { 3396 const override {
3403 NOTREACHED(); 3397 NOTREACHED();
3404 return record_identifier_; 3398 return record_identifier_;
3405 } 3399 }
3406 virtual bool LoadCurrentRow() override; 3400 bool LoadCurrentRow() override;
3407 3401
3408 protected: 3402 protected:
3409 virtual std::string EncodeKey(const IndexedDBKey& key) override { 3403 std::string EncodeKey(const IndexedDBKey& key) override {
3410 return IndexDataKey::Encode(cursor_options_.database_id, 3404 return IndexDataKey::Encode(cursor_options_.database_id,
3411 cursor_options_.object_store_id, 3405 cursor_options_.object_store_id,
3412 cursor_options_.index_id, 3406 cursor_options_.index_id,
3413 key); 3407 key);
3414 } 3408 }
3415 virtual std::string EncodeKey(const IndexedDBKey& key, 3409 std::string EncodeKey(const IndexedDBKey& key,
3416 const IndexedDBKey& primary_key) override { 3410 const IndexedDBKey& primary_key) override {
3417 return IndexDataKey::Encode(cursor_options_.database_id, 3411 return IndexDataKey::Encode(cursor_options_.database_id,
3418 cursor_options_.object_store_id, 3412 cursor_options_.object_store_id,
3419 cursor_options_.index_id, 3413 cursor_options_.index_id,
3420 key, 3414 key,
3421 primary_key); 3415 primary_key);
3422 } 3416 }
3423 3417
3424 private: 3418 private:
3425 explicit IndexKeyCursorImpl(const IndexKeyCursorImpl* other) 3419 explicit IndexKeyCursorImpl(const IndexKeyCursorImpl* other)
3426 : IndexedDBBackingStore::Cursor(other), 3420 : IndexedDBBackingStore::Cursor(other),
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
3496 IndexCursorImpl( 3490 IndexCursorImpl(
3497 scoped_refptr<IndexedDBBackingStore> backing_store, 3491 scoped_refptr<IndexedDBBackingStore> backing_store,
3498 IndexedDBBackingStore::Transaction* transaction, 3492 IndexedDBBackingStore::Transaction* transaction,
3499 int64 database_id, 3493 int64 database_id,
3500 const IndexedDBBackingStore::Cursor::CursorOptions& cursor_options) 3494 const IndexedDBBackingStore::Cursor::CursorOptions& cursor_options)
3501 : IndexedDBBackingStore::Cursor(backing_store, 3495 : IndexedDBBackingStore::Cursor(backing_store,
3502 transaction, 3496 transaction,
3503 database_id, 3497 database_id,
3504 cursor_options) {} 3498 cursor_options) {}
3505 3499
3506 virtual Cursor* Clone() override { return new IndexCursorImpl(this); } 3500 Cursor* Clone() override { return new IndexCursorImpl(this); }
3507 3501
3508 // IndexedDBBackingStore::Cursor 3502 // IndexedDBBackingStore::Cursor
3509 virtual IndexedDBValue* value() override { return &current_value_; } 3503 IndexedDBValue* value() override { return &current_value_; }
3510 virtual const IndexedDBKey& primary_key() const override { 3504 const IndexedDBKey& primary_key() const override { return *primary_key_; }
3511 return *primary_key_; 3505 const IndexedDBBackingStore::RecordIdentifier& record_identifier()
3512 }
3513 virtual const IndexedDBBackingStore::RecordIdentifier& record_identifier()
3514 const override { 3506 const override {
3515 NOTREACHED(); 3507 NOTREACHED();
3516 return record_identifier_; 3508 return record_identifier_;
3517 } 3509 }
3518 virtual bool LoadCurrentRow() override; 3510 bool LoadCurrentRow() override;
3519 3511
3520 protected: 3512 protected:
3521 virtual std::string EncodeKey(const IndexedDBKey& key) override { 3513 std::string EncodeKey(const IndexedDBKey& key) override {
3522 return IndexDataKey::Encode(cursor_options_.database_id, 3514 return IndexDataKey::Encode(cursor_options_.database_id,
3523 cursor_options_.object_store_id, 3515 cursor_options_.object_store_id,
3524 cursor_options_.index_id, 3516 cursor_options_.index_id,
3525 key); 3517 key);
3526 } 3518 }
3527 virtual std::string EncodeKey(const IndexedDBKey& key, 3519 std::string EncodeKey(const IndexedDBKey& key,
3528 const IndexedDBKey& primary_key) override { 3520 const IndexedDBKey& primary_key) override {
3529 return IndexDataKey::Encode(cursor_options_.database_id, 3521 return IndexDataKey::Encode(cursor_options_.database_id,
3530 cursor_options_.object_store_id, 3522 cursor_options_.object_store_id,
3531 cursor_options_.index_id, 3523 cursor_options_.index_id,
3532 key, 3524 key,
3533 primary_key); 3525 primary_key);
3534 } 3526 }
3535 3527
3536 private: 3528 private:
3537 explicit IndexCursorImpl(const IndexCursorImpl* other) 3529 explicit IndexCursorImpl(const IndexCursorImpl* other)
3538 : IndexedDBBackingStore::Cursor(other), 3530 : IndexedDBBackingStore::Cursor(other),
(...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after
4100 return s; 4092 return s;
4101 } 4093 }
4102 4094
4103 4095
4104 class IndexedDBBackingStore::Transaction::BlobWriteCallbackWrapper 4096 class IndexedDBBackingStore::Transaction::BlobWriteCallbackWrapper
4105 : public IndexedDBBackingStore::BlobWriteCallback { 4097 : public IndexedDBBackingStore::BlobWriteCallback {
4106 public: 4098 public:
4107 BlobWriteCallbackWrapper(IndexedDBBackingStore::Transaction* transaction, 4099 BlobWriteCallbackWrapper(IndexedDBBackingStore::Transaction* transaction,
4108 scoped_refptr<BlobWriteCallback> callback) 4100 scoped_refptr<BlobWriteCallback> callback)
4109 : transaction_(transaction), callback_(callback) {} 4101 : transaction_(transaction), callback_(callback) {}
4110 virtual void Run(bool succeeded) override { 4102 void Run(bool succeeded) override {
4111 callback_->Run(succeeded); 4103 callback_->Run(succeeded);
4112 if (succeeded) // Else it's already been deleted during rollback. 4104 if (succeeded) // Else it's already been deleted during rollback.
4113 transaction_->chained_blob_writer_ = NULL; 4105 transaction_->chained_blob_writer_ = NULL;
4114 } 4106 }
4115 4107
4116 private: 4108 private:
4117 virtual ~BlobWriteCallbackWrapper() {} 4109 ~BlobWriteCallbackWrapper() override {}
4118 friend class base::RefCounted<IndexedDBBackingStore::BlobWriteCallback>; 4110 friend class base::RefCounted<IndexedDBBackingStore::BlobWriteCallback>;
4119 4111
4120 IndexedDBBackingStore::Transaction* transaction_; 4112 IndexedDBBackingStore::Transaction* transaction_;
4121 scoped_refptr<BlobWriteCallback> callback_; 4113 scoped_refptr<BlobWriteCallback> callback_;
4122 4114
4123 DISALLOW_COPY_AND_ASSIGN(BlobWriteCallbackWrapper); 4115 DISALLOW_COPY_AND_ASSIGN(BlobWriteCallbackWrapper);
4124 }; 4116 };
4125 4117
4126 void IndexedDBBackingStore::Transaction::WriteNewBlobs( 4118 void IndexedDBBackingStore::Transaction::WriteNewBlobs(
4127 BlobEntryKeyValuePairVec* new_blob_entries, 4119 BlobEntryKeyValuePairVec* new_blob_entries,
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
4265 int64_t size, 4257 int64_t size,
4266 base::Time last_modified) 4258 base::Time last_modified)
4267 : is_file_(true), 4259 : is_file_(true),
4268 file_path_(file_path), 4260 file_path_(file_path),
4269 key_(key), 4261 key_(key),
4270 size_(size), 4262 size_(size),
4271 last_modified_(last_modified) { 4263 last_modified_(last_modified) {
4272 } 4264 }
4273 4265
4274 } // namespace content 4266 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_backing_store.h ('k') | content/browser/indexed_db/indexed_db_backing_store_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698