Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: cf4b2dd3b585e77561edbc98f822a7dcbef399c9 https://github.com/WebKit/WebKit/commit/cf4b2dd3b585e77561edbc98f822a7dcbef399c9 Author: Sihui Liu <sihui_...@apple.com> Date: 2023-09-27 (Wed, 27 Sep 2023)
Changed paths: M LayoutTests/storage/indexeddb/cursor-request-cycle-expected.txt M LayoutTests/storage/indexeddb/cursor-request-cycle-private-expected.txt M LayoutTests/storage/indexeddb/resources/cursor-request-cycle.js M LayoutTests/storage/indexeddb/resources/value-cursor-cycle.js M Source/WebCore/Modules/indexeddb/IDBRequest.cpp M Source/WebCore/Modules/indexeddb/IDBRequest.h M Source/WebCore/Modules/indexeddb/IDBTransaction.cpp M Source/WebCore/Modules/indexeddb/IDBTransaction.h Log Message: ----------- [ macOS Debug ] ASSERTION FAILED: m_wrapper and text failures on storage/indexeddb/cursor-update.html https://bugs.webkit.org/show_bug.cgi?id=259539 rdar://112943647 Reviewed by Chris Dumez. IDBRequest generated from creating a IDBCursor will be re-used when the created cursor advances, i.e. the request's done flag will become false again, and the request will receive event and result about the advancing operation. Therefore, we need to keep wrapper of IDBRequest alive when the cursor can still advance, i.e. when transaction is still active and cursor has not reached to end. We used to keep it alive only when the operation has already started, and IDBRequest and its the wrapper go away before `IDBCursor.continue()` is called (as IDBCursor currently only holds weak reference to IDBRequest). * LayoutTests/storage/indexeddb/cursor-request-cycle-expected.txt: * LayoutTests/storage/indexeddb/cursor-request-cycle-private-expected.txt: * LayoutTests/storage/indexeddb/resources/cursor-request-cycle.js: (onOpen.otherRequest.onsuccess.otherRequestSuccess.finalRequest.onsuccess): (onOpen.otherRequest.onsuccess): (onOpen): (onTransactionComplete): * LayoutTests/storage/indexeddb/resources/value-cursor-cycle.js: * Source/WebCore/Modules/indexeddb/IDBRequest.cpp: (WebCore::IDBRequest::virtualHasPendingActivity const): (WebCore::IDBRequest::stop): (WebCore::IDBRequest::dispatchEvent): (WebCore::IDBRequest::willIterateCursor): (WebCore::IDBRequest::transactionTransitionedToFinishing): * Source/WebCore/Modules/indexeddb/IDBRequest.h: * Source/WebCore/Modules/indexeddb/IDBTransaction.cpp: (WebCore::IDBTransaction::transitionedToFinishing): (WebCore::IDBTransaction::addCursorRequest): (WebCore::IDBTransaction::doRequestOpenCursor): (WebCore::IDBTransaction::connectionClosedFromServer): * Source/WebCore/Modules/indexeddb/IDBTransaction.h: Canonical link: https://commits.webkit.org/268521@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes