Timeline



Jun 13, 2022:

11:33 PM Changeset in webkit [295517] by Said Abou-Hallawa
  • 11 edits
    2 deletes in trunk/Source/WebCore

[GPU Process] [Filters] Remove SVGFilterBuilder
https://bugs.webkit.org/show_bug.cgi?id=241577
<rdar://problem/95074247>

Reviewed by Simon Fraser.

After r295498, all the methods of SVGFilterBuilder became static. So this patch
removes it and moves its methods to SVGFilter.

-- colorInterpolationForElement() will be moved to SVGElement::colorInterpolation().
-- effectGeometryFlagsForElement() will be moved to

SVGFilterPrimitiveStandardAttributes::effectGeometryFlags().

-- FilterData::boundaries is removed. It is set in RenderSVGResourceFilter::

applyResource() and used only in RenderSVGResourceFilter::postApplyResource()
where we check '!isEmpty()'. This check can be replaced by checking if filter
is not nullptr.

-- FilterData::scale is removed since it is not used.
-- FilterData::sourceGraphicBuffer and FilterData::drawingRegion are renamed

sourceImage and sourceImageRect respectively to match the named of the inputs
of GraphicsContext::drawFilteredImageBuffer().

  • Source/WebCore/Sources.txt:
  • Source/WebCore/WebCore.xcodeproj/project.pbxproj:
  • Source/WebCore/rendering/CSSFilter.cpp:

(WebCore::calculateReferenceFilterOutsets):

  • Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::applyResource):
(WebCore::RenderSVGResourceFilter::postApplyResource):
(WebCore::RenderSVGResourceFilter::drawingRegion const):

  • Source/WebCore/rendering/svg/RenderSVGResourceFilter.h:
  • Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp:

(WebCore::writeSVGResourceContainer):

  • Source/WebCore/svg/SVGElement.cpp:

(WebCore::SVGElement::colorInterpolation const):

  • Source/WebCore/svg/SVGElement.h:
  • Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:

(WebCore::SVGFilterPrimitiveStandardAttributes::effectGeometryFlags const):

  • Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:
  • Source/WebCore/svg/graphics/filters/SVGFilter.cpp:

(WebCore::SVGFilter::create):
(WebCore::buildFilterEffectsGraph):
(WebCore::SVGFilter::buildExpression):
(WebCore::buildFilterPrimitivesGraph):
(WebCore::SVGFilter::calculateOutsets):

  • Source/WebCore/svg/graphics/filters/SVGFilter.h:
  • Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp: Removed.
  • Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h: Removed.

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

11:30 PM Changeset in webkit [295516] by Cameron McCormack
  • 1 edit in trunk/Source/WebCore/platform/graphics/TextRun.h

Make TextRun::isolatedCopy copy character data in more cases
https://bugs.webkit.org/show_bug.cgi?id=241581

Reviewed by Simon Fraser.

  • Source/WebCore/platform/graphics/TextRun.h:

(WebCore::TextRun::isolatedCopy const):

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

9:46 PM Changeset in webkit [295515] by Jean-Yves Avenard
  • 9 edits in trunk

REGRESSION (251426@main): [ macOS Debug wk2 ] http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=241572
rdar://problem/95059414

Reviewed by Cameron McCormack.

In bug 241455 it was incorrectly assumed that checking that the IPCHandle was null
was a sufficient test to check the validity of the reply. However, this ignore the
fact that the IPC decoder will assert if the size isn't valid.
So rather than returning a Handle directly, we return an optional<Handle> instead.

Covered by the existing test.

  • LayoutTests/platform/mac-wk2/TestExpectations:
  • Source/WebKit/GPUProcess/media/RemoteMediaResourceManager.cpp:

(WebKit::RemoteMediaResourceManager::dataReceived):

  • Source/WebKit/GPUProcess/media/RemoteMediaResourceManager.h:
  • Source/WebKit/GPUProcess/media/RemoteMediaResourceManager.messages.in:
  • Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp:

(WebKit::RemoteSourceBufferProxy::append):

  • Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.h:
  • Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.messages.in:
  • Source/WebKit/WebProcess/GPU/media/RemoteMediaResourceProxy.cpp:

(WebKit::RemoteMediaResourceProxy::dataReceived):

  • Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:

(WebKit::SourceBufferPrivateRemote::append):

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

8:34 PM Changeset in webkit [295514] by Fujii Hironori
  • 2 edits
    2 adds in trunk

TextureMapper: if an element has both a mask image and reflection, the part of the reflection isn't painted
https://bugs.webkit.org/show_bug.cgi?id=241257

Reviewed by Don Olmstead.

If an element has both a mask image and reflection, the mask should be
applied both for the reflection and the real layers. However,
TextureMapper was using a single intermediate surface for painting the
reflection and the real layers.

  1. Painting the reflection layer
  2. Applying the mask to the reflection layer
  3. Painting the real layer
  4. Applying the mask to the real layer

In the step#4, if the mask layer is larger than the element rect, the
mask was unexpectedly applied to the part of the reflection.

The reflection and the real layers should be painted and masked
separately using intermediate surfaces. If the element has opacity,
they should have another intermediate surface to blend together with
the destination.

  • LayoutTests/compositing/reflections/mask-and-reflection-expected.html: Added.
  • LayoutTests/compositing/reflections/mask-and-reflection.html: Added.
  • Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::shouldBlend const):
(WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica):
(WebCore::TextureMapperLayer::paintUsingOverlapRegions):
(WebCore::TextureMapperLayer::paintSelfChildrenFilterAndMask):
(WebCore::TextureMapperLayer::paintIntoSurface):
(WebCore::TextureMapperLayer::paintWithIntermediateSurface):
(WebCore::TextureMapperLayer::paintSelfAndChildrenWithIntermediateSurface):
(WebCore::TextureMapperLayer::paintSelfChildrenReplicaFilterAndMask):
(WebCore::TextureMapperLayer::paintRecursive):
(WebCore::TextureMapperLayer::setMaskLayer):

  • Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:

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

8:10 PM Changeset in webkit [295513] by don.olmstead@sony.com
  • 1 edit in trunk/Source/WebCore/rendering/RenderThemePlayStation.h

Build fix for PlayStation after r295476
https://bugs.webkit.org/show_bug.cgi?id=241582

Reviewed by Myles C. Maxfield.

In r295476 RenderThemePlayStation::system implementation was removed but the declaration was still
present.

  • Source/WebCore/rendering/RenderThemePlayStation.h:

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

7:30 PM Changeset in webkit [295512] by Matt Woodrow
  • 8 edits
    203 adds in trunk/LayoutTests

Reimport css/css-masking/mask-image WPTs.
https://bugs.webkit.org/show_bug.cgi?id=241567

Reviewed by Tim Nguyen and Simon Fraser.

Import of revision d70634c5f7621f8958c82710c7dd366f5df08f72.

  • LayoutTests/TestExpectations:
  • LayoutTests/imported/w3c/resources/import-expectations.json:
  • LayoutTests/imported/w3c/resources/resource-files.json:
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-1-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-1-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-1.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-2-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-2-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-2.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1a-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1a.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1b-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1b.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1c-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1c.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1d-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1d.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2a-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2a.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2b-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2b.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2c-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2c.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1a-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1a.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1b-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1b.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1c-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1c.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1d-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1d.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-2-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-2-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-2.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3a-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3a.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3b-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3b.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3c-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3c.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3d-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3d.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3e-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3e.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3f-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3f.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3g-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3g.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3h-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3h.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3i-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3i.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-4a-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-4a.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-4b-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-4b.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-5-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-5-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-5.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-6-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-6-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-6.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-clip-exclude-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-data-url-image-expected.html:
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-a-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-a.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-b-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-b.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-c-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-c.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-d-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-d.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-to-mask-type-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-to-mask-type-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-to-mask-type.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1a-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1a.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1b-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1b.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1c-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1c.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1d-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1d.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1e-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1e.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-1-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-1-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-1.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-2-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-2-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-2.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-3-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-3-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-3.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1a-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1a.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1b-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1b.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1c-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1c.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-2-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-2a-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-2a.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-2b-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-2b.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-3-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-3a-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-3a.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-3b-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-3b.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4a-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4a.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4b-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4b.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4c-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4c.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4d-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4d.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-5-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-5-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-5.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-6-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-6-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-6.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-7-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-7-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-7.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-1-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-1-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-1.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-2-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-2-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-2.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-3-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-3-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-3.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-auto-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-auto.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-length-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-length-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-length.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-percent-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-percent.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-clip-border-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-clip-border-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-clip-border.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-clip-padding-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-clip-padding-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-clip-padding.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-position-fifty-fifty-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-position-fifty-fifty-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-position-fifty-fifty.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-cover-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-cover-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-cover.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-auto-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-auto.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-length-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-length-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-length.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-percent-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-percent-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-percent.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-auto-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-auto.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-length-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-length.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-percent-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-percent-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-percent-stretch-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-percent-stretch-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-percent-stretch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-percent.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/50x100-opaque-blue.svg: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/50x50-opaque-blue.svg: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-100x100.png: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-100x100.svg: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-100x50-transparent-100x50.png: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-100x50-transparent-100x50.svg: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-luminance-100x100.svg: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/green-100x100.png: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/green-100x100.svg: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/green-luminance-100x100.svg: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/mask-half-transparent-100x100.svg: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/red-100x100.png: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/red-100x100.svg: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/red-luminance-100x100.svg: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/transparent-100x50-blue-100x50.png: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/transparent-100x50-blue-100x50.svg: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/w3c-import.log:
  • LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/w3c-import.log:
  • LayoutTests/platform/gtk/TestExpectations:
  • LayoutTests/platform/ios/TestExpectations:

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

7:24 PM Changeset in webkit [295511] by yurys@chromium.org
  • 6 edits in trunk

[WPE][GTK] REGRESSION (r294381): WPEWebProcess leak after closing browser
https://bugs.webkit.org/show_bug.cgi?id=241353

Reviewed by Alex Christensen.

Do not keep strong reference to WebPageProxy in the async IPC callback, instead
use WeakPtr to let the page be destroyed if necessary, otherwise the page may
keep its process pool alive after the page was closed.

  • Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp: exposed a couple of internal

methods for testing the behavior.
(webkitWebViewForceRepaintForTesting):
(webkitSetCachedProcessSuspensionDelayForTesting):

  • Source/WebKit/UIProcess/API/glib/WebKitWebViewInternal.h:
  • Source/WebKit/UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::forceRepaint): replaced strong reference in the callback with
a weak one.

  • Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:

(testNoWebProcessLeakAfterWebKitWebContextDestroy): new test that makes sure that outstanding
async IPC callbacks are run when page and its context are destroyed.
(beforeAll):

  • Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:

(WebViewTest::waitUntilLoadFinished):

  • Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:

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

6:17 PM Changeset in webkit [295510] by pvollan@apple.com
  • 2 edits in trunk/Source

[Catalyst] Fix build
https://bugs.webkit.org/show_bug.cgi?id=241573
<rdar://95038696>

Reviewed by Wenson Hsieh.

The function CGSSetDenyWindowServerConnections has not been declared.

  • Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:
  • Source/WebKit/Shared/Cocoa/AuxiliaryProcessCocoa.mm:

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

6:00 PM Changeset in webkit [295509] by Ross Kirsling
  • 1 edit in trunk/Source/JavaScriptCore/jsc.cpp

jsc.exe --module-file should understand Windows paths
https://bugs.webkit.org/show_bug.cgi?id=241518

Reviewed by Yusuke Suzuki.

jsc.cpp's module loader was written without any accommodation for Windows, so:

  1. On Windows, recognize C:\foo as an absolute path and .\foo and ..\foo as dotted relative paths (allowing '/' too).
  2. On all platforms, stop misusing the URL(base, relative) constructor. This isn't the way to add file:/// to an abspath.

This ensures that module tests are able to run well on Windows.

  • Source/JavaScriptCore/jsc.cpp:

(isAbsolutePath): Added.
(isDottedRelativePath): Added.
(absoluteFileURL): Renamed from absolutePath.
(GlobalObject::moduleLoaderImportModule):
(GlobalObject::moduleLoaderResolve):
(JSC_DEFINE_HOST_FUNCTION):
(computeFilePath):
(runWithOptions):

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

5:41 PM Changeset in webkit [295508] by yurys@chromium.org
  • 1 edit in trunk/Source/WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.h

error: field ‘m_preloadResponse’ has incomplete type ‘WebCore::ResourceResponse’
https://bugs.webkit.org/show_bug.cgi?id=241579

Reviewed by Michael Catanzaro.

Fix WPE compilation.

  • Source/WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.h: include missing header.

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

5:37 PM Changeset in webkit [295507] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore/Modules/pictureinpicture

Emit resize event from PiP window
https://bugs.webkit.org/show_bug.cgi?id=241569

Patch by Youssef Soliman <youssefdevelops@gmail.com> on 2022-06-13
Reviewed by Jer Noble.

When the a PiP window is resized, a resize event should be emitted from
the window object, not just the <video> element.

  • Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp:

(WebCore::HTMLVideoElementPictureInPicture::pictureInPictureWindowResized):

  • Source/WebCore/Modules/pictureinpicture/PictureInPictureWindow.cpp:

(WebCore::PictureInPictureWindow::create):
(WebCore::PictureInPictureWindow::PictureInPictureWindow):
(WebCore::PictureInPictureWindow::setSize):

  • Source/WebCore/Modules/pictureinpicture/PictureInPictureWindow.h:
  • Source/WebCore/Modules/pictureinpicture/PictureInPictureWindow.idl:

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

5:21 PM Changeset in webkit [295506] by J Pascoe
  • 3 edits in trunk/Source

[WebAuthn] CTAP2_ERR_USER_ACTION_TIMEOUT isn't handled properly
https://bugs.webkit.org/show_bug.cgi?id=241565
rdar://95040155

Reviewed by Brent Fulgham.

Authenticators will time out operations after so many seconds of
waiting for user interaction, returning an error of
CTAP2_ERR_USER_ACTION_TIMEOUT. This patch handles that error
by reissuing the request, instead of letting it go to U2F fallback
and failing there with "no credentials found."

Tested with a Yubikey 5c.

  • Source/WebCore/Modules/webauthn/fido/FidoConstants.cpp:

(fido::isCtapDeviceResponseCode):

  • Source/WebCore/Modules/webauthn/fido/FidoConstants.h:
  • Source/WebKit/UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:

(WebKit::CtapAuthenticator::continueMakeCredentialAfterResponseReceived):
(WebKit::CtapAuthenticator::continueGetAssertionAfterResponseReceived):

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

4:42 PM Changeset in webkit [295505] by clopez@igalia.com
  • 1 edit in trunk/metadata/contributors.json

Add clopez github account to contributors.json
https://bugs.webkit.org/show_bug.cgi?id=241578

Unreviewed.

  • metadata/contributors.json:

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

3:48 PM Changeset in webkit [295504] by Simon Fraser
  • 1 edit in trunk/Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm

CrashTracer: MobileSafari at WebKit: -[WKWebView(WKViewInternalIOS) _updateScrollViewForTransaction:]
https://bugs.webkit.org/show_bug.cgi?id=241563
<rdar://94621991>

Reviewed by Wenson Hsieh.

Protect against a null root scrolling node.

  • Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _updateScrollViewForTransaction:]):

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

3:33 PM Changeset in webkit [295503] by Karl Rackler
  • 1 edit in trunk/LayoutTests/platform/mac-wk2/TestExpectations

[Gardening]: REGRESSION (251426@main): [ macOS Debug wk2 ] http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=241572
<rdar://95059414>

Unreviewed test gardening.

  • LayoutTests/platform/mac-wk2/TestExpectations:

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

2:30 PM Changeset in webkit [295502] by Patrick Angle
  • 2 edits in trunk/Source

Web Inspector: [Cocoa] Web Inspector windows open in separate window collection instead of on current stage when using Stage Manager
https://bugs.webkit.org/show_bug.cgi?id=241521
rdar://91964707

Reviewed by Devin Rousso.

For Stage Manager, the Web Inspector window should appear in the same workspace as the active Safari window. Currently
the best way to accomplish this without negatively impacting our fullscreen behavior is to appear as if we are a
preferences window with a toolbar and NSWindowToolbarStylePreference. By hiding the toolbar, there is no visual or
functional change to Web Inspector, and we now get classified as an auxiliary window only in Stage Manager.

  • Source/WebKit/UIProcess/Inspector/mac/WebInspectorUIProxyMac.mm:

(WebKit::WebInspectorUIProxy::createFrontendWindow):

  • Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.mm:

(-[WebInspectorWindowController window]):

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

2:26 PM BuildingGtk edited by Basuke Suzuki
(diff)
1:52 PM Changeset in webkit [295501] by achristensen@apple.com
  • 1 edit in trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp

Lambda in UniqueIDBDatabaseConnection::abortTransactionWithoutCallback should check weakThis before using this
https://bugs.webkit.org/show_bug.cgi?id=241557

Reviewed by Youenn Fablet.

  • Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:

(WebCore::IDBServer::UniqueIDBDatabaseConnection::abortTransactionWithoutCallback):

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

1:19 PM Changeset in webkit [295500] by Razvan Caliman
  • 1 edit in trunk/Source/WebInspectorUI/UserInterface/Views/InlineSwatch.js

REGRESSION (r251194): Web Inspector: Uncaught exception when inspecting color referenced by CSS variable
https://bugs.webkit.org/show_bug.cgi?id=241558

Reviewed by Devin Rousso.

The patch for https://bugs.webkit.org/show_bug.cgi?id=241055 introduced an option
to prevent changing color formats when interacting with an inline color swatch.

The value of the preventChangingColorFormats option kept as an instance property of WI.InlineSwatch.
This is then referenced in the callback passed to createCodeMirrorColorTextMarkers(). The
callback doesn't share the same scope, so an exception is raied when calling this._preventChangingColorFormats.

This patch ensures the value of the instance property is captured in the scope of the callback passed.

  • Source/WebInspectorUI/UserInterface/Views/InlineSwatch.js:

(WI.InlineSwatch.prototype._swatchElementClicked.switch.case.WI.InlineSwatch.Type.Variable.optionsForType):
(WI.InlineSwatch.prototype._swatchElementClicked):

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

1:07 PM Changeset in webkit [295499] by commit-queue@webkit.org
  • 1 edit in trunk/Source/WebCore/platform/cocoa/SharedVideoFrameInfo.mm

Check for null buffers in SharedVideoFrameInfo::writePixelBuffer
https://bugs.webkit.org/show_bug.cgi?id=241544
rdar://94649789

Patch by Youenn Fablet <youennf@gmail.com> on 2022-06-13
Reviewed by Eric Carlson.

  • Source/WebCore/platform/cocoa/SharedVideoFrameInfo.mm:

