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

Unified Diff: Source/modules/webdatabase/DatabaseTask.cpp

Issue 219963019: Revert r170536 - "Rename DatabaseTaskSynchronizer to TaskSynchronizer ..." (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/modules/webdatabase/DatabaseTask.h ('k') | Source/modules/webdatabase/DatabaseThread.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/webdatabase/DatabaseTask.cpp
diff --git a/Source/modules/webdatabase/DatabaseTask.cpp b/Source/modules/webdatabase/DatabaseTask.cpp
index 83d5efff929967d36850d4864fdb7dc524d318ff..986e6fcda1d63b860be1dabf5346b90e5f7a27ea 100644
--- a/Source/modules/webdatabase/DatabaseTask.cpp
+++ b/Source/modules/webdatabase/DatabaseTask.cpp
@@ -25,7 +25,6 @@
* (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 "modules/webdatabase/DatabaseTask.h"
@@ -36,7 +35,34 @@
namespace WebCore {
-DatabaseTask::DatabaseTask(DatabaseBackend* database, TaskSynchronizer* synchronizer)
+DatabaseTaskSynchronizer::DatabaseTaskSynchronizer()
+ : m_taskCompleted(false)
+#ifndef NDEBUG
+ , m_hasCheckedForTermination(false)
+#endif
+{
+}
+
+void DatabaseTaskSynchronizer::waitForTaskCompletion()
+{
+ // Prevent the deadlock between park request by other threads and blocking
+ // by m_synchronousCondition.
+ ThreadState::SafePointScope scope(ThreadState::HeapPointersOnStack);
+ m_synchronousMutex.lock();
+ while (!m_taskCompleted)
+ m_synchronousCondition.wait(m_synchronousMutex);
+ m_synchronousMutex.unlock();
+}
+
+void DatabaseTaskSynchronizer::taskCompleted()
+{
+ m_synchronousMutex.lock();
+ m_taskCompleted = true;
+ m_synchronousCondition.signal();
+ m_synchronousMutex.unlock();
+}
+
+DatabaseTask::DatabaseTask(DatabaseBackend* database, DatabaseTaskSynchronizer* synchronizer)
: m_database(database)
, m_synchronizer(synchronizer)
#if !LOG_DISABLED
@@ -83,7 +109,7 @@ void DatabaseTask::run()
// *** DatabaseOpenTask ***
// Opens the database file and verifies the version matches the expected version.
-DatabaseBackend::DatabaseOpenTask::DatabaseOpenTask(DatabaseBackend* database, bool setVersionInNewDatabase, TaskSynchronizer* synchronizer, DatabaseError& error, String& errorMessage, bool& success)
+DatabaseBackend::DatabaseOpenTask::DatabaseOpenTask(DatabaseBackend* database, bool setVersionInNewDatabase, DatabaseTaskSynchronizer* synchronizer, DatabaseError& error, String& errorMessage, bool& success)
: DatabaseTask(database, synchronizer)
, m_setVersionInNewDatabase(setVersionInNewDatabase)
, m_error(error)
@@ -111,7 +137,7 @@ const char* DatabaseBackend::DatabaseOpenTask::debugTaskName() const
// *** DatabaseCloseTask ***
// Closes the database.
-DatabaseBackend::DatabaseCloseTask::DatabaseCloseTask(DatabaseBackend* database, TaskSynchronizer* synchronizer)
+DatabaseBackend::DatabaseCloseTask::DatabaseCloseTask(DatabaseBackend* database, DatabaseTaskSynchronizer* synchronizer)
: DatabaseTask(database, synchronizer)
{
}
@@ -169,7 +195,7 @@ const char* DatabaseBackend::DatabaseTransactionTask::debugTaskName() const
// *** DatabaseTableNamesTask ***
// Retrieves a list of all tables in the database - for WebInspector support.
-DatabaseBackend::DatabaseTableNamesTask::DatabaseTableNamesTask(DatabaseBackend* database, TaskSynchronizer* synchronizer, Vector<String>& names)
+DatabaseBackend::DatabaseTableNamesTask::DatabaseTableNamesTask(DatabaseBackend* database, DatabaseTaskSynchronizer* synchronizer, Vector<String>& names)
: DatabaseTask(database, synchronizer)
, m_tableNames(names)
{
« no previous file with comments | « Source/modules/webdatabase/DatabaseTask.h ('k') | Source/modules/webdatabase/DatabaseThread.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698