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/DatabaseTask.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/Modules/webdatabase/DatabaseTask.cpp')
-rw-r--r-- | Source/WebCore/Modules/webdatabase/DatabaseTask.cpp | 104 |
1 files changed, 40 insertions, 64 deletions
diff --git a/Source/WebCore/Modules/webdatabase/DatabaseTask.cpp b/Source/WebCore/Modules/webdatabase/DatabaseTask.cpp index 8cf8ea21a..f1a54ac94 100644 --- a/Source/WebCore/Modules/webdatabase/DatabaseTask.cpp +++ b/Source/WebCore/Modules/webdatabase/DatabaseTask.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007, 2008, 2013 Apple Inc. All rights reserved. + * Copyright (C) 2007, 2008, 2013, 2015 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -10,7 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * 3. Neither the name of Apple Inc. ("Apple") nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * @@ -25,22 +25,17 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + #include "config.h" #include "DatabaseTask.h" -#if ENABLE(SQL_DATABASE) - #include "Database.h" -#include "DatabaseBackend.h" #include "Logging.h" +#include "SQLTransaction.h" namespace WebCore { DatabaseTaskSynchronizer::DatabaseTaskSynchronizer() - : m_taskCompleted(false) -#ifndef NDEBUG - , m_hasCheckedForTermination(false) -#endif { } @@ -56,48 +51,36 @@ void DatabaseTaskSynchronizer::taskCompleted() { m_synchronousMutex.lock(); m_taskCompleted = true; - m_synchronousCondition.signal(); + m_synchronousCondition.notifyOne(); m_synchronousMutex.unlock(); } -DatabaseTask::DatabaseTask(DatabaseBackend* database, DatabaseTaskSynchronizer* synchronizer) +DatabaseTask::DatabaseTask(Database& database, DatabaseTaskSynchronizer* synchronizer) : m_database(database) , m_synchronizer(synchronizer) -#if !LOG_DISABLED - , m_complete(false) -#endif { } DatabaseTask::~DatabaseTask() { -#if !LOG_DISABLED ASSERT(m_complete || !m_synchronizer); -#endif } void DatabaseTask::performTask() { // Database tasks are meant to be used only once, so make sure this one hasn't been performed before. -#if !LOG_DISABLED ASSERT(!m_complete); -#endif LOG(StorageAPI, "Performing %s %p\n", debugTaskName(), this); -#if !PLATFORM(IOS) - m_database->resetAuthorizer(); -#else - if (m_database) - m_database->resetAuthorizer(); -#endif + m_database.resetAuthorizer(); doPerformTask(); if (m_synchronizer) m_synchronizer->taskCompleted(); -#if !LOG_DISABLED +#if !ASSERT_DISABLED m_complete = true; #endif } @@ -105,62 +88,60 @@ void DatabaseTask::performTask() // *** DatabaseOpenTask *** // Opens the database file and verifies the version matches the expected version. -DatabaseBackend::DatabaseOpenTask::DatabaseOpenTask(DatabaseBackend* database, bool setVersionInNewDatabase, DatabaseTaskSynchronizer* synchronizer, DatabaseError& error, String& errorMessage, bool& success) - : DatabaseTask(database, synchronizer) +DatabaseOpenTask::DatabaseOpenTask(Database& database, bool setVersionInNewDatabase, DatabaseTaskSynchronizer& synchronizer, ExceptionOr<void>& result) + : DatabaseTask(database, &synchronizer) , m_setVersionInNewDatabase(setVersionInNewDatabase) - , m_error(error) - , m_errorMessage(errorMessage) - , m_success(success) + , m_result(result) { - ASSERT(synchronizer); // A task with output parameters is supposed to be synchronous. } -void DatabaseBackend::DatabaseOpenTask::doPerformTask() +void DatabaseOpenTask::doPerformTask() { - String errorMessage; - m_success = database()->performOpenAndVerify(m_setVersionInNewDatabase, m_error, errorMessage); - if (!m_success) - m_errorMessage = errorMessage.isolatedCopy(); + m_result = isolatedCopy(database().performOpenAndVerify(m_setVersionInNewDatabase)); } #if !LOG_DISABLED -const char* DatabaseBackend::DatabaseOpenTask::debugTaskName() const + +const char* DatabaseOpenTask::debugTaskName() const { return "DatabaseOpenTask"; } + #endif // *** DatabaseCloseTask *** // Closes the database. -DatabaseBackend::DatabaseCloseTask::DatabaseCloseTask(DatabaseBackend* database, DatabaseTaskSynchronizer* synchronizer) - : DatabaseTask(database, synchronizer) +DatabaseCloseTask::DatabaseCloseTask(Database& database, DatabaseTaskSynchronizer& synchronizer) + : DatabaseTask(database, &synchronizer) { } -void DatabaseBackend::DatabaseCloseTask::doPerformTask() +void DatabaseCloseTask::doPerformTask() { - Database::from(database())->close(); + database().performClose(); } #if !LOG_DISABLED -const char* DatabaseBackend::DatabaseCloseTask::debugTaskName() const + +const char* DatabaseCloseTask::debugTaskName() const { return "DatabaseCloseTask"; } + #endif // *** DatabaseTransactionTask *** // Starts a transaction that will report its results via a callback. -DatabaseBackend::DatabaseTransactionTask::DatabaseTransactionTask(PassRefPtr<SQLTransactionBackend> transaction) - : DatabaseTask(Database::from(transaction->database()), 0) - , m_transaction(transaction) +DatabaseTransactionTask::DatabaseTransactionTask(RefPtr<SQLTransaction>&& transaction) + : DatabaseTask(transaction->database(), 0) + , m_transaction(WTFMove(transaction)) , m_didPerformTask(false) { } -DatabaseBackend::DatabaseTransactionTask::~DatabaseTransactionTask() +DatabaseTransactionTask::~DatabaseTransactionTask() { // If the task is being destructed without the transaction ever being run, // then we must either have an error or an interruption. Give the @@ -174,48 +155,43 @@ DatabaseBackend::DatabaseTransactionTask::~DatabaseTransactionTask() m_transaction->notifyDatabaseThreadIsShuttingDown(); } -#if PLATFORM(IOS) -bool Database::DatabaseTransactionTask::shouldPerformWhilePaused() const -{ - return m_transaction->shouldPerformWhilePaused(); -} -#endif - -void DatabaseBackend::DatabaseTransactionTask::doPerformTask() +void DatabaseTransactionTask::doPerformTask() { m_transaction->performNextStep(); m_didPerformTask = true; } #if !LOG_DISABLED -const char* DatabaseBackend::DatabaseTransactionTask::debugTaskName() const + +const char* DatabaseTransactionTask::debugTaskName() const { return "DatabaseTransactionTask"; } + #endif // *** DatabaseTableNamesTask *** // Retrieves a list of all tables in the database - for WebInspector support. -DatabaseBackend::DatabaseTableNamesTask::DatabaseTableNamesTask(DatabaseBackend* database, DatabaseTaskSynchronizer* synchronizer, Vector<String>& names) - : DatabaseTask(database, synchronizer) - , m_tableNames(names) +DatabaseTableNamesTask::DatabaseTableNamesTask(Database& database, DatabaseTaskSynchronizer& synchronizer, Vector<String>& result) + : DatabaseTask(database, &synchronizer) + , m_result(result) { - ASSERT(synchronizer); // A task with output parameters is supposed to be synchronous. } -void DatabaseBackend::DatabaseTableNamesTask::doPerformTask() +void DatabaseTableNamesTask::doPerformTask() { - m_tableNames = Database::from(database())->performGetTableNames(); + // FIXME: Why no need for an isolatedCopy here? + m_result = database().performGetTableNames(); } #if !LOG_DISABLED -const char* DatabaseBackend::DatabaseTableNamesTask::debugTaskName() const + +const char* DatabaseTableNamesTask::debugTaskName() const { return "DatabaseTableNamesTask"; } + #endif } // namespace WebCore - -#endif |