(WebCore::SharedVideoFrameInfo::writePixelBuffer):

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

12:52 PM Changeset in webkit [295498] by Said Abou-Hallawa
  • 53 edits in trunk/Source/WebCore

[GPU Process] [Filters] Simplify the dynamic update of the SVG filter elements
https://bugs.webkit.org/show_bug.cgi?id=232842
rdar://85426197

Reviewed by Simon Fraser.

Consider this SVG as an example:

<svg>

<filter id="blur">

<feGaussianBlur stdDeviation="5"/>

</filter>
<circle ... filter="url(#blur)"/>
<rect ... filter="url(#blur)"/>

</svg>

The renderers of the <circle> and the <rect> elements ask the renderer of the
<filter> element, i.e. RenderSVGResourceFilter to applyResource(). In this
function a new SVGFilter is created for each target renderer. A new entry
{ target_renderer, FilterData } is added to
RenderSVGResourceFilter::m_rendererFilterDataMap.

While building the SVGFilter, a new FilterEffect is created for every target
renderer and an entry { primitive_renderer, effect } is added to
SVGFilterBuilder::m_effectRenderer.

Suppose 'stdDeviation' of <feGaussianBlur> has been changed, this is the
current workflow:

SVGFEGaussianBlurElement::svgAttributeChanged() will call
SVGFilterPrimitiveStandardAttributes::primitiveAttributeChanged() which
will call RenderSVGResourceFilterPrimitive::primitiveAttributeChanged().
The last one will call RenderSVGResourceFilter::primitiveAttributeChanged()
and pass itself as an argument.

RenderSVGResourceFilter::primitiveAttributeChanged() will loop through
all the entries in m_rendererFilterDataMap and get the FilterData. And
then it gets the effect given the key primitive renderer from
FilterData::SVGFilterBuilder::m_effectRenderer. Having this effect, its
setFilterEffectAttribute() will be called.

This workflow is cumbersome since it was mainly done this way because the result
FilterImage was stored with the FilterEffect. But since the result FilterImage
was moved out of the FilterEffect, we do not need to create a new FilterEffect
for every target renderer. The same FilterEffect can be shared among all the
target renderers.

This is the new workflow for dynamically updating the FilterEffect attributes:

No need to create a separate FilterEffect for every SVGFilter (or target
renderer). A shared FilterEffect can be used instead. This will be
SVGFilterPrimitiveStandardAttributes::m_effect.

SVGFEGaussianBlurElement::svgAttributeChanged() will call
SVGFilterPrimitiveStandardAttributes::primitiveAttributeChanged() which
will call SVGFEGaussianBlurElement::setFilterEffectAttribute() if m_effect
is not null. setFilterEffectAttribute() will return true if it needs to
be repainted. RenderSVGResourceFilterPrimitive::markFilterEffectForRepaint()
will be called then.

RenderSVGResourceFilterPrimitive::markFilterForInvalidation() will call
RenderSVGResourceFilter::markFilterForRepaint() if effect is not null which
will clear the result FilterImage of this effect and all other FilterImages
which takes the result FilterImage of this effect as an input.

If svgAttributeChanged() finds out it needs to rebuild the entire SVGFilter,
it will call SVGFilterPrimitiveStandardAttributes::markFilterEffectForRebuild()
which will call RenderSVGResourceFilterPrimitive::markFilterEffectForRebuild()
and sets SVGFilterPrimitiveStandardAttributes::m_effect to nullptr.
RenderSVGResourceFilterPrimitive::markFilterEffectForRebuild() will call
RenderSVGResourceFilter::markFilterForRebuild() which will clear
RenderSVGResourceFilter::m_rendererFilterDataMap. This will force rebuilding
the SVGFilter for all renderers.

  • Source/WebCore/platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::setStdDeviationX):
(WebCore::FEDropShadow::setStdDeviationY):
(WebCore::FEDropShadow::setDx):
(WebCore::FEDropShadow::setDy):
(WebCore::FEDropShadow::setShadowColor):
(WebCore::FEDropShadow::setShadowOpacity):

  • Source/WebCore/platform/graphics/filters/FEDropShadow.h:

(WebCore::FEDropShadow::setStdDeviationX): Deleted.
(WebCore::FEDropShadow::setStdDeviationY): Deleted.
(WebCore::FEDropShadow::setDx): Deleted.
(WebCore::FEDropShadow::setDy): Deleted.
(WebCore::FEDropShadow::setShadowColor): Deleted.
(WebCore::FEDropShadow::setShadowOpacity): Deleted.

  • Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp:

(WebCore::FEGaussianBlur::setStdDeviationX):
(WebCore::FEGaussianBlur::setStdDeviationY):
(WebCore::FEGaussianBlur::setEdgeMode):

  • Source/WebCore/platform/graphics/filters/FEGaussianBlur.h:
  • Source/WebCore/platform/graphics/filters/FEOffset.cpp:

(WebCore::FEOffset::setDx):
(WebCore::FEOffset::setDy):

  • Source/WebCore/platform/graphics/filters/FEOffset.h:
  • Source/WebCore/rendering/CSSFilter.cpp:

(WebCore::createReferenceFilter):

  • Source/WebCore/rendering/svg/RenderSVGResourceContainer.h:
  • Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::applyResource):
(WebCore::RenderSVGResourceFilter::markFilterForRepaint):
(WebCore::RenderSVGResourceFilter::markFilterForRebuild):
(WebCore::RenderSVGResourceFilter::primitiveAttributeChanged): Deleted.

  • Source/WebCore/rendering/svg/RenderSVGResourceFilter.h:
  • Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.cpp:

(WebCore::RenderSVGResourceFilterPrimitive::styleDidChange):
(WebCore::RenderSVGResourceFilterPrimitive::markFilterEffectForRepaint):
(WebCore::RenderSVGResourceFilterPrimitive::markFilterEffectForRebuild):

  • Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.h:
  • Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp:

(WebCore::writeSVGResourceContainer):

  • Source/WebCore/svg/SVGFEBlendElement.cpp:

