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

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

Issue 308103004: IndexedDB: Using a mock IndexedDBFactory for unit tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Don't use GoogleMock with std::pair types 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
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_database.h" 5 #include "content/browser/indexed_db/indexed_db_database.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <set> 8 #include <set>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 IndexedDBFactory* factory, 116 IndexedDBFactory* factory,
117 const Identifier& unique_identifier) 117 const Identifier& unique_identifier)
118 : backing_store_(backing_store), 118 : backing_store_(backing_store),
119 metadata_(name, 119 metadata_(name,
120 kInvalidId, 120 kInvalidId,
121 kNoStringVersion, 121 kNoStringVersion,
122 IndexedDBDatabaseMetadata::NO_INT_VERSION, 122 IndexedDBDatabaseMetadata::NO_INT_VERSION,
123 kInvalidId), 123 kInvalidId),
124 identifier_(unique_identifier), 124 identifier_(unique_identifier),
125 factory_(factory) { 125 factory_(factory) {
126 DCHECK(factory != NULL);
126 } 127 }
127 128
128 void IndexedDBDatabase::AddObjectStore( 129 void IndexedDBDatabase::AddObjectStore(
129 const IndexedDBObjectStoreMetadata& object_store, 130 const IndexedDBObjectStoreMetadata& object_store,
130 int64 new_max_object_store_id) { 131 int64 new_max_object_store_id) {
131 DCHECK(metadata_.object_stores.find(object_store.id) == 132 DCHECK(metadata_.object_stores.find(object_store.id) ==
132 metadata_.object_stores.end()); 133 metadata_.object_stores.end());
133 if (new_max_object_store_id != IndexedDBObjectStoreMetadata::kInvalidId) { 134 if (new_max_object_store_id != IndexedDBObjectStoreMetadata::kInvalidId) {
134 DCHECK_LT(metadata_.max_object_store_id, new_max_object_store_id); 135 DCHECK_LT(metadata_.max_object_store_id, new_max_object_store_id);
135 metadata_.max_object_store_id = new_max_object_store_id; 136 metadata_.max_object_store_id = new_max_object_store_id;
(...skipping 1236 matching lines...) Expand 10 before | Expand all | Expand 10 after
1372 } 1373 }
1373 pending_second_half_open_.reset(); 1374 pending_second_half_open_.reset();
1374 } 1375 }
1375 1376
1376 // Connection queue is now unblocked. 1377 // Connection queue is now unblocked.
1377 ProcessPendingCalls(); 1378 ProcessPendingCalls();
1378 } 1379 }
1379 } 1380 }
1380 1381
1381 void IndexedDBDatabase::TransactionCommitFailed(const leveldb::Status& status) { 1382 void IndexedDBDatabase::TransactionCommitFailed(const leveldb::Status& status) {
1382 // Factory may be null in unit tests.
1383 if (!factory_)
1384 return;
1385 if (status.IsCorruption()) { 1383 if (status.IsCorruption()) {
1386 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 1384 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
1387 "Error committing transaction"); 1385 "Error committing transaction");
1388 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), error); 1386 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), error);
1389 } else { 1387 } else {
1390 factory_->HandleBackingStoreFailure(backing_store_->origin_url()); 1388 factory_->HandleBackingStoreFailure(backing_store_->origin_url());
1391 } 1389 }
1392 } 1390 }
1393 1391
1394 size_t IndexedDBDatabase::ConnectionCount() const { 1392 size_t IndexedDBDatabase::ConnectionCount() const {
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
1676 factory_->HandleBackingStoreCorruption(origin_url, error); 1674 factory_->HandleBackingStoreCorruption(origin_url, error);
1677 } 1675 }
1678 return; 1676 return;
1679 } 1677 }
1680 int64 old_version = metadata_.int_version; 1678 int64 old_version = metadata_.int_version;
1681 metadata_.version = kNoStringVersion; 1679 metadata_.version = kNoStringVersion;
1682 metadata_.id = kInvalidId; 1680 metadata_.id = kInvalidId;
1683 metadata_.int_version = IndexedDBDatabaseMetadata::NO_INT_VERSION; 1681 metadata_.int_version = IndexedDBDatabaseMetadata::NO_INT_VERSION;
1684 metadata_.object_stores.clear(); 1682 metadata_.object_stores.clear();
1685 callbacks->OnSuccess(old_version); 1683 callbacks->OnSuccess(old_version);
1686 if (factory_) 1684 factory_->DatabaseDeleted(identifier_);
1687 factory_->DatabaseDeleted(identifier_);
1688 } 1685 }
1689 1686
1690 void IndexedDBDatabase::ForceClose() { 1687 void IndexedDBDatabase::ForceClose() {
1691 // IndexedDBConnection::ForceClose() may delete this database, so hold ref. 1688 // IndexedDBConnection::ForceClose() may delete this database, so hold ref.
1692 scoped_refptr<IndexedDBDatabase> protect(this); 1689 scoped_refptr<IndexedDBDatabase> protect(this);
1693 ConnectionSet::const_iterator it = connections_.begin(); 1690 ConnectionSet::const_iterator it = connections_.begin();
1694 while (it != connections_.end()) { 1691 while (it != connections_.end()) {
1695 IndexedDBConnection* connection = *it++; 1692 IndexedDBConnection* connection = *it++;
1696 connection->ForceClose(); 1693 connection->ForceClose();
1697 } 1694 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1746 ProcessPendingCalls(); 1743 ProcessPendingCalls();
1747 1744
1748 // TODO(jsbell): Add a test for the pending_open_calls_ cases below. 1745 // TODO(jsbell): Add a test for the pending_open_calls_ cases below.
1749 if (!ConnectionCount() && !pending_open_calls_.size() && 1746 if (!ConnectionCount() && !pending_open_calls_.size() &&
1750 !pending_delete_calls_.size()) { 1747 !pending_delete_calls_.size()) {
1751 DCHECK(transactions_.empty()); 1748 DCHECK(transactions_.empty());
1752 1749
1753 const GURL origin_url = backing_store_->origin_url(); 1750 const GURL origin_url = backing_store_->origin_url();
1754 backing_store_ = NULL; 1751 backing_store_ = NULL;
1755 1752
1756 // factory_ should only be null in unit tests. 1753 factory_->ReleaseDatabase(identifier_, forced);
1757 // TODO(jsbell): DCHECK(factory_ || !in_unit_tests) - somehow.
1758 if (factory_) {
1759 factory_->ReleaseDatabase(identifier_, forced);
1760 factory_ = NULL;
1761 }
1762 } 1754 }
1763 } 1755 }
1764 1756
1765 void IndexedDBDatabase::CreateObjectStoreAbortOperation( 1757 void IndexedDBDatabase::CreateObjectStoreAbortOperation(
1766 int64 object_store_id, 1758 int64 object_store_id,
1767 IndexedDBTransaction* transaction) { 1759 IndexedDBTransaction* transaction) {
1768 DCHECK(!transaction); 1760 DCHECK(!transaction);
1769 IDB_TRACE1("IndexedDBDatabase::CreateObjectStoreAbortOperation", 1761 IDB_TRACE1("IndexedDBDatabase::CreateObjectStoreAbortOperation",
1770 "txn.id", 1762 "txn.id",
1771 transaction->id()); 1763 transaction->id());
(...skipping 17 matching lines...) Expand all
1789 IndexedDBTransaction* transaction) { 1781 IndexedDBTransaction* transaction) {
1790 DCHECK(!transaction); 1782 DCHECK(!transaction);
1791 IDB_TRACE1("IndexedDBDatabase::VersionChangeAbortOperation", 1783 IDB_TRACE1("IndexedDBDatabase::VersionChangeAbortOperation",
1792 "txn.id", 1784 "txn.id",
1793 transaction->id()); 1785 transaction->id());
1794 metadata_.version = previous_version; 1786 metadata_.version = previous_version;
1795 metadata_.int_version = previous_int_version; 1787 metadata_.int_version = previous_int_version;
1796 } 1788 }
1797 1789
1798 } // namespace content 1790 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698