diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/Modules/webdatabase/SQLTransactionCoordinator.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/Modules/webdatabase/SQLTransactionCoordinator.cpp')
-rw-r--r-- | Source/WebCore/Modules/webdatabase/SQLTransactionCoordinator.cpp | 50 |
1 files changed, 18 insertions, 32 deletions
diff --git a/Source/WebCore/Modules/webdatabase/SQLTransactionCoordinator.cpp b/Source/WebCore/Modules/webdatabase/SQLTransactionCoordinator.cpp index bbb45a810..3aed24b0c 100644 --- a/Source/WebCore/Modules/webdatabase/SQLTransactionCoordinator.cpp +++ b/Source/WebCore/Modules/webdatabase/SQLTransactionCoordinator.cpp @@ -32,23 +32,18 @@ #include "config.h" #include "SQLTransactionCoordinator.h" -#if ENABLE(SQL_DATABASE) - -#include "DatabaseBackend.h" -#include "SQLTransactionBackend.h" +#include "Database.h" +#include "SQLTransaction.h" #include "SecurityOrigin.h" +#include "SecurityOriginData.h" #include <wtf/Deque.h> -#include <wtf/HashMap.h> -#include <wtf/HashSet.h> #include <wtf/RefPtr.h> namespace WebCore { -static String getDatabaseIdentifier(SQLTransactionBackend* transaction) +static String getDatabaseIdentifier(SQLTransaction& transaction) { - DatabaseBackend* database = transaction->database(); - ASSERT(database); - return database->securityOrigin()->databaseIdentifier(); + return transaction.database().securityOrigin().databaseIdentifier(); } SQLTransactionCoordinator::SQLTransactionCoordinator() @@ -61,7 +56,7 @@ void SQLTransactionCoordinator::processPendingTransactions(CoordinationInfo& inf if (info.activeWriteTransaction || info.pendingTransactions.isEmpty()) return; - RefPtr<SQLTransactionBackend> firstPendingTransaction = info.pendingTransactions.first(); + RefPtr<SQLTransaction> firstPendingTransaction = info.pendingTransactions.first(); if (firstPendingTransaction->isReadOnly()) { do { firstPendingTransaction = info.pendingTransactions.takeFirst(); @@ -75,7 +70,7 @@ void SQLTransactionCoordinator::processPendingTransactions(CoordinationInfo& inf } } -void SQLTransactionCoordinator::acquireLock(SQLTransactionBackend* transaction) +void SQLTransactionCoordinator::acquireLock(SQLTransaction& transaction) { ASSERT(!m_isShuttingDown); @@ -88,11 +83,11 @@ void SQLTransactionCoordinator::acquireLock(SQLTransactionBackend* transaction) } CoordinationInfo& info = coordinationInfoIterator->value; - info.pendingTransactions.append(transaction); + info.pendingTransactions.append(&transaction); processPendingTransactions(info); } -void SQLTransactionCoordinator::releaseLock(SQLTransactionBackend* transaction) +void SQLTransactionCoordinator::releaseLock(SQLTransaction& transaction) { if (m_isShuttingDown) return; @@ -103,12 +98,12 @@ void SQLTransactionCoordinator::releaseLock(SQLTransactionBackend* transaction) ASSERT(coordinationInfoIterator != m_coordinationInfoMap.end()); CoordinationInfo& info = coordinationInfoIterator->value; - if (transaction->isReadOnly()) { - ASSERT(info.activeReadTransactions.contains(transaction)); - info.activeReadTransactions.remove(transaction); + if (transaction.isReadOnly()) { + ASSERT(info.activeReadTransactions.contains(&transaction)); + info.activeReadTransactions.remove(&transaction); } else { - ASSERT(info.activeWriteTransaction == transaction); - info.activeWriteTransaction = 0; + ASSERT(info.activeWriteTransaction == &transaction); + info.activeWriteTransaction = nullptr; } processPendingTransactions(info); @@ -121,27 +116,20 @@ void SQLTransactionCoordinator::shutdown() m_isShuttingDown = true; // Notify all transactions in progress that the database thread is shutting down - for (CoordinationInfoMap::iterator coordinationInfoIterator = m_coordinationInfoMap.begin(); - coordinationInfoIterator != m_coordinationInfoMap.end(); ++coordinationInfoIterator) { - CoordinationInfo& info = coordinationInfoIterator->value; - + for (auto& info : m_coordinationInfoMap.values()) { // Clean up transactions that have reached "lockAcquired": // Transaction phase 4 cleanup. See comment on "What happens if a // transaction is interrupted?" at the top of SQLTransactionBackend.cpp. if (info.activeWriteTransaction) info.activeWriteTransaction->notifyDatabaseThreadIsShuttingDown(); - for (HashSet<RefPtr<SQLTransactionBackend>>::iterator activeReadTransactionsIterator = - info.activeReadTransactions.begin(); - activeReadTransactionsIterator != info.activeReadTransactions.end(); - ++activeReadTransactionsIterator) { - (*activeReadTransactionsIterator)->notifyDatabaseThreadIsShuttingDown(); - } + for (auto& transaction : info.activeReadTransactions) + transaction->notifyDatabaseThreadIsShuttingDown(); // Clean up transactions that have NOT reached "lockAcquired": // Transaction phase 3 cleanup. See comment on "What happens if a // transaction is interrupted?" at the top of SQLTransactionBackend.cpp. while (!info.pendingTransactions.isEmpty()) { - RefPtr<SQLTransactionBackend> transaction = info.pendingTransactions.first(); + RefPtr<SQLTransaction> transaction = info.pendingTransactions.first(); transaction->notifyDatabaseThreadIsShuttingDown(); } } @@ -151,5 +139,3 @@ void SQLTransactionCoordinator::shutdown() } } // namespace WebCore - -#endif // ENABLE(SQL_DATABASE) |