(WebCore::SVGFEBlendElement::setFilterEffectAttribute):
(WebCore::SVGFEBlendElement::createFilterEffect const):
(WebCore::SVGFEBlendElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFEBlendElement.h:
  • Source/WebCore/svg/SVGFEColorMatrixElement.cpp:

(WebCore::SVGFEColorMatrixElement::isInvalidValuesLength const):
(WebCore::SVGFEColorMatrixElement::setFilterEffectAttribute):
(WebCore::SVGFEColorMatrixElement::svgAttributeChanged):
(WebCore::SVGFEColorMatrixElement::createFilterEffect const):
(WebCore::SVGFEColorMatrixElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFEColorMatrixElement.h:
  • Source/WebCore/svg/SVGFEComponentTransferElement.cpp:

(WebCore::SVGFEComponentTransferElement::svgAttributeChanged):
(WebCore::SVGFEComponentTransferElement::createFilterEffect const):
(WebCore::SVGFEComponentTransferElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFEComponentTransferElement.h:
  • Source/WebCore/svg/SVGFECompositeElement.cpp:

(WebCore::SVGFECompositeElement::setFilterEffectAttribute):
(WebCore::SVGFECompositeElement::svgAttributeChanged):
(WebCore::SVGFECompositeElement::createFilterEffect const):
(WebCore::SVGFECompositeElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFECompositeElement.h:
  • Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp:

(WebCore::SVGFEConvolveMatrixElement::setFilterEffectAttribute):
(WebCore::SVGFEConvolveMatrixElement::svgAttributeChanged):
(WebCore::SVGFEConvolveMatrixElement::createFilterEffect const):
(WebCore::SVGFEConvolveMatrixElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFEConvolveMatrixElement.h:
  • Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:

(WebCore::SVGFEDiffuseLightingElement::setFilterEffectAttribute):
(WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged):
(WebCore::SVGFEDiffuseLightingElement::createFilterEffect const):
(WebCore::SVGFEDiffuseLightingElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFEDiffuseLightingElement.h:
  • Source/WebCore/svg/SVGFEDisplacementMapElement.cpp:

(WebCore::SVGFEDisplacementMapElement::setFilterEffectAttribute):
(WebCore::SVGFEDisplacementMapElement::svgAttributeChanged):
(WebCore::SVGFEDisplacementMapElement::createFilterEffect const):
(WebCore::SVGFEDisplacementMapElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFEDisplacementMapElement.h:
  • Source/WebCore/svg/SVGFEDropShadowElement.cpp:

(WebCore::SVGFEDropShadowElement::svgAttributeChanged):
(WebCore::SVGFEDropShadowElement::setFilterEffectAttribute):
(WebCore::SVGFEDropShadowElement::createFilterEffect const):
(WebCore::SVGFEDropShadowElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFEDropShadowElement.h:
  • Source/WebCore/svg/SVGFEFloodElement.cpp:

(WebCore::SVGFEFloodElement::setFilterEffectAttribute):
(WebCore::SVGFEFloodElement::createFilterEffect const):
(WebCore::SVGFEFloodElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFEFloodElement.h:
  • Source/WebCore/svg/SVGFEGaussianBlurElement.cpp:

(WebCore::SVGFEGaussianBlurElement::svgAttributeChanged):
(WebCore::SVGFEGaussianBlurElement::setFilterEffectAttribute):
(WebCore::SVGFEGaussianBlurElement::createFilterEffect const):
(WebCore::SVGFEGaussianBlurElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFEGaussianBlurElement.h:
  • Source/WebCore/svg/SVGFEImageElement.cpp:

(WebCore::SVGFEImageElement::svgAttributeChanged):
(WebCore::SVGFEImageElement::createFilterEffect const):
(WebCore::SVGFEImageElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFEImageElement.h:
  • Source/WebCore/svg/SVGFEMergeElement.cpp:

(WebCore::SVGFEMergeElement::childrenChanged):
(WebCore::SVGFEMergeElement::createFilterEffect const):
(WebCore::SVGFEMergeElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFEMergeElement.h:
  • Source/WebCore/svg/SVGFEMorphologyElement.cpp:

(WebCore::SVGFEMorphologyElement::setFilterEffectAttribute):
(WebCore::SVGFEMorphologyElement::svgAttributeChanged):
(WebCore::SVGFEMorphologyElement::createFilterEffect const):
(WebCore::SVGFEMorphologyElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFEMorphologyElement.h:
  • Source/WebCore/svg/SVGFEOffsetElement.cpp:

(WebCore::SVGFEOffsetElement::svgAttributeChanged):
(WebCore::SVGFEOffsetElement::setFilterEffectAttribute):
(WebCore::SVGFEOffsetElement::createFilterEffect const):
(WebCore::SVGFEOffsetElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFEOffsetElement.h:
  • Source/WebCore/svg/SVGFESpecularLightingElement.cpp:

(WebCore::SVGFESpecularLightingElement::setFilterEffectAttribute):
(WebCore::SVGFESpecularLightingElement::createFilterEffect const):
(WebCore::SVGFESpecularLightingElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFESpecularLightingElement.h:
  • Source/WebCore/svg/SVGFETileElement.cpp:

(WebCore::SVGFETileElement::createFilterEffect const):
(WebCore::SVGFETileElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFETileElement.h:
  • Source/WebCore/svg/SVGFETurbulenceElement.cpp:

(WebCore::SVGFETurbulenceElement::setFilterEffectAttribute):
(WebCore::SVGFETurbulenceElement::createFilterEffect const):
(WebCore::SVGFETurbulenceElement::filterEffect const): Deleted.

  • Source/WebCore/svg/SVGFETurbulenceElement.h:
  • Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:

(WebCore::SVGFilterPrimitiveStandardAttributes::filterEffect):
(WebCore::SVGFilterPrimitiveStandardAttributes::primitiveAttributeChanged):
(WebCore::SVGFilterPrimitiveStandardAttributes::markFilterEffectForRebuild):
(WebCore::SVGFilterPrimitiveStandardAttributes::setFilterEffectAttribute): Deleted.

  • Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:

(WebCore::SVGFilterPrimitiveStandardAttributes::setFilterEffectAttribute):
(WebCore::SVGFilterPrimitiveStandardAttributes::primitiveAttributeChanged): Deleted.

  • Source/WebCore/svg/graphics/filters/SVGFilter.cpp:

(WebCore::SVGFilter::create):

  • Source/WebCore/svg/graphics/filters/SVGFilter.h:
  • Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:

(WebCore::SVGFilterBuilder::buildFilterExpression):

  • Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:

(WebCore::SVGFilterBuilder::effectByRenderer): Deleted.

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

12:23 PM Changeset in webkit [295497] by achristensen@apple.com
  • 1 edit in trunk/Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj

Remove "Symlink WebKitPluginHost" build phase of WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=241553

Reviewed by Alexey Proskuryakov.

  • Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj:

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

12:20 PM Changeset in webkit [295496] by Elliott Williams
  • 14 edits in trunk

[Xcode] Use workspace builds by default in build-webkit
https://bugs.webkit.org/show_bug.cgi?id=241298

Reviewed by Alexey Proskuryakov.

Switch the default value of the --use-workspace flag, and add a warning
message indicating that non-workspace Xcode builds are deprecated.

Add product dependencies and disable SDK metadata parsing in tools
projects, to prevent watchOS/tvOS workspace builds from thinking we are
linking against system WebKit.

Add an aggregate "MiniBrowser (Platform filters)" target, which builds
MiniBrowser.app iff the workspace is building for a Mac destination.

  • Source/ThirdParty/libwebrtc/Configurations/DebugRelease.xcconfig: Fix an sdk xcconfig setting.
  • Tools/DumpRenderTree/mac/Configurations/DumpRenderTreeLibrary.xcconfig: Set DISABLE_SDK_METADATA_PARSING.
  • Tools/DumpRenderTree/mac/Configurations/LayoutTestHelper.xcconfig: Set DISABLE_SDK_METADATA_PARSING.
  • Tools/MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj: Create the aggregate target mentioned above.
  • Tools/MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj: Link MobileMiniBrowser.framework against WebKit.
  • Tools/Scripts/build-webkit: Switch --use-workspace default.
  • Tools/TestWebKitAPI/Configurations/InjectedBundle.xcconfig: Set DISABLE_SDK_METADATA_PARSING.
  • Tools/TestWebKitAPI/Configurations/TestWTFLibrary.xcconfig: Set DISABLE_SDK_METADATA_PARSING.
  • Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig: Set DISABLE_SDK_METADATA_PARSING.
  • Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add WebKit product dependency.
  • Tools/WebKitTestRunner/Configurations/InjectedBundle.xcconfig: Add DISABLE_SDK_METADATA_PARSING.
  • Tools/WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig: Add DISABLE_SDK_METADATA_PARSING.
  • WebKit.xcworkspace/xcshareddata/xcschemes/All Modules.xcscheme: Replace MiniBrowser.app with the aggregate target.
  • WebKit.xcworkspace/xcshareddata/xcschemes/All Tools.xcscheme: Replace MiniBrowser.app with the aggregate target.

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

11:51 AM Changeset in webkit [295495] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ macOS ] webanimations/accelerated-animation-after-forward-filling-animation.html is a flaky image failure
https://bugs.webkit.org/show_bug.cgi?id=239794
<rdar://92365628>

Patch by Antoine Quint <Antoine Quint> on 2022-06-13
Reviewed by Dean Jackson.

Typically we wait 3 frames before considering an accelerated animation was committed.
Additionally, locally I could reproduce the issue prior to this patch but not with it.

  • LayoutTests/platform/mac/TestExpectations:
  • LayoutTests/webanimations/accelerated-animation-after-forward-filling-animation.html:

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

11:49 AM Changeset in webkit [295494] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Regression (r268615) : [ macOS ] webanimations/relative-ordering-of-translate-and-rotate-properties-accelerated.html is a flaky image failure
https://bugs.webkit.org/show_bug.cgi?id=230863
<rdar://83593809>

Patch by Antoine Quint <Antoine Quint> on 2022-06-13
Reviewed by Dean Jackson.

Use the tried and true technique of waiting for animations to be ready and three animation frames
to ensure all accelerated animations have been committed.

  • LayoutTests/platform/mac-wk1/TestExpectations:
  • LayoutTests/webanimations/resources/wait-until-animations-are-committed.js:

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

11:20 AM Changeset in webkit [295493] by sihui_liu@apple.com
  • 7 edits in trunk/Source/WebKit/UIProcess

Start/stop ProcessStateMonitor with ApplicationStateTracker
https://bugs.webkit.org/show_bug.cgi?id=241427

Reviewed by Geoffrey Garen.

We want ProcessStateMonitor to be started when application is in background and to be stopped when application is in
foreground. In r294405, we start/stop ProcessStateMonitor on receiving UIApplicationDidEnterBackgroundNotification and
UIApplicationWillEnterForegroundNotification notifications. However, UIApplicationWillEnterForegroundNotification can be
sent later than UISceneWillEnterForegroundNotification. In ApplicationStateTracke, we start creating foreground activity
for web process on receiving UISceneWillEnterForegroundNotification. At this time,
UIApplicationWillEnterForegroundNotification may not be received yet and ProcessStateMonitor may still be
working. ProcessStateMonitor may forbid creating new activity after it sets process shouldSuspend (see r294405), so we
need to make sure ProcessStateMonitor is stopped before starting new foreground activity.

To achieve that, we now decide when to start/stop ProcessStateMonitor with ApplicationStateTracker. We start
ProcessStateMonitor when all trackers are in the background, and stop it when at least one tracker is in foreground.

  • Source/WebKit/UIProcess/ApplicationStateTracker.mm:

(WebKit::allApplicationStateTrackers):
(WebKit::updateApplicationBackgroundState):
(WebKit::ApplicationStateTracker::ApplicationStateTracker):
(WebKit::ApplicationStateTracker::~ApplicationStateTracker):
(WebKit::ApplicationStateTracker::applicationDidEnterBackground):
(WebKit::ApplicationStateTracker::applicationWillEnterForeground):

  • Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::setProcessesShouldSuspend):

  • Source/WebKit/UIProcess/ProcessAssertion.h:
  • Source/WebKit/UIProcess/WebProcessPool.h:
  • Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm:

(-[WKProcessAssertionBackgroundTaskManager _releaseBackgroundTask]):
(-[WKProcessAssertionBackgroundTaskManager setProcessStateMonitorEnabled:]):
(WebKit::ProcessAndUIAssertion::setProcessStateMonitorEnabled):

  • Source/WebKit/UIProcess/ios/ProcessStateMonitor.mm:

(WebKit::ProcessStateMonitor::checkRemainingRunTime):

  • Source/WebKit/UIProcess/ios/WebProcessProxyIOS.mm:

(WebKit::WebProcessProxy::platformInitialize):

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

10:16 AM Changeset in webkit [295492] by Tyler Wilcock
  • 11 edits in trunk

AX: Update the isolated tree in response to dynamic aria-orientation changes
https://bugs.webkit.org/show_bug.cgi?id=241543

Reviewed by Chris Fleizach.

This patch also makes aria-orientation work for node-only objects, like
those with display:contents.

  • LayoutTests/accessibility/aria-orientation-expected.txt:
  • LayoutTests/accessibility/aria-orientation.html:
  • Source/WebCore/accessibility/AXLogger.cpp:

(WebCore::operator<<):

  • Source/WebCore/accessibility/atspi/AXObjectCacheAtspi.cpp
  • Source/WebCore/accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::handleAttributeChange):
(WebCore::AXObjectCache::updateIsolatedTree):

  • Source/WebCore/accessibility/AXObjectCache.h:
  • Source/WebCore/accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::orientation const):

  • Source/WebCore/accessibility/AccessibilityNodeObject.h:
  • Source/WebCore/accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::orientation const): Deleted.

  • Source/WebCore/accessibility/AccessibilityRenderObject.h:
  • Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::updateNodeProperty):

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

10:15 AM Changeset in webkit [295491] by Andres Gonzalez
  • 6 edits in trunk/Source

AX ITM: Fix for accessibility/Mac/aria-errormessage.html in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=241398

Test: accessibility/Mac/aria-errormessage.html

Reviewed by Chris Fleizach and Tyler Wilcock.

This test was failing because the elements that are referenced as error messages are <span> elements, which are ignored on the mac platform. Therefore there was no isolated object created for those elements and AXIsolatedTree::objectsForIDs will not return them. This patch solves this problem by creating orphan isolated objects in AXIsolatedTree:objectsForIDs if there is no isolated object for the requested AXID, and the corresponding live objects exists.

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

9:11 AM Changeset in webkit [295490] by commit-queue@webkit.org
  • 5 edits in trunk

WebGL: Fix implicit clears with rasterizer discard enabled
https://bugs.webkit.org/show_bug.cgi?id=223351

Patch by Alexey Knyazev <3479527+lexaknyazev@users.noreply.github.com> on 2022-06-13
Reviewed by Kimmo Kinnunen.

  • Do not mark context as changed after draw or clear ops with

enabled rasterizer discard.

  • Rename ClearCaller enum to CallerType.
  • LayoutTests/TestExpectations:
  • Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::blitFramebuffer):
(WebCore::WebGL2RenderingContext::copyTexSubImage3D):
(WebCore::WebGL2RenderingContext::drawRangeElements):
(WebCore::WebGL2RenderingContext::readPixels):

  • Source/WebCore/html/canvas/WebGLMultiDraw.cpp:

(WebCore::WebGLMultiDraw::multiDrawArraysWEBGL):
(WebCore::WebGLMultiDraw::multiDrawArraysInstancedWEBGL):
(WebCore::WebGLMultiDraw::multiDrawElementsWEBGL):
(WebCore::WebGLMultiDraw::multiDrawElementsInstancedWEBGL):

  • Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::markContextChangedAndNotifyCanvasObserver):
(WebCore::WebGLRenderingContextBase::clearIfComposited):
(WebCore::WebGLRenderingContextBase::paintRenderingResultsToCanvas):
(WebCore::WebGLRenderingContextBase::paintRenderingResultsToPixelBuffer):
(WebCore::WebGLRenderingContextBase::clear):
(WebCore::WebGLRenderingContextBase::copyTexSubImage2D):
(WebCore::WebGLRenderingContextBase::drawArrays):
(WebCore::WebGLRenderingContextBase::drawElements):
(WebCore::WebGLRenderingContextBase::readPixels):
(WebCore::WebGLRenderingContextBase::copyTexImage2D):
(WebCore::WebGLRenderingContextBase::drawArraysInstanced):
(WebCore::WebGLRenderingContextBase::drawElementsInstanced):

  • Source/WebCore/html/canvas/WebGLRenderingContextBase.h:

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

9:10 AM Changeset in webkit [295489] by Claudio Saavedra
  • 2 edits in trunk/Tools/WebKitTestRunner

39 bytes leaked in WTR::TestController::platformConfigureViewForTest()
https://bugs.webkit.org/show_bug.cgi?id=241525

Reviewed by Adrian Perez de Castro.

Plug a couple of leaks in the test controller.

  • Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp:

(WTR::TestController::platformConfigureViewForTest):

  • Tools/WebKitTestRunner/wpe/TestControllerWPE.cpp:

(WTR::TestController::platformConfigureViewForTest):

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

7:07 AM Changeset in webkit [295488] by commit-queue@webkit.org
  • 27 edits
    4 adds in trunk

Do not route the navigation preload response body to the service worker if we can avoid it
https://bugs.webkit.org/show_bug.cgi?id=241122
rdar://problem/94141714

Patch by Youenn Fablet <youennf@gmail.com> on 2022-06-13
Reviewed by Chris Dumez.

To further optimize navigation preload, we always start the preload as soon as possible.
In addition to that, we no longer pipe the body through the service worker in the common case:

  • When the preload receives the response, it sends it to the service worker that will resolve the preload promise.
  • The service worker is then expected to synchronously provide it to the FetchEvent.
  • If the fetch event gets the preload response and the preload response has not been started to load in the service worker, the service worker instructs network process to let the preload directly go to the WebProcess.
  • The preload response body might be loaded in the service worker if the response is cloned or if the service worker does not instruct the fetch event to use the preload fast enough. We schedule one task for the body to actually be loaded in the service worker.
  • Set service worker navigation preload redirection fetchStart based on the navigation preloader start to continue passing LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/navigation-preload/resource-timing.https.html.

We store the preload response/error in WebServiceWorkerFetchTaskClient as the preload response might be received between the time the fetch event
is received and the time the fetch event is dispatched.

  • LayoutTests/http/wpt/service-workers/navigation-optimization-worker.js: Added.

(async doTest):

  • LayoutTests/http/wpt/service-workers/navigation-optimization.https-expected.txt: Added.
  • LayoutTests/http/wpt/service-workers/navigation-optimization.https.html: Added.
  • LayoutTests/http/wpt/service-workers/resources/navigation-optimization.py: Added.

(main):

  • LayoutTests/http/wpt/service-workers/resources/service-worker-iframe-preload-script.py:

(main):

  • LayoutTests/http/wpt/service-workers/service-worker-iframe-preload.https-expected.txt:
  • LayoutTests/http/wpt/service-workers/service-worker-iframe-preload.https.html:
  • Source/WebCore/Headers.cmake:
  • Source/WebCore/Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::createFetchResponse):
(WebCore::FetchResponse::fetch):
(WebCore::FetchResponse::startLoader):
(WebCore::FetchResponse::setReceivedInternalResponse):
(WebCore::FetchResponse::BodyLoader::didReceiveResponse):
(WebCore::FetchResponse::markAsDisturbed):

  • Source/WebCore/Modules/fetch/FetchResponse.h:
  • Source/WebCore/WebCore.xcodeproj/project.pbxproj:
  • Source/WebCore/bindings/js/JSFetchEventCustom.cpp:
  • Source/WebCore/testing/ServiceWorkerInternals.cpp:
  • Source/WebCore/workers/service/FetchEvent.cpp:

(WebCore::FetchEvent::preloadResponse):
(WebCore::FetchEvent::navigationPreloadIsReady):
(WebCore::FetchEvent::navigationPreloadFailed):

  • Source/WebCore/workers/service/FetchEvent.h:
  • Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp:

(WebCore::ServiceWorkerFetch::processResponse):
(WebCore::ServiceWorkerFetch::dispatchFetchEvent):

  • Source/WebCore/workers/service/context/ServiceWorkerFetch.h:
  • Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::ServiceWorkerThreadProxy::navigationPreloadIsReady):
(WebCore::ServiceWorkerThreadProxy::navigationPreloadFailed):

  • Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.h:
  • Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:

(WebKit::ServiceWorkerFetchTask::ServiceWorkerFetchTask):
(WebKit::ServiceWorkerFetchTask::startFetch):
(WebKit::ServiceWorkerFetchTask::usePreload):
(WebKit::ServiceWorkerFetchTask::loadResponseFromPreloader):
(WebKit::ServiceWorkerFetchTask::preloadResponseIsReady):

  • Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:
  • Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.messages.in:
  • Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp:

(WebKit::ServiceWorkerNavigationPreloader::ServiceWorkerNavigationPreloader):
(WebKit::ServiceWorkerNavigationPreloader::didReceiveResponse):
(WebKit::ServiceWorkerNavigationPreloader::waitForResponse):

  • Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::navigationPreloadIsReady):
(WebKit::WebSWContextManagerConnection::navigationPreloadFailed):

  • Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h:
  • Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.messages.in:
  • Source/WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:

(WebKit::WebServiceWorkerFetchTaskClient::navigationPreloadIsReady):
(WebKit::WebServiceWorkerFetchTaskClient::navigationPreloadFailed):
(WebKit::WebServiceWorkerFetchTaskClient::usePreload):
(WebKit::WebServiceWorkerFetchTaskClient::cleanup):

  • Source/WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:

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

5:12 AM Changeset in webkit [295487] by Jean-Yves Avenard
  • 2 edits in trunk/Source/WebKit/Shared

SharedBuffer IPC encoders have duplicated and redundant code
https://bugs.webkit.org/show_bug.cgi?id=241407
<rdar://94621576>

Reviewed by Kimmo Kinnunen.

Bug 240160 allowed to greatly simplify the serialisation of SharedBuffer objects,
so make use of it.

  • Source/WebKit/Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<DOMCacheEngine::Record>::encode):
(IPC::ArgumentCoder<DOMCacheEngine::Record>::decode):
(IPC::ArgumentCoder<PasteboardCustomData::Entry>::encode):
(IPC::ArgumentCoder<PasteboardCustomData::Entry>::decode):
(IPC::ArgumentCoder<PasteboardWebContent>::encode):
(IPC::ArgumentCoder<PasteboardWebContent>::decode):
(IPC::ArgumentCoder<PasteboardImage>::encode):
(IPC::ArgumentCoder<PasteboardImage>::decode):
(IPC::ArgumentCoder<RawFile>::encode):
(IPC::ArgumentCoder<RawFile>::decode):
(IPC::ArgumentCoder<PromisedAttachmentInfo>::encode):
(IPC::ArgumentCoder<PromisedAttachmentInfo>::decode):
(IPC::ArgumentCoder<WebCore::FragmentedSharedBuffer>::encode):
(IPC::ArgumentCoder<WebCore::FragmentedSharedBuffer>::decode):
(IPC::ArgumentCoder<WebCore::SharedBuffer>::encode):
(IPC::ArgumentCoder<WebCore::SharedBuffer>::decode):
(IPC::ArgumentCoder<WebCore::ScriptBuffer>::encode):
(IPC::ArgumentCoder<WebCore::ScriptBuffer>::decode):
(IPC::ArgumentCoder<WebCore::CDMInstanceSession::Message>::encode):
(IPC::ArgumentCoder<WebCore::CDMInstanceSession::Message>::decode):
(IPC::encodeSharedBuffer): Deleted.
(IPC::decodeSharedBuffer): Deleted.
(IPC::encodeTypesAndData): Deleted.
(IPC::decodeTypesAndData): Deleted.
(IPC::ArgumentCoder<RefPtr<WebCore::FragmentedSharedBuffer>>::encode): Deleted.
(IPC::ArgumentCoder<RefPtr<WebCore::FragmentedSharedBuffer>>::decode): Deleted.
(IPC::ArgumentCoder<Ref<WebCore::FragmentedSharedBuffer>>::encode): Deleted.
(IPC::ArgumentCoder<Ref<WebCore::FragmentedSharedBuffer>>::decode): Deleted.
(IPC::ArgumentCoder<RefPtr<WebCore::SharedBuffer>>::encode): Deleted.
(IPC::ArgumentCoder<RefPtr<WebCore::SharedBuffer>>::decode): Deleted.
(IPC::ArgumentCoder<Ref<WebCore::SharedBuffer>>::encode): Deleted.
(IPC::ArgumentCoder<Ref<WebCore::SharedBuffer>>::decode): Deleted.

  • Source/WebKit/Shared/WebCoreArgumentCoders.h:

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

3:16 AM Changeset in webkit [295486] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore/html/canvas

Align WebGL draw call functions
https://bugs.webkit.org/show_bug.cgi?id=241347

Patch by Alexey Knyazev <3479527+lexaknyazev@users.noreply.github.com> on 2022-06-13
Reviewed by Kimmo Kinnunen.

Some draw commands did not have implicit clears,
inspector helpers, and post-draw notifications.

  • Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::drawRangeElements):

  • Source/WebCore/html/canvas/WebGLMultiDraw.cpp:

(WebCore::WebGLMultiDraw::multiDrawArraysWEBGL):
(WebCore::WebGLMultiDraw::multiDrawArraysInstancedWEBGL):
(WebCore::WebGLMultiDraw::multiDrawElementsWEBGL):
(WebCore::WebGLMultiDraw::multiDrawElementsInstancedWEBGL):

  • Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::InspectorScopedShaderProgramHighlight::InspectorScopedShaderProgramHighlight):
(WebCore::InspectorScopedShaderProgramHighlight::~InspectorScopedShaderProgramHighlight):
(WebCore::InspectorScopedShaderProgramHighlight::showHighlight):
(WebCore::InspectorScopedShaderProgramHighlight::hideHighlight):
(WebCore::InspectorScopedShaderProgramHighlight::saveBlendValue):
(WebCore::InspectorScopedShaderProgramHighlight::hasBufferBinding):
(WebCore::InspectorScopedShaderProgramHighlight::hasFramebufferParameterAttachment):
(WebCore::WebGLRenderingContextBase::drawArraysInstanced):
(WebCore::WebGLRenderingContextBase::drawElementsInstanced):
(WebCore::InspectorScopedShaderProgramHighlight::showHightlight): Deleted.

  • Source/WebCore/html/canvas/WebGLRenderingContextBase.h:

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

2:55 AM Changeset in webkit [295485] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore/html/canvas

Fix clearIfComposited for indexed color write masks
https://bugs.webkit.org/show_bug.cgi?id=241511

Patch by Alexey Knyazev <3479527+lexaknyazev@users.noreply.github.com> on 2022-06-13
Reviewed by Kimmo Kinnunen.

Implicit clears must correctly restore color write mask state.

  • Source/WebCore/html/canvas/OESDrawBuffersIndexed.cpp:

(WebCore::OESDrawBuffersIndexed::colorMaskiOES):

  • Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::clearIfComposited):
(WebCore::WebGLRenderingContextBase::restoreStateAfterClear):

  • Source/WebCore/html/canvas/WebGLRenderingContextBase.h:

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

2:17 AM Changeset in webkit [295484] by commit-queue@webkit.org
  • 1 edit in trunk/Source/WebCore/platform/graphics/gbm/GraphicsContextGLGBM.cpp

[GBM] Overzealous attaching of GL texture as color attachment to the default framebuffer
https://bugs.webkit.org/show_bug.cgi?id=241462

Patch by Žan Doberšek <zdobersek@igalia.com> on 2022-06-13
Reviewed by Alejandro G. Castro.

In GraphicsContextGLGBM::prepareTexture(), there's no need to repeatedly
reattach the texture objec to the default framebuffer. With GraphicsContextGLGBM
this is only done when (re)sizing the framebuffer. The attached texture later
isn't switched out for some other texture, it remains in place. What does change
is the backing DMABuf-based EGLImage, which is updated upon the next
make-context-current request.

This means framebuffer operations here, after any required multisampling is
resolved, are not required. Only thing that remains is the GL_Flush() call.

  • Source/WebCore/platform/graphics/gbm/GraphicsContextGLGBM.cpp:

(WebCore::GraphicsContextGLGBM::prepareTexture):

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

1:09 AM Changeset in webkit [295483] by commit-queue@webkit.org
  • 4 edits in trunk/Tools/MiniBrowser

REGRESSION(r265492): Removed ability to pass GStreamer options from MiniBrowser to WebProcess
https://bugs.webkit.org/show_bug.cgi?id=241507

Patch by Philippe Normand <philn@igalia.com> on 2022-06-13
Reviewed by Xabier Rodriguez-Calvar.

When the static gstreamer-full library is disabled at build time we should still have the
possibility to add the GStreamer CLI init group to the UIProcess commandline.

  • Tools/MiniBrowser/gtk/CMakeLists.txt:
  • Tools/MiniBrowser/gtk/main.c:

(main):

  • Tools/MiniBrowser/wpe/CMakeLists.txt:
  • Tools/MiniBrowser/wpe/main.cpp:

(main):

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

12:15 AM Changeset in webkit [295482] by commit-queue@webkit.org
  • 5 edits in trunk

Switch Web Share Permissions Policy to *
https://bugs.webkit.org/show_bug.cgi?id=241363

Patch by Marcos Cáceres <Marcos Caceres> on 2022-06-12
Reviewed by Youenn Fablet and Tim Horton.

  • LayoutTests/http/tests/webshare/webshare-allow-attribute-canShare.https-expected.txt:
  • LayoutTests/http/tests/webshare/webshare-allow-attribute-canShare.https.html:
  • LayoutTests/http/tests/webshare/webshare-allow-attribute-share.https-expected.txt:
  • LayoutTests/http/tests/webshare/webshare-allow-attribute-share.https.html:
  • Source/WebCore/html/FeaturePolicy.cpp:

(WebCore::FeaturePolicy::parse):

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

Jun 12, 2022:

9:26 PM Changeset in webkit [295481] by Said Abou-Hallawa
  • 50 edits
    4 adds in trunk

[Filters] LightSource should keep its points in <length-percentage> units
https://bugs.webkit.org/show_bug.cgi?id=241535
<rdar://problem/94973414>

Reviewed by Cameron McCormack.

PointLightSource and SpotLightSource are created with points in user space coordinates.
See SVGFEPointLightElement::lightSource() and SVGFESpotLightElement::lightSource().
But this requires knowing the filter targetBoundingBox and the primitiveUnits at
the LightSource creation time.

When dynamically updating these points through SVGFEDiffuseLightingElement::
setFilterEffectAttribute() or SVGFESpecularLightingElement::setFilterEffectAttribute()
the SVGFilter is not available and these points are stored as <length-percentage>
coordinates. This means if the primitiveUnits is SVG_UNIT_TYPE_OBJECTBOUNDINGBOX,
fractions of the targetBoundingBox will be treated as lengths in user space.

The fix is to store the LightSources points in <length-percentage> units and to
resolve them to user space coordinates in initPaintingData().

  • LayoutTests/svg/filters/feDiffuseLighting-feSpotLight-dynamic-update-expected.svg: Added.
  • LayoutTests/svg/filters/feDiffuseLighting-feSpotLight-dynamic-update.svg: Added.
  • LayoutTests/svg/filters/feSpecularLighting-fePointLight-dynamic-update-expected.svg: Added.
  • LayoutTests/svg/filters/feSpecularLighting-fePointLight-dynamic-update.svg: Added.
  • Source/WebCore/platform/graphics/filters/Filter.h:

(WebCore::Filter::resolvedPoint3D const):

  • Source/WebCore/platform/graphics/filters/PointLightSource.cpp:

(WebCore::PointLightSource::PointLightSource):
(WebCore::PointLightSource::initPaintingData const):
(WebCore::PointLightSource::setX):
(WebCore::PointLightSource::setY):
(WebCore::PointLightSource::setZ):

  • Source/WebCore/platform/graphics/filters/PointLightSource.h:

(WebCore::PointLightSource::position const):
(WebCore::PointLightSource::encode const):

  • Source/WebCore/platform/graphics/filters/SpotLightSource.cpp:

(WebCore::SpotLightSource::SpotLightSource):
(WebCore::SpotLightSource::initPaintingData const):
(WebCore::SpotLightSource::setX):
(WebCore::SpotLightSource::setY):
(WebCore::SpotLightSource::setZ):
(WebCore::SpotLightSource::setPointsAtX):
(WebCore::SpotLightSource::setPointsAtY):
(WebCore::SpotLightSource::setPointsAtZ):

  • Source/WebCore/platform/graphics/filters/SpotLightSource.h:

(WebCore::SpotLightSource::position const):
(WebCore::SpotLightSource::direction const):
(WebCore::SpotLightSource::encode const):

  • Source/WebCore/svg/SVGFEBlendElement.cpp:

(WebCore::SVGFEBlendElement::filterEffect const):

  • Source/WebCore/svg/SVGFEBlendElement.h:
  • Source/WebCore/svg/SVGFEColorMatrixElement.cpp:

(WebCore::SVGFEColorMatrixElement::filterEffect const):

  • Source/WebCore/svg/SVGFEColorMatrixElement.h:
  • Source/WebCore/svg/SVGFEComponentTransferElement.cpp:

(WebCore::SVGFEComponentTransferElement::filterEffect const):

  • Source/WebCore/svg/SVGFEComponentTransferElement.h:
  • Source/WebCore/svg/SVGFECompositeElement.cpp:

(WebCore::SVGFECompositeElement::filterEffect const):

  • Source/WebCore/svg/SVGFECompositeElement.h:
  • Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp:

(WebCore::SVGFEConvolveMatrixElement::filterEffect const):

  • Source/WebCore/svg/SVGFEConvolveMatrixElement.h:
  • Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:

(WebCore::SVGFEDiffuseLightingElement::filterEffect const):

  • Source/WebCore/svg/SVGFEDiffuseLightingElement.h:
  • Source/WebCore/svg/SVGFEDisplacementMapElement.cpp:

(WebCore::SVGFEDisplacementMapElement::filterEffect const):

  • Source/WebCore/svg/SVGFEDisplacementMapElement.h:
  • Source/WebCore/svg/SVGFEDistantLightElement.cpp:

(WebCore::SVGFEDistantLightElement::lightSource const):

  • Source/WebCore/svg/SVGFEDistantLightElement.h:
  • Source/WebCore/svg/SVGFEDropShadowElement.cpp:

(WebCore::SVGFEDropShadowElement::filterEffect const):

  • Source/WebCore/svg/SVGFEDropShadowElement.h:
  • Source/WebCore/svg/SVGFEFloodElement.cpp:

(WebCore::SVGFEFloodElement::filterEffect const):

  • Source/WebCore/svg/SVGFEFloodElement.h:
  • Source/WebCore/svg/SVGFEGaussianBlurElement.cpp:

(WebCore::SVGFEGaussianBlurElement::filterEffect const):

  • Source/WebCore/svg/SVGFEGaussianBlurElement.h:
  • Source/WebCore/svg/SVGFEImageElement.cpp:

(WebCore::SVGFEImageElement::filterEffect const):

  • Source/WebCore/svg/SVGFEImageElement.h:
  • Source/WebCore/svg/SVGFELightElement.h:
  • Source/WebCore/svg/SVGFEMergeElement.cpp:

(WebCore::SVGFEMergeElement::filterEffect const):

  • Source/WebCore/svg/SVGFEMergeElement.h:
  • Source/WebCore/svg/SVGFEMorphologyElement.cpp:

(WebCore::SVGFEMorphologyElement::filterEffect const):

  • Source/WebCore/svg/SVGFEMorphologyElement.h:
  • Source/WebCore/svg/SVGFEOffsetElement.cpp:

(WebCore::SVGFEOffsetElement::filterEffect const):

  • Source/WebCore/svg/SVGFEOffsetElement.h:
  • Source/WebCore/svg/SVGFEPointLightElement.cpp:

(WebCore::SVGFEPointLightElement::lightSource const):

  • Source/WebCore/svg/SVGFEPointLightElement.h:
  • Source/WebCore/svg/SVGFESpecularLightingElement.cpp:

(WebCore::SVGFESpecularLightingElement::filterEffect const):

  • Source/WebCore/svg/SVGFESpecularLightingElement.h:
  • Source/WebCore/svg/SVGFESpotLightElement.cpp:

(WebCore::SVGFESpotLightElement::lightSource const):

  • Source/WebCore/svg/SVGFESpotLightElement.h:
  • Source/WebCore/svg/SVGFETileElement.cpp:

(WebCore::SVGFETileElement::filterEffect const):

  • Source/WebCore/svg/SVGFETileElement.h:
  • Source/WebCore/svg/SVGFETurbulenceElement.cpp:

(WebCore::SVGFETurbulenceElement::filterEffect const):

  • Source/WebCore/svg/SVGFETurbulenceElement.h:
  • Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:
  • Source/WebCore/svg/graphics/filters/SVGFilter.cpp:

(WebCore::SVGFilter::resolvedPoint3D const):

  • Source/WebCore/svg/graphics/filters/SVGFilter.h:
  • Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:

(WebCore::SVGFilterBuilder::buildFilterExpression):

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

8:22 PM Changeset in webkit [295480] by Jean-Yves Avenard
  • 1 edit in trunk/Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp

Handle case where only a single video frame was appended.
https://bugs.webkit.org/show_bug.cgi?id=241453

Reviewed by Jer Noble.

Under some circumstances, only a single frame will be appended.
When the queue of pending samples gets flushed we can't rely on the last sample's time
nor the last duration.

  • Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::WebMParser::VideoTrackData::flushPendingSamples):

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

