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

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: Forgot to add mock_indexed_db_factory.* files in last patch set. Created 6 years, 6 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 1217 matching lines...) Expand 10 before | Expand all | Expand 10 after
1353 } 1354 }
1354 pending_second_half_open_.reset(); 1355 pending_second_half_open_.reset();
1355 } 1356 }
1356 1357
1357 // Connection queue is now unblocked. 1358 // Connection queue is now unblocked.
1358 ProcessPendingCalls(); 1359 ProcessPendingCalls();
1359 } 1360 }
1360 } 1361 }
1361 1362
1362 void IndexedDBDatabase::TransactionCommitFailed() { 1363 void IndexedDBDatabase::TransactionCommitFailed() {
1363 // Factory may be null in unit tests.
1364 if (!factory_)
1365 return;
1366 factory_->HandleBackingStoreFailure(backing_store_->origin_url()); 1364 factory_->HandleBackingStoreFailure(backing_store_->origin_url());
1367 } 1365 }
1368 1366
1369 size_t IndexedDBDatabase::ConnectionCount() const { 1367 size_t IndexedDBDatabase::ConnectionCount() const {
1370 // This does not include pending open calls, as those should not block version 1368 // This does not include pending open calls, as those should not block version
1371 // changes and deletes. 1369 // changes and deletes.
1372 return connections_.size(); 1370 return connections_.size();
1373 } 1371 }
1374 1372
1375 size_t IndexedDBDatabase::PendingOpenCount() const { 1373 size_t IndexedDBDatabase::PendingOpenCount() const {
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
1649 IndexedDBDatabaseError(blink::WebIDBDatabaseExceptionUnknownError, 1647 IndexedDBDatabaseError(blink::WebIDBDatabaseExceptionUnknownError,
1650 "Internal error deleting database.")); 1648 "Internal error deleting database."));
1651 return; 1649 return;
1652 } 1650 }
1653 int64 old_version = metadata_.int_version; 1651 int64 old_version = metadata_.int_version;
1654 metadata_.version = kNoStringVersion; 1652 metadata_.version = kNoStringVersion;
1655 metadata_.id = kInvalidId; 1653 metadata_.id = kInvalidId;
1656 metadata_.int_version = IndexedDBDatabaseMetadata::NO_INT_VERSION; 1654 metadata_.int_version = IndexedDBDatabaseMetadata::NO_INT_VERSION;
1657 metadata_.object_stores.clear(); 1655 metadata_.object_stores.clear();
1658 callbacks->OnSuccess(old_version); 1656 callbacks->OnSuccess(old_version);
1659 if (factory_) 1657 factory_->DatabaseDeleted(identifier_);
1660 factory_->DatabaseDeleted(identifier_);
1661 } 1658 }
1662 1659
1663 void IndexedDBDatabase::ForceClose() { 1660 void IndexedDBDatabase::ForceClose() {
1664 // IndexedDBConnection::ForceClose() may delete this database, so hold ref. 1661 // IndexedDBConnection::ForceClose() may delete this database, so hold ref.
1665 scoped_refptr<IndexedDBDatabase> protect(this); 1662 scoped_refptr<IndexedDBDatabase> protect(this);
1666 ConnectionSet::const_iterator it = connections_.begin(); 1663 ConnectionSet::const_iterator it = connections_.begin();
1667 while (it != connections_.end()) { 1664 while (it != connections_.end()) {
1668 IndexedDBConnection* connection = *it++; 1665 IndexedDBConnection* connection = *it++;
1669 connection->ForceClose(); 1666 connection->ForceClose();
1670 } 1667 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1706 ProcessPendingCalls(); 1703 ProcessPendingCalls();
1707 1704
1708 // TODO(jsbell): Add a test for the pending_open_calls_ cases below. 1705 // TODO(jsbell): Add a test for the pending_open_calls_ cases below.
1709 if (!ConnectionCount() && !pending_open_calls_.size() && 1706 if (!ConnectionCount() && !pending_open_calls_.size() &&
1710 !pending_delete_calls_.size()) { 1707 !pending_delete_calls_.size()) {
1711 DCHECK(transactions_.empty()); 1708 DCHECK(transactions_.empty());
1712 1709
1713 const GURL origin_url = backing_store_->origin_url(); 1710 const GURL origin_url = backing_store_->origin_url();
1714 backing_store_ = NULL; 1711 backing_store_ = NULL;
1715 1712
1716 // factory_ should only be null in unit tests. 1713 factory_->ReleaseDatabase(identifier_, forced);
1717 // TODO(jsbell): DCHECK(factory_ || !in_unit_tests) - somehow.
1718 if (factory_) {
1719 factory_->ReleaseDatabase(identifier_, forced);
1720 factory_ = NULL;
1721 }
1722 } 1714 }
1723 } 1715 }
1724 1716
1725 void IndexedDBDatabase::CreateObjectStoreAbortOperation( 1717 void IndexedDBDatabase::CreateObjectStoreAbortOperation(
1726 int64 object_store_id, 1718 int64 object_store_id,
1727 IndexedDBTransaction* transaction) { 1719 IndexedDBTransaction* transaction) {
1728 IDB_TRACE("IndexedDBDatabase::CreateObjectStoreAbortOperation"); 1720 IDB_TRACE("IndexedDBDatabase::CreateObjectStoreAbortOperation");
1729 DCHECK(!transaction); 1721 DCHECK(!transaction);
1730 RemoveObjectStore(object_store_id); 1722 RemoveObjectStore(object_store_id);
1731 } 1723 }
(...skipping 11 matching lines...) Expand all
1743 const base::string16& previous_version, 1735 const base::string16& previous_version,
1744 int64 previous_int_version, 1736 int64 previous_int_version,
1745 IndexedDBTransaction* transaction) { 1737 IndexedDBTransaction* transaction) {
1746 IDB_TRACE("IndexedDBDatabase::VersionChangeAbortOperation"); 1738 IDB_TRACE("IndexedDBDatabase::VersionChangeAbortOperation");
1747 DCHECK(!transaction); 1739 DCHECK(!transaction);
1748 metadata_.version = previous_version; 1740 metadata_.version = previous_version;
1749 metadata_.int_version = previous_int_version; 1741 metadata_.int_version = previous_int_version;
1750 } 1742 }
1751 1743
1752 } // namespace content 1744 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698