| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007, 2008, 2013 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007, 2008, 2013 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 | 136 |
| 137 void Database::runTransaction(PassOwnPtr<SQLTransactionCallback> callback, PassO
wnPtr<SQLTransactionErrorCallback> errorCallback, | 137 void Database::runTransaction(PassOwnPtr<SQLTransactionCallback> callback, PassO
wnPtr<SQLTransactionErrorCallback> errorCallback, |
| 138 PassOwnPtr<VoidCallback> successCallback, bool readOnly, const ChangeVersion
Data* changeVersionData) | 138 PassOwnPtr<VoidCallback> successCallback, bool readOnly, const ChangeVersion
Data* changeVersionData) |
| 139 { | 139 { |
| 140 // FIXME: Rather than passing errorCallback to SQLTransaction and then somet
imes firing it ourselves, | 140 // FIXME: Rather than passing errorCallback to SQLTransaction and then somet
imes firing it ourselves, |
| 141 // this code should probably be pushed down into DatabaseBackend so that we
only create the SQLTransaction | 141 // this code should probably be pushed down into DatabaseBackend so that we
only create the SQLTransaction |
| 142 // if we're actually going to run it. | 142 // if we're actually going to run it. |
| 143 #if !ASSERT_DISABLED | 143 #if !ASSERT_DISABLED |
| 144 SQLTransactionErrorCallback* originalErrorCallback = errorCallback.get(); | 144 SQLTransactionErrorCallback* originalErrorCallback = errorCallback.get(); |
| 145 #endif | 145 #endif |
| 146 RefPtr<SQLTransaction> transaction = SQLTransaction::create(this, callback,
successCallback, errorCallback, readOnly); | 146 RefPtrWillBeRawPtr<SQLTransaction> transaction = SQLTransaction::create(this
, callback, successCallback, errorCallback, readOnly); |
| 147 RefPtr<SQLTransactionBackend> transactionBackend = backend()->runTransaction
(transaction, readOnly, changeVersionData); | 147 RefPtr<SQLTransactionBackend> transactionBackend = backend()->runTransaction
(transaction, readOnly, changeVersionData); |
| 148 if (!transactionBackend) { | 148 if (!transactionBackend) { |
| 149 OwnPtr<SQLTransactionErrorCallback> callback = transaction->releaseError
Callback(); | 149 OwnPtr<SQLTransactionErrorCallback> callback = transaction->releaseError
Callback(); |
| 150 ASSERT(callback == originalErrorCallback); | 150 ASSERT(callback == originalErrorCallback); |
| 151 if (callback) { | 151 if (callback) { |
| 152 RefPtr<SQLError> error = SQLError::create(SQLError::UNKNOWN_ERR, "da
tabase has been closed"); | 152 RefPtr<SQLError> error = SQLError::create(SQLError::UNKNOWN_ERR, "da
tabase has been closed"); |
| 153 executionContext()->postTask(createCallbackTask(&callTransactionErro
rCallback, callback.release(), error.release())); | 153 executionContext()->postTask(createCallbackTask(&callTransactionErro
rCallback, callback.release(), error.release())); |
| 154 } | 154 } |
| 155 } | 155 } |
| 156 } | 156 } |
| 157 | 157 |
| 158 // This object is constructed in a database thread, and destructed in the |
| 159 // context thread. |
| 158 class DeliverPendingCallbackTask FINAL : public ExecutionContextTask { | 160 class DeliverPendingCallbackTask FINAL : public ExecutionContextTask { |
| 159 public: | 161 public: |
| 160 static PassOwnPtr<DeliverPendingCallbackTask> create(PassRefPtr<SQLTransacti
on> transaction) | 162 static PassOwnPtr<DeliverPendingCallbackTask> create(PassRefPtrWillBeRawPtr<
SQLTransaction> transaction) |
| 161 { | 163 { |
| 162 return adoptPtr(new DeliverPendingCallbackTask(transaction)); | 164 return adoptPtr(new DeliverPendingCallbackTask(transaction)); |
| 163 } | 165 } |
| 164 | 166 |
| 165 virtual void performTask(ExecutionContext*) OVERRIDE | 167 virtual void performTask(ExecutionContext*) OVERRIDE |
| 166 { | 168 { |
| 167 m_transaction->performPendingCallback(); | 169 m_transaction->performPendingCallback(); |
| 168 } | 170 } |
| 169 | 171 |
| 170 private: | 172 private: |
| 171 DeliverPendingCallbackTask(PassRefPtr<SQLTransaction> transaction) | 173 DeliverPendingCallbackTask(PassRefPtrWillBeRawPtr<SQLTransaction> transactio
n) |
| 172 : m_transaction(transaction) | 174 : m_transaction(transaction) |
| 173 { | 175 { |
| 174 } | 176 } |
| 175 | 177 |
| 176 RefPtr<SQLTransaction> m_transaction; | 178 RefPtrWillBeCrossThreadPersistent<SQLTransaction> m_transaction; |
| 177 }; | 179 }; |
| 178 | 180 |
| 179 void Database::scheduleTransactionCallback(SQLTransaction* transaction) | 181 void Database::scheduleTransactionCallback(SQLTransaction* transaction) |
| 180 { | 182 { |
| 181 executionContext()->postTask(DeliverPendingCallbackTask::create(transaction)
); | 183 executionContext()->postTask(DeliverPendingCallbackTask::create(transaction)
); |
| 182 } | 184 } |
| 183 | 185 |
| 184 Vector<String> Database::performGetTableNames() | 186 Vector<String> Database::performGetTableNames() |
| 185 { | 187 { |
| 186 disableAuthorizer(); | 188 disableAuthorizer(); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 backend()->reportStartTransactionResult(errorSite, webSqlErrorCode, sqliteEr
rorCode); | 242 backend()->reportStartTransactionResult(errorSite, webSqlErrorCode, sqliteEr
rorCode); |
| 241 } | 243 } |
| 242 | 244 |
| 243 void Database::reportCommitTransactionResult(int errorSite, int webSqlErrorCode,
int sqliteErrorCode) | 245 void Database::reportCommitTransactionResult(int errorSite, int webSqlErrorCode,
int sqliteErrorCode) |
| 244 { | 246 { |
| 245 backend()->reportCommitTransactionResult(errorSite, webSqlErrorCode, sqliteE
rrorCode); | 247 backend()->reportCommitTransactionResult(errorSite, webSqlErrorCode, sqliteE
rrorCode); |
| 246 } | 248 } |
| 247 | 249 |
| 248 | 250 |
| 249 } // namespace WebCore | 251 } // namespace WebCore |
| OLD | NEW |