7:40 PM Changeset in webkit [295479] by Wenson Hsieh
  • 5 edits
    1 copy
    1 add in trunk

REGRESSION (r290875): [iOS] Safari renders many blank tiles after navigating back to webpage from PDF
https://bugs.webkit.org/show_bug.cgi?id=241536
rdar://94637323

Reviewed by Tim Horton.

When using a standard content view, the logic in WKApplicationStateTrackingView creates a
WebKit::ApplicationStateTracker after the view becomes parented in the view hierarchy (in
-didMoveToWindow), and holds onto it until it is about to be unparented from the view hierarchy
(in -willMoveToWindow:).

However, in the case where WKApplicationStateTrackingView is a WKPDFView (i.e. we're hosting a
remote PDFKit view controller), the behavior is much more intricate; this is because the WKPDFView
is replaced in the view hierarchy by the remote view controller's sizing view once the
PDFHostViewController has finished loading its remote content. Once this happens, the
-_contentView of the WKApplicationStateTrackingView points to this sizing view instead, and the
WKPDFView (which subclasses WKApplicationStateTrackingView) is no longer in the view hierarchy.

Prior to r290875: when we remove WKPDFView from the view hierarchy and replace it with a sizing
view, self._contentView in both cases already points to the _UISizeTrackingView, even though it
hasn't been added to the view hierarchy yet. Since we bail if this size tracking view is not in the
view hierarchy, we previously ended up never clearing out the application state tracker when loading
a PDF, which means that -[WKPDFView isBackground] would always return NO, despite the view not
being in the view hierarchy.

In r290875, I replaced the !self._contentView.window check with !_applicationStateTracker, which
caused us to now clear out the application state tracker when unparenting WKPDFView. This, in
turn, means that -[WKPDFView isBackground] now returns YES when the WKPDFView is removed and
replaced with the size tracking view. When navigating back to the previous page, this causes us to
end up in a state where the WindowIsActive flag in WebPageProxy::m_activityState is off until
the next page load, since we only update this flag in WebPageProxy::finishAttachingToWebProcess,
which is called when WKPDFView is still being used as the custom content view. This ultimately
causes the symptoms observed in this bug, which include blank tiles when scrolling.

To address this bug, we first revert the changes in r290875, which allows WKPDFView to behave as
if it were in the foreground, even when it's not in the view hierarchy:

`

  • (void)willMoveToWindow:(UIWindow *)newWindow

{

if (!self._contentView.window
newWindow)

return;


`

Of course, this (by itself) would bring back <https://webkit.org/b/237505>; to preserve that fix, we
additionally limit the early return to cases where the window is *not* in the process of being
destroyed (that is, -willMoveToWindow: is called with both the new window == nil, while the
current window self.window == nil):

`

  • (void)willMoveToWindow:(UIWindow *)newWindow

{

BOOL windowIsBeingDeallocated = !self.window && !newWindow;
if (!windowIsBeingDeallocated) {

if (!self._contentView.window
newWindow)

return;

}

`

Note that this is logically equivalent to:

`

  • (void)willMoveToWindow:(UIWindow *)newWindow

{

if ((self.window
newWindow) && (!self._contentView.window newWindow))

return;


`

...which can also be rewritten a bit more succinctly as:

`

  • (void)willMoveToWindow:(UIWindow *)newWindow

{

if ((self.window && !self._contentView.window)
newWindow)

return;


`

In other words:

  • In the case where a standard content view is used (i.e. self == self._contentView), we always

clear out _applicationStateTracker if the window we're moving to is nil. This takes care of the
normal scenario of unparenting a web view, as well as the corner case where the web view is
unparented in the middle of -[UIWindow dealloc].

  • In the case of PDFHostViewController where a custom content view is used, we'll return early

in -willMoveToWindow: and keep the existing _applicationStateTracker, because the size tracking
view has not been parented yet.

Test: ApplicationStateTracking.NavigatingFromPDFDoesNotLeaveWebViewInactive

  • Source/WebKit/UIProcess/ios/WKApplicationStateTrackingView.mm:

(-[WKApplicationStateTrackingView willMoveToWindow:]):

  • Tools/TestWebKitAPI/Configurations/Base.xcconfig:

Add Source/WebKit/Platform/spi/ios as a relative header include path for iOS family, such that we
can import the internal PDFKitSPI.h in API tests.

  • Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • Tools/TestWebKitAPI/Tests/ios/ApplicationStateTracking.mm:

(TestWebKitAPI::TEST):

Introduce a new API test that loads a simple webpage, navigates to a PDF document (and uses a remote
PDFKit view controller to render it), and then navigate back to the original webpage.

  • Tools/TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[WKWebView _isBackground]): Deleted.

Remove a workaround for API tests that's no longer necessary, so that the new API test fails without
this fix. This workaround was added in r231663, but became unnecessary after r236989, which removed
the dependency on -_isBackground.

  • Tools/TestWebKitAPI/ios/TestPDFHostViewController.h:
  • Tools/TestWebKitAPI/ios/TestPDFHostViewController.mm: Added.

Add a helper class that allows us to swizzle out +createHostView:forExtensionIdentifier:, and
return a PDFHostViewController subclass, with a subset of method stubs required to avoid crashes
when running API tests. This allows us to simulate PDFKit remote view controller presentation in API
tests.

(-[TestPDFHostViewController setDelegate:]):
(-[TestPDFHostViewController setDocumentData:withScrollView:]):
(-[TestPDFHostViewController currentPageIndex]):
(-[TestPDFHostViewController pageCount]):
(-[TestPDFHostViewController minimumZoomScale]):
(-[TestPDFHostViewController maximumZoomScale]):
(-[TestPDFHostViewController findString:withOptions:]):
(-[TestPDFHostViewController cancelFindString]):
(-[TestPDFHostViewController cancelFindStringWithHighlightsCleared:]):
(-[TestPDFHostViewController focusOnSearchResultAtIndex:]):
(-[TestPDFHostViewController clearSearchHighlights]):
(-[TestPDFHostViewController goToPageIndex:]):
(-[TestPDFHostViewController updatePDFViewLayout]):
(-[TestPDFHostViewController gestureRecognizerShouldBegin:]):
(-[TestPDFHostViewController pageNumberIndicator]):
(-[TestPDFHostViewController snapshotViewRect:snapshotWidth:afterScreenUpdates:withResult:]):
(-[TestPDFHostViewController beginPDFViewRotation]):
(-[TestPDFHostViewController endPDFViewRotation]):
(TestWebKitAPI::swizzledCreateHostViewForExtensionIdentifier):
(TestWebKitAPI::createPDFHostViewControllerSwizzler):

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

7:45 AM Changeset in webkit [295478] by Alan Bujtas
  • 1 edit
    2 adds in trunk

Incorrect sizing of elements with visually hidden text inside
https://bugs.webkit.org/show_bug.cgi?id=241459

Reviewed by Antti Koivisto.

This patch fixes the incorrect inline width computation when an inline box (e.g. <span>) with margin-inline-start (e.g. margin-left) is followed by an out-of-flow element.

<div id=container>some<span style="margin-left: 10px"><div style="position: absolute"></div>text</span></div>

In LineBreaker::nextLineBreak, while iterating through the content of [container], the margin-left of the inline box (span) is included twice; first for the out-of-flow box and second for the [text] content. This patch ensures that when we reach the [text] content, we check if we have already reserved the space for the inline box's margin (padding and border).
(While out-of-flow inline level boxes are not supposed to participate in inline layout, (in legacy line layout) in order to compute their static position we include them in line layout. A more involved fix would be to exclude all out-of-flow boxes from line layout and deal with their static positioning after completing the core line layout).

  • LayoutTests/fast/block/shrink-to-fit-with-out-of-flow-and-inline-box-margin-expected.html: Added.
  • LayoutTests/fast/block/shrink-to-fit-with-out-of-flow-and-inline-box-margin.html: Added.
  • Source/WebCore/rendering/line/BreakingContext.h: Make sure when the out-of-flow box takes the margin, we don't add it again for the text content. Also, reset this flag for subsequent content.

(WebCore::inlineLogicalWidth):

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

Jun 11, 2022:

8:25 PM Changeset in webkit [295477] by Alan Bujtas
  • 1 edit in trunk/Source/WebCore/rendering/LegacyLineLayout.cpp

Reset the dirty bit on the inline level renderers when counter is present
https://bugs.webkit.org/show_bug.cgi?id=241534

Reviewed by Antti Koivisto.

While the actual line layout happens in layoutRunsAndFloats, we pre-reset the needsLayout flag as we walk the renderers and prepare them for the inline layout.
Normally this simple DOM order walk clears all the layout bits just fine, but counters can re-dirty any "connected" renderer in a seemingly random order.
This patch ensures that all inline level box renders are marked clean before returning from layoutLineBoxes.

  • Source/WebCore/rendering/LegacyLineLayout.cpp:

(WebCore::LegacyLineLayout::layoutLineBoxes):

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

4:44 PM Changeset in webkit [295476] by mmaxfield@apple.com
  • 22 edits
    2 adds in trunk

Delay system font shorthand resolution until after parsing
https://bugs.webkit.org/show_bug.cgi?id=241454

Reviewed by Antti Koivisto.

This is the fifth piece of https://bugs.webkit.org/show_bug.cgi?id=237817, and is the main crux
of the fix to that bug. When content says something like "font: caption" or "font: -apple-system-body"
we have to map that to CSS properties like font-size and font-weight, so inheritance works properly
across different elements. On iOS, system settings can affect this mapping. Before this patch, we
were performing this mapping inside the parser, which is wrong because we'll never re-parse things
in response to a change in the environment. So, if the page is live, and then the user changes a setting
in system preferences, we won't re-parse, which means the page won't update to accomodate the new setting
the user changed.

This patch changes the parser to not do this mapping, but instead just to emit CSSValues which directly
and simply represent the value that was present in the CSS source itself. So, if the content says
"font: caption" we'll create CSSPrimitiveValues which just hold "caption" and use that for all the longhands
of the font property. Then, we do the mapping when the values are applied, inside StyleBuilder. StyleBuilder
is re-run in response to environment changes, so this piece is necessary for system settings to immediately
take effect without a reload of the page.

This change is web-exposed, because the contents of CSSValues are exposed to webpages via inspecting the
CSSStyleSheet in JavaScript. So, the change is a little scary, but I think it's the only way to have the
right thing happen with system settings.

This patch also deletes the now-unused system font shorthand cache, which was reimplemented in
https://github.com/WebKit/WebKit/commit/10cdfcb983187328f4229d5812a0da2a4210e4ef.

This patch isn't sufficient to make system settings fully work - there are some follow-up patches which
are still necessary on top of this:

  1. Have font creation code actually interrogate system settings, and react accordingly, to create fonts

with the appropriate size/weight

  1. Make sure the right things get invalidated, so we don't get erroneous cache hits when system settings

change

  1. Make sure the right events are being delivered to the right places, and triggering the right invalidation,

in response to system settings being changed.

  • LayoutTests/fast/text/font-shorthand-resolution-expected.txt: Added.
  • LayoutTests/fast/text/font-shorthand-resolution.html: Added.
  • Source/WebCore/css/CSSProperties.json:
  • Source/WebCore/css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::consumeSystemFont):
(WebCore::CSSPropertyParser::parseShorthand):

  • Source/WebCore/css/parser/CSSPropertyParserHelpers.h:

(WebCore::CSSPropertyParserHelpers::isSystemFontShorthand):
(WebCore::CSSPropertyParserHelpers::lowerFontShorthand):

  • Source/WebCore/platform/graphics/SystemFontDatabase.h:
  • Source/WebCore/rendering/RenderTheme.h:
  • Source/WebCore/rendering/RenderThemeCocoa.h:
  • Source/WebCore/rendering/RenderThemeCocoa.mm:

(WebCore::RenderThemeCocoa::systemFont const): Deleted.

  • Source/WebCore/rendering/RenderThemeGtk.cpp:

(WebCore::RenderThemeGtk::systemFont const): Deleted.

  • Source/WebCore/rendering/RenderThemePlayStation.cpp:

(WebCore::RenderThemePlayStation::systemFont const): Deleted.

  • Source/WebCore/rendering/RenderThemeWin.cpp:

(WebCore::RenderThemeWin::systemFont const): Deleted.

  • Source/WebCore/style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertFontWeight):
