| Index: Source/modules/webdatabase/SQLTransactionBackend.cpp
|
| diff --git a/Source/modules/webdatabase/SQLTransactionBackend.cpp b/Source/modules/webdatabase/SQLTransactionBackend.cpp
|
| index 0daab89995d154dd9f12feab987083b644029067..762fb1a6061aef05810fbef6de7c802d8fad90a3 100644
|
| --- a/Source/modules/webdatabase/SQLTransactionBackend.cpp
|
| +++ b/Source/modules/webdatabase/SQLTransactionBackend.cpp
|
| @@ -433,9 +433,9 @@ AbstractSQLStatement* SQLTransactionBackend::currentStatement()
|
| return m_currentStatementBackend->frontend();
|
| }
|
|
|
| -PassRefPtr<SQLError> SQLTransactionBackend::transactionError()
|
| +SQLErrorData* SQLTransactionBackend::transactionError()
|
| {
|
| - return m_transactionError;
|
| + return m_transactionError.get();
|
| }
|
|
|
| void SQLTransactionBackend::setShouldRetryCurrentStatement(bool shouldRetry)
|
| @@ -573,7 +573,7 @@ SQLTransactionState SQLTransactionBackend::openTransactionAndPreflight()
|
| if (!m_sqliteTransaction->inProgress()) {
|
| ASSERT(!m_database->sqliteDatabase().transactionInProgress());
|
| m_database->reportStartTransactionResult(2, SQLError::DATABASE_ERR, m_database->sqliteDatabase().lastError());
|
| - m_transactionError = SQLError::create(SQLError::DATABASE_ERR, "unable to begin transaction",
|
| + m_transactionError = SQLErrorData::create(SQLError::DATABASE_ERR, "unable to begin transaction",
|
| m_database->sqliteDatabase().lastError(), m_database->sqliteDatabase().lastErrorMsg());
|
| m_sqliteTransaction.clear();
|
| return nextStateForTransactionError();
|
| @@ -585,7 +585,7 @@ SQLTransactionState SQLTransactionBackend::openTransactionAndPreflight()
|
| String actualVersion;
|
| if (!m_database->getActualVersionForTransaction(actualVersion)) {
|
| m_database->reportStartTransactionResult(3, SQLError::DATABASE_ERR, m_database->sqliteDatabase().lastError());
|
| - m_transactionError = SQLError::create(SQLError::DATABASE_ERR, "unable to read version",
|
| + m_transactionError = SQLErrorData::create(SQLError::DATABASE_ERR, "unable to read version",
|
| m_database->sqliteDatabase().lastError(), m_database->sqliteDatabase().lastErrorMsg());
|
| m_database->disableAuthorizer();
|
| m_sqliteTransaction.clear();
|
| @@ -599,10 +599,11 @@ SQLTransactionState SQLTransactionBackend::openTransactionAndPreflight()
|
| m_database->disableAuthorizer();
|
| m_sqliteTransaction.clear();
|
| m_database->enableAuthorizer();
|
| - m_transactionError = m_wrapper->sqlError();
|
| - if (!m_transactionError) {
|
| + if (m_wrapper->sqlError()) {
|
| + m_transactionError = SQLErrorData::create(*m_wrapper->sqlError());
|
| + } else {
|
| m_database->reportStartTransactionResult(4, SQLError::UNKNOWN_ERR, 0);
|
| - m_transactionError = SQLError::create(SQLError::UNKNOWN_ERR, "unknown error occurred during transaction preflight");
|
| + m_transactionError = SQLErrorData::create(SQLError::UNKNOWN_ERR, "unknown error occurred during transaction preflight");
|
| }
|
| return nextStateForTransactionError();
|
| }
|
| @@ -699,10 +700,11 @@ SQLTransactionState SQLTransactionBackend::nextStateForCurrentStatementError()
|
| if (m_currentStatementBackend->hasStatementErrorCallback() && !m_sqliteTransaction->wasRolledBackBySqlite())
|
| return SQLTransactionState::DeliverStatementCallback;
|
|
|
| - m_transactionError = m_currentStatementBackend->sqlError();
|
| - if (!m_transactionError) {
|
| + if (m_currentStatementBackend->sqlError()) {
|
| + m_transactionError = SQLErrorData::create(*m_currentStatementBackend->sqlError());
|
| + } else {
|
| m_database->reportCommitTransactionResult(1, SQLError::DATABASE_ERR, 0);
|
| - m_transactionError = SQLError::create(SQLError::DATABASE_ERR, "the statement failed to execute");
|
| + m_transactionError = SQLErrorData::create(SQLError::DATABASE_ERR, "the statement failed to execute");
|
| }
|
| return nextStateForTransactionError();
|
| }
|
| @@ -713,10 +715,11 @@ SQLTransactionState SQLTransactionBackend::postflightAndCommit()
|
|
|
| // Spec 4.3.2.7: Perform postflight steps, jumping to the error callback if they fail.
|
| if (m_wrapper && !m_wrapper->performPostflight(this)) {
|
| - m_transactionError = m_wrapper->sqlError();
|
| - if (!m_transactionError) {
|
| + if (m_wrapper->sqlError()) {
|
| + m_transactionError = SQLErrorData::create(*m_wrapper->sqlError());
|
| + } else {
|
| m_database->reportCommitTransactionResult(3, SQLError::UNKNOWN_ERR, 0);
|
| - m_transactionError = SQLError::create(SQLError::UNKNOWN_ERR, "unknown error occurred during transaction postflight");
|
| + m_transactionError = SQLErrorData::create(SQLError::UNKNOWN_ERR, "unknown error occurred during transaction postflight");
|
| }
|
| return nextStateForTransactionError();
|
| }
|
| @@ -733,7 +736,7 @@ SQLTransactionState SQLTransactionBackend::postflightAndCommit()
|
| if (m_wrapper)
|
| m_wrapper->handleCommitFailedAfterPostflight(this);
|
| m_database->reportCommitTransactionResult(4, SQLError::DATABASE_ERR, m_database->sqliteDatabase().lastError());
|
| - m_transactionError = SQLError::create(SQLError::DATABASE_ERR, "unable to commit transaction",
|
| + m_transactionError = SQLErrorData::create(SQLError::DATABASE_ERR, "unable to commit transaction",
|
| m_database->sqliteDatabase().lastError(), m_database->sqliteDatabase().lastErrorMsg());
|
| return nextStateForTransactionError();
|
| }
|
|
|