Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
| (...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 659 return AppendBlobsToBlobJournal(transaction, LiveBlobJournalKey::Encode(), | 659 return AppendBlobsToBlobJournal(transaction, LiveBlobJournalKey::Encode(), |
| 660 journal); | 660 journal); |
| 661 } | 661 } |
| 662 | 662 |
| 663 // Append a database to the specified blob journal via the supplied transaction. | 663 // Append a database to the specified blob journal via the supplied transaction. |
| 664 // The key must be either the primary journal key or live journal key. | 664 // The key must be either the primary journal key or live journal key. |
| 665 static leveldb::Status MergeDatabaseIntoBlobJournal( | 665 static leveldb::Status MergeDatabaseIntoBlobJournal( |
| 666 LevelDBDirectTransaction* transaction, | 666 LevelDBDirectTransaction* transaction, |
| 667 const std::string& key, | 667 const std::string& key, |
| 668 int64 database_id) { | 668 int64 database_id) { |
| 669 IDB_TRACE("IndexedDBBackingStore::MergeDatabaseIntoBlobJournal"); | |
| 669 BlobJournalType journal; | 670 BlobJournalType journal; |
| 670 leveldb::Status s = GetBlobJournal(key, transaction, &journal); | 671 leveldb::Status s = GetBlobJournal(key, transaction, &journal); |
| 671 if (!s.ok()) | 672 if (!s.ok()) |
| 672 return s; | 673 return s; |
| 673 journal.push_back( | 674 journal.push_back( |
| 674 std::make_pair(database_id, DatabaseMetaDataKey::kAllBlobsKey)); | 675 std::make_pair(database_id, DatabaseMetaDataKey::kAllBlobsKey)); |
| 675 UpdateBlobJournal(transaction, key, journal); | 676 UpdateBlobJournal(transaction, key, journal); |
| 676 return leveldb::Status::OK(); | 677 return leveldb::Status::OK(); |
| 677 } | 678 } |
| 678 | 679 |
| (...skipping 788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1467 s = GetIDBDatabaseMetaData(name, &metadata, &success); | 1468 s = GetIDBDatabaseMetaData(name, &metadata, &success); |
| 1468 if (!s.ok()) | 1469 if (!s.ok()) |
| 1469 return s; | 1470 return s; |
| 1470 if (!success) | 1471 if (!success) |
| 1471 return leveldb::Status::OK(); | 1472 return leveldb::Status::OK(); |
| 1472 | 1473 |
| 1473 const std::string start_key = DatabaseMetaDataKey::Encode( | 1474 const std::string start_key = DatabaseMetaDataKey::Encode( |
| 1474 metadata.id, DatabaseMetaDataKey::ORIGIN_NAME); | 1475 metadata.id, DatabaseMetaDataKey::ORIGIN_NAME); |
| 1475 const std::string stop_key = DatabaseMetaDataKey::Encode( | 1476 const std::string stop_key = DatabaseMetaDataKey::Encode( |
| 1476 metadata.id + 1, DatabaseMetaDataKey::ORIGIN_NAME); | 1477 metadata.id + 1, DatabaseMetaDataKey::ORIGIN_NAME); |
| 1477 scoped_ptr<LevelDBIterator> it = db_->CreateIterator(); | 1478 { |
| 1478 for (s = it->Seek(start_key); | 1479 IDB_TRACE("IndexedDBBackingStore::DeleteDatabase::DeleteEntries"); |
|
cmumford
2015/08/03 17:31:33
Nit: I believe that all other traces we use <class
dmurph
2015/08/05 15:30:32
Sure, that sounds good. I'll switch to the '.' ver
| |
| 1479 s.ok() && it->IsValid() && CompareKeys(it->Key(), stop_key) < 0; | 1480 scoped_ptr<LevelDBIterator> it = db_->CreateIterator(); |
| 1480 s = it->Next()) | 1481 for (s = it->Seek(start_key); |
| 1481 transaction->Remove(it->Key()); | 1482 s.ok() && it->IsValid() && CompareKeys(it->Key(), stop_key) < 0; |
| 1483 s = it->Next()) | |
| 1484 transaction->Remove(it->Key()); | |
| 1485 } | |
| 1482 if (!s.ok()) { | 1486 if (!s.ok()) { |
| 1483 INTERNAL_WRITE_ERROR_UNTESTED(DELETE_DATABASE); | 1487 INTERNAL_WRITE_ERROR_UNTESTED(DELETE_DATABASE); |
| 1484 return s; | 1488 return s; |
| 1485 } | 1489 } |
| 1486 | 1490 |
| 1487 const std::string key = DatabaseNameKey::Encode(origin_identifier_, name); | 1491 const std::string key = DatabaseNameKey::Encode(origin_identifier_, name); |
| 1488 transaction->Remove(key); | 1492 transaction->Remove(key); |
| 1489 | 1493 |
| 1490 bool need_cleanup = false; | 1494 bool need_cleanup = false; |
| 1491 if (active_blob_registry()->MarkDeletedCheckIfUsed( | 1495 if (active_blob_registry()->MarkDeletedCheckIfUsed( |
| (...skipping 1213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2705 DCHECK(DatabaseMetaDataKey::IsValidBlobKey(blob_key)); | 2709 DCHECK(DatabaseMetaDataKey::IsValidBlobKey(blob_key)); |
| 2706 if (!RemoveBlobFile(database_id, blob_key)) | 2710 if (!RemoveBlobFile(database_id, blob_key)) |
| 2707 return IOErrorStatus(); | 2711 return IOErrorStatus(); |
| 2708 } | 2712 } |
| 2709 } | 2713 } |
| 2710 return leveldb::Status::OK(); | 2714 return leveldb::Status::OK(); |
| 2711 } | 2715 } |
| 2712 | 2716 |
| 2713 leveldb::Status IndexedDBBackingStore::CleanUpBlobJournal( | 2717 leveldb::Status IndexedDBBackingStore::CleanUpBlobJournal( |
| 2714 const std::string& level_db_key) const { | 2718 const std::string& level_db_key) const { |
| 2719 IDB_TRACE("IndexedDBBackingStore::CleanUpBlobJournal"); | |
| 2715 DCHECK(!committing_transaction_count_); | 2720 DCHECK(!committing_transaction_count_); |
| 2716 leveldb::Status s; | 2721 leveldb::Status s; |
| 2717 scoped_refptr<LevelDBTransaction> journal_transaction = | 2722 scoped_refptr<LevelDBTransaction> journal_transaction = |
| 2718 IndexedDBClassFactory::Get()->CreateLevelDBTransaction(db_.get()); | 2723 IndexedDBClassFactory::Get()->CreateLevelDBTransaction(db_.get()); |
| 2719 BlobJournalType journal; | 2724 BlobJournalType journal; |
| 2720 | 2725 |
| 2721 s = GetBlobJournal(level_db_key, journal_transaction.get(), &journal); | 2726 s = GetBlobJournal(level_db_key, journal_transaction.get(), &journal); |
| 2722 if (!s.ok()) | 2727 if (!s.ok()) |
| 2723 return s; | 2728 return s; |
| 2724 if (journal.empty()) | 2729 if (journal.empty()) |
| (...skipping 1768 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4493 | 4498 |
| 4494 IndexedDBBackingStore::Transaction::WriteDescriptor::WriteDescriptor( | 4499 IndexedDBBackingStore::Transaction::WriteDescriptor::WriteDescriptor( |
| 4495 const WriteDescriptor& other) = default; | 4500 const WriteDescriptor& other) = default; |
| 4496 IndexedDBBackingStore::Transaction::WriteDescriptor::~WriteDescriptor() = | 4501 IndexedDBBackingStore::Transaction::WriteDescriptor::~WriteDescriptor() = |
| 4497 default; | 4502 default; |
| 4498 IndexedDBBackingStore::Transaction::WriteDescriptor& | 4503 IndexedDBBackingStore::Transaction::WriteDescriptor& |
| 4499 IndexedDBBackingStore::Transaction::WriteDescriptor:: | 4504 IndexedDBBackingStore::Transaction::WriteDescriptor:: |
| 4500 operator=(const WriteDescriptor& other) = default; | 4505 operator=(const WriteDescriptor& other) = default; |
| 4501 | 4506 |
| 4502 } // namespace content | 4507 } // namespace content |
| OLD | NEW |