(WebCore::Style::BuilderConverter::convertFontVariantCaps):
(WebCore::Style::BuilderConverter::convertLineHeight):

  • Source/WebCore/style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyValueFontFamily):
(WebCore::Style::BuilderCustom::applyValueFontStyle):
(WebCore::Style::BuilderCustom::applyValueFontSize):

  • Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::contentSizeCategoryDidChange):

  • Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::accessibilityPreferencesDidChange):

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

3:32 PM Changeset in webkit [295475] by rniwa@webkit.org
  • 4 edits
    2 adds in trunk

ValidityState object should be the same on each access (JS object getting GC'd incorrectly)
https://bugs.webkit.org/show_bug.cgi?id=33733

Reviewed by Darin Adler.

Fixed the bug by making the form associated element an opaque root of ValidityState.

  • LayoutTests/fast/forms/ValidityState-gc-expected.txt: Added.
  • LayoutTests/fast/forms/ValidityState-gc.html: Added.
  • Source/WebCore/html/HTMLFormControlElement.h:
  • Source/WebCore/html/HTMLObjectElement.h:
  • Source/WebCore/html/ValidityState.h:

(WebCore::ValidityState::element):
(WebCore::ValidityState::opaqueRootConcurrently):

  • Source/WebCore/html/ValidityState.idl:

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

8:11 AM Changeset in webkit [295474] by Adrian Perez de Castro
  • 3 edits in trunk/Source

Non-unified build fixes, pre- Web Engines Hackfest edition
https://bugs.webkit.org/show_bug.cgi?id=241532

Unreviewed non-unified build fixes.

  • Source/WebCore/platform/graphics/filters/FilterResults.cpp: Add missing ImageBuffer.h header inclusion.
  • Source/WebCore/platform/graphics/gtk/SystemFontDatabaseGTK.cpp: Add missing inclusion of headers PlatformScreen.h, <gtk/gtk.h>, and wtf/glib/GUniquePtr.h.
  • Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp: Add missing NetworkProcessProxyMessages.h header inclusion.

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

Jun 10, 2022:

11:23 PM Changeset in webkit [295473] by achristensen@apple.com
  • 2 edits in trunk

CORS checks shouldn't unblock cookies
https://bugs.webkit.org/show_bug.cgi?id=241527

Reviewed by Brent Fulgham.

If cookies have been blocked, a request that has been made with {credentials: 'include'} shouldn't un-block the cookies.

  • Source/WebCore/loader/CrossOriginAccessControl.cpp:

(WebCore::updateRequestForAccessControl):

  • Tools/TestWebKitAPI/Tests/WebKitCocoa/WKContentExtensionStore.mm:

(TEST_F):

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

10:34 PM Changeset in webkit [295472] by Alan Bujtas
  • 7 edits
    2 adds in trunk

Repaint rect does not take into account text-underline-offset
https://bugs.webkit.org/show_bug.cgi?id=241442

Reviewed by Antti Koivisto.

This patch add support for text decoration ink overflow (IFC).

  1. Collect decoration ink overflow (logical)
  2. Update display box ink overflow (visual)
  • Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::build):
(WebCore::Layout::InlineDisplayContentBuilder::collectInkOverflowForInlineBoxes):
(WebCore::Layout::visualBottomForTextDecorationContent):
(WebCore::Layout::InlineDisplayContentBuilder::collectInkOverflowForTextDecorations):

  • Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.h:
  • Source/WebCore/style/InlineTextBoxStyle.cpp:

(WebCore::visualOverflowForDecorations):
(WebCore::defaultGap):

  • Source/WebCore/style/InlineTextBoxStyle.h:

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

7:44 PM Changeset in webkit [295471] by Diego Pino Garcia
  • 1 edit in trunk/Tools/Scripts/webkitpy/common/checkout/scm/git.py

[webkit-patch] Format patch without version signature
https://bugs.webkit.org/show_bug.cgi?id=240516

Reviewed by Jonathan Bedard.

By default 'git-format-patch' adds a signature at the bottom of a diff
patch with Git version number, which the DiffParser wrongly interprets as
a patch chunk.

  • Tools/Scripts/webkitpy/common/checkout/scm/git.py: Use knob '--no-signature' to emit patch without signature.

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

6:33 PM Changeset in webkit [295470] by Jonathan Bedard
  • 5 edits in trunk/Tools/Scripts/libraries/webkitscmpy

[git-webkit] Make the default rebase behavior for git-webkit pr configurable
https://bugs.webkit.org/show_bug.cgi?id=239385
<rdar://problem/91811534>

Reviewed by Dewei Zhu.

  • Tools/Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/pull_request.py:

(PullRequest.main): Check the webkitscmpy.auto-rebase-branch option to determine
if we should automatically rebase the branch.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py:

(Setup.git): Prompt user to set the automatic rebase behavior.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/setup_unittest.py:

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

5:35 PM Changeset in webkit [295469] by Jonathan Bedard
  • 1 delete in trunk/Tools/Scripts/webkitperl/VCSUtils_unittest/mergeChangeLogs.pl

[webkitperl] Remove ChangeLog test
https://bugs.webkit.org/show_bug.cgi?id=241481

Reviewed by Aakash J.

  • Tools/Scripts/webkitperl/VCSUtils_unittest/mergeChangeLogs.pl: Removed.

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

4:26 PM Changeset in webkit [295468] by Wenson Hsieh
  • 2 edits in trunk

[iOS] Specifying spellcheck="false" on a contentEditable element should suppress platform spellchecking
https://bugs.webkit.org/show_bug.cgi?id=241514
rdar://91123300

Reviewed by Devin Rousso.

Additionally set -[UITextInputTraits spellCheckingType] to UITextSpellCheckingTypeNo when
focusing editable fields with the DOM attribute spellcheck="false". This provides a hint to UIKit
that system spellchecking should be disabled when editing this field - among other things, this
allows us to avoid showing text candidates in the case where autocorrect="off" is additionally
specified.

If either spellcheck="true" is set or spellcheck is not specified, we fall back to the user's
preference by using UITextSpellCheckingTypeDefault.

Test: KeyboardInputTests.DisableSpellChecking

  • Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _updateTextInputTraits:]):

  • Tools/TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(TestWebKitAPI::TEST):

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

4:10 PM Changeset in webkit [295467] by Jonathan Bedard
  • 2 edits in trunk/Tools/CISupport/ews-build

[EWS] Remove extra space from GitHub PR description links
https://bugs.webkit.org/show_bug.cgi?id=241522
<rdar://problem/94842283>

Reviewed by Ryan Haddad.

  • Tools/CISupport/ews-build/steps.py:

(UpdatePullRequest): Port changes from 250718@main to EWS.
(UpdatePullRequest.escape_html):

  • Tools/CISupport/ews-build/steps_unittest.py:

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

3:45 PM Changeset in webkit [295466] by yurys@chromium.org
  • 1 edit in trunk/Source/WebKit/UIProcess/WebPageProxy.h

Unified build: error: reference to 'FontInfo' is ambiguous
https://bugs.webkit.org/show_bug.cgi?id=241524

Reviewed by Darin Adler.

Fix unified build error.

  • Source/WebKit/UIProcess/WebPageProxy.h: removed unused forward declaration.

It may cause name clash with ::FontInfo (from QD.framework/Headers/Quickdraw.h)
on Mac when this file is included into the same unified source as another .cpp
file declaring 'using namespace WebKit;'.

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

3:13 PM Changeset in webkit [295465] by Adrian Perez de Castro
  • 1 edit in releases/WebKitGTK/webkit-2.36/Source/WebCore/rendering/RenderBox.h

Merge r295399 - Handle a disconnected view during applyTopLeftLocationOffset
https://bugs.webkit.org/show_bug.cgi?id=241355
<rdar://92432637>

Reviewed by Alan Bujtas.

It appears that we can sometimes end up in a state where the document's
view is disconnected during didLayout, which calls applyTopleftLocationOffset.
This just adds a null check to handle this case for now.

  • Source/WebCore/rendering/RenderBox.h:

(WebCore::RenderBox::applyTopLeftLocationOffset const):

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

2:49 PM Changeset in webkit [295464] by Wenson Hsieh
  • 34 edits in trunk

Update TBA API availability macros for iOS 16 and macOS Ventura
https://bugs.webkit.org/show_bug.cgi?id=241482
rdar://94651561

Reviewed by Tim Horton.

Update WK_MAC_TBA and WK_IOS_TBA macros to 13.0 and 16.0, respectively.

  • Source/WebKit/Shared/API/Cocoa/WKMain.h:
  • Source/WebKit/Shared/API/Cocoa/_WKHitTestResult.h:
  • Source/WebKit/UIProcess/API/Cocoa/WKError.h:
  • Source/WebKit/UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
  • Source/WebKit/UIProcess/API/Cocoa/WKPreferences.h:

Mark these two API properties as available since macOS 12.3 and iOS 15.4. These were first
introduced in these respective macOS and iOS versions, but with incorrect availability macros
indicating that they were available since 12.0 and 15.0.

  • Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • Source/WebKit/UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:
  • Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:

Also, mark setMinimumViewportInset:maximumViewportInset:, minimumViewportInset, and
maximumViewportInset as being available since iOS 15.5.

  • Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:

(-[WKWebView _dataTaskWithRequest:completionHandler:]):

  • Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h:
  • Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.h:
  • Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:
  • Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifest.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKAuthenticatorSelectionCriteria.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKAutomationSession.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKContentRuleListAction.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKDataTask.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKDataTaskDelegate.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKElementAction.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKModalContainerInfo.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKResidentKeyRequirement.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKSystemPreferences.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInCSSStyleDeclarationHandle.h:
  • Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:
  • Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
  • Tools/Scripts/webkitpy/common/version_name_map.py:

(VersionNameMap.init):

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

2:44 PM Changeset in webkit [295463] by Devin Rousso
  • 1 edit in trunk/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp

Add PaymentHandler reference when validating the merchant
https://bugs.webkit.org/show_bug.cgi?id=241520
<rdar://problem/94609087>

Reviewed by Wenson Hsieh.

  • Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::PaymentRequest::completeMerchantValidation):

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

2:22 PM Changeset in webkit [295462] by Tyler Wilcock
  • 2 edits in trunk/Tools/CISupport/build-webkit-org

Add post-commit build to run accessibility isolated tree mode layout tests
https://bugs.webkit.org/show_bug.cgi?id=235125

Reviewed by Aakash Jain.

Patch co-author is Aakash Jain.

  • Tools/CISupport/build-webkit-org/config.json:
  • Tools/CISupport/build-webkit-org/factories_unittest.py:

(TestExpectedBuildSteps):

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

1:36 PM Changeset in webkit [295461] by mmaxfield@apple.com
  • 3 edits in trunk/Source

Adopt EnumeratedArray in SystemFontDatabase
https://bugs.webkit.org/show_bug.cgi?id=241506

Reviewed by Cameron McCormack.

This is why we created EnumeratedArray in the first place.

  • Source/WebCore/platform/graphics/SystemFontDatabase.cpp:

(WebCore::SystemFontDatabase::systemFontShorthandInfo const):

  • Source/WebCore/platform/graphics/SystemFontDatabase.h:

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

1:23 PM Changeset in webkit [295460] by dino@apple.com
  • 1 edit in trunk/Source/WebCore/platform/graphics/cocoa/IOSurface.mm

Safari crashes anytime any web links on a webpage are clicked on
https://bugs.webkit.org/show_bug.cgi?id=241500
rdar://94655829

Reviewed by Tim Horton.

In some VM scenarios, IOSurfaceAccelerator is not available, which
causes a crash when navigating (creating the back-forward images).
The solution is to check for null after attempting to create the
accelerator.

  • Source/WebCore/platform/graphics/cocoa/IOSurface.mm:

(WebCore::IOSurface::convertToFormat): Add a null check and bail.

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

12:01 PM Changeset in webkit [295459] by caitp@igalia.com
  • 5 edits in trunk/Source

[Shadow Realms] Add feature flag to enable Exposed=* web APIs in ShadowRealms
https://bugs.webkit.org/show_bug.cgi?id=241448

Reviewed by Yusuke Suzuki.

No longer expose Web APIs to ShadowRealm by default. Instead, we
enable this with a new setting WebAPIsInShadowRealmEnabled.

Because the HTML integration aspect of the specification is still in the
air, it's prudent to disable it by default, while still providing a
feature flag for web-platform-tests.

  • Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml:
  • Source/WebCore/bindings/js/WebCoreBuiltinNames.h:
  • Source/WebCore/bindings/scripts/preprocess-idls.pl:

(GenerateConstructorAttributes):

  • Source/WebCore/bindings/scripts/test/JS/JSShadowRealmGlobalScope.cpp:

(WebCore::JSShadowRealmGlobalScope::finishCreation):

  • Source/WebCore/bindings/scripts/test/ShadowRealmGlobalScopeConstructors.idl:

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

11:50 AM Changeset in webkit [295458] by Alan Bujtas
  • 1 edit in trunk/Source/WebCore/style/InlineTextBoxStyle.cpp

Remove redundant OptionSet<TextDecorationLine> in InlineTextBoxStyle functions
https://bugs.webkit.org/show_bug.cgi?id=241499

Reviewed by Antti Koivisto.

  • Source/WebCore/style/InlineTextBoxStyle.cpp:

(WebCore::minLogicalTopForTextDecorationLine):
(WebCore::maxLogicalBottomForTextDecorationLine):
(WebCore::enclosingRendererWithTextDecoration):
(WebCore::textRunLogicalOffsetFromLineBottom):

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

11:19 AM Changeset in webkit [295457] by commit-queue@webkit.org
  • 1 edit in trunk/Source/WebCore/dom/Document.cpp

Special case bitmap renderers in Document::getCSSCanvasContext
https://bugs.webkit.org/show_bug.cgi?id=241505

Patch by Rob Buis <rbuis@igalia.com> on 2022-06-10
Reviewed by Alex Christensen.

Special case bitmap renderers in Document::getCSSCanvasContext.

  • Source/WebCore/dom/Document.cpp:

(WebCore::Document::getCSSCanvasContext):

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

10:29 AM Changeset in webkit [295456] by Brent Fulgham
  • 2 edits in trunk

[ macOS ][ iOS ] TestWebKitAPI.SOAuthorizationSubFrame.InterceptionError is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=241421
<rdar://problem/94641397>

Reviewed by Kate Cheney.

This test was timing out for the same reason as SOAuthorizationSubFrame.InterceptionErrorWithReferrer,
which Pascoe fixed in Bug 239311.

This change modifies all 'waitForMessage'-based tests to use the message listener delegate to
avoid the race conditions identified. I also changed the method swizzling code to remove
a bunch of copy/paste code that had to be kept in sync.

With these changes I can run the tests 1000 times on simulator without a timeout.

  • Source/WebKit/UIProcess/Cocoa/SOAuthorization/WKSOAuthorizationDelegate.mm:

(-[WKSOAuthorizationDelegate authorization:didCompleteWithError:]): Only emit an error log message
when there is an actual error. We pass through this flow in normal cases where a site wants to
use the web fallback instead of AppSSO based on user input.

  • Tools/TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(-[TestSOAuthorizationScriptMessageHandler extendExpectations:]):
(-[TestSOAuthorizationScriptMessageHandler resetExpectations:]):
(TestWebKitAPI::TEST):

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

10:09 AM Changeset in webkit [295455] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

Should be able to compute decoration overflow without InlineIterator::TextBoxIterator
https://bugs.webkit.org/show_bug.cgi?id=241490

Reviewed by Antti Koivisto.

This patch enables IFC codebase to compute visual overflow for decoration (even when TextBoxIterator is not available).

  • Source/WebCore/rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeAffectsVisualOverflow const):

  • Source/WebCore/style/InlineTextBoxStyle.cpp:

(WebCore::visualOverflowForDecorations):

  • Source/WebCore/style/InlineTextBoxStyle.h:

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

9:13 AM Changeset in webkit [295454] by commit-queue@webkit.org
  • 2 edits in trunk/Source

[GLib] Validate proxy URLs passed to WebKitNetworkProxySettings
https://bugs.webkit.org/show_bug.cgi?id=241485

Patch by Michael Catanzaro <mcatanzaro@redhat.com> on 2022-06-10
Reviewed by Philippe Normand.

Validate that users pass only valid URLs to these APIs.

  • Source/WTF/wtf/URL.h: Opportunistic typo fix.
  • Source/WebKit/UIProcess/API/glib/WebKitNetworkProxySettings.cpp:

(webkit_network_proxy_settings_new):
(webkit_network_proxy_settings_add_proxy_for_scheme):

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

8:19 AM Changeset in webkit [295453] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

computeUnderlineOffset should not take InlineIterator::LineBoxIterator
https://bugs.webkit.org/show_bug.cgi?id=241488

Reviewed by Antti Koivisto.

Let's precompute the text run's offset value so that we don't have to pass in a LineBoxIterator to computeUnderlineOffset.

  • Source/WebCore/rendering/TextDecorationPainter.cpp:

(WebCore::TextDecorationPainter::paintBackgroundDecorations):

  • Source/WebCore/style/InlineTextBoxStyle.cpp:

(WebCore::textRunLogicalOffsetFromLineBottom):
(WebCore::computeUnderlineOffset):
(WebCore::visualOverflowForDecorations):

  • Source/WebCore/style/InlineTextBoxStyle.h:

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

8:11 AM Changeset in webkit [295452] by pvollan@apple.com
  • 1 edit in trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

Disable URL scheme check in Data Detectors for all clients
https://bugs.webkit.org/show_bug.cgi?id=241273

Reviewed by Geoffrey Garen.

We are seeing telmetry where also Web browser clients are attempting to connect to Launch Services when data detection
is trying to find an application to handle a URL with a custom scheme. Since Launch Services is blocked in the sandbox,
the WebContent process will be unable to determine if there is an application that can open this URL, and the link will
not be clickable. This can be addressed by disabling the URL scheme check in Data Detectors for all clients.

  • Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

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

7:51 AM Changeset in webkit [295451] by Patrick Angle
  • 6 edits in trunk

WebDriver: [Cocoa] Regression(r290743) Automated mouse movement does not result in JS mouse event being fired
https://bugs.webkit.org/show_bug.cgi?id=241484
rdar://94026001

Reviewed by Devin Rousso.

r290743 changed WKWebView on macOS to no longer forward NSEventTypeMouseMoved events to the underlying view
implementation since it does its own mouse tracking. Unfortuantely, this means that WebDriver on Cocoa platforms can not
just dispatch an event to the window and have that event reach the WKWebView's underlying view implementation. This
change was made because events for genuine cursor movement were being received twice by the underlying view previously.
We need to explicitly tell the underlying view about automated mouse movements (as well as the NSWindow to maintain any
existing behavior caused by the mouse move event being sent to the window).

