Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 2e6b976d8f8364f0cb569ace2a5416f98aeb20a4
https://github.com/WebKit/WebKit/commit/2e6b976d8f8364f0cb569ace2a5416f98aeb20a4
Author: Said Abou-Hallawa <[email protected]>
Date: 2026-08-13 (Thu, 13 Aug 2026)
Changed paths:
M
LayoutTests/imported/w3c/web-platform-tests/webcodecs/idlharness.https.any-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webcodecs/idlharness.https.any.worker-expected.txt
M Source/WebCore/Modules/webcodecs/WebCodecsBase.cpp
M Source/WebCore/Modules/webcodecs/WebCodecsBase.h
M Source/WebCore/Modules/webcodecs/WebCodecsControlMessage.h
A Source/WebCore/Modules/webcodecs/WebCodecsControlMessageQueue.cpp
A Source/WebCore/Modules/webcodecs/WebCodecsControlMessageQueue.h
M Source/WebCore/Modules/webcodecs/WebCodecsImageDecoder.cpp
M Source/WebCore/Modules/webcodecs/WebCodecsImageDecoder.h
M Source/WebCore/Modules/webcodecs/WebCodecsImageDecoder.idl
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/dom/EventTargetFactory.in
Log Message:
-----------
WebCodecsImageDecoder should not inherit from EventTarget
https://bugs.webkit.org/show_bug.cgi?id=321640
rdar://184767470
Reviewed by Jean-Yves Avenard.
Per the spec[1], WebCodecsImageDecoder should not inherit from any base class,
but it still needs to implement the [[control message queue]] behavior.
This PR splits WebCodecsBase into two classes: a new
WebCodecsControlMessageQueue,
which holds the control-message-queue logic and does not inherit EventTarget,
and WebCodecsBase itself, which now inherits both WebCodecsControlMessageQueue
and EventTarget and exposes Event-dispatching methods to the other web codec
decoders/encoders.
WebCodecsImageDecoder can now inherit WebCodecsControlMessageQueue directly,
without pulling in EventTarget. Other web codec decoders/encoders still inherit
WebCodecsBase without any change.
[1] https://w3c.github.io/webcodecs/#imagedecoder-interface
*
LayoutTests/imported/w3c/web-platform-tests/webcodecs/idlharness.https.any-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/webcodecs/idlharness.https.any.worker-expected.txt:
* Source/WebCore/Modules/webcodecs/WebCodecsBase.cpp:
(WebCore::WebCodecsBase::scriptExecutionContext const):
(WebCore::WebCodecsBase::clearControlMessageQueueAndMaybeScheduleDequeueEvent):
(WebCore::WebCodecsBase::decrementCodecQueueSizeAndScheduleDequeueEvent):
(WebCore::WebCodecsBase::scheduleDequeueEvent):
(WebCore::WebCodecsBase::WebCodecsBase): Deleted.
(WebCore::WebCodecsBase::queueControlMessageAndProcess): Deleted.
(WebCore::WebCodecsBase::processControlMessageQueue): Deleted.
(WebCore::WebCodecsBase::incrementCodecQueueSize): Deleted.
(WebCore::WebCodecsBase::decrementCodecOperationCountAndMaybeProcessControlMessageQueue):
Deleted.
(WebCore::WebCodecsBase::clearControlMessageQueue): Deleted.
(WebCore::WebCodecsBase::blockControlMessageQueue): Deleted.
(WebCore::WebCodecsBase::unblockControlMessageQueue): Deleted.
(WebCore::WebCodecsBase::virtualHasPendingActivity const): Deleted.
* Source/WebCore/Modules/webcodecs/WebCodecsBase.h:
(WebCore::WebCodecsBase::state const): Deleted.
(WebCore::WebCodecsBase::setState): Deleted.
(WebCore::WebCodecsBase::codecQueueSize const): Deleted.
(WebCore::WebCodecsBase::maximumCodecOperationsEnqueued const): Deleted.
(WebCore::WebCodecsBase::incrementCodecOperationCount): Deleted.
(WebCore::WebCodecsBase::isCodecSaturated const): Deleted.
* Source/WebCore/Modules/webcodecs/WebCodecsControlMessage.h:
* Source/WebCore/Modules/webcodecs/WebCodecsControlMessageQueue.cpp: Copied
from Source/WebCore/Modules/webcodecs/WebCodecsBase.cpp.
(WebCore::WebCodecsControlMessageQueue::WebCodecsControlMessageQueue):
(WebCore::WebCodecsControlMessageQueue::queueControlMessageAndProcess):
(WebCore::WebCodecsControlMessageQueue::queueCodecControlMessageAndProcess):
(WebCore::WebCodecsControlMessageQueue::processControlMessageQueue):
(WebCore::WebCodecsControlMessageQueue::incrementCodecQueueSize):
(WebCore::WebCodecsControlMessageQueue::decrementCodecQueueSize):
(WebCore::WebCodecsControlMessageQueue::resetCodecQueueSize):
(WebCore::WebCodecsControlMessageQueue::decrementCodecOperationCountAndMaybeProcessControlMessageQueue):
(WebCore::WebCodecsControlMessageQueue::clearControlMessageQueue):
(WebCore::WebCodecsControlMessageQueue::blockControlMessageQueue):
(WebCore::WebCodecsControlMessageQueue::unblockControlMessageQueue):
(WebCore::WebCodecsControlMessageQueue::virtualHasPendingActivity const):
* Source/WebCore/Modules/webcodecs/WebCodecsControlMessageQueue.h: Copied from
Source/WebCore/Modules/webcodecs/WebCodecsBase.h.
(WebCore::WebCodecsControlMessageQueue::state const):
(WebCore::WebCodecsControlMessageQueue::setState):
(WebCore::WebCodecsControlMessageQueue::codecQueueSize const):
(WebCore::WebCodecsControlMessageQueue::maximumCodecOperationsEnqueued const):
(WebCore::WebCodecsControlMessageQueue::incrementCodecOperationCount):
(WebCore::WebCodecsControlMessageQueue::isCodecSaturated const):
* Source/WebCore/Modules/webcodecs/WebCodecsImageDecoder.cpp:
(WebCore::WebCodecsImageDecoder::WebCodecsImageDecoder):
(WebCore::WebCodecsImageDecoder::resetDecoder):
* Source/WebCore/Modules/webcodecs/WebCodecsImageDecoder.h:
* Source/WebCore/Modules/webcodecs/WebCodecsImageDecoder.idl:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/dom/EventTargetFactory.in:
Canonical link: https://commits.webkit.org/319102@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications