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(); |
} |