This patch was verified by comparing WPT test results for tests in /webdriver/tests/perform_actions and
/webdriver/tests/release_actions and ensuring that results now match Safari 15.5 again, which does not have the
regressing change included.

  • Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • Source/WebKit/UIProcess/API/mac/WKWebViewMac.mm:

(-[WKWebView _simulateMouseMove:]):

  • Source/WebKit/UIProcess/API/mac/WKWebViewPrivateForTestingMac.h:
  • Source/WebKit/UIProcess/API/mac/WKWebViewTestingMac.mm:

(-[WKWebView _simulateMouseMove:]): Deleted.

  • Move _simulateMouseMove to be private instead of private for testing.
  • Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm:

(WebKit::WebAutomationSession::sendSynthesizedEventsToPage):

  • For mouse move events, make sure the view implementation receives the events.
  • Tools/WebKitTestRunner/mac/EventSenderProxy.mm:

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

5:26 AM Changeset in webkit [295450] by Alan Bujtas
  • 1 edit in trunk/Source/WebCore/style/InlineTextBoxStyle.cpp

minLogicalTopForTextDecorationLine/maxLogicalBottomForTextDecorationLine should return the min/max value
https://bugs.webkit.org/show_bug.cgi?id=241474

Reviewed by Antti Koivisto.

This improves readability and also a preparation for making decoration visual overflow work with IFC.

  • Source/WebCore/style/InlineTextBoxStyle.cpp:

(WebCore::minLogicalTopForTextDecorationLine):
(WebCore::maxLogicalBottomForTextDecorationLine):
(WebCore::computeUnderlineOffset):

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

2:37 AM Changeset in webkit [295449] by commit-queue@webkit.org
  • 60 edits
    2 adds in trunk

Enable WasmLLInt on ARMv7

Patch by Geza Lore <Geza Lore> on 2022-06-10
Patch by Geza Lore <Geza Lore> on 2022-05-27
https://bugs.webkit.org/show_bug.cgi?id=221260

Reviewed by Saam Barati.

Patch by Geza Lore and Xan López.

Implement the LLInt tier of WebAssembly for ARMv7. A lot of the
work will be shared by any 32bit port, but the offlineassembler
has only been updated for ARMv7 so far.

Main highlights:

We have split the WebAssembly.asm file into three chunks,
following what LowLevelInterpreter.asm does. The common code
remains in WebAssembly.asm, and 32 and 64bit specific code (mostly
opcode implementations) goes into WebAssembly32_64.asm and
WebAssembly64.asm.

We have decided to use consecutive even/odd pairs of GPRs for every
type of wasm values, even if they are 32bit (i32/f32), with the odd
(higher) numbered GPR holding the more significant half. 32bit values
are held in the even (lower) numbered register. This makes the code
much simpler and allows us to share more code with the 64bit variant.
This is mostly relevant for argument passing, and given that every
value ends up in the stack anyway we do not think it is significant
from a performance POV.

We are reusing JSValueRegs to hold Wasm values too. Obviously they
are not really JSValues, so it might make sense to create a base
class that can be used for both JS and Wasm values.

We do not have enough registers to keep things like the memory
base pointer and size in pinned registers, so we are forced to
load them on each use.

We disable the 'Signaling' memory mode, since the current
implementation relies on being able to mprotect a 232 + redzone
region of memory. This can be changed in the future but it's not a
priority at the moment.

  • stress/sampling-profiler-wasm-name-section.js:
  • stress/sampling-profiler-wasm.js:
  • wasm/regress/llint-callee-saves-with-fast-memory.js:
  • CMakeLists.txt:
  • assembler/ARMv7Assembler.h:

(JSC::ARMv7Assembler::vcvt_signedToFloatingPoint):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::convertInt32ToFloat):
(JSC::MacroAssemblerARMv7::threadSafePatchableNearCall):
(JSC::MacroAssemblerARMv7::callOperation):

  • b3/B3ValueRep.h:

(JSC::B3::ValueRep::ValueRep):

  • bytecode/BytecodeDumper.cpp:

(JSC::Wasm::BytecodeDumper::formatConstant const):

  • interpreter/CallFrame.h: adapt to new callee tagging format.

(JSC::CallFrame::callee const):
(JSC::CallFrame::unsafeCallee const):

  • interpreter/CalleeBits.h: add wasm tagging of callee values for

32bit.
(JSC::CalleeBits::CalleeBits):
(JSC::CalleeBits::operator=):
(JSC::CalleeBits::boxWasm):
(JSC::CalleeBits::isWasm const):
(JSC::CalleeBits::asWasmCallee const):

  • interpreter/Register.h:

(JSC::Register::unboxedFloat const):
(JSC::Register::asanUnsafeUnboxedFloat const):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::unboxDouble):

  • jit/RegisterAtOffsetList.cpp:

(JSC::RegisterAtOffsetList::RegisterAtOffsetList):

  • jit/RegisterAtOffsetList.h:

(JSC::RegisterAtOffsetList::sizeOfAreaInBytes const):

  • jit/RegisterSet.cpp:

(JSC::RegisterSet::macroScratchRegisters):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/WebAssembly.asm:
  • llint/WebAssembly32_64.asm: Added.
  • llint/WebAssembly64.asm: Added.
  • offlineasm/arm.rb:
  • offlineasm/instructions.rb:
  • offlineasm/registers.rb:
  • offlineasm/risc.rb:
  • runtime/JSCJSValue.h:

(JSC::wasmUnboxedFloat):

  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::JSValue):

  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::useSignalingMemory const):
(JSC::Wasm::AirIRGenerator::AirIRGenerator):
(JSC::Wasm::AirIRGenerator::emitCheckAndPreparePointer):
(JSC::Wasm::AirIRGenerator::addCall):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::useSignalingMemory const):
(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::addArguments):
(JSC::Wasm::B3IRGenerator::emitCheckAndPreparePointer):
(JSC::Wasm::B3IRGenerator::memoryKind):
(JSC::Wasm::B3IRGenerator::addCall):

  • wasm/WasmBinding.cpp:

(JSC::Wasm::wasmToWasm):

  • wasm/WasmCallee.cpp:

(JSC::Wasm::LLIntCallee::calleeSaveRegisters):

  • wasm/WasmCalleeGroup.cpp:

(JSC::Wasm::CalleeGroup::isSafeToRun):

  • wasm/WasmCallingConvention.cpp:

(JSC::Wasm::jsCallingConvention):
(JSC::Wasm::wasmCallingConvention):

  • wasm/WasmCallingConvention.h:

(JSC::Wasm::CallInformation::computeResultsOffsetList):
(JSC::Wasm::WasmCallingConvention::WasmCallingConvention):
(JSC::Wasm::WasmCallingConvention::marshallLocationImpl const):
(JSC::Wasm::WasmCallingConvention::marshallLocation const):
(JSC::Wasm::JSCallingConvention::JSCallingConvention):
(JSC::Wasm::JSCallingConvention::marshallLocationImpl const):
(JSC::Wasm::JSCallingConvention::marshallLocation const):
(JSC::Wasm::JSCallingConvention::callInformationFor const):

  • wasm/WasmFormat.h:
  • wasm/WasmIndexOrName.cpp:

(JSC::Wasm::IndexOrName::IndexOrName):
(JSC::Wasm::makeString):

  • wasm/WasmIndexOrName.h:

(JSC::Wasm::IndexOrName::IndexOrName):
(JSC::Wasm::IndexOrName::isEmpty const):
(JSC::Wasm::IndexOrName::isIndex const):
(JSC::Wasm::IndexOrName::isName const):
(JSC::Wasm::IndexOrName::index const):
(JSC::Wasm::IndexOrName::name const):
(JSC::Wasm::IndexOrName::nameSection const):

  • wasm/WasmInstance.h:

(JSC::Wasm::Instance::updateCachedMemory):

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::virtualRegisterForWasmLocal):
(JSC::Wasm::LLIntGenerator::callInformationForCaller):
(JSC::Wasm::LLIntGenerator::callInformationForCallee):
(JSC::Wasm::LLIntGenerator::addArguments):
(JSC::Wasm::LLIntGenerator::addLoop):

  • wasm/WasmLLIntPlan.cpp:

(JSC::Wasm::LLIntPlan::didCompleteCompilation):

  • wasm/WasmMemory.cpp:

(JSC::Wasm::MemoryHandle::~MemoryHandle):
(JSC::Wasm::Memory::tryCreate):
(JSC::Wasm::Memory::growShared):
(JSC::Wasm::Memory::grow):
(JSC::Wasm::Memory::copy):

  • wasm/WasmMemory.h:
  • wasm/WasmMemoryInformation.cpp:

(JSC::Wasm::PinnedRegisterInfo::get):

  • wasm/WasmMemoryInformation.h:

(JSC::Wasm::PinnedRegisterInfo::toSave const):

  • wasm/WasmMemoryMode.cpp:

(JSC::Wasm::makeString):

  • wasm/WasmMemoryMode.h:
  • wasm/WasmOpcodeOrigin.cpp:
  • wasm/WasmOpcodeOrigin.h:
  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

  • wasm/WasmOperations.h:
  • wasm/WasmPageCount.h:
  • wasm/WasmParser.h:

(JSC::Wasm::Parser<SuccessType>::parseUInt32):
(JSC::Wasm::Parser<SuccessType>::parseUInt64):

  • wasm/WasmSlowPaths.cpp:

(JSC::LLInt::WASM_SLOW_PATH_DECL):
(JSC::LLInt::slow_path_wasm_popcount):
(JSC::LLInt::slow_path_wasm_popcountll):
(JSC::LLInt::slow_path_wasm_i32_div_s):
(JSC::LLInt::slow_path_wasm_i32_div_u):
(JSC::LLInt::slow_path_wasm_i32_rem_s):
(JSC::LLInt::slow_path_wasm_i32_rem_u):
(JSC::LLInt::slow_path_wasm_i64_div_s):
(JSC::LLInt::slow_path_wasm_i64_div_u):
(JSC::LLInt::slow_path_wasm_i64_rem_s):
(JSC::LLInt::slow_path_wasm_i64_rem_u):

  • wasm/WasmSlowPaths.h:
  • wasm/WasmValueLocation.cpp:

(JSC::Wasm::ValueLocation::dump const):
(WTF::printInternal):

  • wasm/WasmValueLocation.h:

(JSC::Wasm::ValueLocation::ValueLocation):
(JSC::Wasm::ValueLocation::isGPR const):
(JSC::Wasm::ValueLocation::isFPR const):
(JSC::Wasm::ValueLocation::isStack const):
(JSC::Wasm::ValueLocation::isStackArgument const):
(JSC::Wasm::ValueLocation::jsr const):
(JSC::Wasm::ValueLocation::fpr const):
(JSC::Wasm::ValueLocation::reg): Deleted.
(JSC::Wasm::ValueLocation::isReg const): Deleted.
(JSC::Wasm::ValueLocation::reg const): Deleted.
(JSC::Wasm::ValueLocation::gpr const): Deleted.

  • wasm/js/JSToWasm.cpp:

(JSC::Wasm::marshallJSResult):
(JSC::Wasm::createJSToWasmWrapper):

  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::previousInstanceOffset const):
(JSC::WebAssemblyFunction::jsCallEntrypointSlow):

  • wasm/js/WebAssemblyGlobalConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::initializeExports):

  • wtf/PlatformEnable.h: enable WebAssembly on ARMv7.
  • Scripts/run-jsc-stress-tests: allow to run the wasm tests on

armv7 even without jit support (for now).

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

1:04 AM Changeset in webkit [295448] by Nikos Mouchtaris
  • 8 edits
    2 adds in trunk

REGRESSION: CSS scroll-behavior: smooth with overflow: hidden breaks JS scrollTo/scrollLeft/scrollTop
https://bugs.webkit.org/show_bug.cgi?id=238497
<rdar://90990040>

Reviewed by Simon Fraser.

Add scrollable area to frame view's list of scrollable areas if necessary in scrollToOffset.
This is necessary as Document::runScrollSteps() looks through the list of scrollable areas
to service animations on the scrollable area. It is necessary to add the scrollable area
in scrollToOffset as for a scrollable area that is not user scrollable (such as a scrollable
area with overflow: hidden) it would not be added, so the animation would not occur.

  • LayoutTests/fast/scrolling/smooth-scroll-with-overflow-hidden-expected.txt: Added.
  • LayoutTests/fast/scrolling/smooth-scroll-with-overflow-hidden.html: Added.
  • Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::absoluteEventTrackingRegionsForFrame const):

  • Source/WebCore/platform/ScrollableArea.h:

(WebCore::ScrollableArea::isVisibleToHitTesting const):

  • Source/WebCore/rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::clear):
(WebCore::RenderLayerScrollableArea::scrollToOffset):
(WebCore::RenderLayerScrollableArea::isVisibleToHitTesting const):
(WebCore::RenderLayerScrollableArea::updateScrollableAreaSet):
(WebCore::RenderLayerScrollableArea::registerScrollableArea):

  • Source/WebCore/rendering/RenderLayerScrollableArea.h:

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

Jun 9, 2022:

11:29 PM Changeset in webkit [295447] by mmaxfield@apple.com
  • 3 edits
    2 adds in trunk

Add EnumeratedArray type
https://bugs.webkit.org/show_bug.cgi?id=241451

Reviewed by Cameron McCormack.

This is an std::array where the indices of the array are values of an enum (rather than a size_t).
This assumes the values of the enum start at 0 and monotonically increase by 1
(so the conversion function between size_t and the enum is just a simple static_cast).

EnumeratedArray includes almost all of the functions from std::array, except for a few which I
intentionally omitted.

  • Source/WTF/WTF.xcodeproj/project.pbxproj:
  • Source/WTF/wtf/EnumeratedArray.h: Added.

(WTF::EnumeratedArray::EnumeratedArray):
(WTF::EnumeratedArray::operator=):
(WTF::EnumeratedArray::at):
(WTF::EnumeratedArray::at const):
(WTF::EnumeratedArray::operator[]):
(WTF::EnumeratedArray::operator[] const):
(WTF::EnumeratedArray::front):
(WTF::EnumeratedArray::front const):
(WTF::EnumeratedArray::back):
(WTF::EnumeratedArray::back const):
(WTF::EnumeratedArray::fill):
(WTF::EnumeratedArray::operator== const):
(WTF::EnumeratedArray::operator!= const):
(WTF::EnumeratedArray::operator< const):
(WTF::EnumeratedArray::operator<= const):
(WTF::EnumeratedArray::operator> const):
(WTF::EnumeratedArray::operator>= const):
(WTF::EnumeratedArray::index):

  • Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • Tools/TestWebKitAPI/Tests/WTF/EnumeratedArray.cpp: Added.

(TestWebKitAPI::TEST):

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

11:25 PM Changeset in webkit [295446] by Tyler Wilcock
  • 22 edits
    2 adds
    2 deletes in trunk

AX: Update the isolated tree in response to dynamic changes to aria-live, aria-relevant, and aria-atomic
https://bugs.webkit.org/show_bug.cgi?id=241444

Reviewed by Chris Fleizach.

With this patch, we now update the isolated tree in response to dynamic
aria-live, aria-relevant, and aria-atomic changes.

This patch also makes liveRegionStatus, liveRegionRelevant, and
liveRegionAtomic work on node-only objects (like those with display:contents).

  • LayoutTests/accessibility/aria-busy-updates-after-dynamic-change-expected.txt: Removed.
  • LayoutTests/accessibility/aria-busy-updates-after-dynamic-change.html: Removed.
  • LayoutTests/accessibility/live-region-attributes-update-after-dynamic-change-expected.txt: Added.
  • LayoutTests/accessibility/live-region-attributes-update-after-dynamic-change.html: Added.
  • LayoutTests/platform/glib/TestExpectations:
  • LayoutTests/platform/ios/TestExpectations:
  • LayoutTests/platform/win/TestExpectations:
  • Source/WebCore/accessibility/AXLogger.cpp:

(WebCore::operator<<):

  • Source/WebCore/accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::handleAttributeChange):
(WebCore::AXObjectCache::updateIsolatedTree):

  • Source/WebCore/accessibility/AXObjectCache.h:
  • Source/WebCore/accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::liveRegionStatus const):
(WebCore::AccessibilityNodeObject::liveRegionRelevant const):
(WebCore::AccessibilityNodeObject::liveRegionAtomic const):

  • Source/WebCore/accessibility/AccessibilityNodeObject.h:
  • Source/WebCore/accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::liveRegionStatus const): Deleted.
(WebCore::AccessibilityRenderObject::liveRegionRelevant const): Deleted.
(WebCore::AccessibilityRenderObject::liveRegionAtomic const): Deleted.

  • Source/WebCore/accessibility/AccessibilityRenderObject.h:
  • Source/WebCore/accessibility/atspi/AXObjectCacheAtspi.cpp:

(WebCore::AXObjectCache::postPlatformNotification):

  • Tools/DumpRenderTree/AccessibilityUIElement.cpp:

(getLiveRegionRelevantCallback):
(getLiveRegionStatusCallback):
(getIsAtomicLiveRegionCallback):
(AccessibilityUIElement::getJSClass):

  • Tools/DumpRenderTree/AccessibilityUIElement.h:
  • Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(AccessibilityUIElement::liveRegionRelevant const):
(AccessibilityUIElement::liveRegionStatus const):
(AccessibilityUIElement::isAtomicLiveRegion const):

  • Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp

(AccessibilityUIElement::liveRegionRelevant const):
(AccessibilityUIElement::liveRegionStatus const):
(AccessibilityUIElement::isAtomicLiveRegion const):

  • Tools/DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::liveRegionRelevant const):
(AccessibilityUIElement::liveRegionStatus const):
(AccessibilityUIElement::isAtomicLiveRegion const):

  • Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::liveRegionRelevant const):
(WTR::AccessibilityUIElement::liveRegionStatus const):
(WTR::AccessibilityUIElement::isAtomicLiveRegion const):

  • Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::liveRegionStatus const):
(WTR::AccessibilityUIElement::liveRegionRelevant const):
(WTR::AccessibilityUIElement::isAtomicLiveRegion const):

  • Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp
  • Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp

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

9:58 PM Changeset in webkit [295445] by pvollan@apple.com
  • 1 edit in trunk/Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm

Revert r295422
https://bugs.webkit.org/show_bug.cgi?id=241502

Unreviewed, revert r295422.

  • Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm:

(WebKit::LaunchServicesDatabaseObserver::LaunchServicesDatabaseObserver):
(WebKit::LaunchServicesDatabaseObserver::startObserving):
(WebKit::LaunchServicesDatabaseObserver::~LaunchServicesDatabaseObserver):
(WebKit::hasSystemContentDatabase): Deleted.

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

8:08 PM Changeset in webkit [295444] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

