Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 43bf0bb142ab5ea9b74e0cd70cbca969aacb8840
      
https://github.com/WebKit/WebKit/commit/43bf0bb142ab5ea9b74e0cd70cbca969aacb8840
  Author: Youenn Fablet <[email protected]>
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
    M Source/WTF/wtf/Forward.h
    M Source/WTF/wtf/NativePromise.h
    M Source/WebCore/Modules/cache/CacheStorageConnection.h
    M Source/WebCore/Modules/cache/DOMCacheStorage.cpp
    M Source/WebCore/Modules/cache/WorkerCacheStorageConnection.cpp
    M Source/WebCore/Modules/cache/WorkerCacheStorageConnection.h
    M Source/WebCore/Modules/mediasource/SourceBuffer.h
    M Source/WebCore/dom/ScriptExecutionContext.cpp
    M Source/WebCore/dom/ScriptExecutionContext.h
    M Source/WebCore/page/CacheStorageProvider.h
    M Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.cpp
    M Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.h
    M Tools/TestWebKitAPI/Tests/WTF/NativePromise.cpp

  Log Message:
  -----------
  Migrate CacheStorageConnection::open to NativePromise
https://bugs.webkit.org/show_bug.cgi?id=266568
rdar://119804320

Reviewed by Jean-Yves Avenard.

The goal is first to simplify CacheStorage operations handling from workers.
We should as a follow-up step allow to send/receive IPC out of main thread, 
which will be made easier with promises.

Given it runs in workers, we need to have a way to register NativePromise 
callbacks that are guaranteed to be destroyed in workers.
We do this by registering these callbacks in a WorkerGlobalScope so that we can 
destroy them when WorkerGlobalScope gets stopped.

To do this, we allow a promise to either take a 
RefCountedGuaranteedSerialFunctionDispatcher or a NativePromiseDispatcher.
The latter is a RefCountedSerialFunctionDispatcher but without any guarantee 
that the function will be dispatched or not.
To handle this possibility, the NativePromiseDispatcher is responsible to 
disconnect the NativePromiseCallback that it is given in registerCallback
in the same context as its RefCountedSerialFunctionDispatcher.

* Source/WTF/wtf/Forward.h:
* Source/WTF/wtf/NativePromise.h:
(WTF::NativePromiseRequest::~NativePromiseRequest):
(WTF::NativePromiseRequest::track):
(WTF::NativePromiseRequest::operator bool const):
(WTF::NativePromiseRequest::complete):
(WTF::NativePromiseRequest::disconnect):
* Source/WebCore/Modules/cache/CacheStorageConnection.h:
* Source/WebCore/Modules/cache/DOMCacheStorage.cpp:
(WebCore::DOMCacheStorage::doOpen):
* Source/WebCore/Modules/cache/WorkerCacheStorageConnection.cpp:
(WebCore::WorkerCacheStorageConnection::open):
(WebCore::WorkerCacheStorageConnection::clearPendingRequests):
(WebCore::WorkerCacheStorageConnection::openCompleted): Deleted.
* Source/WebCore/Modules/cache/WorkerCacheStorageConnection.h:
* Source/WebCore/Modules/mediasource/SourceBuffer.h:
* Source/WebCore/dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::stopActiveDOMObjects):
(WebCore::ScriptExecutionContext::nativePromiseDispatcher):
* Source/WebCore/dom/ScriptExecutionContext.h:
(WebCore::ScriptExecutionContext::Task::Task):
(WebCore::ScriptExecutionContext::Task::m_isCleanupTask):
(WebCore::ScriptExecutionContext::enqueueTaskWhenPromiseIsSettled):
(WebCore::ScriptExecutionContext::AddConsoleMessageTask::AddConsoleMessageTask):
* Source/WebCore/page/CacheStorageProvider.h:
* Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.cpp:
(WebKit::WebCacheStorageConnection::open):
* Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.h:
* Tools/TestWebKitAPI/Tests/WTF/NativePromise.cpp:
(TestWebKitAPI::TEST):

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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to