WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
NEW
262743
Have the ability to dispatch NativePromise directly to an EventLoop
https://bugs.webkit.org/show_bug.cgi?id=262743
Summary
Have the ability to dispatch NativePromise directly to an EventLoop
Jean-Yves Avenard [:jya]
Reported
2023-10-05 15:59:05 PDT
Currently, a NativePromise takes a SerialFunctionDispatcher. There are cases where we want when the NativePromise settle to resolve the DOMPromise on a particular event loop. Right now, this requires to call `queueTaskKeepingObjectAlive` within the resolve/reject callback like so
https://searchfox.org/wubkat/rev/ba90462eb61f1fb629a567d01716a8e20c261060/Source/WebCore/Modules/webaudio/BaseAudioContext.cpp#303-318
``` p->whenSettled(RunLoop::main(), [this, activity = makePendingActivity(*this), successCallback = WTFMove(successCallback), errorCallback = WTFMove(errorCallback), promise = WTFMove(promise)] (DecodingTaskPromise::Result&& result) mutable { queueTaskKeepingObjectAlive(*this, TaskSource::InternalAsyncTask, [successCallback = WTFMove(successCallback), errorCallback = WTFMove(errorCallback), promise = WTFMove(promise), result = WTFMove(result)]() mutable { if (!result) { if (promise) promise.value()->reject(Exception { result.error(), "Decoding failed"_s }); if (errorCallback) errorCallback->handleEvent(nullptr); return; } auto audioBuffer = WTFMove(result.value()); if (promise) promise.value()->resolve<IDLInterface<AudioBuffer>>(audioBuffer.get()); if (successCallback) successCallback->handleEvent(audioBuffer.ptr()); }); }); ``` ` Ideally, you would be able to get a ref-counted SerialFunctionDispatcher from the ActiveDOMOBject where the dispatch method would perform the same as `queueTaskKeepingObjectAlive` (wrap the dispatched runnable into a EventLoopTask and dispatch it.
Attachments
Add attachment
proposed patch, testcase, etc.
Radar WebKit Bug Importer
Comment 1
2023-10-05 16:04:01 PDT
<
rdar://problem/116548105
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug