| Index: Source/modules/webdatabase/SQLTransactionBackendSync.cpp
|
| diff --git a/Source/modules/webdatabase/SQLTransactionBackendSync.cpp b/Source/modules/webdatabase/SQLTransactionBackendSync.cpp
|
| index b1e298be8ddb8194391ae1e64617d2c66d9ec234..20dae909485b2b529c76e089018d631510973b33 100644
|
| --- a/Source/modules/webdatabase/SQLTransactionBackendSync.cpp
|
| +++ b/Source/modules/webdatabase/SQLTransactionBackendSync.cpp
|
| @@ -60,15 +60,32 @@ SQLTransactionBackendSync::SQLTransactionBackendSync(DatabaseSync* db, PassOwnPt
|
| , m_transactionClient(adoptPtr(new SQLTransactionClient()))
|
| {
|
| ASSERT(m_database->executionContext()->isContextThread());
|
| +#if ENABLE(OILPAN)
|
| + m_database->registerTransaction(static_cast<SQLTransactionSync*>(this));
|
| +#endif
|
| }
|
|
|
| -SQLTransactionBackendSync::~SQLTransactionBackendSync()
|
| +void SQLTransactionBackendSync::rollbackIfInProgress()
|
| {
|
| - ASSERT(m_database->executionContext()->isContextThread());
|
| + ASSERT(!m_database->executionContext() || m_database->executionContext()->isContextThread());
|
| if (m_sqliteTransaction && m_sqliteTransaction->inProgress())
|
| rollback();
|
| }
|
|
|
| +SQLTransactionBackendSync::~SQLTransactionBackendSync()
|
| +{
|
| +#if ENABLE(OILPAN)
|
| + ASSERT(!m_sqliteTransaction || !m_sqliteTransaction->inProgress());
|
| +#else
|
| + rollbackIfInProgress();
|
| +#endif
|
| +}
|
| +
|
| +void SQLTransactionBackendSync::trace(Visitor* visitor)
|
| +{
|
| + visitor->trace(m_database);
|
| +}
|
| +
|
| PassRefPtr<SQLResultSet> SQLTransactionBackendSync::executeSQL(const String& sqlStatement, const Vector<SQLValue>& arguments, ExceptionState& exceptionState)
|
| {
|
| ASSERT(m_database->executionContext()->isContextThread());
|
| @@ -229,9 +246,10 @@ void SQLTransactionBackendSync::commit(ExceptionState& exceptionState)
|
| m_database->reportCommitTransactionResult(0, -1, 0); // OK
|
| }
|
|
|
| +// This can be called while doing weak processing. Do not allocate new on-heap objects.
|
| void SQLTransactionBackendSync::rollback()
|
| {
|
| - ASSERT(m_database->executionContext()->isContextThread());
|
| + ASSERT(!m_database->executionContext() || m_database->executionContext()->isContextThread());
|
| m_database->disableAuthorizer();
|
| if (m_sqliteTransaction) {
|
| m_sqliteTransaction->rollback();
|
|
|