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

Reply via email to