| 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_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 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 IndexedDBBackingStore* backing_store, | 132 IndexedDBBackingStore* backing_store, |
| 133 IndexedDBFactory* factory, | 133 IndexedDBFactory* factory, |
| 134 const Identifier& unique_identifier) | 134 const Identifier& unique_identifier) |
| 135 : backing_store_(backing_store), | 135 : backing_store_(backing_store), |
| 136 metadata_(name, | 136 metadata_(name, |
| 137 kInvalidId, | 137 kInvalidId, |
| 138 kNoStringVersion, | 138 kNoStringVersion, |
| 139 IndexedDBDatabaseMetadata::NO_INT_VERSION, | 139 IndexedDBDatabaseMetadata::NO_INT_VERSION, |
| 140 kInvalidId), | 140 kInvalidId), |
| 141 identifier_(unique_identifier), | 141 identifier_(unique_identifier), |
| 142 factory_(factory), | 142 factory_(factory) { |
| 143 running_version_change_transaction_(NULL) { | |
| 144 DCHECK(!metadata_.name.empty()); | 143 DCHECK(!metadata_.name.empty()); |
| 145 } | 144 } |
| 146 | 145 |
| 147 void IndexedDBDatabase::AddObjectStore( | 146 void IndexedDBDatabase::AddObjectStore( |
| 148 const IndexedDBObjectStoreMetadata& object_store, | 147 const IndexedDBObjectStoreMetadata& object_store, |
| 149 int64 new_max_object_store_id) { | 148 int64 new_max_object_store_id) { |
| 150 DCHECK(metadata_.object_stores.find(object_store.id) == | 149 DCHECK(metadata_.object_stores.find(object_store.id) == |
| 151 metadata_.object_stores.end()); | 150 metadata_.object_stores.end()); |
| 152 if (new_max_object_store_id != IndexedDBObjectStoreMetadata::kInvalidId) { | 151 if (new_max_object_store_id != IndexedDBObjectStoreMetadata::kInvalidId) { |
| 153 DCHECK_LT(metadata_.max_object_store_id, new_max_object_store_id); | 152 DCHECK_LT(metadata_.max_object_store_id, new_max_object_store_id); |
| (...skipping 1098 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1252 transaction->Abort(error); | 1251 transaction->Abort(error); |
| 1253 return; | 1252 return; |
| 1254 } | 1253 } |
| 1255 DCHECK(!pending_second_half_open_); | 1254 DCHECK(!pending_second_half_open_); |
| 1256 pending_second_half_open_.reset( | 1255 pending_second_half_open_.reset( |
| 1257 new PendingSuccessCall(callbacks, connection.get(), version)); | 1256 new PendingSuccessCall(callbacks, connection.get(), version)); |
| 1258 callbacks->OnUpgradeNeeded( | 1257 callbacks->OnUpgradeNeeded( |
| 1259 old_version, connection.Pass(), metadata(), data_loss, data_loss_message); | 1258 old_version, connection.Pass(), metadata(), data_loss, data_loss_message); |
| 1260 } | 1259 } |
| 1261 | 1260 |
| 1262 void IndexedDBDatabase::TransactionStarted(IndexedDBTransaction* transaction) { | |
| 1263 | |
| 1264 if (transaction->mode() == indexed_db::TRANSACTION_VERSION_CHANGE) { | |
| 1265 DCHECK(!running_version_change_transaction_); | |
| 1266 running_version_change_transaction_ = transaction; | |
| 1267 } | |
| 1268 } | |
| 1269 | |
| 1270 void IndexedDBDatabase::TransactionFinished(IndexedDBTransaction* transaction, | 1261 void IndexedDBDatabase::TransactionFinished(IndexedDBTransaction* transaction, |
| 1271 bool committed) { | 1262 bool committed) { |
| 1272 DCHECK(transactions_.find(transaction->id()) != transactions_.end()); | 1263 DCHECK(transactions_.find(transaction->id()) != transactions_.end()); |
| 1273 DCHECK_EQ(transactions_[transaction->id()], transaction); | 1264 DCHECK_EQ(transactions_[transaction->id()], transaction); |
| 1274 transactions_.erase(transaction->id()); | 1265 transactions_.erase(transaction->id()); |
| 1275 | 1266 |
| 1276 if (transaction->mode() == indexed_db::TRANSACTION_VERSION_CHANGE) { | 1267 if (transaction->mode() == indexed_db::TRANSACTION_VERSION_CHANGE) { |
| 1277 DCHECK_EQ(transaction, running_version_change_transaction_); | |
| 1278 running_version_change_transaction_ = NULL; | |
| 1279 | |
| 1280 if (pending_second_half_open_) { | 1268 if (pending_second_half_open_) { |
| 1281 if (committed) { | 1269 if (committed) { |
| 1282 DCHECK_EQ(pending_second_half_open_->Version(), metadata_.int_version); | 1270 DCHECK_EQ(pending_second_half_open_->Version(), metadata_.int_version); |
| 1283 DCHECK(metadata_.id != kInvalidId); | 1271 DCHECK(metadata_.id != kInvalidId); |
| 1284 | 1272 |
| 1285 // Connection was already minted for OnUpgradeNeeded callback. | 1273 // Connection was already minted for OnUpgradeNeeded callback. |
| 1286 scoped_ptr<IndexedDBConnection> connection; | 1274 scoped_ptr<IndexedDBConnection> connection; |
| 1287 pending_second_half_open_->Callbacks()->OnSuccess(connection.Pass(), | 1275 pending_second_half_open_->Callbacks()->OnSuccess(connection.Pass(), |
| 1288 this->metadata()); | 1276 this->metadata()); |
| 1289 } else { | 1277 } else { |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1398 this, | 1386 this, |
| 1399 new IndexedDBBackingStore::Transaction(backing_store_))); | 1387 new IndexedDBBackingStore::Transaction(backing_store_))); |
| 1400 } | 1388 } |
| 1401 | 1389 |
| 1402 void IndexedDBDatabase::TransactionCreated(IndexedDBTransaction* transaction) { | 1390 void IndexedDBDatabase::TransactionCreated(IndexedDBTransaction* transaction) { |
| 1403 transactions_[transaction->id()] = transaction; | 1391 transactions_[transaction->id()] = transaction; |
| 1404 } | 1392 } |
| 1405 | 1393 |
| 1406 bool IndexedDBDatabase::IsOpenConnectionBlocked() const { | 1394 bool IndexedDBDatabase::IsOpenConnectionBlocked() const { |
| 1407 return !pending_delete_calls_.empty() || | 1395 return !pending_delete_calls_.empty() || |
| 1408 running_version_change_transaction_ || | 1396 transaction_coordinator_.IsRunningVersionChangeTransaction() || |
| 1409 pending_run_version_change_transaction_call_; | 1397 pending_run_version_change_transaction_call_; |
| 1410 } | 1398 } |
| 1411 | 1399 |
| 1412 void IndexedDBDatabase::OpenConnection( | 1400 void IndexedDBDatabase::OpenConnection( |
| 1413 scoped_refptr<IndexedDBCallbacks> callbacks, | 1401 scoped_refptr<IndexedDBCallbacks> callbacks, |
| 1414 scoped_refptr<IndexedDBDatabaseCallbacks> database_callbacks, | 1402 scoped_refptr<IndexedDBDatabaseCallbacks> database_callbacks, |
| 1415 int64 transaction_id, | 1403 int64 transaction_id, |
| 1416 int64 version) { | 1404 int64 version) { |
| 1417 const blink::WebIDBDataLoss kDataLoss = | 1405 const blink::WebIDBDataLoss kDataLoss = |
| 1418 blink::WebIDBDataLossNone; | 1406 blink::WebIDBDataLossNone; |
| (...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1717 const base::string16& previous_version, | 1705 const base::string16& previous_version, |
| 1718 int64 previous_int_version, | 1706 int64 previous_int_version, |
| 1719 IndexedDBTransaction* transaction) { | 1707 IndexedDBTransaction* transaction) { |
| 1720 IDB_TRACE("IndexedDBDatabase::VersionChangeAbortOperation"); | 1708 IDB_TRACE("IndexedDBDatabase::VersionChangeAbortOperation"); |
| 1721 DCHECK(!transaction); | 1709 DCHECK(!transaction); |
| 1722 metadata_.version = previous_version; | 1710 metadata_.version = previous_version; |
| 1723 metadata_.int_version = previous_int_version; | 1711 metadata_.int_version = previous_int_version; |
| 1724 } | 1712 } |
| 1725 | 1713 |
| 1726 } // namespace content | 1714 } // namespace content |
| OLD | NEW |