computeUnderlineOffset should not take TextRun
https://bugs.webkit.org/show_bug.cgi?id=241471

Reviewed by Antti Koivisto.

This is in preparation for taking visual overflow for decoration into account in IFC.

  • Source/WebCore/rendering/TextDecorationPainter.cpp:

(WebCore::TextDecorationPainter::paintBackgroundDecorations):

  • Source/WebCore/style/InlineTextBoxStyle.cpp:

(WebCore::computeUnderlineOffset):
(WebCore::visualOverflowForDecorations):

  • Source/WebCore/style/InlineTextBoxStyle.h:

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

8:06 PM Changeset in webkit [295443] by Devin Rousso
  • 46 edits
    9 copies
    2 moves
    11 adds in trunk

[Payment Request] upstream new features
https://bugs.webkit.org/show_bug.cgi?id=241389
<rdar://problem/94581707>

Reviewed by Tim Horton.

  • Source/WTF/wtf/PlatformHave.h:
  • Source/WTF/wtf/PlatformEnableCocoa.h:

Add new flags.

  • Source/WebCore/Modules/applepay/ApplePayPaymentTiming.idl:
  • Source/WebCore/Modules/applepay/ApplePayPaymentTiming.h:
  • Source/WebCore/Modules/applepay/ApplePayLineItem.idl:
  • Source/WebCore/Modules/applepay/ApplePayLineItem.h:

(WebCore::ApplePayLineItem::encode const):
(WebCore::ApplePayLineItem::decode):

  • Source/WebCore/Modules/applepay/PaymentSummaryItems.h:
  • Source/WebCore/Modules/applepay/cocoa/PaymentSummaryItemsCocoa.mm:

(WebCore::platformAutomaticReloadSummaryItem): Added.
(WebCore::platformSummaryItem):
Add a new line item type for automatic reload (i.e. "charge when balance drops low enough").

  • Source/WebCore/Modules/applepay/ApplePayRecurringPaymentRequest.idl: Added.
  • Source/WebCore/Modules/applepay/ApplePayRecurringPaymentRequest.h: Added.

(WebCore::ApplePayRecurringPaymentRequest::encode const):
(WebCore::ApplePayRecurringPaymentRequest::decode):

  • Source/WebKit/Shared/ApplePay/RecurringPaymentRequest.h: Added.
  • Source/WebKit/Shared/ApplePay/cocoa/RecurringPaymentRequestCocoa.mm: Added.

(WebKit::platformRecurringPaymentRequest):
Add additional details for configuring a recurring payment.

  • Source/WebCore/Modules/applepay/ApplePayAutomaticReloadPaymentRequest.idl: Added.
  • Source/WebCore/Modules/applepay/ApplePayAutomaticReloadPaymentRequest.h: Added.

(WebCore::ApplePayAutomaticReloadPaymentRequest::encode const):
(WebCore::ApplePayAutomaticReloadPaymentRequest::decode):

  • Source/WebKit/Shared/ApplePay/AutomaticReloadPaymentRequest.h: Added.
  • Source/WebKit/Shared/ApplePay/cocoa/AutomaticReloadPaymentRequestCocoa.mm: Added.

(WebKit::platformAutomaticReloadPaymentRequest):
Add additional details for configuring an automatic reload payment.

  • Source/WebCore/Modules/applepay/ApplePayPaymentTokenContext.idl: Added.
  • Source/WebCore/Modules/applepay/ApplePayPaymentTokenContext.h: Added.

(WebCore::ApplePayPaymentTokenContext::encode const):
(WebCore::ApplePayPaymentTokenContext::decode):

  • Source/WebKit/Shared/ApplePay/PaymentTokenContext.h: Added.
  • Source/WebKit/Shared/ApplePay/cocoa/PaymentTokenContextCocoa.mm: Added.

(WebKit::toDecimalNumber):
(WebKit::platformPaymentTokenContext):
(WebKit::platformPaymentTokenContexts):
Add additional details for configuring a multi-merchant payment (i.e. booking a vacation online
often aggregates multiple separate things (e.g. car, flights, hotel, etc.) into a single purchase).

  • Source/WebCore/Modules/applepay/ApplePayPaymentOrderDetails.idl: Added.
  • Source/WebCore/Modules/applepay/ApplePayPaymentOrderDetails.h: Added.

(WebCore::ApplePayPaymentOrderDetails::encode const):
(WebCore::ApplePayPaymentOrderDetails::decode):
Add additional details after a payment is complete for saving order details to iOS/macOS Wallet.

  • Source/WebCore/Modules/applepay/ApplePayPaymentRequest.idl:
  • Source/WebCore/Modules/applepay/ApplePayPaymentRequest.h:
  • Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::encode):
(IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::decode):

  • Source/WebCore/Modules/applepay/ApplePaySession.cpp:

(WebCore::convertAndValidate):
(WebCore::merge): Deleted.

  • Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::ApplePayPaymentHandler::show):
(WebCore::ApplePayPaymentHandler::computeShippingMethods const):
(WebCore::validate):
(WebCore::ApplePayPaymentHandler::shippingAddressUpdated):
(WebCore::ApplePayPaymentHandler::shippingOptionUpdated):
(WebCore::ApplePayPaymentHandler::paymentMethodUpdated):
(WebCore::convertAndValidate):
(WebCore::ApplePayPaymentHandler::complete):
(WebCore::merge): Deleted.

  • Source/WebCore/Modules/applepay/ApplePaySessionPaymentRequest.h:

(WebCore::ApplePaySessionPaymentRequest::recurringPaymentRequest const): Added.
(WebCore::ApplePaySessionPaymentRequest::setRecurringPaymentRequest): Added.
(WebCore::ApplePaySessionPaymentRequest::automaticReloadPaymentRequest const): Added.
(WebCore::ApplePaySessionPaymentRequest::setAutomaticReloadPaymentRequest): Added.
(WebCore::ApplePaySessionPaymentRequest::multiTokenContexts const): Added.
(WebCore::ApplePaySessionPaymentRequest::setMultiTokenContexts): Added.

  • Source/WebCore/Modules/applepay/ApplePayDetailsUpdateBase.idl:
  • Source/WebCore/Modules/applepay/ApplePayDetailsUpdateBase.h:

(WebCore::ApplePayDetailsUpdateBase::encode const):
(WebCore::ApplePayDetailsUpdateBase::decodeBase):

  • Source/WebCore/Modules/applepay/paymentrequest/ApplePayModifier.h:
  • Source/WebCore/Modules/applepay/paymentrequest/ApplePayModifier.idl:
  • Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizationResult.idl:
  • Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizationResult.h:

(WebCore::ApplePayPaymentAuthorizationResult::encode const):
(WebCore::ApplePayPaymentAuthorizationResult::decode):

  • Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentCompleteDetails.idl:
  • Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentCompleteDetails.h:

(WebCore::ApplePayPaymentCompleteDetails::encode const):
(WebCore::ApplePayPaymentCompleteDetails::decode):

  • Source/WebKit/Platform/cocoa/PaymentAuthorizationPresenter.mm:

(WebKit::PaymentAuthorizationPresenter::completePaymentMethodSelection):
(WebKit::PaymentAuthorizationPresenter::completePaymentSession):
(WebKit::PaymentAuthorizationPresenter::completeShippingContactSelection):
(WebKit::PaymentAuthorizationPresenter::completeShippingMethodSelection):
(WebKit::PaymentAuthorizationPresenter::completeCouponCodeChange):
(WebKit::merge): Deleted.

  • Source/WebKit/Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest):
(WebKit::merge): Deleted.

  • Source/WebKit/Platform/cocoa/WKPaymentAuthorizationDelegate.h:
  • Source/WebKit/Platform/cocoa/WKPaymentAuthorizationDelegate.mm:

(-[WKPaymentAuthorizationDelegate completePaymentSession:errors:orderDetails:]): Added.
Pipe the above from the WebProcess to the UIProcess (to PassKit).

  • Source/WebCore/PAL/pal/cocoa/PassKitSoftLink.h:
  • Source/WebCore/PAL/pal/cocoa/PassKitSoftLink.mm:
  • Source/WebCore/PAL/pal/spi/cocoa/PassKitSPI.h:

Handle new PassKit symbols for the above.

  • Source/WebCore/Modules/applepay/cocoa/PaymentAPIVersionCocoa.mm:

(WebCore::PaymentAPIVersion::current):
Use new flags for the new version.

  • Source/WebCore/DerivedSources.make:
  • Source/WebCore/DerivedSources-input.xcfilelist:
  • Source/WebCore/DerivedSources-output.xcfilelist:
  • Source/WebCore/PlatformMac.cmake:
  • Source/WebCore/SourcesCocoa.txt:
  • Source/WebCore/WebCore.xcodeproj/project.pbxproj:
  • Source/WebKit/SourcesCocoa.txt:
  • Source/WebKit/WebKit.xcodeproj/project.pbxproj:
  • Source/WebCore/testing/MockPaymentCoordinator.h:
  • Source/WebCore/testing/MockPaymentCoordinator.idl:
  • Source/WebCore/testing/MockPaymentCoordinator.cpp:

(WebCore::MockPaymentCoordinator::showPaymentUI):
(WebCore::MockPaymentCoordinator::completeShippingMethodSelection):
(WebCore::MockPaymentCoordinator::completeShippingContactSelection):
(WebCore::MockPaymentCoordinator::completePaymentMethodSelection):
(WebCore::MockPaymentCoordinator::completeCouponCodeChange):
(WebCore::MockPaymentCoordinator::merge): Deleted.

  • LayoutTests/http/tests/paymentrequest/ApplePayModifier-automaticReloadPaymentRequest.https.html: Added.
  • LayoutTests/http/tests/paymentrequest/ApplePayModifier-automaticReloadPaymentRequest.https-expected.txt: Added.
  • LayoutTests/http/tests/paymentrequest/ApplePayModifier-multiTokenContexts.https.html: Added.
  • LayoutTests/http/tests/paymentrequest/ApplePayModifier-multiTokenContexts.https-expected.txt: Added.
  • LayoutTests/http/tests/paymentrequest/ApplePayModifier-recurringPaymentRequest.https.html: Added.
  • LayoutTests/http/tests/paymentrequest/ApplePayModifier-recurringPaymentRequest.https-expected.txt: Added.
  • LayoutTests/http/tests/paymentrequest/ApplePayPaymentCompleteDetails-orderDetails.https.html: Added.
  • LayoutTests/http/tests/paymentrequest/ApplePayPaymentCompleteDetails-orderDetails.https-expected.txt: Added.
  • LayoutTests/platform/ios-wk2/TestExpectations:
  • LayoutTests/platform/mac-wk2/TestExpectations:
  • Source/WebKit/Shared/mac/PasteboardTypes.mm:
  • Source/WebKit/Shared/mac/ScrollingAccelerationCurveMac.mm:

Drive-by: Unified sources fixes.

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

5:31 PM Changeset in webkit [295442] by pvollan@apple.com
  • 1 edit in trunk/Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm

Build fix after r295422
https://bugs.webkit.org/show_bug.cgi?id=241494

Unreviewed, build fix.

  • Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm:

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

5:14 PM Changeset in webkit [295441] by Wenson Hsieh
  • 1 edit in trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm

[ iOS Debug ] ASSERTION FAILED: Attempt to access post layout data before receiving it on editing/editable-region/fixed-and-absolute-contenteditable-scrolled.html
https://bugs.webkit.org/show_bug.cgi?id=237541
rdar://89918871

Reviewed by Simon Fraser.

After the changes in r289876, this test started sometimes hitting an assertion when run immediately
after editing/deleting/ios/backspace-last-character.html. By eliminating a sync IPC call to the
web content process when requesting autocorrection information, UIKit now requests selection-caret-
relative character information slightly earlier than it previously did when dismissing the keyboard,
which may occur after we've received an editor state update after blurring the focused element, but
before we've received post-layout data.

In this scenario, we already know that the focused element has been blurred and the selection is no
longer editable, so once the post-layout data does arrive, it would contain 0 for all of the
characters close to the selection caret.

As such, we can simply return 0 early before attempting to access post-layout data if the selection
is not a caret in editable content, since all of the relevant post-layout data members
(characterAfterSelection, characterBeforeSelection and twoCharacterBeforeSelection) are going
to be 0 anyways.

  • Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _characterInRelationToCaretSelection:]):

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

4:43 PM Changeset in webkit [295440] by eric.carlson@apple.com
  • 1 edit in trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/MediaLoading.mm

[Cocoa] TestWebKitAPI.MediaLoading.CaptivePortalHLS times out
https://bugs.webkit.org/show_bug.cgi?id=241476
rdar://93270049

Reviewed by Jer Noble.

  • Tools/TestWebKitAPI/Tests/WebKitCocoa/MediaLoading.mm:

(TestWebKitAPI::TEST): Return early if the SPI used for captive portal mode is not
implemented.

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

4:12 PM Changeset in webkit [295439] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore/platform/graphics

[iOS] iPhone fullscreen captions are sometimes duplicated
https://bugs.webkit.org/show_bug.cgi?id=241464
rdar://94261522

Reviewed by Jer Noble.

Clear the text track representation when the video layer is cleared.

  • Source/WebCore/platform/graphics/avfoundation/objc/VideoLayerManagerObjC.mm:

(WebCore::VideoLayerManagerObjC::didDestroyVideoLayer): Clear the text track representation.

  • Source/WebCore/platform/graphics/cocoa/TextTrackRepresentationCocoa.mm:

(WebCore::TextTrackRepresentationCocoa::TextTrackRepresentationCocoa): Name the text
track representation layer to aid debugging in the future.

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

2:45 PM Changeset in webkit [295438] by Devin Rousso
  • 32 edits
    3 adds
    1 delete in trunk

[Modern Media Controls] upstream new features
https://bugs.webkit.org/show_bug.cgi?id=241390
<rdar://problem/94581729>

Reviewed by Eric Carlson.

  • Source/WebCore/Modules/modern-media-controls/controls/inline-media-controls.js:

(InlineMediaControls.prototype.layout):
(InlineMediaControls.prototype.topLeftContainerButtons): Renamed from _topLeftContainerButtons.
(InlineMediaControls.prototype.leftContainerButtons): Renamed from _leftContainerButtons.
(InlineMediaControls.prototype.centerContainerButtons): Renamed from _centerContainerButtons.
(InlineMediaControls.prototype.rightContainerButtons): Renamed from _rightContainerButtons.
(InlineMediaControls.prototype.droppableButtons): Renamed from _droppableButtons.
(InlineMediaControls.prototype.collapsableButtons): Renamed from _collapsableButtons.
Move these methods into // Protected so subclasses can override.

  • Source/WebCore/Modules/modern-media-controls/controls/ios-inline-media-controls.js:

(IOSInlineMediaControls.prototype.layout): Added.
(IOSInlineMediaControls.prototype.centerContainerButtons): Added.
(IOSInlineMediaControls.prototype.leftContainerButtons): Added.
(IOSInlineMediaControls.prototype.droppableButtons): Added.
(IOSInlineMediaControls.prototype.get _shouldUseMultilineLayout): Added.

  • Source/WebCore/Modules/modern-media-controls/controls/ios-inline-media-controls.css: Added.

(.media-controls.inline.ios:not(.audio)):
(.media-controls.inline.ios:not(.audio):is(:empty, .faded)):
(.media-controls.inline.ios:not(.audio) *):
(.media-controls.inline.ios:not(.audio) > .controls-bar:is(.top-left, .top-right)):
(.media-controls.inline.ios:not(.audio) > .controls-bar.center):
Only use the new UI for <video>.

  • Source/WebCore/Modules/modern-media-controls/controls/slider.js:

(Slider):
(Slider.prototype.get allowsRelativeScrubbing): Added.
(Slider.prototype.set allowsRelativeScrubbing): Added.
(Slider.prototype.handleEvent):
(Slider.prototype._handlePointerdownEvent):
(Slider.prototype._handlePointermoveEvent): Added.
(Slider.prototype._handlePointerupEvent):
(Slider.prototype._playbackProgress): Added.
(Slider.prototype._valueWillStartChanging): Deleted.
(Slider.prototype._valueDidStopChanging): Deleted.

  • Source/WebCore/Modules/modern-media-controls/controls/slider.css:

(.slider.allows-relative-scrubbing > .custom-slider): Added.
(.slider.allows-relative-scrubbing > .custom-slider.changing): Added.
(.slider.allows-relative-scrubbing > .custom-slider > .fill): Added.
(.slider.allows-relative-scrubbing > .custom-slider.changing > .fill.primary): Added.
(.slider.allows-relative-scrubbing > .custom-slider.changing > .fill.track): Added.
(.slider.allows-relative-scrubbing > .custom-slider.changing > .fill.secondary): Added.
(.slider.allows-relative-scrubbing > input): Added.
(.ios .slider > input):
(.ios .slider:not(.allows-relative-scrubbing) > input): Added.

  • Source/WebCore/Modules/modern-media-controls/controls/adwaita-fullscreen-media-controls.js:

(AdwaitaFullscreenMediaControls):

  • Source/WebCore/Modules/modern-media-controls/controls/adwaita-inline-media-controls.js:

(AdwaitaInlineMediaControls):

  • Source/WebCore/Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:

(MacOSFullscreenMediaControls):

  • Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js:

(MacOSInlineMediaControls):

  • Source/WebCore/Modules/modern-media-controls/controls/time-control.js:

(TimeControl):
Allow the user to use relative scrubbing instead of having to exactly tap/drag on the knob.

  • Source/WebCore/Modules/modern-media-controls/controls/ios-layout-traits.js:

(IOSLayoutTraits.prototype.skipDuration):
Change to 10s.

  • Source/WebCore/Modules/modern-media-controls/controls/overflow-button.js:

(OverflowButton):

  • Source/WebCore/Modules/modern-media-controls/controls/layout-traits.js:

(LayoutTraits.prototype.overflowButtonHasCircle): Deleted.

  • Source/WebCore/Modules/modern-media-controls/controls/icon-service.js:
  • Source/WebCore/Modules/modern-media-controls/images/iOS/Overflow.svg:
  • Source/WebCore/Modules/modern-media-controls/images/iOS/OverflowCircle.svg: Removed.

