Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: cf4b2dd3b585e77561edbc98f822a7dcbef399c9
https://github.com/WebKit/WebKit/commit/cf4b2dd3b585e77561edbc98f822a7dcbef399c9
Author: Sihui Liu <[email protected]>
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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes