Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d6d6abb3a36698632c2ff61b7737c28d6d84adbe
      
https://github.com/WebKit/WebKit/commit/d6d6abb3a36698632c2ff61b7737c28d6d84adbe
  Author: Sihui Liu <[email protected]>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M Source/WTF/wtf/SuspendableWorkQueue.cpp
    M Source/WTF/wtf/SuspendableWorkQueue.h
    M Source/WebKit/NetworkProcess/NetworkProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkProcess.h
    A Source/WebKit/NetworkProcess/NetworkProcess.h.orig
    M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBSuspendImminently.mm

  Log Message:
  -----------
  [iOS Debug] TestWebKitAPI.IndexedDB.IndexedDBSuspendImminently is a 
failure/timeout
https://bugs.webkit.org/show_bug.cgi?id=290203
rdar://147599411

Reviewed by Per Arne Vollan.

The current flow of API test IndexedDB.IndexedDBSuspendImminently is:
1. UI process sends suspend message to network process
2. Network process handles suspend message, aborting active transaction and 
suspending storage work queue
3. Web process sends message to network process to put record (test script 
keeps updating record)
4. Network process handles put record message and replies with error (as the 
transaction is no longer active)
5. Web process receives request error and sends message to network process to 
abort transaction due to error
6. Network process handles abort transaction message and replies with success 
(as the requested transaction is aborted)
7. Web process receives request success and fire abort event to IDBTransaction 
-- this is where "Expected Abort For
Suspension" message is sent to UI process
8. UI process sends resume message to network process
9. Network process handles resume message, resuming storage work queue to 
proceed pending requests
10. (Test script continues: new transaction will be started and will succeed)

The test is timed out because "Expected Abort For Suspension" message is never 
sent. The cause is, after step 2, storage
work queue in network process is suspended and will no longer proceeds storage 
message. This means step 4 or step 6
will not happen as expected. To fix this, now we make UI process send the 
resume message after it notices the storage
queue has been suspended with IsStorageSuspendedForTesting message. If the 
storage queue has been suspended, that means
the active transaction is aborted 
(IDBStorageManager::stopDatabaseActivitiesForSuspend is called), and the test 
can
continue to validate the transaction states as expected.

The new test flow is essentially moving step 8 and step 9 to after step 2 and 
after UI process knows storage queue has
been suspended.

* Source/WTF/wtf/SuspendableWorkQueue.cpp:
(WTF::SuspendableWorkQueue::isSuspended const):
* Source/WTF/wtf/SuspendableWorkQueue.h:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::isStorageSuspendedForTesting):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.h.orig: Copied from 
Source/WebKit/NetworkProcess/NetworkProcess.h.
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::isSuspended const):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _isStorageSuspendedForTesting:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::isStorageSuspendedForTesting):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::isStorageSuspendedForTesting const):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBSuspendImminently.mm:
(TEST(IndexedDB, IndexedDBSuspendImminently)):
(TEST(IndexedDB, DISABLED_IndexedDBSuspendImminently)): Deleted.

Canonical link: https://commits.webkit.org/302265@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to