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

Reply via email to