Changeset 191400 in webkit
- Timestamp:
- Oct 21, 2015, 1:22:31 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 30 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r191392 r191400 1 2015-10-21 Brady Eidson <beidson@apple.com> 2 3 Modern IDB: Add basic transaction aborting. 4 https://bugs.webkit.org/show_bug.cgi?id=150148 5 6 Reviewed by Alex Christensen. 7 8 * storage/indexeddb/modern/double-abort-expected.txt: Added. 9 * storage/indexeddb/modern/double-abort.html: Added. 10 * storage/indexeddb/modern/versionchange-abort-then-reopen-expected.txt: Added. 11 * storage/indexeddb/modern/versionchange-abort-then-reopen.html: Added. 12 1 13 2015-10-21 Antoine Quint <graouts@apple.com> 2 14 -
trunk/Source/WebCore/CMakeLists.txt
r191383 r191400 905 905 Modules/indexeddb/server/IDBServer.cpp 906 906 Modules/indexeddb/server/IDBServerOperation.cpp 907 Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp 907 908 Modules/indexeddb/server/MemoryIDBBackingStore.cpp 908 909 Modules/indexeddb/server/UniqueIDBDatabase.cpp -
trunk/Source/WebCore/ChangeLog
r191398 r191400 1 2015-10-21 Brady Eidson <beidson@apple.com> 2 3 Modern IDB: Add basic transaction aborting. 4 https://bugs.webkit.org/show_bug.cgi?id=150148 5 6 Reviewed by Alex Christensen. 7 8 Tests: storage/indexeddb/modern/double-abort.html 9 storage/indexeddb/modern/versionchange-abort-then-reopen.html 10 11 * CMakeLists.txt: 12 * WebCore.xcodeproj/project.pbxproj: 13 14 * Modules/indexeddb/IndexedDB.h: 15 16 * Modules/indexeddb/client/IDBConnectionToServer.cpp: 17 (WebCore::IDBClient::IDBConnectionToServer::abortTransaction): 18 (WebCore::IDBClient::IDBConnectionToServer::didAbortTransaction): 19 * Modules/indexeddb/client/IDBConnectionToServer.h: 20 * Modules/indexeddb/client/IDBConnectionToServerDelegate.h: 21 22 * Modules/indexeddb/client/IDBDatabaseImpl.cpp: 23 (WebCore::IDBClient::IDBDatabase::abortTransaction): 24 (WebCore::IDBClient::IDBDatabase::didCommitOrAbortTransaction): 25 * Modules/indexeddb/client/IDBDatabaseImpl.h: 26 27 * Modules/indexeddb/client/IDBTransactionImpl.cpp: 28 (WebCore::IDBClient::IDBTransaction::IDBTransaction): 29 (WebCore::IDBClient::IDBTransaction::abort): 30 (WebCore::IDBClient::IDBTransaction::isFinishedOrFinishing): 31 (WebCore::IDBClient::IDBTransaction::activationTimerFired): 32 (WebCore::IDBClient::IDBTransaction::didAbort): 33 * Modules/indexeddb/client/IDBTransactionImpl.h: 34 35 * Modules/indexeddb/server/IDBBackingStore.h: 36 37 * Modules/indexeddb/server/IDBConnectionToClient.cpp: 38 (WebCore::IDBServer::IDBConnectionToClient::didAbortTransaction): 39 * Modules/indexeddb/server/IDBConnectionToClient.h: 40 * Modules/indexeddb/server/IDBConnectionToClientDelegate.h: 41 42 * Modules/indexeddb/server/IDBServer.cpp: 43 (WebCore::IDBServer::IDBServer::abortTransaction): 44 * Modules/indexeddb/server/IDBServer.h: 45 46 * Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp: 47 (WebCore::IDBServer::MemoryBackingStoreTransaction::create): 48 (WebCore::IDBServer::MemoryBackingStoreTransaction::MemoryBackingStoreTransaction): 49 (WebCore::IDBServer::MemoryBackingStoreTransaction::~MemoryBackingStoreTransaction): 50 (WebCore::IDBServer::MemoryBackingStoreTransaction::abort): 51 (WebCore::IDBServer::MemoryBackingStoreTransaction::commit): 52 * Modules/indexeddb/server/MemoryBackingStoreTransaction.h: 53 (WebCore::IDBServer::MemoryBackingStoreTransaction::isVersionChange): 54 55 * Modules/indexeddb/server/MemoryIDBBackingStore.cpp: 56 (WebCore::IDBServer::MemoryIDBBackingStore::setDatabaseInfo): 57 (WebCore::IDBServer::MemoryIDBBackingStore::beginTransaction): 58 (WebCore::IDBServer::MemoryIDBBackingStore::abortTransaction): 59 (WebCore::IDBServer::MemoryIDBBackingStore::commitTransaction): 60 * Modules/indexeddb/server/MemoryIDBBackingStore.h: 61 62 * Modules/indexeddb/server/UniqueIDBDatabase.cpp: 63 (WebCore::IDBServer::UniqueIDBDatabase::startVersionChangeTransaction): 64 (WebCore::IDBServer::UniqueIDBDatabase::beginTransactionInBackingStore): 65 (WebCore::IDBServer::UniqueIDBDatabase::commitTransaction): 66 (WebCore::IDBServer::UniqueIDBDatabase::performCommitTransaction): 67 (WebCore::IDBServer::UniqueIDBDatabase::didPerformCommitTransaction): 68 (WebCore::IDBServer::UniqueIDBDatabase::abortTransaction): 69 (WebCore::IDBServer::UniqueIDBDatabase::performAbortTransaction): 70 (WebCore::IDBServer::UniqueIDBDatabase::didPerformAbortTransaction): 71 * Modules/indexeddb/server/UniqueIDBDatabase.h: 72 73 * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp: 74 (WebCore::IDBServer::UniqueIDBDatabaseConnection::didAbortTransaction): 75 * Modules/indexeddb/server/UniqueIDBDatabaseConnection.h: 76 77 * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp: 78 (WebCore::IDBServer::UniqueIDBDatabaseTransaction::UniqueIDBDatabaseTransaction): 79 (WebCore::IDBServer::UniqueIDBDatabaseTransaction::originalDatabaseInfo): 80 (WebCore::IDBServer::UniqueIDBDatabaseTransaction::abort): 81 * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h: 82 83 * Modules/indexeddb/shared/IDBError.cpp: 84 (WebCore::idbErrorName): 85 (WebCore::idbErrorDescription): 86 * Modules/indexeddb/shared/IDBError.h: 87 88 * Modules/indexeddb/shared/InProcessIDBServer.cpp: 89 (WebCore::InProcessIDBServer::didAbortTransaction): 90 (WebCore::InProcessIDBServer::abortTransaction): 91 * Modules/indexeddb/shared/InProcessIDBServer.h: 92 1 93 2015-10-21 Chris Dumez <cdumez@apple.com> 2 94 -
trunk/Source/WebCore/Modules/indexeddb/IndexedDB.h
r191210 r191400 44 44 Running, 45 45 Committing, 46 Aborting, 46 47 Finished, 47 48 }; -
trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp
r191198 r191400 114 114 } 115 115 116 void IDBConnectionToServer::abortTransaction(IDBTransaction& transaction) 117 { 118 LOG(IndexedDB, "IDBConnectionToServer::abortTransaction"); 119 ASSERT(!m_abortingTransactions.contains(transaction.info().identifier())); 120 m_abortingTransactions.set(transaction.info().identifier(), &transaction); 121 122 auto identifier = transaction.info().identifier(); 123 m_delegate->abortTransaction(identifier); 124 } 125 126 void IDBConnectionToServer::didAbortTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError& error) 127 { 128 LOG(IndexedDB, "IDBConnectionToServer::didAbortTransaction"); 129 130 auto transaction = m_abortingTransactions.take(transactionIdentifier); 131 ASSERT(transaction); 132 133 transaction->didAbort(error); 134 } 135 116 136 void IDBConnectionToServer::fireVersionChangeEvent(uint64_t databaseConnectionIdentifier, uint64_t requestedVersion) 117 137 { -
trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h
r191198 r191400 62 62 void didCommitTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&); 63 63 64 void abortTransaction(IDBTransaction&); 65 void didAbortTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&); 66 64 67 void fireVersionChangeEvent(uint64_t databaseConnectionIdentifier, uint64_t requestedVersion); 65 68 … … 76 79 HashMap<uint64_t, IDBDatabase*> m_databaseConnectionMap; 77 80 HashMap<IDBResourceIdentifier, RefPtr<IDBTransaction>> m_committingTransactions; 81 HashMap<IDBResourceIdentifier, RefPtr<IDBTransaction>> m_abortingTransactions; 78 82 }; 79 83 -
trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServerDelegate.h
r191182 r191400 43 43 virtual void deleteDatabase(IDBRequestData&) = 0; 44 44 virtual void openDatabase(IDBRequestData&) = 0; 45 virtual void abortTransaction(IDBResourceIdentifier&) = 0; 45 46 virtual void commitTransaction(IDBResourceIdentifier&) = 0; 46 47 virtual void databaseConnectionClosed(uint64_t databaseConnectionIdentifier) = 0; -
trunk/Source/WebCore/Modules/indexeddb/client/IDBDatabaseImpl.cpp
r191265 r191400 176 176 } 177 177 178 void IDBDatabase::abortTransaction(IDBTransaction& transaction) 179 { 180 LOG(IndexedDB, "IDBDatabase::abortTransaction"); 181 182 auto refTransaction = m_activeTransactions.take(transaction.info().identifier()); 183 ASSERT(refTransaction); 184 m_abortingTransactions.set(transaction.info().identifier(), WTF::move(refTransaction)); 185 186 m_serverConnection->abortTransaction(transaction); 187 } 188 178 189 void IDBDatabase::didAbortTransaction(IDBTransaction& transaction) 179 190 { … … 188 199 if (m_versionChangeTransaction == &transaction) 189 200 m_versionChangeTransaction = nullptr; 190 191 ASSERT(m_activeTransactions.contains(transaction.info().identifier()) || m_committingTransactions.contains(transaction.info().identifier())); 201 202 #ifndef NDBEBUG 203 unsigned count = 0; 204 if (m_activeTransactions.contains(transaction.info().identifier())) 205 ++count; 206 if (m_committingTransactions.contains(transaction.info().identifier())) 207 ++count; 208 if (m_abortingTransactions.contains(transaction.info().identifier())) 209 ++count; 210 211 ASSERT(count == 1); 212 #endif 192 213 193 214 m_activeTransactions.remove(transaction.info().identifier()); 194 215 m_committingTransactions.remove(transaction.info().identifier()); 216 m_abortingTransactions.remove(transaction.info().identifier()); 195 217 } 196 218 -
trunk/Source/WebCore/Modules/indexeddb/client/IDBDatabaseImpl.h
r191198 r191400 76 76 void commitTransaction(IDBTransaction&); 77 77 void didCommitTransaction(IDBTransaction&); 78 void abortTransaction(IDBTransaction&); 78 79 void didAbortTransaction(IDBTransaction&); 79 80 … … 97 98 HashMap<IDBResourceIdentifier, RefPtr<IDBTransaction>> m_activeTransactions; 98 99 HashMap<IDBResourceIdentifier, RefPtr<IDBTransaction>> m_committingTransactions; 100 HashMap<IDBResourceIdentifier, RefPtr<IDBTransaction>> m_abortingTransactions; 99 101 }; 100 102 -
trunk/Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.cpp
r191114 r191400 32 32 #include "EventQueue.h" 33 33 #include "IDBDatabaseImpl.h" 34 #include "IDBError.h" 34 35 #include "IDBEventDispatcher.h" 35 36 #include "IDBObjectStore.h" … … 52 53 53 54 { 55 m_activationTimer = std::make_unique<Timer>(*this, &IDBTransaction::activationTimerFired); 56 m_activationTimer->startOneShot(0); 57 58 if (m_info.mode() == IndexedDB::TransactionMode::VersionChange) 59 m_originalDatabaseInfo = std::make_unique<IDBDatabaseInfo>(m_database->info()); 60 54 61 suspendIfNeeded(); 55 scheduleOperationTimer();56 62 m_state = IndexedDB::TransactionState::Running; 57 63 } … … 92 98 } 93 99 94 void IDBTransaction::abort(ExceptionCode&) 95 { 96 ASSERT_NOT_REACHED(); 100 void IDBTransaction::abort(ExceptionCode& ec) 101 { 102 LOG(IndexedDB, "IDBTransaction::abort"); 103 104 if (isFinishedOrFinishing()) { 105 ec = INVALID_STATE_ERR; 106 return; 107 } 108 109 m_state = IndexedDB::TransactionState::Aborting; 110 111 m_database->abortTransaction(*this); 97 112 } 98 113 … … 115 130 { 116 131 return m_state == IndexedDB::TransactionState::Running; 132 } 133 134 bool IDBTransaction::isFinishedOrFinishing() const 135 { 136 return m_state == IndexedDB::TransactionState::Committing 137 || m_state == IndexedDB::TransactionState::Aborting 138 || m_state == IndexedDB::TransactionState::Finished; 139 } 140 141 void IDBTransaction::activationTimerFired() 142 { 143 scheduleOperationTimer(); 144 m_activationTimer = nullptr; 117 145 } 118 146 … … 150 178 151 179 m_database->commitTransaction(*this); 180 } 181 182 void IDBTransaction::didAbort(const IDBError& error) 183 { 184 LOG(IndexedDB, "IDBTransaction::didAbort"); 185 186 ASSERT(m_state == IndexedDB::TransactionState::Aborting || m_state == IndexedDB::TransactionState::Running); 187 188 m_database->didAbortTransaction(*this); 189 190 m_idbError = error; 191 fireOnAbort(); 192 193 m_state = IndexedDB::TransactionState::Finished; 152 194 } 153 195 -
trunk/Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.h
r191114 r191400 29 29 #if ENABLE(INDEXED_DATABASE) 30 30 31 #include "IDBDatabaseInfo.h" 31 32 #include "IDBError.h" 32 33 #include "IDBTransaction.h" … … 69 70 const IDBDatabase& database() const { return m_database.get(); } 70 71 72 void didAbort(const IDBError&); 71 73 void didCommit(const IDBError&); 72 74 … … 75 77 76 78 bool isActive() const; 79 bool isFinishedOrFinishing() const; 77 80 void commit(); 78 81 79 82 void scheduleOperationTimer(); 80 83 void operationTimerFired(); 84 void activationTimerFired(); 81 85 82 86 void fireOnComplete(); … … 86 90 Ref<IDBDatabase> m_database; 87 91 IDBTransactionInfo m_info; 92 std::unique_ptr<IDBDatabaseInfo> m_originalDatabaseInfo; 88 93 89 94 IndexedDB::TransactionState m_state { IndexedDB::TransactionState::Unstarted }; … … 91 96 92 97 Timer m_operationTimer; 98 std::unique_ptr<Timer> m_activationTimer; 93 99 }; 94 100 -
trunk/Source/WebCore/Modules/indexeddb/server/IDBBackingStore.h
r190379 r191400 30 30 31 31 #include "IDBDatabaseInfo.h" 32 #include "IDBError.h" 32 33 33 34 namespace WebCore { 35 36 class IDBResourceIdentifier; 37 class IDBTransactionInfo; 38 34 39 namespace IDBServer { 35 40 … … 39 44 40 45 virtual const IDBDatabaseInfo& getOrEstablishDatabaseInfo() = 0; 46 47 virtual IDBError beginTransaction(const IDBTransactionInfo&) = 0; 48 virtual IDBError abortTransaction(const IDBResourceIdentifier& transactionIdentifier) = 0; 49 virtual IDBError commitTransaction(const IDBResourceIdentifier& transactionIdentifier) = 0; 41 50 }; 42 51 -
trunk/Source/WebCore/Modules/indexeddb/server/IDBConnectionToClient.cpp
r191114 r191400 59 59 } 60 60 61 void IDBConnectionToClient::didAbortTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError& error) 62 { 63 m_delegate->didAbortTransaction(transactionIdentifier, error); 64 } 65 61 66 void IDBConnectionToClient::didCommitTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError& error) 62 67 { -
trunk/Source/WebCore/Modules/indexeddb/server/IDBConnectionToClient.h
r191114 r191400 51 51 void didDeleteDatabase(const IDBResultData&); 52 52 void didOpenDatabase(const IDBResultData&); 53 void didAbortTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&); 53 54 void didCommitTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&); 54 55 -
trunk/Source/WebCore/Modules/indexeddb/server/IDBConnectionToClientDelegate.h
r191114 r191400 47 47 virtual void didDeleteDatabase(const IDBResultData&) = 0; 48 48 virtual void didOpenDatabase(const IDBResultData&) = 0; 49 virtual void didAbortTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&) = 0; 49 50 virtual void didCommitTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&) = 0; 50 51 -
trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.cpp
r191182 r191400 143 143 } 144 144 145 void IDBServer::abortTransaction(const IDBResourceIdentifier& transactionIdentifier) 146 { 147 LOG(IndexedDB, "IDBServer::abortTransaction"); 148 149 auto transaction = m_transactions.get(transactionIdentifier); 150 if (!transaction) { 151 // If there is no transaction there is nothing to abort. 152 // We also have no access to a connection over which to message failure-to-abort. 153 return; 154 } 155 156 transaction->abort(); 157 } 158 145 159 void IDBServer::commitTransaction(const IDBResourceIdentifier& transactionIdentifier) 146 160 { -
trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.h
r191182 r191400 58 58 void openDatabase(const IDBRequestData&); 59 59 void deleteDatabase(const IDBRequestData&); 60 void abortTransaction(const IDBResourceIdentifier&); 60 61 void commitTransaction(const IDBResourceIdentifier&); 61 62 void databaseConnectionClosed(uint64_t databaseConnectionIdentifier); -
trunk/Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp
r191399 r191400 24 24 */ 25 25 26 #i fndef IDBError_h27 # define IDBError_h26 #include "config.h" 27 #include "MemoryBackingStoreTransaction.h" 28 28 29 29 #if ENABLE(INDEXED_DATABASE) 30 30 31 #include <wtf/text/WTFString.h> 31 #include "IndexedDB.h" 32 #include "Logging.h" 33 #include "MemoryIDBBackingStore.h" 32 34 33 35 namespace WebCore { 36 namespace IDBServer { 34 37 35 enum class IDBExceptionCode { 36 None = 0, 37 Unknown, 38 VersionError, 39 }; 38 std::unique_ptr<MemoryBackingStoreTransaction> MemoryBackingStoreTransaction::create(MemoryIDBBackingStore& backingStore, const IDBTransactionInfo& info) 39 { 40 return std::make_unique<MemoryBackingStoreTransaction>(backingStore, info); 41 } 40 42 41 class IDBError { 42 public: 43 IDBError() { } 44 IDBError(IDBExceptionCode); 45 IDBError(IDBExceptionCode, const String& message); 43 MemoryBackingStoreTransaction::MemoryBackingStoreTransaction(MemoryIDBBackingStore& backingStore, const IDBTransactionInfo& info) 44 : m_backingStore(backingStore) 45 , m_info(info) 46 { 47 if (m_info.mode() == IndexedDB::TransactionMode::VersionChange) 48 m_originalDatabaseInfo = std::make_unique<IDBDatabaseInfo>(m_backingStore.getOrEstablishDatabaseInfo()); 49 } 46 50 47 IDBError& operator=(const IDBError&); 51 MemoryBackingStoreTransaction::~MemoryBackingStoreTransaction() 52 { 53 ASSERT(!m_inProgress); 54 } 48 55 49 const String& name() const; 50 const String& message() const; 56 void MemoryBackingStoreTransaction::abort() 57 { 58 LOG(IndexedDB, "MemoryBackingStoreTransaction::abort()"); 51 59 52 bool isNull() const { return m_code == IDBExceptionCode::None; } 60 if (m_originalDatabaseInfo) { 61 ASSERT(m_info.mode() == IndexedDB::TransactionMode::VersionChange); 62 m_backingStore.setDatabaseInfo(*m_originalDatabaseInfo); 63 } 53 64 54 IDBError isolatedCopy() const; 65 m_inProgress = false; 66 } 55 67 56 private: 57 IDBExceptionCode m_code { IDBExceptionCode::None }; 58 String m_message; 59 }; 68 void MemoryBackingStoreTransaction::commit() 69 { 70 LOG(IndexedDB, "MemoryBackingStoreTransaction::commit()"); 60 71 72 m_inProgress = false; 73 } 74 75 } // namespace IDBServer 61 76 } // namespace WebCore 62 77 63 78 #endif // ENABLE(INDEXED_DATABASE) 64 #endif // IDBError_h -
trunk/Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.h
r191399 r191400 24 24 */ 25 25 26 #ifndef IDBError_h27 #define IDBError_h26 #ifndef MemoryBackingStoreTransaction_h 27 #define MemoryBackingStoreTransaction_h 28 28 29 29 #if ENABLE(INDEXED_DATABASE) 30 30 31 #include <wtf/text/WTFString.h> 31 #include "IDBDatabaseInfo.h" 32 #include "IDBTransactionInfo.h" 32 33 33 34 namespace WebCore { 35 namespace IDBServer { 34 36 35 enum class IDBExceptionCode { 36 None = 0, 37 Unknown, 38 VersionError, 37 class MemoryIDBBackingStore; 38 39 class MemoryBackingStoreTransaction { 40 friend std::unique_ptr<MemoryBackingStoreTransaction> std::make_unique<MemoryBackingStoreTransaction>(WebCore::IDBServer::MemoryIDBBackingStore&, const WebCore::IDBTransactionInfo&); 41 public: 42 static std::unique_ptr<MemoryBackingStoreTransaction> create(MemoryIDBBackingStore&, const IDBTransactionInfo&); 43 44 ~MemoryBackingStoreTransaction(); 45 46 bool isVersionChange() const { return m_info.mode() == IndexedDB::TransactionMode::VersionChange; } 47 48 const IDBDatabaseInfo& originalDatabaseInfo() const; 49 50 void abort(); 51 void commit(); 52 53 private: 54 MemoryBackingStoreTransaction(MemoryIDBBackingStore&, const IDBTransactionInfo&); 55 56 MemoryIDBBackingStore& m_backingStore; 57 IDBTransactionInfo m_info; 58 59 std::unique_ptr<IDBDatabaseInfo> m_originalDatabaseInfo; 60 61 bool m_inProgress { true }; 39 62 }; 40 63 41 class IDBError { 42 public: 43 IDBError() { } 44 IDBError(IDBExceptionCode); 45 IDBError(IDBExceptionCode, const String& message); 46 47 IDBError& operator=(const IDBError&); 48 49 const String& name() const; 50 const String& message() const; 51 52 bool isNull() const { return m_code == IDBExceptionCode::None; } 53 54 IDBError isolatedCopy() const; 55 56 private: 57 IDBExceptionCode m_code { IDBExceptionCode::None }; 58 String m_message; 59 }; 60 64 } // namespace IDBServer 61 65 } // namespace WebCore 62 66 63 67 #endif // ENABLE(INDEXED_DATABASE) 64 #endif // IDBError_h68 #endif // MemoryBackingStoreTransaction_h -
trunk/Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp
r190379 r191400 29 29 #if ENABLE(INDEXED_DATABASE) 30 30 31 #include "Logging.h" 32 31 33 namespace WebCore { 32 34 namespace IDBServer { … … 54 56 } 55 57 58 void MemoryIDBBackingStore::setDatabaseInfo(const IDBDatabaseInfo& info) 59 { 60 // It is not valid to directly set database info on a backing store that hasn't already set its own database info. 61 ASSERT(m_databaseInfo); 62 63 m_databaseInfo = std::make_unique<IDBDatabaseInfo>(info); 64 } 65 66 IDBError MemoryIDBBackingStore::beginTransaction(const IDBTransactionInfo& info) 67 { 68 LOG(IndexedDB, "MemoryIDBBackingStore::beginTransaction"); 69 70 if (m_transactions.contains(info.identifier())) 71 return IDBError(IDBExceptionCode::InvalidStateError, "Backing store asked to create transaction it already has a record of"); 72 73 auto transaction = MemoryBackingStoreTransaction::create(*this, info); 74 m_transactions.set(info.identifier(), WTF::move(transaction)); 75 76 return IDBError(); 77 } 78 79 IDBError MemoryIDBBackingStore::abortTransaction(const IDBResourceIdentifier& transactionIdentifier) 80 { 81 LOG(IndexedDB, "MemoryIDBBackingStore::abortTransaction"); 82 83 auto transaction = m_transactions.take(transactionIdentifier); 84 if (!transaction) 85 return IDBError(IDBExceptionCode::InvalidStateError, "Backing store asked to abort transaction it didn't have record of"); 86 87 transaction->abort(); 88 89 return IDBError(); 90 } 91 92 IDBError MemoryIDBBackingStore::commitTransaction(const IDBResourceIdentifier& transactionIdentifier) 93 { 94 LOG(IndexedDB, "MemoryIDBBackingStore::commitTransaction"); 95 96 auto transaction = m_transactions.take(transactionIdentifier); 97 if (!transaction) 98 return IDBError(IDBExceptionCode::InvalidStateError, "Backing store asked to commit transaction it didn't have record of"); 99 100 transaction->commit(); 101 102 return IDBError(); 103 } 104 56 105 } // namespace IDBServer 57 106 } // namespace WebCore -
trunk/Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h
r190384 r191400 31 31 #include "IDBBackingStore.h" 32 32 #include "IDBDatabaseIdentifier.h" 33 #include "IDBResourceIdentifier.h" 34 #include "MemoryBackingStoreTransaction.h" 35 #include <wtf/HashMap.h> 33 36 34 37 namespace WebCore { … … 43 46 44 47 virtual const IDBDatabaseInfo& getOrEstablishDatabaseInfo() override final; 45 48 void setDatabaseInfo(const IDBDatabaseInfo&); 49 50 virtual IDBError beginTransaction(const IDBTransactionInfo&) override final; 51 virtual IDBError abortTransaction(const IDBResourceIdentifier& transactionIdentifier) override final; 52 virtual IDBError commitTransaction(const IDBResourceIdentifier& transactionIdentifier) override final; 53 46 54 private: 47 55 MemoryIDBBackingStore(const IDBDatabaseIdentifier&); … … 49 57 IDBDatabaseIdentifier m_identifier; 50 58 std::unique_ptr<IDBDatabaseInfo> m_databaseInfo; 59 60 HashMap<IDBResourceIdentifier, std::unique_ptr<MemoryBackingStoreTransaction>> m_transactions; 61 51 62 }; 52 63 -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp
r191265 r191400 31 31 #include "IDBResultData.h" 32 32 #include "IDBServer.h" 33 #include "IDBTransactionInfo.h" 33 34 #include "Logging.h" 34 35 #include "UniqueIDBDatabaseConnection.h" … … 157 158 158 159 m_versionChangeTransaction = &m_versionChangeDatabaseConnection->createVersionChangeTransaction(requestedVersion); 160 m_server.postDatabaseTask(createCrossThreadTask(*this, &UniqueIDBDatabase::beginTransactionInBackingStore, m_versionChangeTransaction->info())); 159 161 160 162 auto result = IDBResultData::openDatabaseUpgradeNeeded(operation->requestData().requestIdentifier(), *m_versionChangeTransaction); 161 163 operation->connection().didOpenDatabase(result); 164 } 165 166 void UniqueIDBDatabase::beginTransactionInBackingStore(const IDBTransactionInfo& info) 167 { 168 LOG(IndexedDB, "(db) UniqueIDBDatabase::beginTransactionInBackingStore"); 169 m_backingStore->beginTransaction(info); 162 170 } 163 171 … … 215 223 LOG(IndexedDB, "(main) UniqueIDBDatabase::commitTransaction"); 216 224 225 ASSERT(&transaction.databaseConnection().database() == this); 226 217 227 if (m_versionChangeTransaction == &transaction) { 218 228 ASSERT(&m_versionChangeTransaction->databaseConnection() == m_versionChangeDatabaseConnection); … … 226 236 } 227 237 228 void UniqueIDBDatabase::performCommitTransaction(uint64_t callbackIdentifier, const IDBResourceIdentifier& )238 void UniqueIDBDatabase::performCommitTransaction(uint64_t callbackIdentifier, const IDBResourceIdentifier& transactionIdentifier) 229 239 { 230 240 ASSERT(!isMainThread()); 231 241 LOG(IndexedDB, "(db) UniqueIDBDatabase::performCommitTransaction"); 232 242 233 // FIXME: Commit transaction in backing store, once that exists. 234 235 IDBError error; 243 IDBError error = m_backingStore->commitTransaction(transactionIdentifier); 236 244 m_server.postDatabaseTaskReply(createCrossThreadTask(*this, &UniqueIDBDatabase::didPerformCommitTransaction, callbackIdentifier, error)); 237 238 245 } 239 246 … … 242 249 ASSERT(isMainThread()); 243 250 LOG(IndexedDB, "(main) UniqueIDBDatabase::didPerformCommitTransaction"); 251 252 // Previously blocked transactions might now be unblocked. 253 invokeTransactionScheduler(); 254 255 performErrorCallback(callbackIdentifier, error); 256 } 257 258 void UniqueIDBDatabase::abortTransaction(UniqueIDBDatabaseTransaction& transaction, ErrorCallback callback) 259 { 260 ASSERT(isMainThread()); 261 LOG(IndexedDB, "(main) UniqueIDBDatabase::abortTransaction"); 262 263 ASSERT(&transaction.databaseConnection().database() == this); 264 265 if (m_versionChangeTransaction == &transaction) { 266 ASSERT(&m_versionChangeTransaction->databaseConnection() == m_versionChangeDatabaseConnection); 267 ASSERT(transaction.originalDatabaseInfo()); 268 m_databaseInfo = std::make_unique<IDBDatabaseInfo>(*transaction.originalDatabaseInfo()); 269 m_versionChangeTransaction = nullptr; 270 m_versionChangeDatabaseConnection = nullptr; 271 } 272 273 uint64_t callbackID = storeCallback(callback); 274 m_server.postDatabaseTask(createCrossThreadTask(*this, &UniqueIDBDatabase::performAbortTransaction, callbackID, transaction.info().identifier())); 275 } 276 277 void UniqueIDBDatabase::performAbortTransaction(uint64_t callbackIdentifier, const IDBResourceIdentifier& transactionIdentifier) 278 { 279 ASSERT(!isMainThread()); 280 LOG(IndexedDB, "(db) UniqueIDBDatabase::performAbortTransaction"); 281 282 IDBError error = m_backingStore->abortTransaction(transactionIdentifier); 283 m_server.postDatabaseTaskReply(createCrossThreadTask(*this, &UniqueIDBDatabase::didPerformAbortTransaction, callbackIdentifier, error)); 284 } 285 286 void UniqueIDBDatabase::didPerformAbortTransaction(uint64_t callbackIdentifier, const IDBError& error) 287 { 288 ASSERT(isMainThread()); 289 LOG(IndexedDB, "(main) UniqueIDBDatabase::didPerformAbortTransaction"); 290 291 // Previously blocked transactions might now be unblocked. 292 invokeTransactionScheduler(); 244 293 245 294 performErrorCallback(callbackIdentifier, error); -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h
r191198 r191400 45 45 class IDBError; 46 46 class IDBRequestData; 47 class IDBTransactionInfo; 47 48 48 49 namespace IDBServer { … … 66 67 67 68 void commitTransaction(UniqueIDBDatabaseTransaction&, ErrorCallback); 69 void abortTransaction(UniqueIDBDatabaseTransaction&, ErrorCallback); 68 70 void transactionDestroyed(UniqueIDBDatabaseTransaction&); 69 71 void connectionClosedFromClient(UniqueIDBDatabaseConnection&); … … 84 86 void openBackingStore(const IDBDatabaseIdentifier&); 85 87 void performCommitTransaction(uint64_t callbackIdentifier, const IDBResourceIdentifier& transactionIdentifier); 88 void performAbortTransaction(uint64_t callbackIdentifier, const IDBResourceIdentifier& transactionIdentifier); 89 void beginTransactionInBackingStore(const IDBTransactionInfo&); 86 90 87 91 // Main thread callbacks 88 92 void didOpenBackingStore(const IDBDatabaseInfo&); 89 93 void didPerformCommitTransaction(uint64_t callbackIdentifier, const IDBError&); 94 void didPerformAbortTransaction(uint64_t callbackIdentifier, const IDBError&); 90 95 91 96 void performErrorCallback(uint64_t callbackIdentifier, const IDBError&); -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp
r191182 r191400 94 94 } 95 95 96 void UniqueIDBDatabaseConnection::didAbortTransaction(UniqueIDBDatabaseTransaction& transaction, const IDBError& error) 97 { 98 LOG(IndexedDB, "UniqueIDBDatabaseConnection::didAbortTransaction"); 99 100 auto transactionIdentifier = transaction.info().identifier(); 101 102 ASSERT(m_transactionMap.contains(transactionIdentifier)); 103 m_transactionMap.remove(transactionIdentifier); 104 105 m_connectionToClient.didAbortTransaction(transactionIdentifier, error); 106 } 107 96 108 void UniqueIDBDatabaseConnection::didCommitTransaction(UniqueIDBDatabaseTransaction& transaction, const IDBError& error) 97 109 { -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.h
r191182 r191400 63 63 UniqueIDBDatabaseTransaction& createVersionChangeTransaction(uint64_t newVersion); 64 64 65 void didAbortTransaction(UniqueIDBDatabaseTransaction&, const IDBError&); 65 66 void didCommitTransaction(UniqueIDBDatabaseTransaction&, const IDBError&); 66 67 -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp
r191114 r191400 45 45 , m_transactionInfo(info) 46 46 { 47 if (m_transactionInfo.mode() == IndexedDB::TransactionMode::VersionChange) 48 m_originalDatabaseInfo = std::make_unique<IDBDatabaseInfo>(m_databaseConnection->database().info()); 49 47 50 m_databaseConnection->database().server().registerTransaction(*this); 48 51 } … … 52 55 m_databaseConnection->database().transactionDestroyed(*this); 53 56 m_databaseConnection->database().server().unregisterTransaction(*this); 57 } 58 59 IDBDatabaseInfo* UniqueIDBDatabaseTransaction::originalDatabaseInfo() const 60 { 61 ASSERT(m_transactionInfo.mode() == IndexedDB::TransactionMode::VersionChange); 62 return m_originalDatabaseInfo.get(); 63 } 64 65 void UniqueIDBDatabaseTransaction::abort() 66 { 67 LOG(IndexedDB, "UniqueIDBDatabaseTransaction::abort"); 68 69 RefPtr<UniqueIDBDatabaseTransaction> self(this); 70 m_databaseConnection->database().abortTransaction(*this, [this, self](const IDBError& error) { 71 LOG(IndexedDB, "UniqueIDBDatabaseTransaction::abort (callback)"); 72 m_databaseConnection->didAbortTransaction(*this, error); 73 }); 54 74 } 55 75 -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h
r191114 r191400 35 35 36 36 namespace WebCore { 37 38 class IDBDatabaseInfo; 39 37 40 namespace IDBServer { 38 41 … … 48 51 const IDBTransactionInfo& info() const { return m_transactionInfo; } 49 52 53 IDBDatabaseInfo* originalDatabaseInfo() const; 54 55 void abort(); 50 56 void commit(); 51 57 … … 55 61 Ref<UniqueIDBDatabaseConnection> m_databaseConnection; 56 62 IDBTransactionInfo m_transactionInfo; 63 64 std::unique_ptr<IDBDatabaseInfo> m_originalDatabaseInfo; 57 65 }; 58 66 -
trunk/Source/WebCore/Modules/indexeddb/shared/IDBError.cpp
r191182 r191400 44 44 return entry; 45 45 } 46 case IDBExceptionCode::InvalidStateError: { 47 static NeverDestroyed<String> entry = ASCIILiteral("InvalidStateError"); 48 return entry; 49 } 46 50 case IDBExceptionCode::None: 47 51 RELEASE_ASSERT_NOT_REACHED(); … … 55 59 switch (code) { 56 60 case IDBExceptionCode::Unknown: { 57 NeverDestroyed<String> entry = ASCIILiteral("Operation failed for reasons unrelated to the database itself and not covered by any other errors.");61 static NeverDestroyed<String> entry = ASCIILiteral("Operation failed for reasons unrelated to the database itself and not covered by any other errors."); 58 62 return entry.get(); 59 63 } 60 64 case IDBExceptionCode::VersionError: { 61 NeverDestroyed<String> entry = ASCIILiteral("An attempt was made to open a database using a lower version than the existing version.");65 static NeverDestroyed<String> entry = ASCIILiteral("An attempt was made to open a database using a lower version than the existing version."); 62 66 return entry.get(); 67 } 68 case IDBExceptionCode::InvalidStateError: { 69 static NeverDestroyed<String> entry = ASCIILiteral("Operation was called on an object on which it is not allowed or at a time when it is not allowed."); 70 return entry; 63 71 } 64 72 case IDBExceptionCode::None: -
trunk/Source/WebCore/Modules/indexeddb/shared/IDBError.h
r191114 r191400 37 37 Unknown, 38 38 VersionError, 39 40 // Indexed DB existing exception codes with IDB-specific error messages: 41 InvalidStateError, 39 42 }; 40 43 -
trunk/Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp
r191182 r191400 103 103 } 104 104 105 void InProcessIDBServer::didAbortTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError& error) 106 { 107 RefPtr<InProcessIDBServer> self(this); 108 RunLoop::current().dispatch([this, self, transactionIdentifier, error] { 109 m_connectionToServer->didAbortTransaction(transactionIdentifier, error); 110 }); 111 } 112 105 113 void InProcessIDBServer::didCommitTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError& error) 106 114 { … … 108 116 RunLoop::current().dispatch([this, self, transactionIdentifier, error] { 109 117 m_connectionToServer->didCommitTransaction(transactionIdentifier, error); 118 }); 119 } 120 121 void InProcessIDBServer::abortTransaction(IDBResourceIdentifier& resourceIdentifier) 122 { 123 RefPtr<InProcessIDBServer> self(this); 124 RunLoop::current().dispatch([this, self, resourceIdentifier] { 125 m_server->abortTransaction(resourceIdentifier); 110 126 }); 111 127 } -
trunk/Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.h
r191182 r191400 57 57 virtual void deleteDatabase(IDBRequestData&) override final; 58 58 virtual void openDatabase(IDBRequestData&) override final; 59 virtual void abortTransaction(IDBResourceIdentifier&) override final; 59 60 virtual void commitTransaction(IDBResourceIdentifier&) override final; 60 61 virtual void databaseConnectionClosed(uint64_t databaseConnectionIdentifier) override final; … … 64 65 virtual void didDeleteDatabase(const IDBResultData&) override final; 65 66 virtual void didOpenDatabase(const IDBResultData&) override final; 67 virtual void didAbortTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&) override final; 66 68 virtual void didCommitTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&) override final; 67 69 virtual void fireVersionChangeEvent(IDBServer::UniqueIDBDatabaseConnection&, uint64_t requestedVersion) override final; -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r191383 r191400 1517 1517 416E29A6102FA962007FC14E /* WorkerReportingProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 416E29A5102FA962007FC14E /* WorkerReportingProxy.h */; }; 1518 1518 416E6FE81BBD12DF000A6033 /* StreamInternalsBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764C9 /* StreamInternalsBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1519 416E6FE81BBD12DF000A6043 /* ReadableStreamInternalsBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764D9 /* ReadableStreamInternalsBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1520 416E6FE81BBD12DF000A6053 /* WritableStreamInternalsBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764E9 /* WritableStreamInternalsBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1521 416E6FE91BBD12E5000A6043 /* ReadableStreamBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764D8 /* ReadableStreamBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1522 416E6FE91BBD12E5000A6053 /* WritableStreamBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764E8 /* WritableStreamBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1519 1523 416E6FEA1BBD1684000A6034 /* StreamInternalsBuiltinsWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8071BB3110D00B764CA /* StreamInternalsBuiltinsWrapper.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1520 416E6FE81BBD12DF000A6043 /* ReadableStreamInternalsBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764D9 /* ReadableStreamInternalsBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; };1521 416E6FE91BBD12E5000A6043 /* ReadableStreamBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764D8 /* ReadableStreamBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; };1522 1524 416E6FEA1BBD1684000A6044 /* ReadableStreamInternalsBuiltinsWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8071BB3110D00B764DA /* ReadableStreamInternalsBuiltinsWrapper.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1523 416E6FE81BBD12DF000A6053 /* WritableStreamInternalsBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764E9 /* WritableStreamInternalsBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; };1524 416E6FE91BBD12E5000A6053 /* WritableStreamBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764E8 /* WritableStreamBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; };1525 1525 416E6FEA1BBD1684000A6054 /* WritableStreamInternalsBuiltinsWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8071BB3110D00B764EA /* WritableStreamInternalsBuiltinsWrapper.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1526 1526 417253AA1354BBBC00360F2A /* MediaControlElements.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 417253A81354BBBC00360F2A /* MediaControlElements.cpp */; }; … … 2186 2186 51E0BB380DA5ACB600A9E417 /* StorageMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E0BB360DA5ACB600A9E417 /* StorageMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2187 2187 51E0BB390DA5ACB600A9E417 /* StorageMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51E0BB370DA5ACB600A9E417 /* StorageMap.cpp */; }; 2188 51E1BAC21BD8064E0055D81F /* MemoryBackingStoreTransaction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51E1BAC01BD806470055D81F /* MemoryBackingStoreTransaction.cpp */; }; 2189 51E1BAC31BD8064E0055D81F /* MemoryBackingStoreTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E1BAC11BD806470055D81F /* MemoryBackingStoreTransaction.h */; }; 2188 2190 51E1ECBE0C91C90400DC255B /* IconDatabaseClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E1ECB80C91C90400DC255B /* IconDatabaseClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2189 2191 51E1ECC00C91C90400DC255B /* IconRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51E1ECBA0C91C90400DC255B /* IconRecord.cpp */; }; … … 2662 2664 7C4902A218B825F8007D9298 /* DOMWheelEventInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85989DCA0ACC8BBD00A0BC51 /* DOMWheelEventInternal.h */; }; 2663 2665 7C4C96DC1AD4483500365A50 /* JSReadableStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C4C96D81AD4483500365A50 /* JSReadableStream.cpp */; }; 2666 7C4C96DC1AD4483500365A60 /* JSWritableStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C4C96D81AD4483500365A60 /* JSWritableStream.cpp */; }; 2664 2667 7C4C96DD1AD4483500365A50 /* JSReadableStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C4C96D91AD4483500365A50 /* JSReadableStream.h */; }; 2668 7C4C96DD1AD4483500365A60 /* JSWritableStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C4C96D91AD4483500365A60 /* JSWritableStream.h */; }; 2665 2669 7C4C96DE1AD4483500365A50 /* JSReadableStreamReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C4C96DA1AD4483500365A50 /* JSReadableStreamReader.cpp */; }; 2666 2670 7C4C96DF1AD4483500365A50 /* JSReadableStreamReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C4C96DB1AD4483500365A50 /* JSReadableStreamReader.h */; }; 2667 7C4C96DC1AD4483500365A60 /* JSWritableStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C4C96D81AD4483500365A60 /* JSWritableStream.cpp */; };2668 7C4C96DD1AD4483500365A60 /* JSWritableStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C4C96D91AD4483500365A60 /* JSWritableStream.h */; };2669 2671 7C4C96E31AD44ABF00365A50 /* LaunchServicesSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C4C96E21AD44ABF00365A50 /* LaunchServicesSPI.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2670 2672 7C4EDD741A7B607800198C4D /* FontCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7C4EDD731A7B607800198C4D /* FontCocoa.mm */; }; … … 9592 9594 51E0BB360DA5ACB600A9E417 /* StorageMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageMap.h; sourceTree = "<group>"; }; 9593 9595 51E0BB370DA5ACB600A9E417 /* StorageMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageMap.cpp; sourceTree = "<group>"; }; 9596 51E1BAC01BD806470055D81F /* MemoryBackingStoreTransaction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryBackingStoreTransaction.cpp; sourceTree = "<group>"; }; 9597 51E1BAC11BD806470055D81F /* MemoryBackingStoreTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryBackingStoreTransaction.h; sourceTree = "<group>"; }; 9594 9598 51E1ECB80C91C90400DC255B /* IconDatabaseClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconDatabaseClient.h; sourceTree = "<group>"; }; 9595 9599 51E1ECBA0C91C90400DC255B /* IconRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IconRecord.cpp; sourceTree = "<group>"; }; … … 10121 10125 7C48A6D2191C9D8E00026674 /* WebKitNamespace.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = WebKitNamespace.idl; sourceTree = "<group>"; }; 10122 10126 7C4C96D81AD4483500365A50 /* JSReadableStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSReadableStream.cpp; sourceTree = "<group>"; }; 10127 7C4C96D81AD4483500365A60 /* JSWritableStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWritableStream.cpp; sourceTree = "<group>"; }; 10123 10128 7C4C96D91AD4483500365A50 /* JSReadableStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSReadableStream.h; sourceTree = "<group>"; }; 10129 7C4C96D91AD4483500365A60 /* JSWritableStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWritableStream.h; sourceTree = "<group>"; }; 10124 10130 7C4C96DA1AD4483500365A50 /* JSReadableStreamReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSReadableStreamReader.cpp; sourceTree = "<group>"; }; 10125 10131 7C4C96DB1AD4483500365A50 /* JSReadableStreamReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSReadableStreamReader.h; sourceTree = "<group>"; }; 10126 7C4C96D81AD4483500365A60 /* JSWritableStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWritableStream.cpp; sourceTree = "<group>"; };10127 7C4C96D91AD4483500365A60 /* JSWritableStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWritableStream.h; sourceTree = "<group>"; };10128 10132 7C4C96E21AD44ABF00365A50 /* LaunchServicesSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LaunchServicesSPI.h; sourceTree = "<group>"; }; 10129 10133 7C4EDD731A7B607800198C4D /* FontCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FontCocoa.mm; sourceTree = "<group>"; }; … … 11365 11369 9908B0ED1BCACF9100ED0F65 /* ByteLengthQueuingStrategy.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ByteLengthQueuingStrategy.js; sourceTree = "<group>"; }; 11366 11370 9908B0EE1BCACF9100ED0F65 /* CountQueuingStrategy.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = CountQueuingStrategy.js; sourceTree = "<group>"; }; 11371 9908B0EF1BCACF9100ED0F65 /* ReadableStream.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ReadableStream.js; sourceTree = "<group>"; }; 11372 9908B0EF1BCACF9100ED0F75 /* WritableStream.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = WritableStream.js; sourceTree = "<group>"; }; 11373 9908B0F01BCACF9100ED0F65 /* ReadableStreamController.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ReadableStreamController.js; sourceTree = "<group>"; }; 11367 11374 9908B0F11BCACF9100ED0F55 /* StreamInternals.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = StreamInternals.js; sourceTree = "<group>"; }; 11368 9908B0FD1BCAD07D00ED0F55 /* StreamInternalsBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StreamInternalsBuiltins.cpp; sourceTree = "<group>"; };11369 9908B0EF1BCACF9100ED0F65 /* ReadableStream.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ReadableStream.js; sourceTree = "<group>"; };11370 9908B0F01BCACF9100ED0F65 /* ReadableStreamController.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ReadableStreamController.js; sourceTree = "<group>"; };11371 11375 9908B0F11BCACF9100ED0F65 /* ReadableStreamInternals.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ReadableStreamInternals.js; sourceTree = "<group>"; }; 11376 9908B0F11BCACF9100ED0F75 /* WritableStreamInternals.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = WritableStreamInternals.js; sourceTree = "<group>"; }; 11372 11377 9908B0F21BCACF9100ED0F65 /* ReadableStreamReader.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ReadableStreamReader.js; sourceTree = "<group>"; }; 11373 9908B0EF1BCACF9100ED0F75 /* WritableStream.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = WritableStream.js; sourceTree = "<group>"; };11374 9908B0F11BCACF9100ED0F75 /* WritableStreamInternals.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = WritableStreamInternals.js; sourceTree = "<group>"; };11375 11378 9908B0F31BCACFFE00ED0F65 /* ByteLengthQueuingStrategyBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ByteLengthQueuingStrategyBuiltins.cpp; sourceTree = "<group>"; }; 11376 11379 9908B0F41BCACFFE00ED0F65 /* ByteLengthQueuingStrategyBuiltinsWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ByteLengthQueuingStrategyBuiltinsWrapper.h; sourceTree = "<group>"; }; … … 11380 11383 9908B0F81BCAD07D00ED0F65 /* CountQueuingStrategyBuiltinsWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CountQueuingStrategyBuiltinsWrapper.h; sourceTree = "<group>"; }; 11381 11384 9908B0F91BCAD07D00ED0F65 /* ReadableStreamBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReadableStreamBuiltins.cpp; sourceTree = "<group>"; }; 11385 9908B0F91BCAD07D00ED0F75 /* WritableStreamBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WritableStreamBuiltins.cpp; sourceTree = "<group>"; }; 11382 11386 9908B0FA1BCAD07D00ED0F65 /* ReadableStreamControllerBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReadableStreamControllerBuiltins.cpp; sourceTree = "<group>"; }; 11383 11387 9908B0FB1BCAD07D00ED0F65 /* ReadableStreamControllerBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadableStreamControllerBuiltins.h; sourceTree = "<group>"; }; 11384 11388 9908B0FC1BCAD07D00ED0F65 /* ReadableStreamControllerBuiltinsWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadableStreamControllerBuiltinsWrapper.h; sourceTree = "<group>"; }; 11389 9908B0FD1BCAD07D00ED0F55 /* StreamInternalsBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StreamInternalsBuiltins.cpp; sourceTree = "<group>"; }; 11385 11390 9908B0FD1BCAD07D00ED0F65 /* ReadableStreamInternalsBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReadableStreamInternalsBuiltins.cpp; sourceTree = "<group>"; }; 11391 9908B0FD1BCAD07D00ED0F75 /* WritableStreamInternalsBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WritableStreamInternalsBuiltins.cpp; sourceTree = "<group>"; }; 11386 11392 9908B0FE1BCAD07D00ED0F65 /* ReadableStreamReaderBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReadableStreamReaderBuiltins.cpp; sourceTree = "<group>"; }; 11387 11393 9908B0FF1BCAD07D00ED0F65 /* ReadableStreamReaderBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadableStreamReaderBuiltins.h; sourceTree = "<group>"; }; 11388 11394 9908B1001BCAD07D00ED0F65 /* ReadableStreamReaderBuiltinsWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadableStreamReaderBuiltinsWrapper.h; sourceTree = "<group>"; }; 11389 9908B0F91BCAD07D00ED0F75 /* WritableStreamBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WritableStreamBuiltins.cpp; sourceTree = "<group>"; };11390 9908B0FD1BCAD07D00ED0F75 /* WritableStreamInternalsBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WritableStreamInternalsBuiltins.cpp; sourceTree = "<group>"; };11391 11395 9920398018B95BC600B39AF9 /* UserInputBridge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserInputBridge.cpp; sourceTree = "<group>"; }; 11392 11396 9920398118B95BC600B39AF9 /* UserInputBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserInputBridge.h; sourceTree = "<group>"; }; … … 11426 11430 9AB1F37F18E2489A00534743 /* CSSToLengthConversionData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSToLengthConversionData.cpp; sourceTree = "<group>"; }; 11427 11431 9B03D8061BB3110D00B764C9 /* StreamInternalsBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StreamInternalsBuiltins.h; sourceTree = "<group>"; }; 11428 9B03D8071BB3110D00B764CA /* StreamInternalsBuiltinsWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StreamInternalsBuiltinsWrapper.h; sourceTree = "<group>"; };11429 11432 9B03D8061BB3110D00B764D8 /* ReadableStreamBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadableStreamBuiltins.h; sourceTree = "<group>"; }; 11430 11433 9B03D8061BB3110D00B764D9 /* ReadableStreamInternalsBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadableStreamInternalsBuiltins.h; sourceTree = "<group>"; }; 11434 9B03D8061BB3110D00B764E8 /* WritableStreamBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WritableStreamBuiltins.h; sourceTree = "<group>"; }; 11435 9B03D8061BB3110D00B764E9 /* WritableStreamInternalsBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WritableStreamInternalsBuiltins.h; sourceTree = "<group>"; }; 11436 9B03D8071BB3110D00B764CA /* StreamInternalsBuiltinsWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StreamInternalsBuiltinsWrapper.h; sourceTree = "<group>"; }; 11431 11437 9B03D8071BB3110D00B764D8 /* ReadableStreamBuiltinsWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadableStreamBuiltinsWrapper.h; sourceTree = "<group>"; }; 11432 11438 9B03D8071BB3110D00B764DA /* ReadableStreamInternalsBuiltinsWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadableStreamInternalsBuiltinsWrapper.h; sourceTree = "<group>"; }; 11433 9B03D8061BB3110D00B764E8 /* WritableStreamBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WritableStreamBuiltins.h; sourceTree = "<group>"; };11434 9B03D8061BB3110D00B764E9 /* WritableStreamInternalsBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WritableStreamInternalsBuiltins.h; sourceTree = "<group>"; };11435 11439 9B03D8071BB3110D00B764E8 /* WritableStreamBuiltinsWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WritableStreamBuiltinsWrapper.h; sourceTree = "<group>"; }; 11436 11440 9B03D8071BB3110D00B764EA /* WritableStreamInternalsBuiltinsWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WritableStreamInternalsBuiltinsWrapper.h; sourceTree = "<group>"; }; … … 16409 16413 9908B0EF1BCACF9100ED0F75 /* WritableStream.js */, 16410 16414 9908B0F11BCACF9100ED0F75 /* WritableStreamInternals.js */, 16411 16412 16415 ); 16413 16416 path = streams; … … 16830 16833 518864E41BBB4B7E00E540C9 /* IDBServerOperation.cpp */, 16831 16834 518864E51BBB4B7E00E540C9 /* IDBServerOperation.h */, 16835 51E1BAC01BD806470055D81F /* MemoryBackingStoreTransaction.cpp */, 16836 51E1BAC11BD806470055D81F /* MemoryBackingStoreTransaction.h */, 16832 16837 51BA4AC81BBC5B9E00DF3D6D /* MemoryIDBBackingStore.cpp */, 16833 16838 51BA4AC91BBC5B9E00DF3D6D /* MemoryIDBBackingStore.h */, … … 26961 26966 439046E012DA25E800AF80A2 /* RenderMathMLOperator.h in Headers */, 26962 26967 439046E012DA25E800BF80A3 /* RenderMathMLRadicalOperator.h in Headers */, 26968 51E1BAC31BD8064E0055D81F /* MemoryBackingStoreTransaction.h in Headers */, 26963 26969 439046E212DA25E800AF80A2 /* RenderMathMLRoot.h in Headers */, 26964 26970 439046E412DA25E800AF80A2 /* RenderMathMLRow.h in Headers */, … … 29981 29987 B2FA3DBE0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicAbs.cpp in Sources */, 29982 29988 B2FA3DC00AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicRel.cpp in Sources */, 29989 51E1BAC21BD8064E0055D81F /* MemoryBackingStoreTransaction.cpp in Sources */, 29983 29990 B2FA3DC20AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothAbs.cpp in Sources */, 29984 29991 B2FA3DC40AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothRel.cpp in Sources */,
Note:
See TracChangeset
for help on using the changeset viewer.