Update iOS overflow button icon.

  • Source/WebCore/CMakeLists.txt:
  • Source/WebCore/DerivedSources-input.xcfilelist:
  • Source/WebCore/DerivedSources.make:
  • Source/WebCore/WebCore.xcodeproj/project.pbxproj:
  • LayoutTests/fast/mediastream/MediaStream-video-element-video-tracks-disabled.html:
  • LayoutTests/fast/mediastream/MediaStream-video-element-video-tracks-disabled-expected.html:
  • LayoutTests/media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-layout.html:
  • LayoutTests/media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-layout-expected.txt:
  • LayoutTests/media/modern-media-controls/ios-inline-media-controls/touch/ios-inline-media-controls-added-after-play.html:
  • LayoutTests/media/modern-media-controls/ios-inline-media-controls/touch/ios-inline-media-controls-added-after-play-expected.txt:
  • LayoutTests/media/modern-media-controls/ios-inline-media-controls/touch/ios-inline-media-controls-shows-start-button.html:
  • LayoutTests/media/modern-media-controls/skip-back-button/skip-back-button.html:
  • LayoutTests/media/modern-media-controls/skip-back-button/skip-back-button-expected.txt:
  • LayoutTests/media/modern-media-controls/skip-forward-button/skip-forward-button.html:
  • LayoutTests/media/modern-media-controls/skip-forward-button/skip-forward-button-expected.txt:
  • LayoutTests/media/modern-media-controls/slider/slider-constructor.html:
  • LayoutTests/media/modern-media-controls/slider/slider-styles.html:
  • LayoutTests/media/modern-media-controls/slider/slider-value.html:
  • LayoutTests/platform/ios/media/track/track-css-visible-stroke-expected.html: Added.

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

2:41 PM Changeset in webkit [295437] by achristensen@apple.com
  • 1 edit in trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/HSTS.mm

REGRESSION: [iOS] TestWebKitAPI.HSTS.ThirdParty is consistely failing
https://bugs.webkit.org/show_bug.cgi?id=241342

Reviewed by Kate Cheney.

  • Tools/TestWebKitAPI/Tests/WebKitCocoa/HSTS.mm:

(TestWebKitAPI::hstsWebViewAndDelegate):
(TestWebKitAPI::TEST):

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

2:36 PM Changeset in webkit [295436] by Claudio Saavedra
  • 1 edit in trunk/Source/WebCore/html/HTMLInputElement.cpp

Fix invalid isInShadowRoot flag during input element removal
https://bugs.webkit.org/show_bug.cgi?id=241470

Reviewed by Ryosuke Niwa.

Style invalidation of input elements might rely on whether the element
is in the shadow tree, but during node removal the isInShadowRoot flag
might not be up-to-date. Ensure that the flag is updated by
letting Node::removedFromAncestor() be called up first in the
HTMLInputNode::removedFromAncestor() implementation, before
doing anything else with the node post-removal.

  • Source/WebCore/html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::removedFromAncestor):

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

2:34 PM Changeset in webkit [295435] by achristensen@apple.com
  • 5 edits
    2 deletes in trunk/Source/WebKit

Remove _WKWebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=241387

Reviewed by Brady Eidson.

  • Source/WebKit/SourcesCocoa.txt:
  • Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration ALLOW_DEPRECATED_IMPLEMENTATIONS_END]): Deleted.
(-[WKWebViewConfiguration _setWebsiteDataStore:]): Deleted.

  • Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStore.h:
  • Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStore.mm: Removed.
  • Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreInternal.h: Removed.
  • Source/WebKit/WebKit.xcodeproj/project.pbxproj:

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

1:54 PM Changeset in webkit [295434] by commit-queue@webkit.org
  • 1 edit in trunk/Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm

Add missing include in ScreenCaptureKitCaptureSource.mm
https://bugs.webkit.org/show_bug.cgi?id=241479
<rdar://94747956>

Patch by Youssef Soliman <youssefdevelops@gmail.com> on 2022-06-09
Reviewed by Wenson Hsieh and Eric Carlson.

ScreenCaptureKitCaptureSource was missing the declaration for
CGDisplayModeGetPixelsWide and CGDisplayModeGetPixelsHigh which are
defined in <pal/spi/cg/CoreGraphicsSPI.h>, this was causing build failures
if the build order happened to change.

  • Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:

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

1:42 PM Changeset in webkit [295433] by Said Abou-Hallawa
  • 1 edit in trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/GPUProcess.mm

REGRESSION(r292365): [ iOS ] TestWebKitAPI.GPUProcess.CanvasBasicCrashHandling is a constant failure on iOS
https://bugs.webkit.org/show_bug.cgi?id=239303
<rdar://problem/91715705>

Reviewed by Simon Fraser.

The test has been passing when running it locally. This should be fixed by other
changes so re-enable this api-test.

  • Tools/TestWebKitAPI/Tests/WebKitCocoa/GPUProcess.mm:

(TEST):

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

1:30 PM Changeset in webkit [295432] by timothy_horton@apple.com
  • 2 edits in trunk/Source

Upstream linkage of ApplePushService
https://bugs.webkit.org/show_bug.cgi?id=241473

Reviewed by Wenson Hsieh.

  • Source/WTF/wtf/PlatformHave.h:
  • Source/WebKit/Configurations/WebKit.xcconfig:

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

1:13 PM Changeset in webkit [295431] by commit-queue@webkit.org
  • 1 edit in trunk/Source/WebCore/platform/graphics/cocoa/GraphicsContextGLCocoa.mm

Multisampling does not work on MTLGPUFamilyApple2 devices when using ANGLE Metal
https://bugs.webkit.org/show_bug.cgi?id=241456
<rdar://problem/90949957>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2022-06-09
Reviewed by Dean Jackson.

Use OpenGL ES for WebGL for devices prior to MTLGPUFamilyApple3.
WebGL2 already was running OpenGL ES for these devices for different reasons.

The multisample codepath is not implemented for Apple2 which
does not support MTLStoreActionStoreAndMultisampleResolve.

  • Source/WebCore/platform/graphics/cocoa/GraphicsContextGLCocoa.mm:

(WebCore::platformSupportsMetal):
(WebCore::GraphicsContextGLCocoa::platformInitializeContext):

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

12:26 PM Changeset in webkit [295430] by commit-queue@webkit.org
  • 1 edit in trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp

Need to check the context wasn't lost in WebGL2RenderingContext::readBuffer()
https://bugs.webkit.org/show_bug.cgi?id=241477
<rdar://94289317>

Patch by Antoine Quint <Antoine Quint> on 2022-06-09
Reviewed by Dean Jackson.

All other APIs exposed on WebGL2RenderingContext are guarded by isContextLostOrPending()
checks, and readBuffer() should be no exception.

  • Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::readBuffer):

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

12:25 PM Changeset in webkit [295429] by Kyle Piddington
  • 1 edit
    2 adds in trunk

TextureMtl.mm:108 (GetLayerMipIndex): \t! Unreachable reached
https://bugs.webkit.org/show_bug.cgi?id=240790

Reviewed by Darin Adler

Check texture valid before use.

  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_resources.mm:

(rx::mtl::Texture::MakeTexture):

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

12:05 PM Changeset in webkit [295428] by keith_miller@apple.com
  • 1 edit
    1 add in trunk

jsc's settimeout should properly handle a delay
https://bugs.webkit.org/show_bug.cgi?id=240467

Reviewed by Yusuke Suzuki.

This patch makes it so that we properly handle a timeout passed to the JSC CLI setTimeout API. Previously we would just run the callback on the next runloop tick regardless of the passed value.

  • Source/JavaScriptCore/jsc.cpp:

(JSC_DEFINE_HOST_FUNCTION):

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

11:57 AM Changeset in webkit [295427] by Wenson Hsieh
  • 1 edit in trunk/Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm

Unreviewed, fix the internal iOS build

Add a missing header include (due to source unification order).

  • Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:

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

11:35 AM Changeset in webkit [295426] by eric.carlson@apple.com
  • 7 edits in trunk

Regression(r283217) : [ iOS 15 ] media/track/track-forced-subtitles-in-band.html is failing
https://bugs.webkit.org/show_bug.cgi?id=231333
rdar://83955154

Reviewed by Jer Noble.

  • LayoutTests/media/track/track-forced-subtitles-in-band-expected.txt: Update.
  • LayoutTests/media/track/track-forced-subtitles-in-band.html: Ditto.
  • LayoutTests/media/video-test.js: Make waitForEventWithTimeout return a Promise rejection when it times out so failures can be caught.
  • LayoutTests/platform/ios-wk2/TestExpectations: Remove updated test.
  • LayoutTests/platform/mac/TestExpectations: Ditto.
  • Source/WebCore/html/track/TextTrackCueGeneric.cpp: Add more logging to help future debugging.
  • Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: Ditto.

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

11:21 AM Changeset in webkit [295425] by achristensen@apple.com
  • 11 edits
    2 adds in trunk

convertingToLengthRequiresNonNullStyle needs to consider calc values
https://bugs.webkit.org/show_bug.cgi?id=241452

Reviewed by Antti Koivisto.

  • LayoutTests/fast/css/matrix-translate-calc-units.html: Added.
  • Source/WebCore/css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::convertingToLengthRequiresNonNullStyle const):
(WebCore::CSSPrimitiveValue::convertToLength const):

  • Source/WebCore/css/TransformFunctions.cpp:
  • Source/WebCore/css/calc/CSSCalcExpressionNode.h:
  • Source/WebCore/css/calc/CSSCalcInvertNode.h:
  • Source/WebCore/css/calc/CSSCalcNegateNode.h:
  • Source/WebCore/css/calc/CSSCalcOperationNode.cpp:

(WebCore::CSSCalcOperationNode::convertingToLengthRequiresNonNullStyle const):

  • Source/WebCore/css/calc/CSSCalcOperationNode.h:
  • Source/WebCore/css/calc/CSSCalcPrimitiveValueNode.cpp:

(WebCore::CSSCalcPrimitiveValueNode::convertingToLengthRequiresNonNullStyle const):

  • Source/WebCore/css/calc/CSSCalcPrimitiveValueNode.h:
  • Source/WebCore/css/calc/CSSCalcValue.cpp:

(WebCore::CSSCalcValue::convertingToLengthRequiresNonNullStyle const):

  • Source/WebCore/css/calc/CSSCalcValue.h:

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

10:50 AM Changeset in webkit [295424] by jer.noble@apple.com
  • 1 edit in trunk/Source/WTF/Scripts/Preferences/WebPreferences.yaml

Add MPEG2 and MP4 Audio to types allowed in Captive Portal mode
https://bugs.webkit.org/show_bug.cgi?id=241447
<rdar://93934656>

Reviewed by Eric Carlson.

Needed for playing back MP2TS streams and AAC audio.

  • Source/WTF/Scripts/Preferences/WebPreferences.yaml:

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

10:20 AM Changeset in webkit [295423] by keith_miller@apple.com
  • 1 edit in trunk/Source/JavaScriptCore/bytecode/Repatch.cpp

Repatch should be able to polymorphic call with arity fixup.
https://bugs.webkit.org/show_bug.cgi?id=240911

Reviewed by Saam Barati.

Right now repatch will emit a virtual call any time it has a case that requires arity fixup. Instead it should just pick the arity fixup entrypoint.

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

10:16 AM Changeset in webkit [295422] by pvollan@apple.com
  • 2 edits in trunk/Source

Adopt SPI to get default content of Launch Services database
https://bugs.webkit.org/show_bug.cgi?id=241286
<rdar://64528683>

Reviewed by Geoffrey Garen.

Adopt SPI to get system content of Launch Services database. If this SPI is available,
it will replace the SPI we currently use to retrieve the database in the Network process.

  • Source/WebCore/PAL/pal/spi/cocoa/LaunchServicesSPI.h:
  • Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm:

(WebKit::LaunchServicesDatabaseObserver::LaunchServicesDatabaseObserver):
(WebKit::LaunchServicesDatabaseObserver::startObserving):
(WebKit::LaunchServicesDatabaseObserver::~LaunchServicesDatabaseObserver):

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

8:58 AM Changeset in webkit [295421] by commit-queue@webkit.org
  • 3 edits in trunk

Replace uses of -webkit-gradient with standard linear-gradient.
https://bugs.webkit.org/show_bug.cgi?id=241066
rdar://94390714

Patch by Ryan Reno <rreno@apple.com> on 2022-06-09
Reviewed by Tim Nguyen.

Replace uses of the -webkit-gradient extension with the standardized
linear-gradient in internal CSS. This doesn't change functionality and
is covered by existing tests of the linear-gradient CSS function.

  • Source/WebCore/Modules/mediacontrols/mediaControlsBase.css:

(video::-webkit-media-controls-panel,):
(video::-webkit-media-controls-panel .volume-box,):
(audio::-webkit-media-controls-volume-slider,):
(video::-webkit-media-controls-volume-slider::-webkit-slider-thumb,):
(video::-webkit-media-controls-volume-slider::-webkit-slider-thumb::-webkit-slider-thumb:active,):
(video:-webkit-full-screen::-webkit-media-controls-panel):
(video:-webkit-full-screen::-webkit-media-controls-volume-slider):

  • Source/WebCore/html/shadow/meterElementShadow.css:

(div#bar):
(div#value.optimum):
(div#value.suboptimum):
(div#value.even-less-good):

  • LayoutTests/fast/dom/HTMLMeterElement/meter-element-markup-expected.txt:

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

8:07 AM Changeset in webkit [295420] by Jean-Yves Avenard
  • 10 edits in trunk/Source/WebKit

Blame content process for media buffers allocated in the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=241455
<rdar://94674194>

Reviewed by Jer Noble.

After copying the media content sent by the content process into a SharedMemory,
we send its SharedMemory's handle back to the content process for it to blame the
content.

Covered by existing tests.

  • Source/WebKit/GPUProcess/media/RemoteMediaResourceManager.cpp:

(WebKit::RemoteMediaResourceManager::dataReceived):

  • Source/WebKit/GPUProcess/media/RemoteMediaResourceManager.h:
  • Source/WebKit/GPUProcess/media/RemoteMediaResourceManager.messages.in:
  • Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp:

(WebKit::RemoteSourceBufferProxy::append):

  • Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.h:
  • Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.messages.in:
  • Source/WebKit/Platform/IPC/SharedBufferReference.cpp:

(IPC::SharedBufferReference::sharedCopy const):

  • Source/WebKit/Platform/IPC/SharedBufferReference.h:
  • Source/WebKit/WebProcess/GPU/media/RemoteMediaResourceProxy.cpp:

(WebKit::RemoteMediaResourceProxy::dataReceived):

  • Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:

(WebKit::SourceBufferPrivateRemote::append):

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

7:08 AM Changeset in webkit [295419] by Diego Pino Garcia
  • 1 edit in trunk/Source/WTF/wtf/text/AtomString.h

[GTK] Ubuntu LTS bot build failed after 251271@main
https://bugs.webkit.org/show_bug.cgi?id=241327

Reviewed by Darin Adler.

  • Source/WTF/wtf/text/AtomString.h: Implement missing operator!=(const AtomString& a, ASCIILiteral b).

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

6:14 AM Changeset in webkit [295418] by Antti Koivisto
  • 7 edits in trunk

Correctly resolve queries when container size is affected by a subsequent sibling
https://bugs.webkit.org/show_bug.cgi?id=241457

Reviewed by Alan Bujtas.

We currently only take style changes before the container into account.

This patch changes the query container resolution so that whenever we encounter a query container
we skip the subtree and restart the resolution from the main resolution loop. This way we
can optimize away unnecessary layouts while also handling backward dependencies.

  • LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/sibling-layout-dependency-expected.txt:
  • Source/WebCore/dom/Document.cpp:

(WebCore::Document::resolveStyle):

Loop also when there are no style changes to apply but there are unresolved container. In this case we just resume
the style resolution where we left it.

  • Source/WebCore/dom/Element.cpp:

(WebCore::Element::invalidateForQueryContainerChange):

Invalidate all descendants when a query container is resized. In practice we ended up computing them all anyway.

  • Source/WebCore/style/StyleChange.cpp:

(WebCore::Style::determineChange):

  • Source/WebCore/style/StyleChange.h:

Add new Descendants value for when container type or name changes.

  • Source/WebCore/style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::computeDescendantsToResolve):
(WebCore::Style::TreeResolver::pushParent):
(WebCore::Style::TreeResolver::popParent):
(WebCore::Style::TreeResolver::resolveComposedTree):
(WebCore::Style::TreeResolver::determineQueryContainerAction):

Use two buckets for unresolved and resolved containers. Use the resolved bucket to avoid
recomputing containers we have resolved already.

(WebCore::Style::TreeResolver::resolve):

Move the containers from the unresolved to resolved bucket in the beginning.

(WebCore::Style::TreeResolver::updateQueryContainer): Deleted.

  • Source/WebCore/style/StyleTreeResolver.h:

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

5:05 AM Changeset in webkit [295417] by commit-queue@webkit.org
  • 1 edit in trunk/Source/WebCore/platform/graphics/gtk/SystemFontDatabaseGTK.cpp

REGRESSION(251416@main): Broke GTK...
https://bugs.webkit.org/show_bug.cgi?id=241460

Patch by Philippe Normand <philn@igalia.com> on 2022-06-09
Unreviewed, fix GTK build.

  • Source/WebCore/platform/graphics/gtk/SystemFontDatabaseGTK.cpp:

(WebCore::SystemFontDatabase::platformSystemFontShorthandInfo):

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

4:30 AM Changeset in webkit [295416] by commit-queue@webkit.org
  • 1 edit in trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm

Don't save CSRs respected by the JIT ABI.

Patch by Geza Lore <Geza Lore> on 2022-06-09
https://bugs.webkit.org/show_bug.cgi?id=241369

Reviewed by Mark Lam.

It is not necessary to save and restore CSRs respected by the JIT ABI on
VM entry/exit. The compiler will preserve them. (r10 and r11 on ARMv7.)

  • Source/JavaScriptCore/llint/LowLevelInterpreter.asm:

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

3:39 AM Changeset in webkit [295415] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore/html/canvas

Remove unused code from WebGL2RenderingContext
https://bugs.webkit.org/show_bug.cgi?id=241351

Patch by Alexey Knyazev <3479527+lexaknyazev@users.noreply.github.com> on 2022-06-09
Also removed unnecessary FALLTHROUGH attributes.

Reviewed by Kimmo Kinnunen.

  • Source/WebCore/html/canvas/EXTTextureNorm16.cpp:

(WebCore::EXTTextureNorm16::supported):

  • Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::initializeVertexArrayObjects):
(WebCore::WebGL2RenderingContext::getInternalformatParameter):
(WebCore::WebGL2RenderingContext::getTexParameter):
(WebCore::isRenderableInternalformat): Deleted.
(WebCore::WebGL2RenderingContext::validateTexStorageFuncParameters): Deleted.
(WebCore::WebGL2RenderingContext::baseInternalFormatFromInternalFormat): Deleted.
(WebCore::WebGL2RenderingContext::isIntegerFormat): Deleted.

  • Source/WebCore/html/canvas/WebGL2RenderingContext.h:

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

3:06 AM WebKitEnablingFlatpakClangd edited by Martin Robinson
(diff)
Note: See TracTimeline for information about the timeline view.