| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Apple Inc. All rights reserved. | 2 * Copyright (C) 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 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 774 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 ASSERT(executionContext()->isContextThread()); | 785 ASSERT(executionContext()->isContextThread()); |
| 786 if (databaseContext()->databaseThreadAvailable() && opened()) { | 786 if (databaseContext()->databaseThreadAvailable() && opened()) { |
| 787 logErrorMessage("forcibly closing database"); | 787 logErrorMessage("forcibly closing database"); |
| 788 databaseContext()->databaseThread()->scheduleTask(DatabaseCloseTask::cre
ate(this, 0)); | 788 databaseContext()->databaseThread()->scheduleTask(DatabaseCloseTask::cre
ate(this, 0)); |
| 789 } | 789 } |
| 790 } | 790 } |
| 791 | 791 |
| 792 void Database::changeVersion( | 792 void Database::changeVersion( |
| 793 const String& oldVersion, | 793 const String& oldVersion, |
| 794 const String& newVersion, | 794 const String& newVersion, |
| 795 PassOwnPtrWillBeRawPtr<SQLTransactionCallback> callback, | 795 SQLTransactionCallback* callback, |
| 796 PassOwnPtrWillBeRawPtr<SQLTransactionErrorCallback> errorCallback, | 796 SQLTransactionErrorCallback* errorCallback, |
| 797 PassOwnPtrWillBeRawPtr<VoidCallback> successCallback) | 797 VoidCallback* successCallback) |
| 798 { | 798 { |
| 799 ChangeVersionData data(oldVersion, newVersion); | 799 ChangeVersionData data(oldVersion, newVersion); |
| 800 runTransaction(callback, errorCallback, successCallback, false, &data); | 800 runTransaction(callback, errorCallback, successCallback, false, &data); |
| 801 } | 801 } |
| 802 | 802 |
| 803 void Database::transaction( | 803 void Database::transaction( |
| 804 PassOwnPtrWillBeRawPtr<SQLTransactionCallback> callback, | 804 SQLTransactionCallback* callback, |
| 805 PassOwnPtrWillBeRawPtr<SQLTransactionErrorCallback> errorCallback, | 805 SQLTransactionErrorCallback* errorCallback, |
| 806 PassOwnPtrWillBeRawPtr<VoidCallback> successCallback) | 806 VoidCallback* successCallback) |
| 807 { | 807 { |
| 808 runTransaction(callback, errorCallback, successCallback, false); | 808 runTransaction(callback, errorCallback, successCallback, false); |
| 809 } | 809 } |
| 810 | 810 |
| 811 void Database::readTransaction( | 811 void Database::readTransaction( |
| 812 PassOwnPtrWillBeRawPtr<SQLTransactionCallback> callback, | 812 SQLTransactionCallback* callback, |
| 813 PassOwnPtrWillBeRawPtr<SQLTransactionErrorCallback> errorCallback, | 813 SQLTransactionErrorCallback* errorCallback, |
| 814 PassOwnPtrWillBeRawPtr<VoidCallback> successCallback) | 814 VoidCallback* successCallback) |
| 815 { | 815 { |
| 816 runTransaction(callback, errorCallback, successCallback, true); | 816 runTransaction(callback, errorCallback, successCallback, true); |
| 817 } | 817 } |
| 818 | 818 |
| 819 static void callTransactionErrorCallback(ExecutionContext*, PassOwnPtrWillBeRawP
tr<SQLTransactionErrorCallback> callback, PassOwnPtr<SQLErrorData> errorData) | 819 static void callTransactionErrorCallback(ExecutionContext*, SQLTransactionErrorC
allback* callback, PassOwnPtr<SQLErrorData> errorData) |
| 820 { | 820 { |
| 821 RefPtrWillBeRawPtr<SQLError> error = SQLError::create(*errorData); | 821 RefPtrWillBeRawPtr<SQLError> error = SQLError::create(*errorData); |
| 822 callback->handleEvent(error.get()); | 822 callback->handleEvent(error.get()); |
| 823 } | 823 } |
| 824 | 824 |
| 825 void Database::runTransaction( | 825 void Database::runTransaction( |
| 826 PassOwnPtrWillBeRawPtr<SQLTransactionCallback> callback, | 826 SQLTransactionCallback* callback, |
| 827 PassOwnPtrWillBeRawPtr<SQLTransactionErrorCallback> errorCallback, | 827 SQLTransactionErrorCallback* errorCallback, |
| 828 PassOwnPtrWillBeRawPtr<VoidCallback> successCallback, | 828 VoidCallback* successCallback, |
| 829 bool readOnly, | 829 bool readOnly, |
| 830 const ChangeVersionData* changeVersionData) | 830 const ChangeVersionData* changeVersionData) |
| 831 { | 831 { |
| 832 // FIXME: Rather than passing errorCallback to SQLTransaction and then | 832 // FIXME: Rather than passing errorCallback to SQLTransaction and then |
| 833 // sometimes firing it ourselves, this code should probably be pushed down | 833 // sometimes firing it ourselves, this code should probably be pushed down |
| 834 // into Database so that we only create the SQLTransaction if we're | 834 // into Database so that we only create the SQLTransaction if we're |
| 835 // actually going to run it. | 835 // actually going to run it. |
| 836 #if ENABLE(ASSERT) | 836 #if ENABLE(ASSERT) |
| 837 SQLTransactionErrorCallback* originalErrorCallback = errorCallback.get(); | 837 SQLTransactionErrorCallback* originalErrorCallback = errorCallback; |
| 838 #endif | 838 #endif |
| 839 RefPtrWillBeRawPtr<SQLTransaction> transaction = SQLTransaction::create(this
, callback, successCallback, errorCallback, readOnly); | 839 RefPtrWillBeRawPtr<SQLTransaction> transaction = SQLTransaction::create(this
, callback, successCallback, errorCallback, readOnly); |
| 840 RefPtrWillBeRawPtr<SQLTransactionBackend> transactionBackend = runTransactio
n(transaction, readOnly, changeVersionData); | 840 RefPtrWillBeRawPtr<SQLTransactionBackend> transactionBackend = runTransactio
n(transaction, readOnly, changeVersionData); |
| 841 if (!transactionBackend) { | 841 if (!transactionBackend) { |
| 842 OwnPtrWillBeRawPtr<SQLTransactionErrorCallback> callback = transaction->
releaseErrorCallback(); | 842 SQLTransactionErrorCallback* callback = transaction->releaseErrorCallbac
k(); |
| 843 ASSERT(callback == originalErrorCallback); | 843 ASSERT(callback == originalErrorCallback); |
| 844 if (callback) { | 844 if (callback) { |
| 845 OwnPtr<SQLErrorData> error = SQLErrorData::create(SQLError::UNKNOWN_
ERR, "database has been closed"); | 845 OwnPtr<SQLErrorData> error = SQLErrorData::create(SQLError::UNKNOWN_
ERR, "database has been closed"); |
| 846 executionContext()->postTask(createCrossThreadTask(&callTransactionE
rrorCallback, callback.release(), error.release())); | 846 executionContext()->postTask(createCrossThreadTask(&callTransactionE
rrorCallback, callback, error.release())); |
| 847 } | 847 } |
| 848 } | 848 } |
| 849 } | 849 } |
| 850 | 850 |
| 851 // This object is constructed in a database thread, and destructed in the | 851 // This object is constructed in a database thread, and destructed in the |
| 852 // context thread. | 852 // context thread. |
| 853 class DeliverPendingCallbackTask FINAL : public ExecutionContextTask { | 853 class DeliverPendingCallbackTask FINAL : public ExecutionContextTask { |
| 854 public: | 854 public: |
| 855 static PassOwnPtr<DeliverPendingCallbackTask> create(PassRefPtrWillBeRawPtr<
SQLTransaction> transaction) | 855 static PassOwnPtr<DeliverPendingCallbackTask> create(PassRefPtrWillBeRawPtr<
SQLTransaction> transaction) |
| 856 { | 856 { |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 925 SecurityOrigin* Database::securityOrigin() const | 925 SecurityOrigin* Database::securityOrigin() const |
| 926 { | 926 { |
| 927 if (executionContext()->isContextThread()) | 927 if (executionContext()->isContextThread()) |
| 928 return m_contextThreadSecurityOrigin.get(); | 928 return m_contextThreadSecurityOrigin.get(); |
| 929 if (databaseContext()->databaseThread()->isDatabaseThread()) | 929 if (databaseContext()->databaseThread()->isDatabaseThread()) |
| 930 return m_databaseThreadSecurityOrigin.get(); | 930 return m_databaseThreadSecurityOrigin.get(); |
| 931 return 0; | 931 return 0; |
| 932 } | 932 } |
| 933 | 933 |
| 934 } // namespace blink | 934 } // namespace blink |
| OLD | NEW |