Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8a311faa00bdeeb5197a3f3c7b4fdcb8fc3587e8
      
https://github.com/WebKit/WebKit/commit/8a311faa00bdeeb5197a3f3c7b4fdcb8fc3587e8
  Author: Said Abou-Hallawa <[email protected]>
  Date:   2026-10-10 (Sat, 10 Oct 2026)

  Changed paths:
    M Source/WebCore/dom/Element.cpp
    M Source/WebCore/dom/Element.h
    M Source/WebCore/dom/ElementInlines.h
    M Source/WebCore/html/HTMLAttributeNames.in
    M Source/WebCore/html/HTMLCanvasElement.cpp
    M Source/WebCore/html/HTMLCanvasElement.h
    M Source/WebCore/html/HTMLElement.cpp
    M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp
    M Source/WebCore/rendering/RenderElement.cpp
    M Source/WebCore/rendering/RenderElement.h
    M Source/WebCore/rendering/RenderElementStyleInlines.h
    M Source/WebCore/rendering/RenderHTMLCanvas.cpp
    M Source/WebCore/rendering/RenderHTMLCanvas.h
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/RenderLayerCompositor.cpp
    M Source/WebCore/style/StyleAdjuster.cpp

  Log Message:
  -----------
  [HTML-in-Canvas] Add drawable attribute to Element
https://bugs.webkit.org/show_bug.cgi?id=325991
rdar://188940346

Reviewed by Taher Ali and Cameron McCormack.

The specs[1] require the `drawable` attribute on <canvas> descendants for 
drawing.
Without it, the element's drawing isn't recorded, and any drawElementImage() 
call
for that element fails.

The drawable attribute makes the <canvas> descendant a containing block for all
of its descendants. This change sets up the style-related side effects of being
a stacking context.

This change also moves the recording of the RenderHTMLCanvas descendant out of
paintReplaced() and out into the descendant's RenderLayer::paintLayer. But
RenderHTMLCanvas still manages the recorders of the drawable descendants.

[1]: https://github.com/WICG/html-in-canvas

* Source/WebCore/dom/Element.h:
* Source/WebCore/dom/ElementInlines.h:
(WebCore::Element::isDrawable const):
(WebCore::Element::isCanvasDrawable const):
* Source/WebCore/html/HTMLAttributeNames.in:
* Source/WebCore/html/HTMLElement.cpp:
(WebCore::HTMLElement::attributeChanged):
* Source/WebCore/rendering/RenderElement.h:
* Source/WebCore/rendering/RenderElementStyleInlines.h:
(WebCore::RenderElement::isDrawable const):
(WebCore::RenderElement::isCanvasDrawable const):
* Source/WebCore/rendering/RenderHTMLCanvas.cpp:
(WebCore::RenderHTMLCanvas::paintReplaced):
(WebCore::RenderHTMLCanvas::hasDrawableContent const):
(WebCore::RenderHTMLCanvas::canHaveChildren const):
(WebCore::RenderHTMLCanvas::drawableRendererRecorder const):
(WebCore::RenderHTMLCanvas::drawableRendererSnapshot const):
(WebCore::RenderHTMLCanvas::canvasDrawableRecorder const):
(WebCore::RenderHTMLCanvas::canvasDrawableSnapshot const):
(WebCore::RenderHTMLCanvas::layout):
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::paintOrRecord):
(WebCore::RenderElement::paintAsInlineBlock):
(WebCore::RenderElement::layerCreationAllowedForSubtree const):
(WebCore::RenderElement::nearestDrawableCanvas const):
(WebCore::RenderElement::drawableCanvas const):
* Source/WebCore/rendering/RenderHTMLCanvas.h:
* Source/WebCore/style/StyleAdjuster.cpp:
(WebCore::Style::shouldTreatAutoZIndexAsZero):
(WebCore::Style::Adjuster::adjustFromBuilder):
(WebCore::Style::Adjuster::adjust const):
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintLayer):
(WebCore::paintRecorder):
(WebCore::canvasDrawableRecorder):
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::canBeComposited const):
* Source/WebCore/dom/Element.cpp:
(WebCore::Element::nearestCanvasAncestor const):
(WebCore::Element::isCanvasDrawable const):
* Source/WebCore/html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::hasDrawableContent const):
(WebCore::HTMLCanvasElement::canvasDrawableSnapshot const):
(WebCore::HTMLCanvasElement::captureElementImage):
(WebCore::HTMLCanvasElement::drawableElementSnapshot const): Deleted.
* Source/WebCore/html/HTMLCanvasElement.h:
* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::drawElementImage):

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



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

Reply via email to