⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Mar 27, 2022:

11:15 PM Changeset in webkit [291960] by Lauro Moura
  • 6 edits in trunk/Source

Unreviewed, non-unified buildfix
​https://bugs.webkit.org/show_bug.cgi?id=238436

Source/JavaScriptCore:

  • dfg/DFGStrengthReductionPhase.cpp:

Source/WebCore:

  • workers/service/ServiceWorkerWindowClient.cpp:

Source/WebKit:

  • WebProcess/Storage/WebSWClientConnection.cpp:
9:37 PM Changeset in webkit [291959] by Russell Epstein
  • 9 edits in branches/safari-614.1.8-branch/Source

Versioning.

WebKit-7614.1.8

9:35 PM Changeset in webkit [291958] by Russell Epstein
  • 1 copy in branches/safari-614.1.8-branch

New branch.

9:34 PM Changeset in webkit [291957] by Russell Epstein
  • 9 edits in trunk/Source

Versioning.

WebKit-7614.1.9

9:18 PM Changeset in webkit [291956] by Matt Woodrow
  • 18 edits in trunk

Preserve repeat() notation for grid-templates
​https://bugs.webkit.org/show_bug.cgi?id=202259

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-grid/animation/grid-template-columns-interpolation-expected.txt:
  • web-platform-tests/css/css-grid/animation/grid-template-rows-interpolation-expected.txt:
  • web-platform-tests/css/css-grid/parsing/grid-template-columns-computed-nogrid-expected.txt:
  • web-platform-tests/css/css-grid/parsing/grid-template-rows-computed-nogrid-expected.txt:

Update expectations for existing WPT tests, now that we get the correct computed value for
grid-template-rows/columns.

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
(WebCore::GridTemplateTracksWrapper<ForColumns>::GridTemplateTracksWrapper): Deleted.
(WebCore::GridTemplateTracksWrapper<ForRows>::GridTemplateTracksWrapper): Deleted.

Replaces GridTemplateTracksWrapper with a simpler GridTemplatePropertyWrapper that just compares the
track lists. In the future we can iterate the two tracks lists in parallel and interpolate per-item,
in order to get animation correct per-spec.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::populateGridTrackList):
(WebCore::populateSubgridLineNameList):
(WebCore::valueForGridTrackList):
(WebCore::OrderedNamedLinesCollectorInsideRepeat::OrderedNamedLinesCollectorInsideRepeat): Deleted.
(WebCore::OrderedNamedLinesCollector::collectLineNamesForIndex const): Deleted.
(WebCore::OrderedNamedLinesCollectorInsideRepeat::collectLineNamesForIndex const): Deleted.

Implements getComputedStyle by iterating the track list and doing a 1:1 conversion to CSSValues, instead
of reconstructing from the processed hashtables.
This correctly preserves repeat() instances in the track list, which weren't retreivable from the processed
data.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::gridColumns const):
(WebCore::RenderStyle::gridRows const):
(WebCore::RenderStyle::gridColumnList const):
(WebCore::RenderStyle::gridRowList const):
(WebCore::RenderStyle::gridAutoRepeatColumns const):
(WebCore::RenderStyle::gridAutoRepeatRows const):
(WebCore::RenderStyle::gridAutoRepeatColumnsInsertionPoint const):
(WebCore::RenderStyle::gridAutoRepeatRowsInsertionPoint const):
(WebCore::RenderStyle::gridAutoRepeatColumnsType const):
(WebCore::RenderStyle::gridAutoRepeatRowsType const):
(WebCore::RenderStyle::namedGridColumnLines const):
(WebCore::RenderStyle::namedGridRowLines const):
(WebCore::RenderStyle::orderedNamedGridColumnLines const):
(WebCore::RenderStyle::orderedNamedGridRowLines const):
(WebCore::RenderStyle::autoRepeatNamedGridColumnLines const):
(WebCore::RenderStyle::autoRepeatNamedGridRowLines const):
(WebCore::RenderStyle::autoRepeatOrderedNamedGridColumnLines const):
(WebCore::RenderStyle::autoRepeatOrderedNamedGridRowLines const):
(WebCore::RenderStyle::gridSubgridRows const):
(WebCore::RenderStyle::gridSubgridColumns const):
(WebCore::RenderStyle::setGridColumnList):
(WebCore::RenderStyle::setGridRowList):
(WebCore::RenderStyle::setGridAutoRows):
(WebCore::RenderStyle::setGridAutoFlow):
(WebCore::RenderStyle::setGridColumns): Deleted.
(WebCore::RenderStyle::setGridRows): Deleted.
(WebCore::RenderStyle::setGridAutoRepeatColumns): Deleted.
(WebCore::RenderStyle::setGridAutoRepeatRows): Deleted.
(WebCore::RenderStyle::setGridAutoRepeatColumnsInsertionPoint): Deleted.
(WebCore::RenderStyle::setGridAutoRepeatRowsInsertionPoint): Deleted.
(WebCore::RenderStyle::setGridAutoRepeatColumnsType): Deleted.
(WebCore::RenderStyle::setGridAutoRepeatRowsType): Deleted.
(WebCore::RenderStyle::setNamedGridColumnLines): Deleted.
(WebCore::RenderStyle::setNamedGridRowLines): Deleted.
(WebCore::RenderStyle::setOrderedNamedGridColumnLines): Deleted.
(WebCore::RenderStyle::setOrderedNamedGridRowLines): Deleted.
(WebCore::RenderStyle::setAutoRepeatNamedGridColumnLines): Deleted.
(WebCore::RenderStyle::setAutoRepeatNamedGridRowLines): Deleted.
(WebCore::RenderStyle::setAutoRepeatOrderedNamedGridColumnLines): Deleted.
(WebCore::RenderStyle::setAutoRepeatOrderedNamedGridRowLines): Deleted.
(WebCore::RenderStyle::setGridSubgridRows): Deleted.
(WebCore::RenderStyle::setGridSubgridColumns): Deleted.

  • rendering/style/StyleGridData.cpp:

(WebCore::StyleGridData::StyleGridData):
(WebCore::StyleGridData::setRows):
(WebCore::StyleGridData::setColumns):
(WebCore::createGridLineNamesList):
(WebCore::StyleGridData::computeCachedTrackData):
(WebCore::operator<<):

  • rendering/style/StyleGridData.h:

(WebCore::StyleGridData::operator== const):
(WebCore::StyleGridData::gridColumns const):
(WebCore::StyleGridData::gridRows const):
(WebCore::StyleGridData::namedGridColumnLines const):
(WebCore::StyleGridData::namedGridRowLines const):
(WebCore::StyleGridData::orderedNamedGridColumnLines const):
(WebCore::StyleGridData::orderedNamedGridRowLines const):
(WebCore::StyleGridData::autoRepeatNamedGridColumnLines const):
(WebCore::StyleGridData::autoRepeatNamedGridRowLines const):
(WebCore::StyleGridData::autoRepeatOrderedNamedGridColumnLines const):
(WebCore::StyleGridData::autoRepeatOrderedNamedGridRowLines const):
(WebCore::StyleGridData::gridAutoRepeatColumns const):
(WebCore::StyleGridData::gridAutoRepeatRows const):
(WebCore::StyleGridData::autoRepeatColumnsInsertionPoint const):
(WebCore::StyleGridData::autoRepeatRowsInsertionPoint const):
(WebCore::StyleGridData::autoRepeatColumnsType const):
(WebCore::StyleGridData::autoRepeatRowsType const):
(WebCore::StyleGridData::subgridRows const):
(WebCore::StyleGridData::subgridColumns const):
(WebCore::StyleGridData::columns const):
(WebCore::StyleGridData::rows const):

Stores the computed track lists directly on RenderGrid, while retaining storage of the processed data.
computeCachedTrackData should be logically identical to the old BuilderConverter::createGridTrackList, but
happens when we modify the StyleGridData so that we can run it during animations.

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::createGridTrackList):
(WebCore::Style::createGridLineNamesList): Deleted.
(): Deleted.

  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyInitialGridTemplateColumns):
(WebCore::Style::BuilderCustom::applyValueGridTemplateColumns):
(WebCore::Style::BuilderCustom::applyInitialGridTemplateRows):
(WebCore::Style::BuilderCustom::applyValueGridTemplateRows):

Rather than converting the track list into processed hashtables, just copies the data in the track list
format so that the StyleGridData can access the original data.

LayoutTests:

  • fast/css-grid-layout/grid-repeat-calc-expected.txt:
  • fast/css-grid-layout/grid-repeat-calc.html:
  • fast/css-grid-layout/non-grid-element-repeat-get-set-expected.txt:
  • fast/css-grid-layout/non-grid-element-repeat-get-set.html:

Update expected results to use repeat() notation.

8:03 PM Changeset in webkit [291955] by Matt Woodrow
  • 9 edits in trunk

Fix serialization of grid-template
​https://bugs.webkit.org/show_bug.cgi?id=237868

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-grid/parsing/grid-shorthand-valid-expected.txt:
  • web-platform-tests/css/css-grid/parsing/grid-template-shorthand-valid-expected.txt:

Update expectation files for newly passing tests.

Source/WebCore:

Existing WPT tests marked as passing.

  • css/CSSGridTemplateAreasValue.cpp:

(WebCore::CSSGridTemplateAreasValue::stringForRow):

  • css/CSSGridTemplateAreasValue.h:
  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue const):
(WebCore::isNoneValue):
(WebCore::isValueID):
(WebCore::StyleProperties::getGridTemplateValue const):
(WebCore::StyleProperties::getGridValue const):

  • css/StyleProperties.h:

Creates custom serialization for grid-template that handles the case
where no areas were specified (and omits trailing 'none' value), as well as handling
the case where areas are interleaved within the tracks definitions.

7:35 PM Changeset in webkit [291954] by commit-queue@webkit.org
  • 47 edits in trunk/Source/WebCore

Sort IDL extended attributes alphabetically
​https://bugs.webkit.org/show_bug.cgi?id=235531
<rdar://problem/88284366>

Patch by Daniel Adams <​msub2official@gmail.com> on 2022-03-27
Reviewed by Sam Weinig.

This just goes through and corrects the ordering of "Conditional" and
"EnabledBySetting" in all of the files mentioned in the report.

Test: Trivial change, no test changes required.

  • Modules/gamepad/Gamepad.idl:
  • Modules/gamepad/GamepadButton.idl:
  • Modules/webxr/Navigator+WebXR.idl:
  • Modules/webxr/WebXRBoundedReferenceSpace.idl:
  • Modules/webxr/WebXRFrame+HandInput.idl:
  • Modules/webxr/WebXRFrame.idl:
  • Modules/webxr/WebXRHand.idl:
  • Modules/webxr/WebXRInputSource+HandInput.idl:
  • Modules/webxr/WebXRInputSource.idl:
  • Modules/webxr/WebXRInputSourceArray.idl:
  • Modules/webxr/WebXRJointPose.idl:
  • Modules/webxr/WebXRJointSpace.idl:
  • Modules/webxr/WebXRLayer.idl:
  • Modules/webxr/WebXRPose.idl:
  • Modules/webxr/WebXRReferenceSpace.idl:
  • Modules/webxr/WebXRRenderState.idl:
  • Modules/webxr/WebXRRigidTransform.idl:
  • Modules/webxr/WebXRSession.idl:
  • Modules/webxr/WebXRSpace.idl:
  • Modules/webxr/WebXRView.idl:
  • Modules/webxr/WebXRViewerPose.idl:
  • Modules/webxr/WebXRViewport.idl:
  • Modules/webxr/WebXRWebGLLayer.idl:
  • Modules/webxr/XREnvironmentBlendMode.idl:
  • Modules/webxr/XREye.idl:
  • Modules/webxr/XRHandedness.idl:
  • Modules/webxr/XRInputSourceEvent.idl:
  • Modules/webxr/XRInputSourcesChangeEvent.idl:
  • Modules/webxr/XRInteractionMode.idl:
  • Modules/webxr/XRReferenceSpaceEvent.idl:
  • Modules/webxr/XRReferenceSpaceType.idl:
  • Modules/webxr/XRRenderStateInit.idl:
  • Modules/webxr/XRSessionEvent.idl:
  • Modules/webxr/XRSessionInit.idl:
  • Modules/webxr/XRSessionMode.idl:
  • Modules/webxr/XRTargetRayMode.idl:
  • Modules/webxr/XRVisibilityState.idl:
  • Modules/webxr/XRWebGLLayerInit.idl:
  • testing/FakeXRBoundsPoint.idl:
  • testing/FakeXRButtonStateInit.idl:
  • testing/FakeXRInputSourceInit.idl:
  • testing/FakeXRRigidTransformInit.idl:
  • testing/FakeXRViewInit.idl:
  • testing/WebFakeXRDevice.idl:
  • testing/WebFakeXRInputController.idl:
  • testing/WebXRTest.idl:
1:38 PM Changeset in webkit [291953] by Matt Woodrow
  • 4 edits in trunk

Use the sizing algorithm's available size to compute grid gap.
​https://bugs.webkit.org/show_bug.cgi?id=236956

Reviewed by Tim Nguyen.

Source/WebCore:

Computing the grid gap for subgridded tracks happens during the sizing algorithm
(as part of copying the sizes from the parent, instead of computing new sizes). At
this point we should always have a definite size available (the size of the tracks in
the parent that the subgrid spans), but it may not yet be set on the subgrid's RenderElement.
This retreives the size from the track sizing algorithm instead, where it should always be
available by this point.

  • rendering/GridTrackSizingAlgorithm.cpp:

(WebCore::GridTrackSizingAlgorithm::copyUsedTrackSizesForSubgrid):

LayoutTests:

Existing subgrid tests marked as passing.

1:24 PM Changeset in webkit [291952] by Matt Woodrow
  • 6 edits
    1 add in trunk

Lazily allocate backing store for grid columns.
​https://bugs.webkit.org/show_bug.cgi?id=212201

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-grid/grid-definition/grid-limits-001-expected.txt: Added.

Add passing expectations file for previously skipped test.

Source/WebCore:

Existing WPT test grid-limits-001.html marked as passing.

  • rendering/Grid.cpp:

(WebCore::Grid::ensureGridSize):
(WebCore::Grid::ensureStorageForRow):
(WebCore::Grid::insert):
(WebCore::Grid::cell const):

Only grow the first row's column storage (since we use this
to remember the column count) and lazily grow the others when
we try write to them.

(WebCore::GridIterator::GridIterator):
(WebCore::GridIterator::nextGridItem):
(WebCore::GridIterator::isEmptyAreaEnough const):
(WebCore::GridIterator::nextEmptyGridArea):

  • rendering/Grid.h:

Changes GridIterator to use the Grid API rather than directly
accessing the inner Vector using 'friend'. This makes it easier to
ensure that we never access areas outside of our lazy allocations.

LayoutTests:

Remove skip annotation for test grid-limits-001 that now passes.

7:23 AM Changeset in webkit [291951] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][IFC] ASSERTs in BoxGeometry when loading Twitter page
​https://bugs.webkit.org/show_bug.cgi?id=238421
<rdar://89980547>

Reviewed by Antti Koivisto.

Source/WebCore:

Ensure that we set size/position on trailing, empty inline box(es) in bidi context.
e.g.
<div>some content<span> <-line breaks here</span></div>

where the first line has the following runs:

[some content]
[inline box start]

second line has:

[spanning inline box start]
[<-line breaks here]
[inline box end]

The first line's trailing (and empty, due to trailing whitespace trimming) [inline box start] run
needs computed geometry/display box so that when on the subsequent line we see the [spanning inline box start] run
we can properly compute the enclosing geometry for the <span> element.
(and that's where we currently assert as we don't find the associated box geometry for the inline box on the first line.)

See the comment in InlineDisplayContentBuilder::processBidiContent for details.
(Note that this change has no visual impact as these trailing inline boxes are always empty.)

Test: fast/inline/trailing-empty-bidi-inline-box.html

  • layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):

LayoutTests:

  • fast/inline/trailing-empty-bidi-inline-box-expected.txt: Added.
  • fast/inline/trailing-empty-bidi-inline-box.html: Added.
4:53 AM Changeset in webkit [291950] by Alexander Mikhaylenko
  • 8 edits in trunk

[GTK][WPE] Support CSS accent-color
​https://bugs.webkit.org/show_bug.cgi?id=238398

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Add accent-color support for progress, range and entries.
Update check and radio styles so that they can use accent color as well.

  • platform/adwaita/ThemeAdwaita.cpp:

(WebCore::ThemeAdwaita::paint):
(WebCore::ThemeAdwaita::paintCheckbox):
(WebCore::ThemeAdwaita::paintRadio):

  • platform/adwaita/ThemeAdwaita.h:
  • rendering/RenderThemeAdwaita.cpp:

(WebCore::getSystemAccentColor):
(WebCore::getAccentColor):
(WebCore::RenderThemeAdwaita::platformActiveSelectionBackgroundColor const):
(WebCore::RenderThemeAdwaita::paintTextField):
(WebCore::RenderThemeAdwaita::paintProgressBar):
(WebCore::RenderThemeAdwaita::paintSliderTrack):
(WebCore::RenderThemeAdwaita::paintSliderThumb):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml: Enable accent-color for GTK and WPE.

LayoutTests:

  • platform/gtk/TestExpectations: Enable accent-color tests for GTK.

Mar 26, 2022:

11:33 PM Changeset in webkit [291949] by Noam Rosenthal
  • 7 edits
    82 adds in trunk/LayoutTests

Import clip-path W3C tests
​https://bugs.webkit.org/show_bug.cgi?id=238373

Reviewed by Tim Nguyen.

LayoutTests/imported/w3c:

Imported css/css-masking/clip-path and css/css-masking/parsing
Upstream rev: f987e7440879b5446f135dca82239feacc9a9caf

  • resources/resource-files.json:
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes1-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes2-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-overflow-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes1-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes2-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/animations/w3c-import.log:
  • web-platform-tests/css/css-masking/clip-path/clip-path-blending-offset-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-borderBox-1a-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-borderBox-1a.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-borderBox-1b-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-borderBox-1b.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-borderBox-1c-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-borderBox-1c.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1a-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1a.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1b-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1b.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1c-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1c.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-fillBox-1a-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-fillBox-1a.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-filter-order-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-fixed-nested-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-fixed-scroll-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-geometryBox-1-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-geometryBox-2-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-geometryBox-2-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-geometryBox-2.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-inset-round-percent-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-localRef-1-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-localRef-1-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-localRef-1.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-marginBox-1a-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-marginBox-1a.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-mix-blend-mode-1-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-mix-blend-mode-1-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-mix-blend-mode-1.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-paddingBox-1a-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-paddingBox-1a.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-paddingBox-1b-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-paddingBox-1b.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-paddingBox-1c-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-paddingBox-1c.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-rotated-will-change-transform-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-001-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-002-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-002-units-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-002-units.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-002.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-003-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-003.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-004-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-004.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-interpolation-001-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-interpolation-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-interpolation-002-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-shape-interpolation-002.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-strokeBox-1a-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-strokeBox-1a.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-strokeBox-1b-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-strokeBox-1b.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-svg-invalidate-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-backdrop-filter-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-viewBox-1a-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-viewBox-1a.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-viewBox-1b-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-viewBox-1b.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-viewBox-1c-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-viewBox-1c.html: Added.
  • web-platform-tests/css/css-masking/clip-path/svg-clip-path-circle-offset-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/svg-clip-path-circle-offset-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/svg-clip-path-circle-offset.html: Added.
  • web-platform-tests/css/css-masking/clip-path/svg-clip-path-ellipse-offset-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/svg-clip-path-ellipse-offset-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/svg-clip-path-ellipse-offset.html: Added.
  • web-platform-tests/css/css-masking/clip-path/w3c-import.log:
  • web-platform-tests/css/css-masking/parsing/clip-path-shape-parsing-expected.txt: Added.
  • web-platform-tests/css/css-masking/parsing/clip-path-shape-parsing.html: Added.
  • web-platform-tests/css/css-masking/parsing/support/parsing-testcommon.js: Added.

(test_valid_value):

  • web-platform-tests/css/css-masking/parsing/w3c-import.log:

LayoutTests:

Updated expectations for newly imported failing clip-path tests.

6:47 PM Changeset in webkit [291948] by mmaxfield@apple.com
  • 10 edits
    768 adds in trunk

[WebGPU] Import WebGPU Conformance Test Suite
​https://bugs.webkit.org/show_bug.cgi?id=238123

Reviewed by Dean Jackson.

Tools:

  • Scripts/import-webgpu-cts: Added.

LayoutTests:

This patch imports the WebGPU Conformance Test Suite, from ​https://github.com/gpuweb/cts, as of
git commit 09f024e50e84f191ee4546ef4021707faa376096. Rather than the CTS having a bunch of HTML
files, one for each test, the CTS instead has a single HTML file which takes a query parameter
which describes the name of a test to run. Therefore, in order to make it work with our test
infrastructure (which requires a bunch of HTML files), we create a bunch of HTML files which just
redirect to the CTS test runner, accompanied by the relevant query parameter. There is a script
in Tools/Scripts which copies the contents of the CTS and generates these HTML files.

The WebGPU Conformance Test Suite:

  1. Is disabled by default
  2. Is enabled on macOS and iOS
  3. Is disabled on macOS-WK2 and iOS-WK2 (because of ​https://bugs.webkit.org/show_bug.cgi?id=233621)
  4. Each test individually fails, because we're still implementing our WebGPU implementation, so each test

is individually marked as [ Pass Failure ImageOnlyFailure Timeout ].

(export.SkipTestCase):
(export.UnexpectedPassError):
(export.Fixture):
(export.Fixture.prototype.get params):
(export.Fixture.prototype.async init):
(export.Fixture.prototype.async finalize):
(export.Fixture.prototype.doInit):
(export.Fixture.prototype.doFinalize):
(export.Fixture.prototype.trackForCleanup):
(export.Fixture.prototype.tryTrackForCleanup):
(export.Fixture.prototype.debug):
(export.Fixture.prototype.skip):
(export.Fixture.prototype.warn):
(export.Fixture.prototype.fail):
(export.Fixture.prototype.async immediateAsyncExpectation):
(export.Fixture.prototype.eventualAsyncExpectation):
(export.Fixture.prototype.expectErrorValue):
(export.Fixture.prototype.shouldResolve):
(export.Fixture.prototype.async shouldReject):
(export.Fixture.prototype.async shouldThrow):
(export.Fixture.prototype.expect):
(export.Fixture.prototype.expectOK):

  • http/tests/webgpu/common/framework/fixture.js.map: Added.
  • http/tests/webgpu/common/framework/params_builder.js: Added.

(export.ParamsBuilderBase):
(export.builderIterateCasesWithSubcases):
(export.CaseParamsBuilder.prototype.iterateCasesWithSubcases):
(export.CaseParamsBuilder.prototype.Symbol.iterator):
(export.CaseParamsBuilder.prototype.expandWithParams):
(export.CaseParamsBuilder.prototype.expand):
(export.CaseParamsBuilder.prototype.combineWithParams):
(export.CaseParamsBuilder.prototype.combine):
(export.CaseParamsBuilder.prototype.filter):
(export.CaseParamsBuilder.prototype.unless):
(export.CaseParamsBuilder.prototype.beginSubcases):
(export.CaseParamsBuilder):
(export.const.kUnitCaseParamsBuilder.new.CaseParamsBuilder):
(export.SubcaseParamsBuilder):
(export.SubcaseParamsBuilder.prototype.iterateCasesWithSubcases):
(export.SubcaseParamsBuilder.prototype.expandWithParams):
(export.SubcaseParamsBuilder.prototype.expand):
(export.SubcaseParamsBuilder.prototype.combineWithParams):
(export.SubcaseParamsBuilder.prototype.combine):
(export.SubcaseParamsBuilder.prototype.filter):
(export.SubcaseParamsBuilder.prototype.unless):
(filterGenerator):

  • http/tests/webgpu/common/framework/params_builder.js.map: Added.
  • http/tests/webgpu/common/framework/resources.js: Added.

(export.getResourcePath):
(export.setBaseResourcePath):

  • http/tests/webgpu/common/framework/resources.js.map: Added.
  • http/tests/webgpu/common/framework/test_group.js: Added.
  • http/tests/webgpu/common/framework/test_group.js.map: Added.
  • http/tests/webgpu/common/internal/file_loader.js: Added.

(export.TestFileLoader.prototype.importSpecFile):
(export.TestFileLoader.prototype.async loadTree):
(export.TestFileLoader.prototype.async loadCases):
(export.TestFileLoader):
(export.DefaultTestFileLoader.prototype.async listing):
(export.DefaultTestFileLoader.prototype.import):
(export.DefaultTestFileLoader):

  • http/tests/webgpu/common/internal/file_loader.js.map: Added.
  • http/tests/webgpu/common/internal/logging/log_message.js: Added.

(export.LogMessageWithStack):
(export.LogMessageWithStack.prototype.setStackHidden):
(export.LogMessageWithStack.prototype.toJSON):
(export.prettyPrintLog):

  • http/tests/webgpu/common/internal/logging/log_message.js.map: Added.
  • http/tests/webgpu/common/internal/logging/logger.js: Added.

(export.Logger):
(export.Logger.prototype.record):
(export.Logger.prototype.asJSON):

  • http/tests/webgpu/common/internal/logging/logger.js.map: Added.
  • http/tests/webgpu/common/internal/logging/result.js: Added.
  • http/tests/webgpu/common/internal/logging/result.js.map: Added.
  • http/tests/webgpu/common/internal/logging/test_case_recorder.js: Added.

(export.TestCaseRecorder):
(export.TestCaseRecorder.prototype.start):
(export.TestCaseRecorder.prototype.finish):
(export.TestCaseRecorder.prototype.beginSubCase):
(export.TestCaseRecorder.prototype.endSubCase):
(export.TestCaseRecorder.prototype.injectResult):
(export.TestCaseRecorder.prototype.debug):
(export.TestCaseRecorder.prototype.info):
(export.TestCaseRecorder.prototype.skipped):
(export.TestCaseRecorder.prototype.warn):
(export.TestCaseRecorder.prototype.expectationFailed):
(export.TestCaseRecorder.prototype.validationFailed):
(export.TestCaseRecorder.prototype.threw):
(export.TestCaseRecorder.prototype.logImpl):

  • http/tests/webgpu/common/internal/logging/test_case_recorder.js.map: Added.
  • http/tests/webgpu/common/internal/params_utils.js: Added.

(export.paramKeyIsPublic):
(export.extractPublicParams):
(export.publicParamsEquals):
(typeAssert):
(export.mergeParams):

  • http/tests/webgpu/common/internal/params_utils.js.map: Added.
  • http/tests/webgpu/common/internal/query/compare.js: Added.

(export.compareQueries):
(compareOneLevel):
(comparePaths):
(export.comparePublicParamsPaths):

  • http/tests/webgpu/common/internal/query/compare.js.map: Added.
  • http/tests/webgpu/common/internal/query/encode_selectively.js: Added.

(export.encodeURIComponentSelectively):

  • http/tests/webgpu/common/internal/query/encode_selectively.js.map: Added.
  • http/tests/webgpu/common/internal/query/json_param_value.js: Added.

(stringifyFilter):
(export.stringifyParamValue):
(export.stringifyParamValueUniquely):
(export.parseParamValue):

  • http/tests/webgpu/common/internal/query/json_param_value.js.map: Added.
  • http/tests/webgpu/common/internal/query/parseQuery.js: Added.

(export.parseQuery):
(parseQueryImpl):
(parseBigPart):
(parseSingleParam):
(parseSingleParamValue):

  • http/tests/webgpu/common/internal/query/parseQuery.js.map: Added.
  • http/tests/webgpu/common/internal/query/query.js: Added.

(export.TestQueryMultiFile):
(export.TestQueryMultiFile.prototype.get depthInLevel):
(export.TestQueryMultiFile.prototype.toString):
(export.TestQueryMultiFile.prototype.toStringHelper):
(export.TestQueryMultiTest):
(export.TestQueryMultiTest.prototype.get depthInLevel):
(export.TestQueryMultiTest.prototype.toStringHelper):
(export.TestQueryMultiCase):
(export.TestQueryMultiCase.prototype.get depthInLevel):
(export.TestQueryMultiCase.prototype.toStringHelper):
(export.TestQuerySingleCase.prototype.get depthInLevel):
(export.TestQuerySingleCase.prototype.toStringHelper):
(export.TestQuerySingleCase):
(export.parseExpectationsForTestQuery):
(export.relativeQueryString):

  • http/tests/webgpu/common/internal/query/query.js.map: Added.
  • http/tests/webgpu/common/internal/query/separators.js: Added.
  • http/tests/webgpu/common/internal/query/separators.js.map: Added.
  • http/tests/webgpu/common/internal/query/stringify_params.js: Added.

(export.stringifyPublicParams):
(export.stringifyPublicParamsUniquely):
(export.stringifySingleParam):
(stringifySingleParamUniquely):
(stringifySingleParamValue):

  • http/tests/webgpu/common/internal/query/stringify_params.js.map: Added.
  • http/tests/webgpu/common/internal/query/validQueryPart.js: Added.
  • http/tests/webgpu/common/internal/query/validQueryPart.js.map: Added.
  • http/tests/webgpu/common/internal/stack.js: Added.

(export.extractImportantStackTrace):

  • http/tests/webgpu/common/internal/stack.js.map: Added.
  • http/tests/webgpu/common/internal/test_group.js: Added.

(export.makeTestGroup):
(export.makeTestGroupForUnitTesting):
(export.TestGroup):
(export.TestGroup.prototype.iterate):
(export.TestGroup.prototype.checkName):
(export.TestGroup.prototype.test):
(export.TestGroup.prototype.validate):
(TestBuilder):
(TestBuilder.prototype.desc):
(TestBuilder.prototype.uniqueId):
(TestBuilder.prototype.specURL):
(TestBuilder.prototype.fn):
(TestBuilder.prototype.batch):
(TestBuilder.prototype.unimplemented):
(TestBuilder.prototype.validate):
(TestBuilder.prototype.params):
(TestBuilder.prototype.paramsSimple):
(TestBuilder.prototype.paramsSubcasesOnly):
(TestBuilder.prototype.iterate):
(prototype.async runTest):
(prototype.async run):

  • http/tests/webgpu/common/internal/test_group.js.map: Added.
  • http/tests/webgpu/common/internal/test_suite_listing.js: Added.
  • http/tests/webgpu/common/internal/test_suite_listing.js.map: Added.
  • http/tests/webgpu/common/internal/tree.js: Added.

(export.TestTree):
(export.TestTree.prototype.iterateCollapsedNodes):
(export.TestTree.prototype.iterateLeaves):
(export.TestTree.prototype.dissolveSingleChildTrees):
(export.TestTree.prototype.toString):
(export.TestTree.iterateSubtreeNodes):
(export.TestTree.iterateSubtreeLeaves):
(export.TestTree.propagateCounts):
(export.TestTree.countsToString):
(export.TestTree.subtreeToString):
(export.async loadTreeForQuery):
(setSubtreeDescriptionAndCountTODOs):
(makeTreeForSuite):
(addSubtreeForDirPath):
(addSubtreeForFilePath):
(addSubtreeForTestPath):
(getOrInsertSubtree):
(insertLeaf):
(dissolveSingleChildTrees):
(readableNameForCase):

  • http/tests/webgpu/common/internal/tree.js.map: Added.
  • http/tests/webgpu/common/internal/util.js: Added.

(export.StacklessError):

  • http/tests/webgpu/common/internal/util.js.map: Added.
  • http/tests/webgpu/common/internal/version.js: Added.
  • http/tests/webgpu/common/runtime/cmdline.js: Added.

(usage):
(i.a.startsWith):

  • http/tests/webgpu/common/runtime/cmdline.js.map: Added.
  • http/tests/webgpu/common/runtime/helper/options.js: Added.

(getWindowURL):
(export.optionEnabled):

  • http/tests/webgpu/common/runtime/helper/options.js.map: Added.
  • http/tests/webgpu/common/runtime/helper/sys.js: Added.

(node):
(deno.existsSync):
(deno):

  • http/tests/webgpu/common/runtime/helper/sys.js.map: Added.
  • http/tests/webgpu/common/runtime/helper/test_worker-worker.js: Added.

(self.onmessage.async ev):

  • http/tests/webgpu/common/runtime/helper/test_worker-worker.js.map: Added.
  • http/tests/webgpu/common/runtime/helper/test_worker.js: Added.

(export.TestWorker):
(export.TestWorker.prototype.async run):

  • http/tests/webgpu/common/runtime/helper/test_worker.js.map: Added.
  • http/tests/webgpu/common/runtime/server.js: Added.

(usage):

  • http/tests/webgpu/common/runtime/server.js.map: Added.
  • http/tests/webgpu/common/runtime/standalone.js: Added.

(window.onbeforeunload):
(emptySubtreeResult):
(mergeSubtreeResults):
(memoize):
(makeTreeNodeHTML):
(makeCaseHTML.const.runSubtree.async if):
(makeCaseHTML):
(const.runMySubtree.async if):
(makeSubtreeHTML):
(const.runMySubtree.async const):
(makeSubtreeChildrenHTML):
(consoleLogError):
(async appendTo):
(makeTreeNodeHeaderHTML):
(async const):
(qs.push):

  • http/tests/webgpu/common/runtime/standalone.js.map: Added.
  • http/tests/webgpu/common/runtime/wpt.js: Added.

(const.wpt_fn.async const):
(async const):

  • http/tests/webgpu/common/runtime/wpt.js.map: Added.
  • http/tests/webgpu/common/tools/checklist.js: Added.

(usage):
(async loadQueryListFromTextFile):
(checkForOverlappingQueries):
(async console):
(catch):

  • http/tests/webgpu/common/tools/checklist.js.map: Added.
  • http/tests/webgpu/common/tools/crawl.js: Added.

(async crawlFilesRecursively.async const):
(async crawlFilesRecursively):
(async export.async crawl):
(export.makeListing):

  • http/tests/webgpu/common/tools/crawl.js.map: Added.
  • http/tests/webgpu/common/tools/dev_server.js: Added.

(const.babelConfig.string_appeared_here):
(dirtyCompileCache):
(dirtyListingAndCompileCache):
(app.use):
(async req):
(port.const.iface.of.Object.values.os.networkInterfaces):

  • http/tests/webgpu/common/tools/dev_server.js.map: Added.
  • http/tests/webgpu/common/tools/gen_listings.js: Added.

(usage):
(argv.indexOf):
(async for):

  • http/tests/webgpu/common/tools/gen_listings.js.map: Added.
  • http/tests/webgpu/common/tools/gen_wpt_cts_html.js: Added.

(printUsageAndExit):
(async let):
(expLoop):
(const.prefix.of.argsPrefixes.of.tree.iterateCollapsedNodes):
(catch):
(async generateFile):

  • http/tests/webgpu/common/tools/gen_wpt_cts_html.js.map: Added.
  • http/tests/webgpu/common/tools/version.js: Added.
  • http/tests/webgpu/common/tools/version.js.map: Added.
  • http/tests/webgpu/common/util/collect_garbage.js: Added.

(export.async attemptGarbageCollection.gcRec):
(export.async attemptGarbageCollection):

  • http/tests/webgpu/common/util/collect_garbage.js.map: Added.
  • http/tests/webgpu/common/util/colors.js: Added.
  • http/tests/webgpu/common/util/colors.js.map: Added.
  • http/tests/webgpu/common/util/data_tables.js: Added.

(export.keysOf):
(export.numericKeysOf):
(export.makeTable):

  • http/tests/webgpu/common/util/data_tables.js.map: Added.
  • http/tests/webgpu/common/util/navigator_gpu.js: Added.

(defaultGPUProvider):
(export.setGPUProvider):
(export.getGPU):

  • http/tests/webgpu/common/util/navigator_gpu.js.map: Added.
  • http/tests/webgpu/common/util/preprocessor.js: Added.

(prototype.checkDepth):
(prototype.applyTo):
(Else.prototype.applyTo):
(Else):
(export.pp):

  • http/tests/webgpu/common/util/preprocessor.js.map: Added.
  • http/tests/webgpu/common/util/timeout.js: Added.
  • http/tests/webgpu/common/util/timeout.js.map: Added.
  • http/tests/webgpu/common/util/types.js: Added.

(export.assertTypeTrue):

  • http/tests/webgpu/common/util/types.js.map: Added.
  • http/tests/webgpu/common/util/util.js: Added.

(export.ErrorWithExtra):
(export.assert):
(export.assertOK):
(export.async assertReject):
(export.unreachable):
(export.now):
(export.resolveOnTimeout):
(export.PromiseTimeoutError):
(export.rejectOnTimeout):
(export.raceWithRejectOnTimeout):
(export.sortObjectByKey):
(export.objectEquals):
(export.range):
(export.iterRange):
(subarrayAsU8):

  • http/tests/webgpu/common/util/util.js.map: Added.
  • http/tests/webgpu/cts.https-expected.txt: Added.
  • http/tests/webgpu/cts.https.html: Added.
  • http/tests/webgpu/resources/Di-3d.png: Added.
  • http/tests/webgpu/resources/README.md: Added.
  • http/tests/webgpu/resources/red-green.bt601.vp9.webm: Added.
  • http/tests/webgpu/resources/red-green.mp4: Added.
  • http/tests/webgpu/resources/red-green.theora.ogv: Added.
  • http/tests/webgpu/resources/red-green.webmvp8.webm: Added.
  • http/tests/webgpu/webgpu/api/operation/adapter/requestDevice-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/adapter/requestDevice.html: Added.
  • http/tests/webgpu/webgpu/api/operation/adapter/requestDevice.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/adapter/requestDevice_limits-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/adapter/requestDevice_limits.html: Added.
  • http/tests/webgpu/webgpu/api/operation/adapter/requestDevice_limits.spec.js: Added.

(g.test.string_appeared_here.desc.Test.that.specifying.limits.that.aren.requestDevice.to.reject.fn.async t):
(string_appeared_here.fn.async t):
(65535.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/buffers/map-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/buffers/map.html: Added.
  • http/tests/webgpu/webgpu/api/operation/buffers/map.spec.js: Added.

(and.the.contents.of.buffers.returned.by.getMappedRange.on.buffers.are.mapped.read.mapped.write.mappedAtCreation.range.used.getMappedRange.mapRegion.used.mapAsync.mapRegionBoundModes.is.used.to.get mapRegion):
(getRegionForMap):

  • http/tests/webgpu/webgpu/api/operation/buffers/map_ArrayBuffer-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/buffers/map_ArrayBuffer.html: Added.
  • http/tests/webgpu/webgpu/api/operation/buffers/map_ArrayBuffer.spec.js: Added.

(string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/buffers/map_detach-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/buffers/map_detach.html: Added.
  • http/tests/webgpu/webgpu/api/operation/buffers/map_detach.spec.js: Added.

(unless.p.p.mappedAtCreation.false.p.mapMode.undefined.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/buffers/map_oom-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/buffers/map_oom.html: Added.
  • http/tests/webgpu/webgpu/api/operation/buffers/map_oom.spec.js: Added.

(true.fn.async t):
(kBufferUsages.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/buffers/mapping_test.js: Added.

(export.MappingTest.prototype.checkMapWrite):
(export.MappingTest.prototype.checkMapWriteZeroed):
(export.MappingTest.prototype.expectZero):
(export.MappingTest):

  • http/tests/webgpu/webgpu/api/operation/buffers/threading-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/buffers/threading.html: Added.
  • http/tests/webgpu/webgpu/api/operation/buffers/threading.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/basic-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/basic.html: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/basic.spec.js: Added.

(g.test.string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/command_buffer/clearBuffer-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/clearBuffer.html: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/clearBuffer.spec.js: Added.

(fn.async t):

  • http/tests/webgpu/webgpu/api/operation/command_buffer/copyBufferToBuffer-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/copyBufferToBuffer.html: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/copyBufferToBuffer.spec.js: Added.

(p.dstOffset.p.copySize.8.fn.async t):
(and.check.contents.of.both.fn.async t):
(then.checks.the.dst.buffer.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/command_buffer/copyTextureToTexture-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/copyTextureToTexture.html: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/copyTextureToTexture.spec.js: Added.

(F.prototype.GetInitialData):
(F.prototype.GetInitialDataPerMipLevel):
(F.prototype.GetInitialStencilDataPerMipLevel):
(F.prototype.DoCopyTextureToTextureTest):
(F.prototype.InitializeStencilAspect):
(F.prototype.VerifyStencilAspect):
(F.prototype.GetRenderPipelineForT2TCopyWithDepthTests):
(F.prototype.GetBindGroupLayoutForT2TCopyWithDepthTests):
(F.prototype.GetBindGroupForT2TCopyWithDepthTests):
(F.prototype.InitializeDepthAspect):
(F.prototype.VerifyDepthAspect):
(F):
(kRegularTextureFormats.filter):
(3.unless.p.p.dimension.string_appeared_here.p.srcCopyLevel.0.p.dstCopyLevel.0.fn.async t):
(kCompressedTextureFormats.filter):
(2.fn.async t):
(3.fn.async t):
(g.test.string_appeared_here.desc.Validate.the.correctness.of.copyTextureToTexture.with.depth.and.stencil.aspect.For.all.the.texture.formats.with.stencil.aspect.Initialize.the.stencil.aspect.of.the.source.texture.with.writeTexture.Copy.the.stencil.aspect.from.the.source.texture.into.the.destination.texture.Copy.the.stencil.aspect.of.the.destination.texture.into.another.staging.buffer.and.check.its.content.Test.the.copies.from.into.zero.non.zero.array.layer.mipmap.levels.Test.copying.multiple.array.layers.For.all.the.texture.formats.with.depth.aspect.Initialize.the.depth.aspect.of.the.source.texture.with.a.draw.call.Copy.the.depth.aspect.from.the.source.texture.into.the.destination.texture.Validate.the.content.in.the.destination.texture.with.the.depth.comparison.string_appeared_here):
(async fn):

  • http/tests/webgpu/webgpu/api/operation/command_buffer/image_copy-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/image_copy.html: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/image_copy.spec.js: Added.

(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.number.instead.of.GPUExtent3DDict.copy_various_mip_levels.test.that.copying.various.mip.levels.works.all.formats.Also.covers.special.code.paths.the.physical.size.of.the.subresource.is.not.equal.to.the.logical.size.bufferSize.offset.bytesPerImage.copyExtent.depthOrArrayLayers.and.copyExtent.needs.to.be.clamped.copy_with_no_image_or_slice_padding_and_undefined_values.test.that.when.copying.a.single.row.we.can.set any.bytesPerRow.value.and.when.copying.a.single.slice.we.can.set rowsPerImage):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.number.instead.of.GPUExtent3DDict.copy_various_mip_levels.test.that.copying.various.mip.levels.works.all.formats.Also.covers.special.code.paths.the.physical.size.of.the.subresource.is.not.equal.to.the.logical.size.bufferSize.offset.bytesPerImage.copyExtent.depthOrArrayLayers.and.copyExtent.needs.to.be.clamped.copy_with_no_image_or_slice_padding_and_undefined_values.test.that.when.copying.a.single.row.we.can.set any):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.getTexelOffsetInBytes):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.iterateBlockRows):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.generateData):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.undefDataLayoutIfNeeded):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.undefOrArrayCopyViewIfNeeded):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.arrayCopySizeIfNeeded):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.copyTextureToBufferWithAppliedArguments):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.uploadLinearTextureDataToTextureSubBox):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.copyPartialTextureToBufferAndCheckContents):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.copyWholeTextureToNewBuffer):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.updateLinearTextureDataSubBox):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.copyWholeTextureToBufferAndCheckContentsWithUpdatedData):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.async uploadTextureAndVerifyCopy):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.async DoUploadToStencilTest):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.async DoCopyFromStencilTest):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.async checkStencilTextureContent):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.initializeDepthAspectWithRendering):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.DoCopyTextureToBufferWithDepthAspectTest):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.formatCanBeTested):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including):

  • http/tests/webgpu/webgpu/api/operation/command_buffer/programmable/programmable_state_test.js: Added.

(export.ProgrammableStateTest.prototype.getBindGroupLayout):
(export.ProgrammableStateTest.prototype.getBindGroupLayouts):
(export.ProgrammableStateTest.prototype.createBindGroup):
(export.ProgrammableStateTest.prototype.setBindGroup):
(export.ProgrammableStateTest.prototype.createBindingStatePipeline):
(export.ProgrammableStateTest.prototype.setPipeline):
(export.ProgrammableStateTest.prototype.dispatchOrDraw):
(export.ProgrammableStateTest):

  • http/tests/webgpu/webgpu/api/operation/command_buffer/programmable/state_tracking-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/programmable/state_tracking.html: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/programmable/state_tracking.spec.js: Added.

(export.const.description.Ensure.state.is.set correctly):
(fn.async t):
(g.test.string_appeared_here.desc.Test.that.the.order.in.you.set the):

  • http/tests/webgpu/webgpu/api/operation/command_buffer/render/dynamic_state-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/render/dynamic_state.html: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/render/dynamic_state.spec.js: Added.

(Set.the.state.in.different.ways.to.make.sure.it.gets.the.correct.value.in.the.end.state.unset.default.state.explicitly.set once):
(set import):

  • http/tests/webgpu/webgpu/api/operation/command_buffer/render/state_tracking-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/render/state_tracking.html: Added.
  • http/tests/webgpu/webgpu/api/operation/command_buffer/render/state_tracking.spec.js: Added.

(export.const.description.Ensure.state.is.set correctly):
(VertexAndIndexStateTrackingTest.prototype.GetRenderPipelineForTest):
(VertexAndIndexStateTrackingTest):
(size.multiple.times.in.different.orders.still.keeps.the.correctness.of.each.draw.call.fn.async t):
(and.check.they.were.drawn.correctly.fn.async t):
(the.vertex.buffer.stride.is.part.of.SetVertexBuffer.instead.of.the.pipeline.fn.async t):
(The.test.verifies.both.of.these.two.draw.calls.work.correctly.fn.async t):
(g.test.string_appeared_here.desc.Test.that.setting.not.setting.the.index.buffer.does.not.impact.a.non.indexed.draw.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/compute/basic-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/compute/basic.html: Added.
  • http/tests/webgpu/webgpu/api/operation/compute/basic.spec.js: Added.

(g.test.string_appeared_here.fn.async t):
(kMaxComputeWorkgroupSize.p.largeDimension.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/compute_pipeline/entry_point_name-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/compute_pipeline/entry_point_name.html: Added.
  • http/tests/webgpu/webgpu/api/operation/compute_pipeline/entry_point_name.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/device/lost-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/device/lost.html: Added.
  • http/tests/webgpu/webgpu/api/operation/device/lost.spec.js: Added.

(DeviceLostTests.prototype.getDeviceLostWithTimeout):
(DeviceLostTests.prototype.expectDeviceDestroyed):
(DeviceLostTests):
(async export):

  • http/tests/webgpu/webgpu/api/operation/labels-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/labels.html: Added.
  • http/tests/webgpu/webgpu/api/operation/labels.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/buffer_sync_test.js: Added.

(export.BufferSyncTest.prototype.async createBufferWithValue):
(export.BufferSyncTest.prototype.async createTextureWithValue):
(export.BufferSyncTest.prototype.createBindGroup):
(export.BufferSyncTest.prototype.createStorageWriteComputePipeline):
(export.BufferSyncTest.prototype.createStorageWriteRenderPipeline):
(export.BufferSyncTest.prototype.beginSimpleRenderPass):
(export.BufferSyncTest.prototype.encodeWriteAsStorageBufferInRenderPass):
(export.BufferSyncTest.prototype.encodeWriteAsStorageBufferInComputePass):
(export.BufferSyncTest.prototype.async encodeWriteByB2BCopy):
(export.BufferSyncTest.prototype.async encodeWriteByT2BCopy):
(export.BufferSyncTest.prototype.writeByWriteBuffer):
(export.BufferSyncTest.prototype.async encodeWriteOp):
(export.BufferSyncTest.prototype.async createCommandBufferWithWriteOp):
(export.BufferSyncTest.prototype.async submitWriteOp):
(export.BufferSyncTest.prototype.verifyData):
(export.BufferSyncTest.prototype.verifyDataTwoValidValues):
(export.BufferSyncTest):

  • http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/rw_and_wr-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/rw_and_wr.html: Added.
  • http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/rw_and_wr.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/ww-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/ww.html: Added.
  • http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/ww.spec.js: Added.

(kAllWriteOps.fn.async t):
(true.fn.async t):
(g.test.string_appeared_here.desc.Test.write.after.write.operations.in.the.same.render.bundle.The.first.write.will.write.1.into.a.storage.buffer.The.second.write.will.write.2.into.the.same.buffer.in.the.same.pass.Expected.data.in.buffer.is.either.1.or.2.fn.async t):
(g.test.string_appeared_here.desc.Test.write.after.write.operations.in.the.same.compute.pass.The.first.write.will.write.1.into.a.storage.buffer.The.second.write.will.write.2.into.the.same.buffer.in.the.same.pass.Expected.data.in.buffer.is.2.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/memory_sync/texture/same_subresource-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/memory_sync/texture/same_subresource.html: Added.
  • http/tests/webgpu/webgpu/api/operation/memory_sync/texture/same_subresource.spec.js: Added.

(TextureSyncTestHelper):
(TextureSyncTestHelper.prototype.performReadOp):
(TextureSyncTestHelper.prototype.performWriteOp):
(TextureSyncTestHelper.prototype.ensureSubmit):
(TextureSyncTestHelper.prototype.popContext):
(TextureSyncTestHelper.prototype.makeDummyAttachment):
(TextureSyncTestHelper.prototype.ensureContext):
(TextureSyncTestHelper.prototype.flushRenderBundles):
(TextureSyncTestHelper.prototype.flushCommandBuffers):
(TextureSyncTestHelper.prototype.ensureBoundary):
(p.kBoundaryInfo.p.boundary.contexts.expandWithParams):

  • http/tests/webgpu/webgpu/api/operation/memory_sync/texture/texture_sync_test.js: Added.

(combineContexts):
(export.checkOpsValidForContext):

  • http/tests/webgpu/webgpu/api/operation/onSubmittedWorkDone-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/onSubmittedWorkDone.html: Added.
  • http/tests/webgpu/webgpu/api/operation/onSubmittedWorkDone.spec.js: Added.

(g.test.string_appeared_here.desc.Await.onSubmittedWorkDone.once.without.having.submitted.any.work.fn.async t):
(g.test.string_appeared_here.desc.Await.onSubmittedWorkDone.once.after.submitting.some.work.writeBuffer.fn.async t):
(g.test.string_appeared_here.desc.Await.1000.onSubmittedWorkDone.calls.in.serial.fn.async t):
(g.test.string_appeared_here.desc.Await.1000.onSubmittedWorkDone.calls.in.parallel.with.Promise.all.fn.async t):
(g.test.string_appeared_here.desc.Issue.200.onSubmittedWorkDone.calls.and.make.sure.they.resolve.in.the.right.order.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/pipeline/default_layout-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/pipeline/default_layout.html: Added.
  • http/tests/webgpu/webgpu/api/operation/pipeline/default_layout.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/queue/writeBuffer-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/queue/writeBuffer.html: Added.
  • http/tests/webgpu/webgpu/api/operation/queue/writeBuffer.spec.js: Added.

(F.prototype.calculateRequiredBufferSize):
(F.prototype.testWriteBuffer):
(F):

  • http/tests/webgpu/webgpu/api/operation/render_pass/clear_value-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pass/clear_value.html: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pass/clear_value.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pass/resolve-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pass/resolve.html: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pass/resolve.spec.js: Added.

(some.with.and.some.without.a.resolveTarget.renderPass.storeOp.set to):
(1.fn.t.i.t.params.slotsToResolve.includes):

  • http/tests/webgpu/webgpu/api/operation/render_pass/storeOp-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pass/storeOp.html: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pass/storeOp.spec.js: Added.

(work.correctly.a.render.pass.with.a.color.attachment.All.renderable.color.formats.mip.level.set to):
(array.layer.set to):
(2D.textures.TODO.depth.slice.set to):
(work.correctly.a.render.pass.with.a.depth.stencil.attachment.All.renderable.depth.stencil.formats.mip.level.set to):
(2D.textures.TODO.test.depth24plus.and.depth24plus.stencil8.formats.TODO.test.that.depth.and.stencil.aspects.are.set separately.TODO.depth.slice.set to):
(2D.textures.TODO.test.depth24plus.and.depth24plus.stencil8.formats.TODO.test.that.depth.and.stencil.aspects.are.set separately):
(kStoreOps.fn.t.else):
(kEncodableTextureFormats.filter):
(kArrayLayers.fn.t.else):
(kNumColorAttachments.fn.t.i.else):

  • http/tests/webgpu/webgpu/api/operation/render_pass/storeop2-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pass/storeop2.html: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pass/storeop2.spec.js: Added.

(fn.async t):

  • http/tests/webgpu/webgpu/api/operation/render_pipeline/alpha_to_coverage-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/alpha_to_coverage.html: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/alpha_to_coverage.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/culling_tests-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/culling_tests.html: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/culling_tests.spec.js: Added.

(faceIsCulled):

  • http/tests/webgpu/webgpu/api/operation/render_pipeline/entry_point_name-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/entry_point_name.html: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/entry_point_name.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/pipeline_output_targets-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/pipeline_output_targets.html: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/pipeline_output_targets.spec.js: Added.

(F.prototype.getFragmentShaderCode):
(F):
(4.filter.x.x.componentCount.kTexelRepresentationInfo.x.format.componentOrder.length.fn.async t):
(filter.x.x.output.length.kTexelRepresentationInfo.x.format.componentOrder.length.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/render_pipeline/primitive_topology-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/primitive_topology.html: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/primitive_topology.spec.js: Added.

(v1.v3.v5.Topology.triangle.strip.4.triangles.v2.v4.v6.Triangle.list.locations.None.Center.of.two.triangle):
(Point2D):
(Point2D.prototype.toNDC):
(Point2D.getMidpoint):
(Point2D.getCentroid):
(getPointTestLocations):
(getLineTestLocations):
(getPrimitiveRestartLineTestLocations):
(getLineStripTestLocations):
(getTriangleListTestLocations):
(getTriangleStripTestLocations):
(getDefaultTestLocations):

  • http/tests/webgpu/webgpu/api/operation/render_pipeline/sample_mask-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/sample_mask.html: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/sample_mask.spec.js: Added.

(fragment.shader.output.mask):

  • http/tests/webgpu/webgpu/api/operation/render_pipeline/vertex_only_render_pipeline-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/vertex_only_render_pipeline.html: Added.
  • http/tests/webgpu/webgpu/api/operation/render_pipeline/vertex_only_render_pipeline.spec.js: Added.

(F):

  • http/tests/webgpu/webgpu/api/operation/rendering/basic-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/basic.html: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/basic.spec.js: Added.

(g.test.string_appeared_here.fn.async t):
(false.fn.async t.async const):
(false.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/rendering/blending-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/blending.html: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/blending.spec.js: Added.

(mapColor):
(computeBlendFactor):
(computeBlendOperation):
(fn.t.switch):

  • http/tests/webgpu/webgpu/api/operation/rendering/depth-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/depth.html: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/depth.spec.js: Added.

(g.test.string_appeared_here.desc.Tests.each.depth.compare.works):

  • http/tests/webgpu/webgpu/api/operation/rendering/depth_clip_clamp-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/depth_clip_clamp.html: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/depth_clip_clamp.spec.js: Added.

(fn.async t):

  • http/tests/webgpu/webgpu/api/operation/rendering/draw-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/draw.html: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/draw.spec.js: Added.

(and.base_vertex.is.used.to.select.the.second.set The):
(9.undefined.fn.async t):
(string_appeared_here.unless.p.p.vertex_attribute_count.p.vertex_buffer_count.unless.p.p.step_mode.string_appeared_here.p.vertex_buffer_count.1.fn.t.switch):
(string_appeared_here.unless.p.p.vertex_attribute_count.p.vertex_buffer_count.unless.p.p.step_mode.string_appeared_here.p.vertex_buffer_count.1.fn.t.b.switch):
(string_appeared_here.unless.p.p.vertex_attribute_count.p.vertex_buffer_count.unless.p.p.step_mode.string_appeared_here.p.vertex_buffer_count.1.fn.t.vertexIndex.instanceIndex.bufferLayouts.forEach):
(string_appeared_here.unless.p.p.vertex_attribute_count.p.vertex_buffer_count.unless.p.p.step_mode.string_appeared_here.p.vertex_buffer_count.1.fn.t.const.pipeline.t.device.createRenderPipeline.vertex.module.t.device.createShaderModule.stage.vertex.fn.main.input.Inputs.Outputs.join):
(string_appeared_here.unless.p.p.vertex_attribute_count.p.vertex_buffer_count.unless.p.p.step_mode.string_appeared_here.p.vertex_buffer_count.1.fn.t.const.pipeline.t.device.createRenderPipeline.fragment.module.t.device.createShaderModule.stage.fragment.fn.main):

  • http/tests/webgpu/webgpu/api/operation/rendering/indirect_draw-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/indirect_draw.html: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/indirect_draw.spec.js: Added.

(F.prototype.MakeIndexBuffer):
(F.prototype.MakeVertexBuffer):
(F.prototype.MakeIndirectBuffer):
(F):

  • http/tests/webgpu/webgpu/api/operation/rendering/robust_access_index-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/robust_access_index.html: Added.
  • http/tests/webgpu/webgpu/api/operation/rendering/robust_access_index.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/resource_init/buffer-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/resource_init/buffer.html: Added.
  • http/tests/webgpu/webgpu/api/operation/resource_init/buffer.spec.js: Added.

(F.prototype.GetBufferUsageFromMapMode):
(F.prototype.async CheckGPUBufferContent):
(F.prototype.TestBufferZeroInitInBindGroup):
(F.prototype.CreateRenderPipelineForTest):
(F.prototype.RecordInitializeTextureColor):
(F.prototype.CheckBufferAndOutputTexture):
(F):
(12.fn.async t):
(kMapModeOptions.fn.async t):
(16.fn.async t):
(kBufferUsagesForMappedAtCreationTests.fn.async t):
(the.contents.of.the.GPUBuffer.have.already.been.initialized.to.0.fn.async t):
(8.fn.async t):
(fn.async t):
(g.test.string_appeared_here.desc.Verify.when.we.resolve.a.query.set into):

  • http/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_copy.js: Added.

(export.const.checkContentsByBufferCopy):
(export.const.checkContentsByTextureCopy):

  • http/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_ds_test.js: Added.

(makeFullscreenVertexModule):
(const.checkContents):

  • http/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_sampling.js: Added.

(export.const.checkContentsBySampling):

  • http/tests/webgpu/webgpu/api/operation/resource_init/texture_zero-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/resource_init/texture_zero.html: Added.
  • http/tests/webgpu/webgpu/api/operation/resource_init/texture_zero.spec.js: Added.

(initializedStateAsColor):
(getRequiredTextureUsage):
(export.TextureZeroInitTest):
(export.TextureZeroInitTest.prototype.get textureWidth):
(export.TextureZeroInitTest.prototype.get textureHeight):
(export.TextureZeroInitTest.prototype.get textureDepth):
(export.TextureZeroInitTest.prototype.get textureDepthOrArrayLayers):
(export.TextureZeroInitTest.prototype.iterateUninitializedSubresources):
(export.TextureZeroInitTest.prototype.iterateInitializedSubresources):
(export.TextureZeroInitTest.prototype.generateTextureViewDescriptorsForRendering):
(export.TextureZeroInitTest.prototype.initializeWithStoreOp):
(export.TextureZeroInitTest.prototype.initializeWithCopy):
(export.TextureZeroInitTest.prototype.initializeTexture):
(export.TextureZeroInitTest.prototype.discardTexture):
(kTextureAspects.unless):
(kUninitializeMethods.unless):
(expandWithParams):
(sampleCount.1.layerCount.1.unless):
(true.filter):
(g.test.string_appeared_here.params.kTestParams.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/sampling/anisotropy-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/sampling/anisotropy.html: Added.
  • http/tests/webgpu/webgpu/api/operation/sampling/anisotropy.spec.js: Added.

(by.testing.how.many.unique.sample.values.come.out.of.the.sample.operation.Check.anisotropy.is.done.in.the.correct.direction.by.having.a.2D.gradient.and.checking.we.get more):
(SamplerAnisotropicFilteringSlantedPlaneTest.prototype.copyRenderTargetToBuffer):
(SamplerAnisotropicFilteringSlantedPlaneTest.prototype.async init):
(SamplerAnisotropicFilteringSlantedPlaneTest.prototype.drawSlantedPlane):
(SamplerAnisotropicFilteringSlantedPlaneTest):
(as.the.sampling.rate.is.different.We.will.also.check.those.large.maxAnisotropy.values.are.clamped.so.that.rendering.is.the.same.as.the.supported.upper.limit.say.16.A.similar.webgl.demo.is.at.https.fn.async t):
(fn.async t):

  • http/tests/webgpu/webgpu/api/operation/sampling/filter_mode-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/sampling/filter_mode.html: Added.
  • http/tests/webgpu/webgpu/api/operation/sampling/filter_mode.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/sampling/lod_clamp-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/sampling/lod_clamp.html: Added.
  • http/tests/webgpu/webgpu/api/operation/sampling/lod_clamp.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/shader_module/compilation_info-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/shader_module/compilation_info.html: Added.
  • http/tests/webgpu/webgpu/api/operation/shader_module/compilation_info.spec.js: Added.

(return.vec4.f32):
(return.unknown):
(g.test.string_appeared_here.desc.Test.that.compilationInfo.can.be.called.on.any.ShaderModule.Test.both.valid.and.invalid.shader.modules.Test.shader.modules.containing.only.ASCII.and.those.containing.unicode.characters.Test.that.the.compilation.info.valid.shader.modules.contains.no.errors.Test.that.the.compilation.info.invalid.shader.modules.contains.at.least.one.error.paramsSimple.kAllShaderSources.fn.async t):
(indicating.an.unknown.position.Test.invalid.shader.modules.containing.containing.at.least.one.error.Test.shader.modules.containing.only.ASCII.and.those.containing.unicode.characters.paramsSimple.kInvalidShaderSources.fn.async t):
(g.test.string_appeared_here.desc.Test.that.message.offsets.and.lengths.are.valid.and.align.with.any.reported.lineNum.and.linePos.Test.valid.and.invalid.shader.modules.Test.shader.modules.containing.only.ASCII.and.those.containing.unicode.characters.paramsSimple.kAllShaderSources.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/texture_view/read-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/texture_view/read.html: Added.
  • http/tests/webgpu/webgpu/api/operation/texture_view/read.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/texture_view/write-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/texture_view/write.html: Added.
  • http/tests/webgpu/webgpu/api/operation/texture_view/write.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/uncapturederror-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/uncapturederror.html: Added.
  • http/tests/webgpu/webgpu/api/operation/uncapturederror.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/vertex_state/correctness-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/vertex_state/correctness.html: Added.
  • http/tests/webgpu/webgpu/api/operation/vertex_state/correctness.spec.js: Added.

(mapBufferAttribs):
(mapStateAttribs):
(prototype.makeTestWGSL):
(prototype.makeTestPipeline):
(prototype.submitRenderPass):
(prototype.generateTestData):
(prototype.expandTestData):
(prototype.interleaveVertexDataInto):
(prototype.createTestAndPipelineData):
(prototype.createExpectedBG):
(prototype.createVertexBuffers):
(prototype.runTest):
(fn.t.i):

  • http/tests/webgpu/webgpu/api/operation/vertex_state/index_format-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/vertex_state/index_format.html: Added.
  • http/tests/webgpu/webgpu/api/operation/vertex_state/index_format.spec.js: Added.

(IndexFormatTest.prototype.MakeRenderPipeline):
(IndexFormatTest.prototype.CreateIndexBuffer):
(IndexFormatTest.prototype.run):
(IndexFormatTest.prototype.CreateExpectedUint8Array):
(IndexFormatTest):
(in.the.case.of.incorrect.results.This.shows.the.expected.result.marked.string_appeared_here.is.different.from.what.you.would.get if):

  • http/tests/webgpu/webgpu/api/validation/attachment_compatibility-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/attachment_compatibility.html: Added.
  • http/tests/webgpu/webgpu/api/validation/attachment_compatibility.spec.js: Added.

(F.prototype.createAttachmentTextureView):
(F.prototype.createColorAttachment):
(F.prototype.createDepthAttachment):
(F.prototype.createRenderPipeline):
(F):
(kDepthStencilAttachmentFormats.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/buffer/create-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/buffer/create.html: Added.
  • http/tests/webgpu/webgpu/api/validation/buffer/create.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/buffer/destroy-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/buffer/destroy.html: Added.
  • http/tests/webgpu/webgpu/api/validation/buffer/destroy.spec.js: Added.

(kBufferUsages.fn.async t):
(g.test.string_appeared_here.desc.string_appeared_here.fn.async t):
(fn.async t):
(unless.p.p.mappedAtCreation.false.p.mapMode.undefined.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/buffer/mapping-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/buffer/mapping.html: Added.
  • http/tests/webgpu/webgpu/api/validation/buffer/mapping.spec.js: Added.

(F.prototype.async testMapAsyncCall):
(F.prototype.testGetMappedRangeCall):
(F.prototype.createMappableBuffer):
(F):
(kBufferUsages.fn.async t):
(kMapModeOptions.fn.async t):
(fn.async t):
(kSizeAlignment.2.fn.async t):
(validation.can.be.performed.asynchronously.in.the.GPU.process.so.the.Content.process.doesn.fn.async t):
(after.a.mapAsync.call.or.after.being.created.mapped.fn.async t):
(g.test.string_appeared_here.desc.Test.that.old.getMappedRange.returned.arraybuffer.does.not.exist.after.unmap.and.newly.returned.arraybuffer.after.new.map.has.correct.subrange.fn.async t):
(g.test.string_appeared_here.desc.string_appeared_here.fn.async t):
(or.after.mappedAtCreation.or.mapAsync.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/buffer/threading-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/buffer/threading.html: Added.
  • http/tests/webgpu/webgpu/api/validation/buffer/threading.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/capability_checks/features/depth_clip_control-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/capability_checks/features/depth_clip_control.html: Added.
  • http/tests/webgpu/webgpu/api/validation/capability_checks/features/depth_clip_control.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/capability_checks/features/query_types-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/capability_checks/features/query_types.html: Added.
  • http/tests/webgpu/webgpu/api/validation/capability_checks/features/query_types.spec.js: Added.

(g.test.string_appeared_here.desc.Tests.that.creating.query.set shouldn):
(true.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/capability_checks/features/texture_formats-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/capability_checks/features/texture_formats.html: Added.
  • http/tests/webgpu/webgpu/api/validation/capability_checks/features/texture_formats.spec.js: Added.

(false.fn.async t):
(fn.async t):

  • http/tests/webgpu/webgpu/api/validation/createBindGroup-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/createBindGroup.html: Added.
  • http/tests/webgpu/webgpu/api/validation/createBindGroup.spec.js: Added.

(clone):
(3.fn.async t):
(2.fn.async t):
(allBindingEntries.false.fn.t.switch):
(allBindingEntries.false.fn.t.t.expectValidationError):
(kTextureUsages.unless):
(fn.async t):
(string_appeared_here.fn.async t):
(kTextureViewDimensions.fn.async t):
(256.fn.t.t.expectValidationError):
(bufferBindingEntries.true.fn.t.t.expectValidationError):
(string_appeared_here.fn.t.t.expectValidationError):
(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/createBindGroupLayout-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/createBindGroupLayout.html: Added.
  • http/tests/webgpu/webgpu/api/validation/createBindGroupLayout.spec.js: Added.

(clone):
(fn.async t):
(allBindingEntries.false.fn.async t):
(kTextureViewDimensions.fn.async t):
(1.fn.async t):
(prototype.async g):

  • http/tests/webgpu/webgpu/api/validation/createComputePipeline-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/createComputePipeline.html: Added.
  • http/tests/webgpu/webgpu/api/validation/createComputePipeline.spec.js: Added.

(F.prototype.getShaderModule):
(F.prototype.getInvalidShaderModule):
(F.prototype.doCreateComputePipelineTest):
(F):
(fn.async t):
(making.sure.that.the.test.working):

  • http/tests/webgpu/webgpu/api/validation/createPipelineLayout-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/createPipelineLayout.html: Added.
  • http/tests/webgpu/webgpu/api/validation/createPipelineLayout.spec.js: Added.

(clone):
(kBufferBindingTypes.fn.async t):
(g.test.string_appeared_here.fn.async t):
(fn.async t):

  • http/tests/webgpu/webgpu/api/validation/createRenderPipeline-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/createRenderPipeline.html: Added.
  • http/tests/webgpu/webgpu/api/validation/createRenderPipeline.spec.js: Added.

(F.prototype.getFragmentShaderCode):
(F.prototype.getDescriptor):
(F.prototype.getPipelineLayout):
(F.prototype.createTexture):
(F.prototype.doCreateRenderPipelineTest):
(F):
(true.fn.async t):
(kTextureFormats.fn.async t):
(kCompareFunctions.fn.async t):
(kStencilOperations.fn.async t):
(fn.async t):
(4.fn.async t):
(kRenderableColorTextureFormats.fn.async t):
(kBlendOperations.fn.async t):
(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/createSampler-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/createSampler.html: Added.
  • http/tests/webgpu/webgpu/api/validation/createSampler.spec.js: Added.

(4e30.fn.async t):
(g.test.string_appeared_here.desc.string_appeared_here.params.u.u.beginSubcases.combineWithParams.u.combine):
(fn.async t):

  • http/tests/webgpu/webgpu/api/validation/createTexture-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/createTexture.html: Added.
  • http/tests/webgpu/webgpu/api/validation/createTexture.spec.js: Added.

(format.fn.async t):
(kTextureFormats.fn.async t):
(dimension.string_appeared_here.largestDimension.0.fn.async t):
(format.string_appeared_here.dimension.string_appeared_here.dimension.string_appeared_here.size.0.kTextureFormatInfo.format.blockWidth.0.size.1.kTextureFormatInfo.format.blockHeight.0.fn.async t):
(g.test.string_appeared_here.desc.Test.mip.level.count.bound.check.when.mipLevelCount.is.bigger.than.integer.bit.width.fn.async t):
(format.unless):
(fn.async t):
(2.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/createView-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/createView.html: Added.
  • http/tests/webgpu/webgpu/api/validation/createView.spec.js: Added.

(kTextureFormats.fn.async t):
(undefined.fn.t.t.expectValidationError):
(kTextureAspects.fn.async t):
(validateCreateViewLayersLevels):
(const.lastArrayLayer.of.new.Set):
(fn.t.t.expectValidationError):
(const.lastMipLevel.of.new.Set):
(fn.async t):
(kResourceStates.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/create_pipeline-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/create_pipeline.html: Added.
  • http/tests/webgpu/webgpu/api/validation/create_pipeline.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/beginRenderPass-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/beginRenderPass.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/beginRenderPass.spec.js: Added.

(fn.async t):
(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/buffer_texture_copies-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/buffer_texture_copies.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/buffer_texture_copies.spec.js: Added.

(ImageCopyTest.prototype.testCopyBufferToTexture):
(ImageCopyTest.prototype.testCopyTextureToBuffer):
(ImageCopyTest.prototype.testWriteTexture):
(ImageCopyTest):
(string_appeared_here.fn.async t):
(fn.async t):
(8.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/clearBuffer-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/clearBuffer.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/clearBuffer.spec.js: Added.

(F.prototype.TestClearBuffer):
(F):
(g.test.string_appeared_here.desc.Test.that.clearing.an.error.buffer.fails.fn.async t):
(fn.async t):
(kBufferUsages.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/compute_pass-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/compute_pass.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/compute_pass.spec.js: Added.

(F.prototype.createComputePipeline):
(F.prototype.createIndirectBuffer):
(F):
(1.fn.t.else):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyBufferToBuffer-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyBufferToBuffer.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyBufferToBuffer.spec.js: Added.

(F.prototype.TestCopyBufferToBuffer):
(F):
(g.test.string_appeared_here.fn.async t):
(kBufferUsages.fn.async t):
(fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.js: Added.

(F.prototype.TestCopyTextureToTexture):
(F.prototype.GetPhysicalSubresourceSize):
(F):
(kResourceStates.fn.async t):
(unless.p.p.dimension.string_appeared_here.p.srcLevelCount.1.p.dstLevelCount.1.fn.async t):
(kTextureUsages.fn.async t):
(4.fn.async t):
(8.fn.async t):
(kTextureFormats.fn.async t):
(1.fn.async t):
(3.unless.p.p.dimension.string_appeared_here.p.srcCopyLevel.0.p.dstCopyLevel.0.fn.async t):
(3.fn.async t):
(string_appeared_here.fn.async t):
(2.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/debug-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/debug.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/debug.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/index_access-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/index_access.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/index_access.spec.js: Added.

(F.prototype.createIndexBuffer):
(F.prototype.createRenderPipeline):
(F.prototype.beginRenderPass):
(F.prototype.drawIndexed):
(F):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/draw-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/draw.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/draw.spec.js: Added.

(callDrawIndexed):
(and.test.that.draw.and.drawIndexed.will.success.error.as.expected.Such.set of):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/dynamic_state-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/dynamic_state.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/dynamic_state.spec.js: Added.

(out.of.range.used.with.a.simple.pipeline.that.used.with.a.simple.pipeline.that.F.prototype.testViewportCall):
(out.of.range.used.with.a.simple.pipeline.that.used.with.a.simple.pipeline.that.F.prototype.testScissorCall):
(out.of.range.used.with.a.simple.pipeline.that.used.with.a.simple.pipeline.that.F.prototype.createDummyRenderPassEncoder):
(out.of.range.used.with.a.simple.pipeline.that.used.with.a.simple.pipeline.that.F):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/indirect_draw-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/indirect_draw.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/indirect_draw.spec.js: Added.

(F.prototype.makeIndexBuffer):
(F):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/render.js: Added.

(export.buildBufferOffsetAndSizeOOBTestParams):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setIndexBuffer-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setIndexBuffer.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setIndexBuffer.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setPipeline-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setPipeline.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setPipeline.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setVertexBuffer-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setVertexBuffer.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setVertexBuffer.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/state_tracking-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/state_tracking.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/state_tracking.spec.js: Added.

(F.prototype.getVertexBuffer):
(F.prototype.createRenderPipeline):
(F.prototype.beginRenderPass):
(F):
(g.test.string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render_pass-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render_pass.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render_pass.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/setBindGroup-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/setBindGroup.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/setBindGroup.spec.js: Added.

(F.prototype.encoderTypeToStageFlag):
(F.prototype.createBindingResourceWithState):
(F.prototype.createBindGroup):
(F):
(string_appeared_here.fn.async t.async runTest):
(string_appeared_here.fn.async t):
(kProgrammableEncoderTypes.fn.async t):
(true.fn.async t):
(fn.t.const.doSetBindGroup):

  • http/tests/webgpu/webgpu/api/validation/encoding/createRenderBundleEncoder-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/createRenderBundleEncoder.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/createRenderBundleEncoder.spec.js: Added.

(string_appeared_here.filter):
(fn.async t):
(string_appeared_here.fn.async t):
(true.fn.async t):
(g.test.string_appeared_here.desc.Tests.that.createRenderBundleEncoder.validation.of.depthReadOnly.and.stencilReadOnly.is.ignored.there.is.no.depthStencilFormat.set params):

  • http/tests/webgpu/webgpu/api/validation/encoding/encoder_state-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/encoder_state.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/encoder_state.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/programmable/pipeline_bind_group_compat-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/programmable/pipeline_bind_group_compat.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/programmable/pipeline_bind_group_compat.spec.js: Added.

(getTestCmds):
(F.prototype.getIndexBuffer):
(F.prototype.getIndirectBuffer):
(F.prototype.getBindingResourceType):
(F.prototype.createRenderPipelineWithLayout):
(F.prototype.createComputePipelineWithLayout):
(F.prototype.createBindGroupWithLayout):
(F.prototype.doCompute):
(F.prototype.doRender):
(F.prototype.createBindGroupLayoutEntry):
(F.prototype.runTest):
(F):
(g.test.string_appeared_here.desc.Tests.the.bind.groups.must.match.the.requirements.of.the.pipeline.layout.bind.groups.required.by.the.pipeline.layout.are.required.bind.groups.unused.by.the.pipeline.layout.can.be.set or):

  • http/tests/webgpu/webgpu/api/validation/encoding/queries/begin_end-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/queries/begin_end.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/queries/begin_end.spec.js: Added.

(fn.async t):
(true.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/queries/common.js: Added.

(export.createQuerySetWithType):
(export.beginRenderPassWithQuerySet):

  • http/tests/webgpu/webgpu/api/validation/encoding/queries/general-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/queries/general.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/queries/general.spec.js: Added.

(g.test.string_appeared_here.desc.Tests.that.set occlusion.query.set with):
(g.test.string_appeared_here.desc.Tests.that.set occlusion):
(fn.async t):
(g.test.string_appeared_here.desc.Tests.that.begin.occlusion.query.with.a.invalid.query.set that):
(occlusion.query.set in):
(g.test.string_appeared_here.desc.Tests.that.write.timestamp.to.all.types.of.query.set on):
(2.0.fn.async t):
(g.test.string_appeared_here.desc.Tests.that.write.timestamp.to.a.invalid.query.set that):
(string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/queries/pipeline_statistics-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/queries/pipeline_statistics.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/queries/pipeline_statistics.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/queries/resolveQuerySet-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/queries/resolveQuerySet.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/queries/resolveQuerySet.spec.js: Added.

(g.test.string_appeared_here.desc.Tests.that.resolve.query.set with):
(fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/render_bundle-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/render_bundle.html: Added.
  • http/tests/webgpu/webgpu/api/validation/encoding/render_bundle.spec.js: Added.

(g.test.string_appeared_here.desc.Test.that.it.is.valid.to.execute.an.empty.list.of.render.bundles.fn.async t):
(fn.async t):

  • http/tests/webgpu/webgpu/api/validation/error_scope-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/error_scope.html: Added.
  • http/tests/webgpu/webgpu/api/validation/error_scope.spec.js: Added.

(F.prototype.get device):
(F.prototype.async init):
(F.prototype.createErrorBuffer):
(F.prototype.async expectUncapturedError):
(F):
(g.test.string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/image_copy/buffer_related-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/image_copy/buffer_related.html: Added.
  • http/tests/webgpu/webgpu/api/validation/image_copy/buffer_related.spec.js: Added.

(kResourceStates.fn.async t):
(fn.async t):
(bytesPerRow.undefined.copyHeightInBlocks.1.bytesPerRow.undefined.bytesPerRow.kTextureFormatInfo.format.bytesPerBlock.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/image_copy/image_copy.js: Added.

(export.ImageCopyTest.prototype.testRun):
(export.ImageCopyTest.prototype.createAlignedTexture):
(export.ImageCopyTest.prototype.testBuffer):
(export.ImageCopyTest):
(valuesToTestDivisibilityBy):
(export.texelBlockAlignmentTestExpanderForOffset):

  • http/tests/webgpu/webgpu/api/validation/image_copy/layout_related-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/image_copy/layout_related.html: Added.
  • http/tests/webgpu/webgpu/api/validation/image_copy/layout_related.spec.js: Added.

(3.unless.p.p.dimension.string_appeared_here.p.copyHeightInBlocks.1.unless.p.p.copyDepth.p.size.2.fn.async t):
(fn.async t):
(filter):
(unless.p.p.dimension.string_appeared_here.p.copyHeightInBlocks.1.p.copyDepth.1.fn.async t):
(rowsPerImage.kTextureFormatInfo.format.blockHeight.fn.async t):
(texelBlockAlignmentTestExpanderForOffset.fn.async t):
(2.unless.p.p.dimension.string_appeared_here.p.copyHeightInBlocks.1.p.copyDepth.1.expandWithParams.p._success):
(2.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/image_copy/texture_related-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/image_copy/texture_related.html: Added.
  • http/tests/webgpu/webgpu/api/validation/image_copy/texture_related.spec.js: Added.

(fn.async t):
(4.fn.async t):
(1.0.fn.async t):
(texelBlockAlignmentTestExpanderForValueToCoordinate.fn.async t):
(2.unless.p.p.dimension.string_appeared_here.p.coordinateToTest.0.p.mipLevel.0.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/initialization/requestDevice-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/initialization/requestDevice.html: Added.
  • http/tests/webgpu/webgpu/api/validation/initialization/requestDevice.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/layout_shader_compat-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/layout_shader_compat.html: Added.
  • http/tests/webgpu/webgpu/api/validation/layout_shader_compat.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/query_set/create-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/query_set/create.html: Added.
  • http/tests/webgpu/webgpu/api/validation/query_set/create.spec.js: Added.

(g.test.string_appeared_here.desc.Tests.that.create.query.set with):
(kMaxQueryCount.1.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/query_set/destroy-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/query_set/destroy.html: Added.
  • http/tests/webgpu/webgpu/api/validation/query_set/destroy.spec.js: Added.

(export.const.description.Destroying.a.query.set more):
(g.test.string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/queue/buffer_mapped-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/buffer_mapped.html: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/buffer_mapped.spec.js: Added.

(F.prototype.async runBufferDependencyTest):
(F):
(g.test.string_appeared_here.desc.Test.that.an.outstanding.mapping.will.prevent.writeBuffer.calls.fn.async t):
(both.when.used.as.the.source.and.destination.fn.async t):
(g.test.string_appeared_here.desc.Test.that.an.outstanding.mapping.will.prevent.copyBufferToTexture.commands.from.submitting.fn.async t):
(g.test.string_appeared_here.desc.Test.that.an.outstanding.mapping.will.prevent.copyTextureToBuffer.commands.from.submitting.fn.async t):
(fn.async t.const.steps.submit.async t):

  • http/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.html: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.js: Added.

(computeMipMapSize):
(generateCopySizeForSrcOOB):

  • http/tests/webgpu/webgpu/api/validation/queue/destroyed/buffer-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/destroyed/buffer.html: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/destroyed/buffer.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/destroyed/query_set-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/destroyed/query_set.html: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/destroyed/query_set.spec.js: Added.

(export.const.description.Tests.using.a.destroyed.query.set on):
(g.test.string_appeared_here.desc.Tests.that.use.a.destroyed.query.set in):
(string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/queue/submit-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/submit.html: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/submit.spec.js: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/writeBuffer-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/writeBuffer.html: Added.
  • http/tests/webgpu/webgpu/api/validation/queue/writeBuffer.spec.js: Added.

(g.test.string_appeared_here.desc.Tests.that.the.data.ranges.given.to.GPUQueue.writeBuffer.are.properly.validated.Tests.calling.writeBuffer.with.both.TypedArrays.and.ArrayBuffers.and.checks.that.the.data.offset.and.size.is.interpreted.correctly.both.When.passing.a.TypedArray.the.data.offset.and.size.is.given.in.elements.When.passing.an.ArrayBuffer.the.data.offset.and.size.is.given.in.bytes.Also.verifies.that.the.specified.data.range.Describes.a.valid.range.of.the.destination.buffer.and.source.buffer.Fits.fully.within.the.destination.buffer.Has.a.byte.size.is.a.multiple.of.4.fn.async t.runTest):
(g.test.string_appeared_here.desc.Tests.that.the.data.ranges.given.to.GPUQueue.writeBuffer.are.properly.validated.Tests.calling.writeBuffer.with.both.TypedArrays.and.ArrayBuffers.and.checks.that.the.data.offset.and.size.is.interpreted.correctly.both.When.passing.a.TypedArray.the.data.offset.and.size.is.given.in.elements.When.passing.an.ArrayBuffer.the.data.offset.and.size.is.given.in.bytes.Also.verifies.that.the.specified.data.range.Describes.a.valid.range.of.the.destination.buffer.and.source.buffer.Fits.fully.within.the.destination.buffer.Has.a.byte.size.is.a.multiple.of.4.fn.async t):
(fn.async t):

  • http/tests/webgpu/webgpu/api/validation/render_pass/resolve-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/render_pass/resolve.html: Added.
  • http/tests/webgpu/webgpu/api/validation/render_pass/resolve.spec.js: Added.

(fn.async t):

  • http/tests/webgpu/webgpu/api/validation/render_pass/storeOp-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/render_pass/storeOp.html: Added.
  • http/tests/webgpu/webgpu/api/validation/render_pass/storeOp.spec.js: Added.

(fn.async t):

  • http/tests/webgpu/webgpu/api/validation/render_pass_descriptor-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/render_pass_descriptor.html: Added.
  • http/tests/webgpu/webgpu/api/validation/render_pass_descriptor.spec.js: Added.

(F.prototype.createTexture):
(F.prototype.getColorAttachment):
(F.prototype.getDepthStencilAttachment):
(F.prototype.async tryRenderPass):
(F):
(fn.async t):
(g.test.string_appeared_here.fn.async t):
(kRenderableColorTextureFormats.filter.t.kTextureFormatInfo.t.format.multisample.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_pass_encoder-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_pass_encoder.html: Added.
  • http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_pass_encoder.spec.js: Added.

(TextureUsageTracking.prototype.createTexture):
(TextureUsageTracking.prototype.createBindGroupLayout):
(TextureUsageTracking.prototype.createBindGroup):
(TextureUsageTracking.prototype.createAndExecuteBundle):
(TextureUsageTracking.prototype.beginSimpleRenderPass):
(TextureUsageTracking.prototype.testValidationScope):
(TextureUsageTracking.prototype.setPipeline):
(TextureUsageTracking.prototype.issueDrawOrDispatch):
(TextureUsageTracking.prototype.setComputePipelineAndCallDispatch):
(TextureUsageTracking):
(unless.p.p.type0.string_appeared_here.p.levelCount0.1.p.layerCount0.1.p.type1.string_appeared_here.p.levelCount1.1.p.layerCount1.1.p.type0.string_appeared_here.p.type1.string_appeared_here.p.baseLevel1.BASE_LEVEL.fn.async t):
(unless.p.kTextureFormatInfo.p.format.depth.kTextureFormatInfo.p.format.stencil.p.aspect0.string_appeared_here.p.type0.string_appeared_here.p.aspect1.string_appeared_here.p.type1.string_appeared_here.unless.p.p.binding1InBundle.p.type1.string_appeared_here.unless.p.p.compute.p.binding0InBundle.p.binding1InBundle.p.type1.string_appeared_here.fn.async t):
(kShaderStages.unless.p.p.compute.Boolean.p.writeVisibility.GPUConst.ShaderStage.VERTEX.fn.async t):
(fn.async t):
(true.expandWithParams):
(unless.p.p.binding0InBundle.p.type0.string_appeared_here.p.binding1InBundle.p.type1.string_appeared_here.p.binding0InBundle.p.binding1InBundle.p._sampleCount.undefined.p._sampleCount.1.p._usage0.string_appeared_here.p._usage1.string_appeared_here.p.type0.string_appeared_here.p.type1.string_appeared_here.p.type0.string_appeared_here.p.type1.string_appeared_here.fn.async t):
(true.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_common-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_common.html: Added.
  • http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_common.spec.js: Added.

(F.prototype.getColorAttachment):
(F):
(false.unless.t.t.inSamePass.t.baseLevel0.t.baseLevel1.fn.async t):
(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_misc-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_misc.html: Added.
  • http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_misc.spec.js: Added.

(or.different.subresources.of.the.same.texture.texture.usages.in.copies.and.in.render.pass.consecutively.set bind):

  • http/tests/webgpu/webgpu/api/validation/texture/destroy-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/texture/destroy.html: Added.
  • http/tests/webgpu/webgpu/api/validation/texture/destroy.spec.js: Added.

(fn.async t):

  • http/tests/webgpu/webgpu/api/validation/validation_test.js: Added.

(export.ValidationTest.prototype.createTextureWithState):
(export.ValidationTest.prototype.createBufferWithState):
(export.ValidationTest.prototype.createQuerySetWithState):
(export.ValidationTest.prototype.getStorageBuffer):
(export.ValidationTest.prototype.getUniformBuffer):
(export.ValidationTest.prototype.getErrorBuffer):
(export.ValidationTest.prototype.getErrorSampler):
(export.ValidationTest.prototype.getSampledTexture):
(export.ValidationTest.prototype.getStorageTexture):
(export.ValidationTest.prototype.getRenderTexture):
(export.ValidationTest.prototype.getErrorTexture):
(export.ValidationTest.prototype.getErrorTextureView):
(export.ValidationTest.prototype.getBindingResource):
(export.ValidationTest.prototype.getDeviceMismatchedStorageBuffer):
(export.ValidationTest.prototype.getDeviceMismatchedUniformBuffer):
(export.ValidationTest.prototype.getDeviceMismatchedTexture):
(export.ValidationTest.prototype.getDeviceMismatchedSampledTexture):
(export.ValidationTest.prototype.getDeviceMismatchedStorageTexture):
(export.ValidationTest.prototype.getDeviceMismatchedRenderTexture):
(export.ValidationTest.prototype.getDeviceMismatchedBindingResource):
(export.ValidationTest.prototype.createRenderPipelineWithState):
(export.ValidationTest.prototype.createNoOpRenderPipeline):
(export.ValidationTest.prototype.createErrorRenderPipeline):
(export.ValidationTest.prototype.createNoOpComputePipeline):
(export.ValidationTest.prototype.createErrorComputePipeline):
(export.ValidationTest):

  • http/tests/webgpu/webgpu/api/validation/vertex_state-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/vertex_state.html: Added.
  • http/tests/webgpu/webgpu/api/validation/vertex_state.spec.js: Added.

(addTestAttributes):

  • http/tests/webgpu/webgpu/capability_info.js: Added.

(export.depthStencilFormatCopyableAspects):
(export.depthStencilBufferTextureCopySupported):
(export.depthStencilFormatAspectSize):
(export.textureDimensionAndFormatCompatible):
(export.bufferBindingTypeInfo):
(export.samplerBindingTypeInfo):
(export.sampledTextureBindingTypeInfo):
(export.storageTextureBindingTypeInfo):
(export.texBindingTypeInfo):
(export.bindingTypeInfo):
(export.bufferBindingEntries):
(export.samplerBindingEntries):
(export.textureBindingEntries):
(export.storageTextureBindingEntries):
(export.sampledAndStorageBindingEntries):
(export.allBindingEntries):

  • http/tests/webgpu/webgpu/constants.js: Added.

(checkType):

  • http/tests/webgpu/webgpu/examples-expected.txt: Added.
  • http/tests/webgpu/webgpu/examples.html: Added.
  • http/tests/webgpu/webgpu/examples.spec.js: Added.

(g.test.string_appeared_here.fn.async t):
(async g):

  • http/tests/webgpu/webgpu/gpu_test.js: Added.

(export.initUncanonicalizedDeviceDescriptor):
(export.GPUTest.prototype.get device):
(export.GPUTest.prototype.get mismatchedDevice):
(export.GPUTest.prototype.async selectMismatchedDeviceOrSkipTestCase):
(export.GPUTest.prototype.get queue):
(export.GPUTest.prototype.async init):
(export.GPUTest.prototype.async finalize):
(export.GPUTest.prototype.async selectDeviceOrSkipTestCase):
(export.GPUTest.prototype.async selectDeviceForTextureFormatOrSkipTestCase):
(export.GPUTest.prototype.async selectDeviceForQueryTypeOrSkipTestCase):
(export.GPUTest.prototype.createCopyForMapRead):
(export.GPUTest.prototype.createAlignedCopyForMapRead):
(export.GPUTest.prototype.async readGPUBufferRangeTyped):
(export.GPUTest.prototype.expectGPUBufferValuesPassCheck):
(export.GPUTest.prototype.async expectGPUBufferValuesEqual):
(export.GPUTest.prototype.expectGPUBufferRepeatsSingleValue):
(export.GPUTest.prototype.expectSingleColor):
(export.GPUTest.prototype.readSinglePixelFrom2DTexture):
(export.GPUTest.prototype.expectSinglePixelIn2DTexture):
(export.GPUTest.prototype.expectSinglePixelBetweenTwoValuesFloat16In2DTexture):
(export.GPUTest.prototype.expectGPUError.async return):
(export.GPUTest.prototype.expectGPUError):
(export.GPUTest.prototype.async makeBufferWithContents):
(export.GPUTest.prototype.createTexture2DWithMipmaps):
(export.GPUTest.prototype.createEncoder):
(export.GPUTest):

  • http/tests/webgpu/webgpu/idl/constants/flags-expected.txt: Added.
  • http/tests/webgpu/webgpu/idl/constants/flags.html: Added.
  • http/tests/webgpu/webgpu/idl/constants/flags.spec.js: Added.
  • http/tests/webgpu/webgpu/idl/exposed.html.js: Added.
  • http/tests/webgpu/webgpu/idl/exposed.http-expected.txt: Added.
  • http/tests/webgpu/webgpu/idl/exposed.http.html: Added.
  • http/tests/webgpu/webgpu/idl/exposed.https-expected.txt: Added.
  • http/tests/webgpu/webgpu/idl/exposed.https.html: Added.
  • http/tests/webgpu/webgpu/idl/idl_test.js: Added.

(export.IDLTest.prototype.async init):
(export.IDLTest.prototype.assertMember):
(export.IDLTest.prototype.assertMemberCount):
(export.IDLTest):

  • http/tests/webgpu/webgpu/listing.js: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/binary/binary.js: Added.

(export.binary):

  • http/tests/webgpu/webgpu/shader/execution/expression/binary/bitwise-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/binary/bitwise.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/binary/bitwise.spec.js: Added.

(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_arithmetic-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_arithmetic.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_arithmetic.spec.js: Added.

(fullNumericRange):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/abs-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/abs.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/abs.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/all-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/all.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/all.spec.js: Added.

(import):
(string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/any-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/any.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/any.spec.js: Added.

(import):
(string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan2-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan2.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan2.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/builtin.js: Added.

(export.builtin):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ceil-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ceil.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ceil.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/clamp-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/clamp.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/clamp.spec.js: Added.

(import):
(generateTestCases):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cos-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cos.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cos.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countLeadingZeros-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countLeadingZeros.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countLeadingZeros.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countOneBits-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countOneBits.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countOneBits.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countTrailingZeros-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countTrailingZeros.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countTrailingZeros.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/extractBits-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/extractBits.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/extractBits.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstLeadingBit-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstLeadingBit.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstLeadingBit.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstTrailingBit-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstTrailingBit.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstTrailingBit.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/float_built_functions-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/float_built_functions.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/float_built_functions.spec.js: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/floor-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/floor.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/floor.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fract-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fract.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fract.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/insertBits-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/insertBits.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/insertBits.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/inversesqrt-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/inversesqrt.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/inversesqrt.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ldexp-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ldexp.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ldexp.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log.spec.js: Added.

(import):
(string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log2-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log2.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log2.spec.js: Added.

(import):
(string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/logical_built_in_functions-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/logical_built_in_functions.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/logical_built_in_functions.spec.js: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/max-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/max.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/max.spec.js: Added.

(import):
(generateTestCases):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/min-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/min.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/min.spec.js: Added.

(import):
(generateTestCases):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/reverseBits-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/reverseBits.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/reverseBits.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/select-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/select.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/select.spec.js: Added.

(makeBool):
(string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sin-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sin.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sin.spec.js: Added.

(import):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/value_testing_built_in_functions-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/value_testing_built_in_functions.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/value_testing_built_in_functions.spec.js: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/expression.js: Added.

(toComparator):
(storageType):
(fromStorage):
(toStorage):
(export.run):

  • http/tests/webgpu/webgpu/shader/execution/expression/unary/f32_arithmetic-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/unary/f32_arithmetic.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/unary/f32_arithmetic.spec.js: Added.

(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/unary/unary.js: Added.

(export.unary):

  • http/tests/webgpu/webgpu/shader/execution/memory_model/atomicity-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/memory_model/atomicity.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/memory_model/atomicity.spec.js: Added.

(const.resultCode):
(else):
(fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/memory_model/barrier-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/memory_model/barrier.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/memory_model/barrier.spec.js: Added.

(fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/memory_model/coherence-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/memory_model/coherence.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/memory_model/coherence.spec.js: Added.

(fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/memory_model/memory_model_setup.js: Added.

(export.MemoryModelTester):
(export.MemoryModelTester.prototype.async run):
(export.MemoryModelTester.prototype.checkWeakIndex):
(export.MemoryModelTester.prototype.checkResult):
(export.MemoryModelTester.prototype.resultPrinter):
(export.MemoryModelTester.prototype.copyBufferToBuffer):
(export.MemoryModelTester.prototype.getRandomInt):
(export.MemoryModelTester.prototype.getRandomInRange):
(export.MemoryModelTester.prototype.shuffleArray):
(export.MemoryModelTester.prototype.async setShuffledWorkgroups):
(export.MemoryModelTester.prototype.async setScratchLocations):
(export.MemoryModelTester.prototype.async setStressParams):
(const.testShaderFunctions.fn.spin):
(fn.do_stress):
(builtin):
(export.buildTestShader):
(export.buildResultShader):

  • http/tests/webgpu/webgpu/shader/execution/memory_model/weak-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/memory_model/weak.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/memory_model/weak.spec.js: Added.

(fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/robust_access-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/robust_access.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/robust_access.spec.js: Added.

(runShaderTest):
(testFillArrayBuffer):

  • http/tests/webgpu/webgpu/shader/execution/robust_access_vertex-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/robust_access_vertex.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/robust_access_vertex.spec.js: Added.

(DrawCall.prototype.this.vertexBuffers.vertexArrays.map):
(DrawCall.prototype.insertInto):
(DrawCall.prototype.draw):
(DrawCall.prototype.drawIndexed):
(DrawCall.prototype.drawIndirect):
(DrawCall.prototype.drawIndexedIndirect):
(DrawCall.prototype.bindVertexBuffers):
(DrawCall.prototype.generateVertexBuffer):
(DrawCall.prototype.generateIndirectBuffer):
(DrawCall.prototype.generateIndexedIndirectBuffer):
(DrawCall):
(F.prototype.generateBufferContents):
(F.prototype.generateVertexBufferDescriptors):
(F.prototype.generateVertexShaderCode):
(F.prototype.createRenderPipeline):
(F.prototype.doTest):
(F):
(else):
(10.6.unless.p.p.drawCallTestParameter.string_appeared_here.p.errorScale.10.4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/sampling/gradients_in_varying_loop-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/sampling/gradients_in_varying_loop.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/sampling/gradients_in_varying_loop.spec.js: Added.

(DerivativesTest.prototype.copyRenderTargetToBuffer):
(DerivativesTest.prototype.async init):
(DerivativesTest.prototype.drawQuad):
(DerivativesTest):
(3.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/shader_io/compute_builtins-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/shader_io/compute_builtins.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/shader_io/compute_builtins.spec.js: Added.

(beginSubcases.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/shader_io/shared_structs-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/shader_io/shared_structs.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/shader_io/shared_structs.spec.js: Added.

(and.the.layout.attributes.should.be.ignored.when.used.as.an.entry.point.IO.parameter.fn.async t):
(and.uses.it.as.both.the.output.of.a.vertex.shader.and.the.input.to.a.fragment.shader.fn.async t):
(and.uses.those.structures.as.parameter.and.return.types.entry.point.functions.and.regular.functions.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/zero_init-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/zero_init.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/zero_init.spec.js: Added.

(prettyPrint):
(and.storage):

  • http/tests/webgpu/webgpu/shader/types.js: Added.

(export.generateTypes):

  • http/tests/webgpu/webgpu/shader/validation/shader_io/builtins-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/validation/shader_io/builtins.html: Added.
  • http/tests/webgpu/webgpu/shader/validation/shader_io/builtins.spec.js: Added.

(string_appeared_here.beginSubcases.fn.t.stage.vertex.fn.main):

  • http/tests/webgpu/webgpu/shader/validation/shader_io/generic-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/validation/shader_io/generic.html: Added.
  • http/tests/webgpu/webgpu/shader/validation/shader_io/generic.spec.js: Added.

(string_appeared_here.beginSubcases.fn.t.location):
(string_appeared_here.beginSubcases.fn.t.builtin):
(string_appeared_here.beginSubcases.fn.t.stage.fragment.fn.frag_main):
(string_appeared_here.beginSubcases.fn.t.stage.compute.workgroup_size.1.fn.comp_main):
(string_appeared_here.beginSubcases.fn.t.const.code.stage.vertex.fn.vert_main):

  • http/tests/webgpu/webgpu/shader/validation/shader_io/interpolate-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/validation/shader_io/interpolate.html: Added.
  • http/tests/webgpu/webgpu/shader/validation/shader_io/interpolate.spec.js: Added.

(false.beginSubcases.fn.t.t.params.stage.string_appeared_here.t.params.use_struct.false.t.params.attribute.includes):

  • http/tests/webgpu/webgpu/shader/validation/shader_io/invariant-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/validation/shader_io/invariant.html: Added.
  • http/tests/webgpu/webgpu/shader/validation/shader_io/invariant.spec.js: Added.

(false.beginSubcases.fn.t.const.code.struct.VertexOut.location):

  • http/tests/webgpu/webgpu/shader/validation/shader_io/locations-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/validation/shader_io/locations.html: Added.
  • http/tests/webgpu/webgpu/shader/validation/shader_io/locations.spec.js: Added.
  • http/tests/webgpu/webgpu/shader/validation/shader_io/util.js: Added.

(export.generateShader):

  • http/tests/webgpu/webgpu/shader/validation/shader_validation_test.js: Added.

(export.ShaderValidationTest.prototype.expectCompileResult):
(export.ShaderValidationTest):

  • http/tests/webgpu/webgpu/shader/validation/variable_and_const-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/validation/variable_and_const.html: Added.
  • http/tests/webgpu/webgpu/shader/validation/variable_and_const.spec.js: Added.

(kTestTypes.fn.t.const.code.stage.fragment.fn.main):
(fn.t.prototype.stage.fn.main):
(fn.t.prototype.else):
(fn.t.else.prototype.stage.fn.main):
(so.no.cts.this.struct.with.bool.component.struct.with.runtime.array.Control.case.string_appeared_here.is.used.to.make.sure.when.only.the.storage.changes):

  • http/tests/webgpu/webgpu/shader/validation/wgsl/basic-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/validation/wgsl/basic.html: Added.
  • http/tests/webgpu/webgpu/shader/validation/wgsl/basic.spec.js: Added.

(g.test.string_appeared_here.desc.A.trivial.correct.and.incorrect.shader.fn.t.stage.vertex.stage.fragment.fn.main):

  • http/tests/webgpu/webgpu/shader/values.js: Added.

(export.subnormalF32Examples):
(export.normalF32Examples):
(export.nanF32BitsExamples):

  • http/tests/webgpu/webgpu/util/buffer.js: Added.

(export.makeBufferWithContents):

  • http/tests/webgpu/webgpu/util/check_contents.js: Added.

(export.checkElementsEqual):
(export.checkElementsBetween):
(export.checkElementsFloat16Between):
(export.checkElementsEqualEither):
(export.checkElementsEqualGenerated):
(export.checkElementsPassPredicate):
(export.checkElementsPassPredicate.):

  • http/tests/webgpu/webgpu/util/color_space_conversion.js: Added.

(lin_sRGB):
(XYZ_to_lin_sRGB):
(lin_P3):
(gam_P3):
(lin_P3_to_XYZ):
(XYZ_to_lin_P3):
(export.displayP3ToSrgb):
(export.srgbToDisplayP3):

  • http/tests/webgpu/webgpu/util/command_buffer_maker.js: Added.

(export.CommandBufferMaker):

  • http/tests/webgpu/webgpu/util/compare.js: Added.

(export.absThreshold):
(export.ulpThreshold):
(export.correctlyRoundedThreshold):
(export.compare):

  • http/tests/webgpu/webgpu/util/constants.js: Added.

(hexToF32):

  • http/tests/webgpu/webgpu/util/conversion.js: Added.

(export.floatAsNormalizedInteger):
(export.normalizedIntegerAsFloat):
(export.float32ToFloatBits):
(export.float32ToFloat16Bits):
(export.float16BitsToFloat32):
(export.float32BitsToNumber):
(export.numberToFloat32Bits):
(export.floatBitsToNumber):
(export.floatBitsToNormalULPFromZero):
(export.packRGB9E5UFloat):
(export.assertInIntegerRange):
(export.gammaCompress):
(export.gammaDecompress):
(export.float32ToUint32):
(export.uint32ToFloat32):
(export.float32ToInt32):
(export.uint32ToInt32):
(export.ScalarType):
(export.ScalarType.prototype.toString):
(export.VectorType):
(export.VectorType.prototype.read):
(export.VectorType.prototype.toString):
(export.TypeVec):
(export.scalarType):
(export.numElementsOf):
(export.scalarTypeOf):
(export.Scalar):
(export.Scalar.prototype.copyTo):
(export.Scalar.prototype.toString):
(export.f32):
(export.f32Bits):
(export.f16Bits):
(export.i32):
(export.i16):
(export.i8):
(export.i32Bits):
(export.i16Bits):
(export.i8Bits):
(export.u32):
(export.u16):
(export.u8):
(export.u32Bits):
(export.u16Bits):
(export.u8Bits):
(export.bool):
(export.Vector):
(export.Vector.prototype.copyTo):
(export.Vector.prototype.toString):
(export.Vector.prototype.get x):
(export.Vector.prototype.get y):
(export.Vector.prototype.get z):
(export.Vector.prototype.get w):
(export.vec2):
(export.vec3):
(export.vec4):

  • http/tests/webgpu/webgpu/util/copy_to_texture.js: Added.

(isFp16Format):
(isFp32Format):
(isUnormFormat):
(export.CopyToTextureUtils.prototype.doFlipY):
(export.CopyToTextureUtils.prototype.formatForExpectedPixels):
(export.CopyToTextureUtils.prototype.getSourceImageBitmapPixels):
(export.CopyToTextureUtils.prototype.getExpectedPixels):
(export.CopyToTextureUtils.prototype.checkCopyExternalImageResult):
(export.CopyToTextureUtils.prototype.async checkBufferWithRowPitch):
(export.CopyToTextureUtils.prototype.doTestAndCheckResult):
(export.CopyToTextureUtils):

  • http/tests/webgpu/webgpu/util/create_elements.js: Added.

(export.createCanvas):
(export.createOnscreenCanvas):
(export.createOffscreenCanvas):

  • http/tests/webgpu/webgpu/util/device_pool.js: Added.

(TestFailedButDeviceReusable):
(FeaturesNotSupported):
(export.TestOOMedShouldAttemptGC):
(export.DevicePool.prototype.async reserve):
(export.DevicePool.prototype.async release):
(export.DevicePool):
(DescriptorToHolderMap.prototype.deleteByDevice):
(DescriptorToHolderMap.prototype.async getOrCreate):
(DescriptorToHolderMap.prototype.insertAndCleanUp):
(DescriptorToHolderMap):
(canonicalizeDescriptor):
(supportsFeature):
(DeviceHolder.async create):
(DeviceHolder):
(DeviceHolder.prototype.acquire):
(DeviceHolder.prototype.async ensureRelease):
(DeviceHolder.prototype.async release):

  • http/tests/webgpu/webgpu/util/math.js: Added.

(export.align):
(export.roundDown):
(export.clamp):

  • http/tests/webgpu/webgpu/util/memory.js: Added.

(export.async exhaustVramUntilUnder64MB.async const):
(export.async exhaustVramUntilUnder64MB):

  • http/tests/webgpu/webgpu/util/pretty_diff_tables.js: Added.

(export.generatePrettyTable):

  • http/tests/webgpu/webgpu/util/texture/base.js: Added.

(export.maxMipLevelCount):

  • http/tests/webgpu/webgpu/util/texture/layout.js: Added.

(export.getTextureCopyLayout):

  • http/tests/webgpu/webgpu/util/texture/subresource.js: Added.

(endOfRange):
(rangeAsIterator):
(export.SubresourceRange):
(export.SubresourceRange.prototype.each):
(export.SubresourceRange.prototype.mipLevels):

  • http/tests/webgpu/webgpu/util/texture/texel_data-expected.txt: Added.
  • http/tests/webgpu/webgpu/util/texture/texel_data.html: Added.
  • http/tests/webgpu/webgpu/util/texture/texel_data.js: Added.

(applyEach):
(packComponents):
(makeNormalizedInfo):
(makeIntegerInfo):
(makeFloatInfo):
(export.const.kTexelRepresentationInfo.rgba32float.makeFloatInfo):
(export.getSingleDataType):
(export.getComponentReadbackTraits):

  • http/tests/webgpu/webgpu/util/texture/texel_data.spec.js: Added.

(doTest):
(kEncodableTextureFormats.filter):

  • http/tests/webgpu/webgpu/util/unions.js: Added.

(export.reifyOrigin3D):
(export.reifyExtent3D):

  • http/tests/webgpu/webgpu/web_platform/canvas/configure-expected.txt: Added.
  • http/tests/webgpu/webgpu/web_platform/canvas/configure.html: Added.
  • http/tests/webgpu/webgpu/web_platform/canvas/configure.spec.js: Added.
  • http/tests/webgpu/webgpu/web_platform/canvas/context_creation-expected.txt: Added.
  • http/tests/webgpu/webgpu/web_platform/canvas/context_creation.html: Added.
  • http/tests/webgpu/webgpu/web_platform/canvas/context_creation.spec.js: Added.

(fn.async t):

  • http/tests/webgpu/webgpu/web_platform/canvas/getCurrentTexture-expected.txt: Added.
  • http/tests/webgpu/webgpu/web_platform/canvas/getCurrentTexture.html: Added.
  • http/tests/webgpu/webgpu/web_platform/canvas/getCurrentTexture.spec.js: Added.
  • http/tests/webgpu/webgpu/web_platform/canvas/getPreferredFormat-expected.txt: Added.
  • http/tests/webgpu/webgpu/web_platform/canvas/getPreferredFormat.html: Added.
  • http/tests/webgpu/webgpu/web_platform/canvas/getPreferredFormat.spec.js: Added.
  • http/tests/webgpu/webgpu/web_platform/canvas/readbackFromWebGPUCanvas-expected.txt: Added.
  • http/tests/webgpu/webgpu/web_platform/canvas/readbackFromWebGPUCanvas.html: Added.
  • http/tests/webgpu/webgpu/web_platform/canvas/readbackFromWebGPUCanvas.spec.js: Added.

(async initCanvasContent):
(checkImageResult):
(readPixelsFrom2DCanvasAndCompare):
(string_appeared_here.fn.async t):
(allCanvasTypes.fn.async t):

  • http/tests/webgpu/webgpu/web_platform/copyToTexture/ImageBitmap-expected.txt: Added.
  • http/tests/webgpu/webgpu/web_platform/copyToTexture/ImageBitmap.html: Added.
  • http/tests/webgpu/webgpu/web_platform/copyToTexture/ImageBitmap.spec.js: Added.

(F.prototype.generatePixel):
(F.prototype.getImagePixels):
(F):
(fn.async t):

  • http/tests/webgpu/webgpu/web_platform/copyToTexture/canvas-expected.txt: Added.
  • http/tests/webgpu/webgpu/web_platform/copyToTexture/canvas.html: Added.
  • http/tests/webgpu/webgpu/web_platform/copyToTexture/canvas.spec.js: Added.

(F.prototype.init2DCanvasContentWithColorSpace):
(F.prototype.init2DCanvasContent):
(F.prototype.paint2DCanvas):
(F.prototype.initGLCanvasContent):
(F.prototype.getInitGPUCanvasData):
(F.prototype.initGPUCanvasContent):
(F.prototype.getSourceCanvas2DContent):
(F.prototype.getSourceCanvasGLContent):
(F.prototype.calculateSourceContentOnCPU):
(F.prototype.getTestImageURLByColorSpace):
(F):
(fn.async t):

  • http/tests/webgpu/webgpu/web_platform/copyToTexture/video-expected.txt: Added.
  • http/tests/webgpu/webgpu/web_platform/copyToTexture/video.html: Added.
  • http/tests/webgpu/webgpu/web_platform/copyToTexture/video.spec.js: Added.
  • http/tests/webgpu/webgpu/web_platform/external_texture/video-expected.txt: Added.
  • http/tests/webgpu/webgpu/web_platform/external_texture/video.html: Added.
  • http/tests/webgpu/webgpu/web_platform/external_texture/video.spec.js: Added.

(createExternalTextureSamplingTestPipeline):
(createExternalTextureSamplingTestBindGroup):
(kVideoSources.fn.async t):
(g.test.string_appeared_here.desc.Tests.that.a.GPUExternalTexture.is.destroyed.by.a.microtask.and.that.using.it.after.it.has.been.destroyed.results.in.an.error.fn.async t):
(async g):

  • http/tests/webgpu/webgpu/web_platform/util.js: Added.

(export.startPlayingAndWaitForVideo):

  • http/tests/webgpu/webgpu/web_platform/worker/worker-expected.txt: Added.
  • http/tests/webgpu/webgpu/web_platform/worker/worker.html: Added.
  • http/tests/webgpu/webgpu/web_platform/worker/worker.js: Added.

(async basicTest):
(self.onmessage.async ev):

  • http/tests/webgpu/webgpu/web_platform/worker/worker.spec.js: Added.

(isNode):
(g.test.string_appeared_here.desc.test.WebGPU.is.available.in.DedicatedWorkers.and.check.basic.functionality.fn.async t):

  • http/tests/webgpu/webgpu/web_platform/worker/worker_launcher.js: Added.

(export.async launchWorker):

  • platform/ios-device-wk1/TestExpectations:
  • platform/ios-simulator-wk1/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
6:13 PM Changeset in webkit [291947] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, mark streams/readable-stream-lock-after-worker-terminates-crash.html as flaky on Windows.

This test has been a flaky Timeout on Windows EWS for months and keeps leading to false positives.
Mark it as flaky to silence the noise.

  • platform/win/TestExpectations:
3:19 PM Changeset in webkit [291946] by ysuzuki@apple.com
  • 90 edits in trunk/Source

Use static_assert instead of COMPILE_ASSERT
​https://bugs.webkit.org/show_bug.cgi?id=238417

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • assembler/ARM64Assembler.h:
  • assembler/ARMv7Assembler.h:
  • assembler/MacroAssemblerX86Common.h:
  • bytecode/Opcode.h:
  • bytecode/VirtualRegister.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNullOrUndefined):
(JSC::DFG::SpeculativeJIT::compileToBooleanObjectOrOther):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):

  • inspector/InspectorProtocolTypes.h:

(Inspector::Protocol::BindingTraits<JSON::ArrayOf<T>>::runtimeCast):

  • inspector/scripts/codegen/cpp_generator_templates.py:
  • inspector/scripts/codegen/generate_cpp_protocol_types_header.py:
  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/expected/definitions-with-mac-platform.json-result:
  • inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
  • inspector/scripts/tests/expected/type-with-open-parameters.json-result:
  • jit/FPRInfo.h:
  • jit/GPRInfo.h:
  • parser/Parser.h:
  • runtime/JSCell.cpp:
  • runtime/JSObject.h:
  • runtime/SmallStrings.cpp:

(JSC::SmallStrings::SmallStrings):

  • runtime/Structure.h:

(JSC::Structure::outOfLineCapacity):

  • yarr/YarrInterpreter.cpp:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • contentextensions/DFANode.h:
  • css/CSSBasicShapes.cpp:

(WebCore::buildPolygonString):

  • css/CSSProperty.cpp:
  • css/CSSRule.cpp:
  • css/CSSValue.cpp:
  • css/StyleProperties.cpp:
  • css/StyleRule.cpp:
  • css/calc/CSSCalcOperationNode.cpp:

(WebCore::sortingCategoryForType):

  • dom/ElementData.cpp:
  • dom/NodeRareData.cpp:
  • dom/ShadowRoot.cpp:
  • dom/SpaceSplitString.cpp:
  • dom/StyledElement.cpp:
  • dom/TreeScope.cpp:
  • editing/HTMLInterchange.cpp:

(WebCore::convertHTMLTextToInterchangeFormat):

  • html/HTMLTrackElement.cpp:
  • html/track/VTTCue.cpp:
  • platform/Length.cpp:
  • platform/ScrollableArea.cpp:
  • platform/UserAgentQuirks.h:

(WebCore::UserAgentQuirks::UserAgentQuirks):

  • platform/graphics/FontCascadeDescription.cpp:
  • platform/graphics/Region.cpp:

(WebCore::Region::Shape::shapeOperation):

  • platform/graphics/TextRun.cpp:
  • platform/text/BidiContext.cpp:
  • platform/text/TextFlags.h:
  • platform/win/ImportedFunctionsEnumerator.cpp:

(WebCore::ImportedFunctionsEnumerator::addressOfCurrentFunctionPointer const):

  • rendering/BreakLines.cpp:
  • rendering/FloatingObjects.cpp:
  • rendering/LegacyInlineBox.cpp:
  • rendering/LegacyInlineFlowBox.cpp:
  • rendering/LegacyInlineTextBox.cpp:
  • rendering/LegacyRootInlineBox.cpp:
  • rendering/RenderBlock.cpp:
  • rendering/RenderBlockFlow.cpp:
  • rendering/RenderBox.cpp:
  • rendering/RenderObject.cpp:
  • rendering/RenderTableCell.cpp:
  • rendering/RenderText.cpp:
  • rendering/style/FillLayer.cpp:
  • rendering/style/RenderStyle.cpp:
  • rendering/style/StyleBoxData.cpp:
  • rendering/style/StyleRareInheritedData.cpp:
  • rendering/style/WillChangeData.h:
  • rendering/svg/SVGInlineTextBox.cpp:
  • style/RuleData.cpp:
  • svg/GradientAttributes.h:

Source/WebKit:

  • Platform/IPC/Connection.h:

(IPC::Connection::send):
(IPC::Connection::sendWithAsyncReply):
(IPC::Connection::sendSync):

  • Platform/IPC/MessageSender.h:
  • Platform/IPC/unix/ConnectionUnix.cpp:

(IPC::Connection::sendOutgoingMessage):

  • UIProcess/AuxiliaryProcessProxy.h:

(WebKit::AuxiliaryProcessProxy::send):
(WebKit::AuxiliaryProcessProxy::sendSync):
(WebKit::AuxiliaryProcessProxy::sendWithAsyncReply):

Source/WebKitLegacy/mac:

  • Plugins/WebBasePluginPackage.mm:

(-[WebBasePluginPackage isNativeLibraryData:]):

  • WebView/WebDynamicScrollBarsView.mm:

Source/WTF:

Use C++ static_assert instead of COMPILE_ASSERT.
Currently keeping it since it was also used in Internal code too.

  • wtf/CrossThreadCopier.cpp:
  • wtf/JSONValues.cpp:

(WTF::JSONImpl::ObjectBase::asObject):
(WTF::JSONImpl::ObjectBase::asObject const):
(WTF::JSONImpl::ArrayBase::asArray):

  • wtf/JSONValues.h:
  • wtf/glib/FileSystemGlib.cpp:

(WTF::FileSystemImpl::lockFile):

  • wtf/posix/FileSystemPOSIX.cpp:

(WTF::FileSystemImpl::lockFile):

  • wtf/text/AtomString.h:
1:35 PM Changeset in webkit [291945] by Russell Epstein
  • 1 copy in tags/Safari-614.1.7.3

Tag Safari-614.1.7.3.

1:35 PM Changeset in webkit [291944] by Russell Epstein
  • 10 edits in branches/safari-614.1.7-branch/Source/WebKit

Cherry-pick r291943. rdar://problem/90878560

Update the check in the sandbox profiles to guard the system content path rules
​https://bugs.webkit.org/show_bug.cgi?id=238419
rdar://90878560

Reviewed by Per Arne Vollan.

Replace USE(SYSTEM_CONTENT_PATH) in the sandbox profiles with a different feature flag
so that we can enable these rules independently even if WebKit itself isn't using the
system content path.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb.in:
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291943 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:30 PM Changeset in webkit [291943] by david_quesada@apple.com
  • 10 edits in trunk/Source/WebKit

Update the check in the sandbox profiles to guard the system content path rules
​https://bugs.webkit.org/show_bug.cgi?id=238419
rdar://90878560

Reviewed by Per Arne Vollan.

Replace USE(SYSTEM_CONTENT_PATH) in the sandbox profiles with a different feature flag
so that we can enable these rules independently even if WebKit itself isn't using the
system content path.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb.in:
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
1:10 PM Changeset in webkit [291942] by Russell Epstein
  • 2 edits in branches/safari-614.1.7-branch/Source/WebKit

Cherry-pick r291941. rdar://problem/90878872

REGRESSION(r291814): WebAuthn sandbox profile is missing
​https://bugs.webkit.org/show_bug.cgi?id=238418
rdar://90878872

Reviewed by Per Arne Vollan.

Fix a typo in the script phase that copies the embedded sandbox profiles. We want to copy
com.apple.WebKit.WebAuthn.sb, not com.apple.WebKit.WebAuth.sb.

  • WebKit.xcodeproj/project.pbxproj:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291941 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12:54 PM Changeset in webkit [291941] by david_quesada@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION(r291814): WebAuthn sandbox profile is missing
​https://bugs.webkit.org/show_bug.cgi?id=238418
rdar://90878872

Reviewed by Per Arne Vollan.

Fix a typo in the script phase that copies the embedded sandbox profiles. We want to copy
com.apple.WebKit.WebAuthn.sb, not com.apple.WebKit.WebAuth.sb.

  • WebKit.xcodeproj/project.pbxproj:
12:09 PM Changeset in webkit [291940] by sihui_liu@apple.com
  • 6 edits in trunk/Source/WebKit

Unreviewed, reverting r291909.

Found a better way to eanble the feature

Reverted changeset:

"Disable custom storage paths for IndexedDB and LocalStorage
by default"
​https://bugs.webkit.org/show_bug.cgi?id=236977
​https://commits.webkit.org/r291909

10:53 AM Changeset in webkit [291939] by Russell Epstein
  • 9 edits in branches/safari-614.1.7-branch/Source

Versioning.

WebKit-7614.1.7.3

8:55 AM Changeset in webkit [291938] by youenn@apple.com
  • 45 edits in trunk

Implement ServiceWorkerWindowClient.focus
​https://bugs.webkit.org/show_bug.cgi?id=238319
<rdar://90616490>

Reviewed by Brady Eidson.

Source/WebCore:

Add support for service worker focus:

  • Implement user gesture requirement by introducing a flag in ServiceWorkerGlobalScope that is turned on for some time when receiving specific events like notification click event. The max time is currently set to 2 seconds. We might want to improve handling of user activation in non-document contexts but this is a fuzzy area right now so a service worker solution seems good for now.
  • Remove the map of service worker client since we need to create new ones every time.
  • focus will go its context manager that will send an IPC message to the network process to actually trigger focus.

We are missing focused check at promise resolution, this will be done in a follow-up.

Covered by API test.

  • testing/ServiceWorkerInternals.cpp:
  • testing/ServiceWorkerInternals.h:
  • testing/js/WebCoreTestSupport.cpp:
  • workers/service/ServiceWorkerClient.cpp:
  • workers/service/ServiceWorkerClient.h:
  • workers/service/ServiceWorkerClientData.h:
  • workers/service/ServiceWorkerClients.cpp:
  • workers/service/ServiceWorkerClients.h:
  • workers/service/ServiceWorkerGlobalScope.cpp:
  • workers/service/ServiceWorkerGlobalScope.h:
  • workers/service/ServiceWorkerWindowClient.cpp:
  • workers/service/ServiceWorkerWindowClient.h:
  • workers/service/ServiceWorkerWindowClient.idl:
  • workers/service/context/SWContextManager.h:
  • workers/service/context/ServiceWorkerThread.cpp:
  • workers/service/server/SWServer.h:

Source/WebKit:

Support new IPC message flow to focus from a service worker to network process to service worker client process to UIProcess.
Introduce a new delegate _focusWebViewFromServiceWorker as the scope is specific to service worker and usage is different from existing _focusWebView and other delegates.

The overall flow is like this:

  • ServiceWorker process to NetworkProcess to Client WebProcess process to UIProcess (do the actual focus) to NetworkProcess to ServiceWorker process

We might want to directly go from NetworkProcess to UIProcess but we need to handle potential race conditions in that case.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
  • NetworkProcess/ServiceWorker/WebSWServerConnection.h:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
  • UIProcess/API/APIUIClient.h:
  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/Storage/WebSWClientConnection.cpp:
  • WebProcess/Storage/WebSWClientConnection.h:
  • WebProcess/Storage/WebSWClientConnection.messages.in:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp:
  • WebProcess/Storage/WebSWContextManagerConnection.h:

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

LayoutTests:

Update tests to cover the fact we no longer reuse Client objects.

  • http/tests/workers/service/resources/postmessage-echo-worker.js:
  • http/tests/workers/service/resources/serviceworkerclients-get-worker.js:
  • http/tests/workers/service/serviceworkerclients-matchAll-worker.js:
  • http/tests/workers/service/serviceworkerclients-matchAll.https-expected.txt:
  • http/tests/workers/service/serviceworkerclients-matchAll.https.html:
7:41 AM Changeset in webkit [291937] by ysuzuki@apple.com
  • 80 edits in trunk

Use unary static_assert
​https://bugs.webkit.org/show_bug.cgi?id=238412

Reviewed by Mark Lam.

Source/bmalloc:

  • bmalloc/Algorithm.h:

(bmalloc::isPowerOfTwo):

  • bmalloc/Gigacage.h:
  • bmalloc/IsoHeapImpl.h:

Source/JavaScriptCore:

Replace static_assert(..., ""); with static_assert(...);

  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::relinkJumpOrCall):

  • assembler/AssemblerBuffer.h:

(JSC::AssemblerBuffer::putIntegralUnchecked):

  • assembler/MacroAssemblerCodeRef.h:
  • bytecode/AdaptiveInferredPropertyValueWatchpointBase.h:
  • bytecode/ArrayProfile.h:
  • bytecode/CodeBlockHash.cpp:

(JSC::CodeBlockHash::CodeBlockHash):

  • bytecode/ParseHash.cpp:

(JSC::ParseHash::ParseHash):

  • bytecode/Watchpoint.h:
  • dfg/DFGNode.h:
  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGSpeculativeJIT.cpp:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileArrayPush):

  • jit/RegisterSet.cpp:

(JSC::RegisterSet::llintBaselineCalleeSaveRegisters):
(JSC::RegisterSet::dfgCalleeSaveRegisters):
(JSC::RegisterSet::ftlCalleeSaveRegisters):

  • runtime/CachedBytecode.cpp:

(JSC::CachedBytecode::commitUpdates const):

  • runtime/ClonedArguments.h:
  • runtime/DirectArguments.h:
  • runtime/DirectEvalExecutable.h:
  • runtime/ErrorConstructor.h:
  • runtime/IndirectEvalExecutable.h:
  • runtime/JSArrayBufferView.cpp:
  • runtime/JSBoundFunction.h:
  • runtime/JSLexicalEnvironment.h:

(JSC::JSLexicalEnvironment::subspaceFor):

  • runtime/JSString.cpp:

(JSC::JSRopeString::RopeBuilder<RecordOverflow>::expand):

  • runtime/JSString.h:
  • runtime/NativeFunction.h:
  • runtime/Operations.h:

(JSC::jsString):

  • runtime/RegExpObject.h:
  • runtime/ScopedArguments.h:
  • runtime/ScopedArgumentsTable.cpp:
  • runtime/TypedArrayAdaptors.h:

(JSC::IntegralTypedArrayAdaptor::toJSValue):

  • runtime/TypedArrayType.h:
  • runtime/WeakMapImpl.h:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::addCallIndirect):
(JSC::Wasm::AirIRGenerator::emitChecksForModOrDiv):
(JSC::Wasm::AirIRGenerator::emitModOrDiv):

  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::Interpreter::DisjunctionContext::allocationSize):
(JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::allocationSize):

Source/WebCore:

  • Modules/entriesapi/FileSystemDirectoryEntry.h:
  • Modules/entriesapi/FileSystemFileEntry.h:
  • css/DOMMatrix.h:
  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::SelectorCodeGenerator::generateAddStyleRelation):

  • dom/DOMPoint.h:
  • dom/DOMRect.h:
  • html/HTMLAllCollection.h:
  • html/track/AudioTrackList.h:
  • html/track/VideoTrackList.h:
  • layout/formattingContexts/inline/InlineItem.cpp:
  • layout/formattingContexts/inline/InlineTextItem.cpp:
  • platform/KeyedCoding.h:

(WebCore::KeyedDecoder::decodeBytes):

  • xml/XMLHttpRequestEventTarget.h:

Source/WebKit:

  • Shared/API/c/WKContextMenuItem.cpp:
  • UIProcess/mac/LegacySessionStateCoding.cpp:

(WebKit::HistoryEntryDataEncoder::encodeArithmeticType):
(WebKit::HistoryEntryDataDecoder::decodeArithmeticType):

Source/WTF:

  • wtf/CompactPointerTuple.h:
  • wtf/FastMalloc.h:
  • wtf/FunctionTraits.h:

(WTF::slotsForCCallArgument):

  • wtf/Int128.cpp:
  • wtf/MallocPtr.h:
  • wtf/Markable.h:

(WTF::std::underlying_type<EnumType>::type>::max):

  • wtf/PtrTag.h:

(WTF::tagInt):

  • wtf/Seconds.h:
  • wtf/StdLibExtras.h:

(WTF::roundUpToMultipleOf):

  • wtf/SystemFree.h:
  • wtf/UnalignedAccess.h:

(WTF::unalignedLoad):
(WTF::unalignedStore):

  • wtf/UniqueArray.h:

(WTF::makeUniqueArray):

  • wtf/WTFAssertions.cpp:
  • wtf/text/StringConcatenate.h:

(WTF::tryMakeStringFromAdapters):

  • wtf/text/StringImpl.h:
  • wtf/text/SymbolImpl.h:

Tools:

  • TestWebKitAPI/Tests/WTF/EnumTraits.cpp:
  • TestWebKitAPI/Tests/WTF/HashMap.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/Int128.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/Packed.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/RobinHoodHashMap.cpp:

(TestWebKitAPI::TEST):

7:07 AM Changeset in webkit [291936] by aakash_jain@apple.com
  • 2 edits in trunk

Update my github username.

Unreviewed.

  • metadata/contributors.json:
4:38 AM Changeset in webkit [291935] by ysuzuki@apple.com
  • 9 edits
    1 delete in trunk/Source/JavaScriptCore

[JSC] Include argumentRegisters in identity of SlowPathCallKey when clobberAllRegsInFTLICSlowPath is enabled
​https://bugs.webkit.org/show_bug.cgi?id=238411

Reviewed by Mark Lam.

While SlowPathCallKey includes argumentRegisters, it is not used for its identity check. But this argumentRegisters
is effectual on the resulting code in FTLThunks if Options::clobberAllRegsInFTLICSlowPath is set. This causes
x64 Debug JSC test failures after enabling DataIC because the same FTLThunks should not be picked for different
argument registers when Options::clobberAllRegsInFTLICSlowPath is true.

However, always including argumentRegisters in the identity check will cause a code size regression since we will
lose a chance to duplicate thunks when argumentRegisters is ineffectual. Note that Options::clobberAllRegsInFTLICSlowPath
is only set for debugging use cases. Hence, argumentRegisters is normally not effectual.

In this patch, we include argumentRegisters in SlowPathCallKey's identity check only when Options::clobberAllRegsInFTLICSlowPath
is set. And we also refactor SlowPathCallKey to reduce size of it from 40 to 24.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssemblerCodeRef.h:

(JSC::CFunctionPtr::CFunctionPtr):
(JSC::FunctionPtr::FunctionPtr):

  • ftl/FTLSlowPathCall.cpp:

(JSC::FTL::SlowPathCallContext::keyWithTarget const):

  • ftl/FTLSlowPathCallKey.cpp:

(JSC::FTL::SlowPathCallKey::dump const):

  • ftl/FTLSlowPathCallKey.h:

(JSC::FTL::SlowPathCallKey::SlowPathCallKey):
(JSC::FTL::SlowPathCallKey::callTarget const):
(JSC::FTL::SlowPathCallKey::usedRegisters const):
(JSC::FTL::SlowPathCallKey::argumentRegistersIfClobberingCheckIsEnabled const):
(JSC::FTL::SlowPathCallKey::indirectOffset const):
(JSC::FTL::SlowPathCallKey::withCallTarget):
(JSC::FTL::SlowPathCallKey::isEmptyValue const):
(JSC::FTL::SlowPathCallKey::isDeletedValue const):
(JSC::FTL::SlowPathCallKey::operator== const):
(JSC::FTL::SlowPathCallKey::hash const):
(JSC::FTL::SlowPathCallKey::argumentRegisters const): Deleted.

  • ftl/FTLThunks.cpp:

(JSC::FTL::registerClobberCheck):
(JSC::FTL::slowPathCallThunkGenerator):

  • jit/HashableRegisterSet.h: Removed.
  • jit/RegisterSet.h:

(JSC::RegisterSetHash::hash):
(JSC::RegisterSetHash::equal):

2:17 AM Changeset in webkit [291934] by Adrian Perez de Castro
  • 2 edits in trunk/Tools

[WPE][GTK] Dist/distcheck targets fail due to Python error
​https://bugs.webkit.org/show_bug.cgi?id=238394

Reviewed by Philippe Normand.

  • Scripts/make-dist:

(Directory.list_files_in_version_control): Ensure that data read from pipes is converted to
strings by specifying text="ascii", as it seems safe to assume that files listed by Git will
not contain non-ASCII characters. While at it, make the function return a set to speed up
lookups.

Mar 25, 2022:

10:26 PM Changeset in webkit [291933] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Simplify / Optimize JSNodeOwner::isReachableFromOpaqueRoots()
​https://bugs.webkit.org/show_bug.cgi?id=238380

Reviewed by Geoffrey Garen.

Drop checks specific to HTMLAudioElement and HTMLImageElement from
JSNodeOwner::isReachableFromOpaqueRoots() so that other Node wrappers
that are not audio or image elements do not have to pay the cost.

In the HTMLAudioElement case, HTMLAudioElement already subclasses HTMLMediaElement which
is an ActiveDOMObject and HTMLMediaElement::virtualHasPendingActivity() already takes
care of keeping the JS wrapper alive is there is audio playing.

For HTMLImageElement, I made it subclass ActiveDOMObject so that the JSHTMLImageElement
wrapper is now calling HTMLImageElement::hasPendingActivity() instead of every JS Node
wrapper via JSNodeOwner::isReachableFromOpaqueRoots().

  • bindings/js/JSNodeCustom.cpp:

(WebCore::isReachableFromDOM):

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::HTMLImageElement):
(WebCore::HTMLImageElement::create):
(WebCore::HTMLImageElement::createForLegacyFactoryFunction):
(WebCore::HTMLImageElement::activeDOMObjectName const):
(WebCore::HTMLImageElement::virtualHasPendingActivity const):
(WebCore::HTMLImageElement::hasPendingActivity const): Deleted.

  • html/HTMLImageElement.h:
  • html/HTMLImageElement.idl:
  • html/ImageDocument.cpp:

(WebCore::ImageDocumentElement::create):

9:30 PM Changeset in webkit [291932] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Clean up DataIC polymorphic call code for OptimizingCallLinkInfo
​https://bugs.webkit.org/show_bug.cgi?id=238395

Reviewed by Saam Barati.

When using DataIC, return address is already appropriate in non-tail call case
in polymorphic call stub code. This patch cleans up the code to align it to
DataIC BaselineCallLinkInfo.

  • bytecode/Repatch.cpp:

(JSC::linkPolymorphicCall):

8:29 PM Changeset in webkit [291931] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Temporarily disable assertion in MessageReceiveQueueMap::addImpl()
​https://bugs.webkit.org/show_bug.cgi?id=238397

Unreviewed followup: similarly change the assertion in remove() into a log.

  • Platform/IPC/MessageReceiveQueueMap.cpp:

(IPC::MessageReceiveQueueMap::remove):

8:05 PM Changeset in webkit [291930] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r291884.
​https://bugs.webkit.org/show_bug.cgi?id=238405

Broke the internal iOS build

Reverted changeset:

"Add Captive Portal alert to WKWebView"
​https://bugs.webkit.org/show_bug.cgi?id=238326
​https://commits.webkit.org/r291884

7:03 PM Changeset in webkit [291929] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Temporarily disable assertion in MessageReceiveQueueMap::addImpl()
​https://bugs.webkit.org/show_bug.cgi?id=238397

Reviewed by Wenson Hsieh.

Enabling DOM Rendering in the GPU Process has exposed an issue (webkit.org/b/237674, webkit.org/b/238391).
Temporarily convert this assertion to logging to reduce test failures.

  • Platform/IPC/MessageReceiveQueueMap.cpp:

(IPC::MessageReceiveQueueMap::addImpl):

6:58 PM Changeset in webkit [291928] by Alan Coon
  • 301 edits
    8 adds
    4 deletes in branches/safari-613-branch/Source/ThirdParty/ANGLE

Apply patch. rdar://problem/90639134

6:57 PM Changeset in webkit [291927] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/ThirdParty/ANGLE

Apply patch. rdar://problem/89963372

6:57 PM Changeset in webkit [291926] by Alan Coon
  • 487 edits
    1 copy
    3 moves
    17 adds
    18 deletes in branches/safari-613-branch/Source/ThirdParty/ANGLE

Apply patch. rdar://problem/88464021

6:52 PM Changeset in webkit [291925] by Alan Coon
  • 12 edits in branches/safari-613-branch

Revert r285998. rdar://problem/85612240

6:51 PM Changeset in webkit [291924] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r291057. rdar://problem/89291566

File System Access: disallows names that are not permitted by underlying file system
​https://bugs.webkit.org/show_bug.cgi?id=237635
rdar://89291566

We use FileSystem::fileSystemRepresentation to convert input name to a name that is permitted in current file
system. This patch makes File System Access API to throw error if the input name does not match the converted
name.

Reviewed by Youenn Fablet.

  • NetworkProcess/storage/FileSystemStorageHandle.cpp: (WebKit::isValidFileName): (WebKit::FileSystemStorageHandle::requestCreateHandle): (WebKit::FileSystemStorageHandle::removeEntry): (WebKit::FileSystemStorageHandle::move):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291057 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:51 PM Changeset in webkit [291923] by Alan Coon
  • 45 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290985. rdar://problem/78421282

Add a preference to mute video capture in case audio capture gets interrupted
​https://bugs.webkit.org/show_bug.cgi?id=237524
<rdar://78421282>

Reviewed by Eric Carlson.

Source/WebCore:

In case we detect that a microphone track source gets muted due to interruption, we mute
capture video tracks based if allowed by the new MuteCameraOnMicrophoneInterruptionEnabled setting.

Add support for mock microphone interruption and remove previous in process internals API.

Test: fast/mediastream/media-stream-video-track-interrupted-from-audio.html

  • Modules/mediastream/MediaStreamTrack.cpp:
  • Modules/mediastream/MediaStreamTrack.h:
  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:
  • platform/mediastream/mac/CoreAudioCaptureSource.h:
  • platform/mock/MockRealtimeAudioSource.cpp: (WebCore::MockRealtimeAudioSource::setIsInterrupted):
  • platform/mock/MockRealtimeAudioSource.h:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp: (WebCore::MockRealtimeMediaSourceCenter::setMockCaptureDevicesInterrupted): (WebCore::MockRealtimeMediaSourceCenter::setMockCameraIsInterrupted): Deleted.
  • platform/mock/MockRealtimeMediaSourceCenter.h:

Source/WebKit:

Add support for interrupt mock microphone devices.
Send to WebProcess sources whether sources are interrupted each time the source muted value changes.
Store that value in remote sources.

  • GPUProcess/GPUProcess.cpp:
  • GPUProcess/GPUProcess.h:
  • GPUProcess/GPUProcess.messages.in:
  • UIProcess/API/C/WKPage.cpp:
  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
  • UIProcess/GPU/GPUProcessProxy.cpp:
  • UIProcess/GPU/GPUProcessProxy.h:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/cocoa/RemoteRealtimeAudioSource.h:
  • WebProcess/cocoa/RemoteRealtimeDisplaySource.h:
  • WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.cpp:
  • WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.h:
  • WebProcess/cocoa/RemoteRealtimeVideoSource.h:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:
  • WebProcess/cocoa/UserMediaCaptureManager.h:
  • WebProcess/cocoa/UserMediaCaptureManager.messages.in:

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Tools:

Add support for interrupt mock microphone devices.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:
  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:
  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

LayoutTests:

  • fast/mediastream/media-stream-video-track-interrupted-from-audio-expected.txt: Added.
  • fast/mediastream/media-stream-video-track-interrupted-from-audio.html: Added.
  • fast/mediastream/media-stream-video-track-interrupted.html: Migrated to testRunner API.
  • fast/mediastream/track-ended-while-muted.html:
  • platform/glib/TestExpectations:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290985 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:51 PM Changeset in webkit [291922] by Alan Coon
  • 4 edits in branches/safari-613-branch

Cherry-pick r290978. rdar://problem/89901536

Add early return for empty path in makeAllDirectories
​https://bugs.webkit.org/show_bug.cgi?id=237540
rdar://89901536

Reviewed by Chris Dumez.

Source/WTF:

  • wtf/posix/FileSystemPOSIX.cpp: (WTF::FileSystemImpl::makeAllDirectories):

Tools:

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp: (TestWebKitAPI::TEST_F):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290978 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:51 PM Changeset in webkit [291921] by Alan Coon
  • 5 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290837. rdar://problem/80407863

[Cocoa] Crash in MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL
​https://bugs.webkit.org/show_bug.cgi?id=237456
rdar://80407863

Reviewed by Jer Noble.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: (WebCore::MediaPlayerPrivateAVFoundation::enableInheritURIQueryComponent const): Create and use a static, never destroyed, AtomString instead of creating one every time a AVURLAsset is created. New method used by both AVF media players.
  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp: (WebCore::MediaPlayerPrivateAVFoundationCF::createAVAssetForURL): Call enableInheritURIQueryComponent.
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL): Ditto.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290837 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:51 PM Changeset in webkit [291920] by Alan Coon
  • 4 edits
    2 adds in branches/safari-613-branch/LayoutTests

Cherry-pick r290745. rdar://problem/80335706

[Cocoa] The behavior of navigator-language-ru changed in Monterey / iOS 15
​https://bugs.webkit.org/show_bug.cgi?id=237384
<rdar://problem/80335706>

Unreviewed test gardening.

Add a new test for the new behavior, but keep the old one too for older OSes.

  • fast/text/international/system-language/navigator-language/navigator-language-ru-2-expected.txt: Added.
  • fast/text/international/system-language/navigator-language/navigator-language-ru-2.html: Added.
  • platform/ios-14/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk2/TestExpectations:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290745 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:51 PM Changeset in webkit [291919] by Alan Coon
  • 10 edits in branches/safari-613-branch

Cherry-pick r290564. rdar://problem/89524668

Force -webkit-user-modify used style to readonly for inert nodes
​https://bugs.webkit.org/show_bug.cgi?id=237244

Reviewed by Darin Adler.

This disallows programmatic edition of contenteditable inert nodes. Edition via user-input is
already prevented by forcing pointer-events style to none.

We create a seperate effectiveUserModify, similar to effectiveUserSelect/effectivePointerEvents,
to avoid changing the computed style.

This behaviour also matches Blink & Gecko.

LayoutTests/imported/w3c:

  • web-platform-tests/inert/inert-and-contenteditable.tentative-expected.txt:

Source/WebCore:

Test: imported/w3c/web-platform-tests/inert/inert-and-contenteditable.tentative.html

  • dom/Node.cpp: (WebCore::computeEditabilityFromComputedStyle):
  • editing/ApplyBlockElementCommand.cpp: (WebCore::ApplyBlockElementCommand::rangeForParagraphSplittingTextNodesIfNeeded):
  • editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::doApply):
  • rendering/EventRegion.cpp: (WebCore::EventRegion::unite):
  • rendering/RenderElement.cpp: (WebCore::RenderElement::styleWillChange):
  • rendering/style/RenderStyle.h: (WebCore::RenderStyle::effectiveUserModify const):
  • style/StyleTreeResolver.cpp: (WebCore::Style::TreeResolver::resolveElement):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290564 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:51 PM Changeset in webkit [291918] by Alan Coon
  • 15 edits in branches/safari-613-branch

Cherry-pick r290550. rdar://problem/88675827

Update CSP handling of javascript URLs
​https://bugs.webkit.org/show_bug.cgi?id=236351
<rdar://problem/88675827>

Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

  • web-platform-tests/content-security-policy/navigation/to-javascript-parent-initiated-parent-csp-disallow-expected.txt:
  • web-platform-tests/content-security-policy/navigation/to-javascript-url-script-src-expected.txt:

Source/WebCore:

  • bindings/js/ScriptController.cpp: (WebCore::ScriptController::executeJavaScriptURL):
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::continueLoadAfterNewWindowPolicy): (WebCore::createWindow):
  • loader/SubframeLoader.cpp: (WebCore::FrameLoader::SubframeLoader::requestFrame):
  • page/DOMWindow.cpp: (WebCore::DOMWindow::setLocation):
  • page/csp/ContentSecurityPolicy.cpp: (WebCore::ContentSecurityPolicy::allowJavaScriptURLs const):
  • page/csp/ContentSecurityPolicy.h:

LayoutTests:

  • TestExpectations:
  • http/tests/security/contentSecurityPolicy/inline-script-blocked-javascript-url-expected.txt:
  • http/tests/security/contentSecurityPolicy/javascript-url-blocked-by-default-src-star-expected.txt:
  • http/tests/security/contentSecurityPolicy/javascript-url-blocked-expected.txt:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290550 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:51 PM Changeset in webkit [291917] by Alan Coon
  • 32 edits in branches/safari-613-branch

Cherry-pick r290443. rdar://problem/89322580

Update CSP console logging
​https://bugs.webkit.org/show_bug.cgi?id=232216
<rdar://problem/89322580>

Reviewed by Brent Fulgham.

Source/WebCore:

  • loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::willSendRequestInternal): (WebCore::SubresourceLoader::originalHeaders const):
  • page/csp/ContentSecurityPolicy.cpp: (WebCore::ContentSecurityPolicy::allowResourceFromSource const): (WebCore::ContentSecurityPolicy::allowWorkerFromSource const): (WebCore::ContentSecurityPolicy::allowScriptFromSource const): (WebCore::ContentSecurityPolicy::allowStyleFromSource const):

Source/WebKit:

  • NetworkProcess/NetworkLoadChecker.cpp: (WebKit::NetworkLoadChecker::check): (WebKit::NetworkLoadChecker::checkRedirection): (WebKit::NetworkLoadChecker::checkRequest): (WebKit::NetworkLoadChecker::isAllowedByContentSecurityPolicy):
  • NetworkProcess/NetworkLoadChecker.h:

LayoutTests:

  • http/tests/security/contentSecurityPolicy/audio-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/audio-redirect-blocked.html:
  • http/tests/security/contentSecurityPolicy/font-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/font-redirect-blocked.html:
  • http/tests/security/contentSecurityPolicy/image-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/image-redirect-blocked.html:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-after-multiple-redirects-expected.txt:
  • http/tests/security/contentSecurityPolicy/script-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/script-redirect-blocked.html:
  • http/tests/security/contentSecurityPolicy/stylesheet-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/stylesheet-redirect-blocked.html:
  • http/tests/security/contentSecurityPolicy/svg-font-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/svg-font-redirect-blocked.html:
  • http/tests/security/contentSecurityPolicy/svg-image-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/svg-image-redirect-blocked.html:
  • http/tests/security/contentSecurityPolicy/track-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/track-redirect-blocked.html:
  • http/tests/security/contentSecurityPolicy/video-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/video-redirect-blocked.html:
  • http/tests/security/contentSecurityPolicy/xsl-redirect-blocked-expected.txt:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290443 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:51 PM Changeset in webkit [291916] by Alan Coon
  • 4 edits in branches/safari-613-branch

Cherry-pick r290367. rdar://problem/88567612

Fix GPUP WebGL generator script wrt uninitialised sized span
​https://bugs.webkit.org/show_bug.cgi?id=235889

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-02-23
Reviewed by Antti Koivisto.
Source/WebKit:

Regenerated.

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.cpp: (WebKit::RemoteGraphicsContextGLProxy::getShaderPrecisionFormat):

Tools:

Fix the generator. The r290328 only edited the generated files.
Add a other hunk missing from r290175.

  • Scripts/generate-gpup-webgl:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290367 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:51 PM Changeset in webkit [291915] by Alan Coon
  • 14 edits in branches/safari-613-branch

Cherry-pick r288792. rdar://problem/88227274

CSP: Properly block image content in object elements
​https://bugs.webkit.org/show_bug.cgi?id=235837

Reviewed by Kate Cheney.

LayoutTests/imported/w3c:

Update expectations with more passes.

  • web-platform-tests/content-security-policy/object-src/object-src-url-blocked-expected.txt:
  • web-platform-tests/content-security-policy/object-src/object-src-url-embed-blocked-expected.txt:
  • web-platform-tests/content-security-policy/object-src/object-src-url-redirect-blocked.sub-expected.txt:

Source/WebCore:

When an image is loaded through an object element it now passes through
the object-src directive check as the spec documents:
​https://www.w3.org/TR/CSP3/#directive-object-src

  • loader/ImageLoader.cpp: (WebCore::ImageLoader::updateFromElement):
  • loader/ResourceLoaderOptions.h: (WebCore::ResourceLoaderOptions::loadedFromPluginElement): (WebCore::ResourceLoaderOptions::ResourceLoaderOptions): (WebCore::ResourceLoaderOptions::loadedFromOpaqueSource): Deleted.
  • loader/cache/CachedResourceLoader.cpp: (WebCore::CachedResourceLoader::allowedByContentSecurityPolicy const):
  • page/csp/ContentSecurityPolicy.cpp: (WebCore::ContentSecurityPolicy::allowObjectFromSource const):
  • page/csp/ContentSecurityPolicy.h:

LayoutTests:

  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-blocked2-expected.txt:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-blocked3-expected.txt:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@288792 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:51 PM Changeset in webkit [291914] by Alan Coon
  • 12 edits in branches/safari-613-branch/Source/WebKit

Revert r289292. rdar://problem/90113314

6:50 PM Changeset in webkit [291913] by Alan Coon
  • 14 edits
    2 adds in branches/safari-613-branch

Revert r290708. rdar://problem/90113314

6:46 PM Changeset in webkit [291912] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/JavaScriptCore

Cherry-pick r291891. rdar://problem/90838071

AI should not set the structure for ObjectCreate
​https://bugs.webkit.org/show_bug.cgi?id=238349

Patch by Justin Michaud <Justin Michaud> on 2022-03-24
Reviewed by Saam Barati and Yusuke Suzuki.

The AbstractInterpreter should not set the structure for ObjectCreate because it might change by
the time the constant folding phase runs if the structure cache is cleared.

  • dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291891 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:45 PM Changeset in webkit [291911] by Nikos Mouchtaris
  • 6 edits
    2 adds in trunk

Incorrect handling of NaN inside calc() for top-level calculation
​https://bugs.webkit.org/show_bug.cgi?id=234176

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-values/calc-infinity-nan-computed-expected.txt: Added.
  • web-platform-tests/css/css-values/calc-infinity-nan-computed.html: Added.
  • web-platform-tests/css/css-values/round-function-expected.txt:
  • web-platform-tests/css/css-values/round-function.html:

Source/WebCore:

Add function to convert any top level NaN values to infinity values as per the spec.
This only affects the computed value of the calc expression, not its serialization.

Test: imported/w3c/web-platform-tests/css/css-values/calc-infinity-nan-computed.html

  • css/calc/CSSCalcOperationNode.cpp:

(WebCore::CSSCalcOperationNode::combineChildren):
(WebCore::convertToTopLevelValue):
(WebCore::CSSCalcOperationNode::evaluateOperator):

  • css/calc/CSSCalcOperationNode.h:
6:38 PM Changeset in webkit [291910] by Alan Coon
  • 9 edits in branches/safari-613-branch/Source

Versioning.

WebKit-7613.2.5

5:57 PM Changeset in webkit [291909] by sihui_liu@apple.com
  • 6 edits in trunk/Source/WebKit

Disable custom storage paths for IndexedDB and LocalStorage by default
​https://bugs.webkit.org/show_bug.cgi?id=236977

Reviewed by Geoffrey Garen.
<rdar://problem/89559929>

  • FeatureFlags/WebKit-appletvos.plist:
  • FeatureFlags/WebKit-ios.plist:
  • FeatureFlags/WebKit-macos.plist:
  • FeatureFlags/WebKit-watchos.plist:
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::defaultShouldUseCustomStoragePaths):

5:55 PM Changeset in webkit [291908] by Alan Coon
  • 1 copy in tags/Safari-613.2.4

Tag Safari-613.2.4.

5:53 PM Changeset in webkit [291907] by Said Abou-Hallawa
  • 5 edits in trunk/Source/WebKit

[GPU Process] [iOS] Enable GPU Process for DOM rendering on iOS
​https://bugs.webkit.org/show_bug.cgi?id=236508
rdar://83437844

Reviewed by Jon Lee.

  • FeatureFlags/WebKit-appletvos.plist:
  • FeatureFlags/WebKit-ios.plist:
  • FeatureFlags/WebKit-watchos.plist:
  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultUseGPUProcessForDOMRenderingEnabled):

5:02 PM Changeset in webkit [291906] by Alan Coon
  • 1 copy in tags/Safari-613.1.17.1.13

Tag Safari-613.1.17.1.13.

5:02 PM Changeset in webkit [291905] by Alan Coon
  • 1 copy in tags/Safari-613.1.17.0.8

Tag Safari-613.1.17.0.8.

4:58 PM Changeset in webkit [291904] by achristensen@apple.com
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry pick r289026
rdar://90860743

​http://trac.webkit.org/r289026 wasn't merged to the safari-613-branch, which caused excessive unnecessary logging.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):

4:46 PM Changeset in webkit [291903] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

Unreviewed, reverting r291745.
​https://bugs.webkit.org/show_bug.cgi?id=238399

JSC debug test failures

Reverted changeset:

"[JSC] Add DoNotHaveTagRegisters mode to unboxDouble"
​https://bugs.webkit.org/show_bug.cgi?id=238018
​https://commits.webkit.org/r291745

4:42 PM Changeset in webkit [291902] by Chris Dumez
  • 23 edits in trunk/Source

Use StringView::split() instead of String::split() in more places
​https://bugs.webkit.org/show_bug.cgi?id=238362

Reviewed by Geoffrey Garen.

Use StringView::split() instead of String::split() where suitable and more efficient.

Source/WebCore:

  • Modules/applepay/cocoa/PaymentContactCocoa.mm:

(WebCore::convert):

  • html/HTMLInputElement.cpp:

(WebCore::isValidMIMEType):
(WebCore::isValidFileExtension):
(WebCore::parseAcceptAttribute):

  • html/ValidationMessage.cpp:

(WebCore::ValidationMessage::setMessageDOMAndStartTimer):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::compileShader):

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::nodeForPath):

  • page/WindowFeatures.cpp:

(WebCore::parseDisabledAdaptations):
(WebCore::parseDialogFeatures):
(WebCore::parseDialogFeaturesMap):

  • page/WindowFeatures.h:
  • platform/network/CacheValidation.cpp:

(WebCore::collectVaryingRequestHeadersInternal):

  • platform/network/HTTPParsers.cpp:

(WebCore::filenameFromHTTPContentDisposition):
(WebCore::parseXFrameOptionsHeader):

  • platform/network/HTTPParsers.h:
  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::isAttachmentWithFilename const):

  • svg/SVGToOTFFontConversion.cpp:

(WebCore::SVGToOTFFontConverter::appendOS2Table):

  • svg/animation/SVGSMILElement.cpp:

(WebCore::SVGSMILElement::parseOffsetValue):
(WebCore::SVGSMILElement::parseClockValue):
(WebCore::SVGSMILElement::parseCondition):
(WebCore::SVGSMILElement::parseBeginOrEnd):
(WebCore::SVGSMILElement::parseAttribute):

  • svg/animation/SVGSMILElement.h:

Source/WebKit:

  • Shared/mac/AuxiliaryProcessMac.mm:

(WebKit::parseOSVersion):
(WebKit::populateSandboxInitializationParameters):

  • UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm:

(WebKit::ProcessLauncher::launchProcess):

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::initialize):

Source/WTF:

  • wtf/Assertions.cpp:
  • wtf/text/StringView.cpp:

(WTF::StringView::stripWhiteSpace const):

  • wtf/text/StringView.h:

(WTF::StringView::toDouble const):
(WTF::StringView::stripLeadingAndTrailingMatchedCharacters const):
(WTF::StringView::stripLeadingAndTrailingMatchedCharacters): Deleted.

4:14 PM Changeset in webkit [291901] by Alexander Mikhaylenko
  • 189 edits
    3 adds in trunk

[GTK][WPE] Update widget style to match libadwaita
​https://bugs.webkit.org/show_bug.cgi?id=235884

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Update Adwaita widgets style to be closer to their Libadwaita versions instead of GTK3.

  • Use new colors
  • Opacity for disabled states instead of separate colors
  • Translucent text selection, grey for inactive state
  • Translucent borders, so the widgets don't get blurry depending on the page background
  • Light borders for dark variant for visibility
  • Update sliders and progress bars, as they can't really work with translucent borders as is
  • Use grey selection for listboxes

Since text selection and accent are different colors now, move activeSelectionBackgroundColor()
etc out of ThemeAdwaita and expose a function for getting the accent color instead.

Update scrollbars to closely match libadwaita - update colors and dimensions, have a visible
trough in overlay mode. Reverse how borders are done - make sure the trough in regular and
overlay mode has the same size and draw borders around it rather than making borders a part
of the trough size.

  • platform/adwaita/ScrollbarThemeAdwaita.cpp:

(WebCore::ScrollbarThemeAdwaita::paint):
(WebCore::ScrollbarThemeAdwaita::paintScrollCorner):

  • platform/adwaita/ThemeAdwaita.cpp:

(WebCore::ThemeAdwaita::paintCheckbox):
(WebCore::ThemeAdwaita::paintRadio):
(WebCore::ThemeAdwaita::paintButton):
(WebCore::ThemeAdwaita::accentColor):
(WebCore::ThemeAdwaita::activeSelectionForegroundColor const): Deleted.
(WebCore::ThemeAdwaita::activeSelectionBackgroundColor const): Deleted.
(WebCore::ThemeAdwaita::inactiveSelectionForegroundColor const): Deleted.
(WebCore::ThemeAdwaita::inactiveSelectionBackgroundColor const): Deleted.

  • platform/adwaita/ThemeAdwaita.h:
  • rendering/RenderThemeAdwaita.cpp:

(WebCore::getAccentColor):
(WebCore::RenderThemeAdwaita::platformActiveSelectionBackgroundColor const):
(WebCore::RenderThemeAdwaita::platformInactiveSelectionBackgroundColor const):
(WebCore::RenderThemeAdwaita::platformActiveSelectionForegroundColor const):
(WebCore::RenderThemeAdwaita::platformInactiveSelectionForegroundColor const):
(WebCore::RenderThemeAdwaita::platformActiveListBoxSelectionBackgroundColor const):
(WebCore::RenderThemeAdwaita::platformInactiveListBoxSelectionBackgroundColor const):
(WebCore::RenderThemeAdwaita::platformActiveListBoxSelectionForegroundColor const):
(WebCore::RenderThemeAdwaita::platformInactiveListBoxSelectionForegroundColor const):
(WebCore::RenderThemeAdwaita::paintTextField):
(WebCore::RenderThemeAdwaita::paintProgressBar):
(WebCore::RenderThemeAdwaita::paintSliderTrack):
(WebCore::RenderThemeAdwaita::paintSliderThumb):

  • rendering/RenderThemeAdwaita.h:

LayoutTests:

Update test expectations to account for the changed widget and selection styles.

Remove [Pass] for text selection styles that was only set for glib/.

  • platform/glib/TestExpectations:
  • platform/gtk/css2.1/20110323/replaced-elements-001-expected.png:
  • platform/gtk/css2.1/20110323/replaced-elements-001-expected.txt:
  • platform/gtk/css3/flexbox/button-expected.png:
  • platform/gtk/css3/flexbox/button-expected.txt:
  • platform/gtk/editing/selection/3690703-2-expected.png:
  • platform/gtk/editing/selection/3690703-2-expected.txt:
  • platform/gtk/editing/selection/3690703-expected.png:
  • platform/gtk/editing/selection/3690703-expected.txt:
  • platform/gtk/editing/selection/3690719-expected.png:
  • platform/gtk/editing/selection/3690719-expected.txt:
  • platform/gtk/editing/selection/4397952-expected.png:
  • platform/gtk/editing/selection/4397952-expected.txt:
  • platform/gtk/editing/selection/5240265-expected.png:
  • platform/gtk/editing/selection/5240265-expected.txt:
  • platform/gtk/editing/selection/selection-button-text-expected.png:
  • platform/gtk/editing/selection/selection-button-text-expected.txt:
  • platform/gtk/fast/block/float/float-avoidance-expected.png:
  • platform/gtk/fast/block/float/float-avoidance-expected.txt:
  • platform/gtk/fast/block/positioning/inline-block-relposition-expected.png:
  • platform/gtk/fast/block/positioning/inline-block-relposition-expected.txt:
  • platform/gtk/fast/box-sizing/percentage-height-expected.png:
  • platform/gtk/fast/box-sizing/percentage-height-expected.txt: Added.
  • platform/gtk/fast/css/continuationCrash-expected.png:
  • platform/gtk/fast/css/continuationCrash-expected.txt:
  • platform/gtk/fast/css/margin-top-bottom-dynamic-expected.png:
  • platform/gtk/fast/css/margin-top-bottom-dynamic-expected.txt:
  • platform/gtk/fast/css/rtl-ordering-expected.png:
  • platform/gtk/fast/css/rtl-ordering-expected.txt:
  • platform/gtk/fast/dom/HTMLTableColElement/resize-table-using-col-width-expected.png:
  • platform/gtk/fast/dom/HTMLTableColElement/resize-table-using-col-width-expected.txt:
  • platform/gtk/fast/dom/HTMLTextAreaElement/reset-textarea-expected.png:
  • platform/gtk/fast/dom/HTMLTextAreaElement/reset-textarea-expected.txt:
  • platform/gtk/fast/dynamic/positioned-movement-with-positioned-children-expected.png:
  • platform/gtk/fast/dynamic/positioned-movement-with-positioned-children-expected.txt:
  • platform/gtk/fast/forms/001-expected.png:
  • platform/gtk/fast/forms/001-expected.txt:
  • platform/gtk/fast/forms/basic-buttons-expected.png:
  • platform/gtk/fast/forms/basic-buttons-expected.txt:
  • platform/gtk/fast/forms/basic-selects-expected.png:
  • platform/gtk/fast/forms/basic-selects-expected.txt:
  • platform/gtk/fast/forms/blankbuttons-expected.png:
  • platform/gtk/fast/forms/blankbuttons-expected.txt:
  • platform/gtk/fast/forms/box-shadow-override-expected.png:
  • platform/gtk/fast/forms/box-shadow-override-expected.txt:
  • platform/gtk/fast/forms/button-align-expected.png:
  • platform/gtk/fast/forms/button-align-expected.txt:
  • platform/gtk/fast/forms/button-cannot-be-nested-expected.png:
  • platform/gtk/fast/forms/button-cannot-be-nested-expected.txt:
  • platform/gtk/fast/forms/button-default-title-expected.png:
  • platform/gtk/fast/forms/button-default-title-expected.txt:
  • platform/gtk/fast/forms/button-generated-content-expected.png:
  • platform/gtk/fast/forms/button-generated-content-expected.txt:
  • platform/gtk/fast/forms/button-inner-block-reuse-expected.png:
  • platform/gtk/fast/forms/button-inner-block-reuse-expected.txt:
  • platform/gtk/fast/forms/button-positioned-expected.png:
  • platform/gtk/fast/forms/button-positioned-expected.txt:
  • platform/gtk/fast/forms/button-sizes-expected.png:
  • platform/gtk/fast/forms/button-sizes-expected.txt:
  • platform/gtk/fast/forms/button-style-color-expected.png:
  • platform/gtk/fast/forms/button-style-color-expected.txt:
  • platform/gtk/fast/forms/button-table-styles-expected.png:
  • platform/gtk/fast/forms/button-table-styles-expected.txt:
  • platform/gtk/fast/forms/button-text-transform-expected.png:
  • platform/gtk/fast/forms/button-text-transform-expected.txt:
  • platform/gtk/fast/forms/button-white-space-expected.png:
  • platform/gtk/fast/forms/button-white-space-expected.txt:
  • platform/gtk/fast/forms/control-clip-expected.png:
  • platform/gtk/fast/forms/control-clip-expected.txt:
  • platform/gtk/fast/forms/control-clip-overflow-expected.png:
  • platform/gtk/fast/forms/control-clip-overflow-expected.txt:
  • platform/gtk/fast/forms/control-restrict-line-height-expected.png:
  • platform/gtk/fast/forms/control-restrict-line-height-expected.txt:
  • platform/gtk/fast/forms/disabled-select-change-index-expected.png:
  • platform/gtk/fast/forms/disabled-select-change-index-expected.txt:
  • platform/gtk/fast/forms/file/file-input-direction-expected.png:
  • platform/gtk/fast/forms/file/file-input-direction-expected.txt:
  • platform/gtk/fast/forms/file/file-input-disabled-expected.png:
  • platform/gtk/fast/forms/file/file-input-disabled-expected.txt:
  • platform/gtk/fast/forms/form-element-geometry-expected.png:
  • platform/gtk/fast/forms/form-element-geometry-expected.txt:
  • platform/gtk/fast/forms/formmove3-expected.png:
  • platform/gtk/fast/forms/formmove3-expected.txt:
  • platform/gtk/fast/forms/input-appearance-height-expected.png:
  • platform/gtk/fast/forms/input-appearance-height-expected.txt:
  • platform/gtk/fast/forms/input-button-sizes-expected.png:
  • platform/gtk/fast/forms/input-button-sizes-expected.txt:
  • platform/gtk/fast/forms/input-first-letter-expected.png:
  • platform/gtk/fast/forms/input-first-letter-expected.txt:
  • platform/gtk/fast/forms/input-value-expected.png:
  • platform/gtk/fast/forms/input-value-expected.txt:
  • platform/gtk/fast/forms/select-baseline-expected.png:
  • platform/gtk/fast/forms/select-baseline-expected.txt:
  • platform/gtk/fast/forms/select-disabled-appearance-expected.png:
  • platform/gtk/fast/forms/select-disabled-appearance-expected.txt:
  • platform/gtk/fast/forms/targeted-frame-submission-expected.png:
  • platform/gtk/fast/forms/targeted-frame-submission-expected.txt:
  • platform/gtk/fast/html/details-replace-summary-child-expected.png:
  • platform/gtk/fast/html/details-replace-summary-child-expected.txt:
  • platform/gtk/fast/html/details-replace-text-expected.png:
  • platform/gtk/fast/html/details-replace-text-expected.txt:
  • platform/gtk/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.png:
  • platform/gtk/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.txt:
  • platform/gtk/fast/overflow/scrollRevealButton-expected.png:
  • platform/gtk/fast/overflow/scrollRevealButton-expected.txt:
  • platform/gtk/fast/replaced/replaced-breaking-expected.png:
  • platform/gtk/fast/replaced/replaced-breaking-expected.txt:
  • platform/gtk/fast/replaced/width100percent-button-expected.png:
  • platform/gtk/fast/replaced/width100percent-button-expected.txt:
  • platform/gtk/fast/table/append-cells2-expected.png:
  • platform/gtk/fast/table/append-cells2-expected.txt:
  • platform/gtk/fast/table/remove-td-display-none-expected.png:
  • platform/gtk/fast/table/remove-td-display-none-expected.txt:
  • platform/gtk/fast/text/international/hindi-spacing-expected.png:
  • platform/gtk/fast/text/international/hindi-spacing-expected.txt:
  • platform/gtk/fast/text/textIteratorNilRenderer-expected.png:
  • platform/gtk/fast/text/textIteratorNilRenderer-expected.txt:
  • platform/gtk/http/tests/navigation/javascriptlink-frames-expected.png:
  • platform/gtk/http/tests/navigation/javascriptlink-frames-expected.txt:
  • platform/gtk/svg/custom/foreign-object-skew-expected.png:
  • platform/gtk/svg/custom/foreign-object-skew-expected.txt: Added.
  • platform/gtk/svg/custom/inline-svg-in-xhtml-expected.png:
  • platform/gtk/svg/custom/inline-svg-in-xhtml-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug1188-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug1188-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug1318-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug1318-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug138725-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug138725-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug18359-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug18359-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug2479-2-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug2479-2-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug2479-3-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug2479-3-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug2479-4-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug2479-4-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug26178-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug26178-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug28928-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug28928-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug33855-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug33855-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug39209-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug39209-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug4429-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug4429-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug44505-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug44505-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug46368-1-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug46368-1-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug46368-2-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug46368-2-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug51037-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug51037-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug51727-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug51727-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug52505-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug52505-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug52506-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug52506-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug60749-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug60749-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug68912-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug68912-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug7342-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug7342-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug92647-2-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug92647-2-expected.txt: Added.
  • platform/gtk/tables/mozilla/collapsing_borders/bug41262-4-expected.png:
  • platform/gtk/tables/mozilla/collapsing_borders/bug41262-4-expected.txt:
  • platform/gtk/tables/mozilla/dom/tableDom-expected.png:
  • platform/gtk/tables/mozilla/dom/tableDom-expected.txt:
  • platform/gtk/tables/mozilla/other/move_row-expected.png:
  • platform/gtk/tables/mozilla/other/move_row-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug1725-expected.png:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug1725-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png:
  • platform/gtk/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png:
  • platform/gtk/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt:
3:55 PM Changeset in webkit [291900] by Elliott Williams
  • 2 edits in trunk/Source/WebKit

[Big Sur] WK2 failing to build with error: reference to 'WebDocumentView' is ambiguous
​https://bugs.webkit.org/show_bug.cgi?id=238384

Reviewed by Alexey Proskuryakov.

Build fix, see rdar://90844690.

Create forwarding headers in WebKit's temporary directory which cause imports of any
migrated header to be imported using WebKit's header map. For example,

#import <WebKit/WebDocument.h>
#import <WebKitLegacy/WebDocument.h>

...both resolve to the same header.

Also, clean up project file references to files which were deleted in r291809.

  • WebKit.xcodeproj/project.pbxproj:
3:53 PM Changeset in webkit [291899] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.36.0

WPE WebKit 2.36.0

3:52 PM Changeset in webkit [291898] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.36

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.36.0 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.36.0.
3:52 PM Changeset in webkit [291897] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.36/Tools

[WPE][GTK] Dist/distcheck targets fail due to Python error
​https://bugs.webkit.org/show_bug.cgi?id=238394

Unreviewed build fix.

  • Scripts/make-dist:

(Directory.list_files_in_version_control): Ensure that data read from pipes is converted to
strings by specifying text="ascii", as it seems safe to assume that files listed by Git will
not contain non-ASCII characters. While at it, make the function return a set to speed up
lookups.

3:25 PM Changeset in webkit [291896] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

FontCascade::widthForSimpleText needs the glyph only
​https://bugs.webkit.org/show_bug.cgi?id=238385

Reviewed by Antti Koivisto.

widthForSimpleText operates on primary font only so let's just call PrimaryFont.glyphForCharacter() directly.
(This should provide a slight perf gain on text heavy pages. e.g. wikipedia over 50 page loads ->

w/o: widthForSimpleText: 266286 calls, mean duration: 0.000201ms, total duration: 53.403753ms, max duration 0.016750ms

w: widthForSimpleText: 266274 calls, mean duration: 0.000176ms, total duration: 46.949579ms, max duration 0.016917ms)

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::widthForSimpleText const):

3:11 PM Changeset in webkit [291895] by Alan Coon
  • 2 edits in branches/safari-613.1.17.0-branch/Source/JavaScriptCore

Cherry-pick r291891. rdar://problem/90838071

AI should not set the structure for ObjectCreate
​https://bugs.webkit.org/show_bug.cgi?id=238349

Patch by Justin Michaud <Justin Michaud> on 2022-03-24
Reviewed by Saam Barati and Yusuke Suzuki.

The AbstractInterpreter should not set the structure for ObjectCreate because it might change by
the time the constant folding phase runs if the structure cache is cleared.

  • dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291891 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:09 PM Changeset in webkit [291894] by Alan Coon
  • 9 edits in branches/safari-613.1.17.0-branch/Source

Versioning.

WebKit-7613.1.17.0.8

3:07 PM Changeset in webkit [291893] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, update DerivedSources-output.xcfilelist to fix build.

  • DerivedSources-output.xcfilelist:
3:05 PM Changeset in webkit [291892] by Alan Coon
  • 2 edits in branches/safari-613.1.17.1-branch/Source/JavaScriptCore

Cherry-pick r291891. rdar://problem/90838071

AI should not set the structure for ObjectCreate
​https://bugs.webkit.org/show_bug.cgi?id=238349

Patch by Justin Michaud <Justin Michaud> on 2022-03-24
Reviewed by Saam Barati and Yusuke Suzuki.

The AbstractInterpreter should not set the structure for ObjectCreate because it might change by
the time the constant folding phase runs if the structure cache is cleared.

  • dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291891 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:51 PM Changeset in webkit [291891] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

AI should not set the structure for ObjectCreate
​https://bugs.webkit.org/show_bug.cgi?id=238349

Patch by Justin Michaud <Justin Michaud> on 2022-03-24
Reviewed by Saam Barati and Yusuke Suzuki.

The AbstractInterpreter should not set the structure for ObjectCreate because it might change by
the time the constant folding phase runs if the structure cache is cleared.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

2:46 PM Changeset in webkit [291890] by mmaxfield@apple.com
  • 4 edits in trunk/Source/WebGPU

[WebGPU] Remove default: from switch statements, in favor of exhaustively listing all cases
​https://bugs.webkit.org/show_bug.cgi?id=238305

Reviewed by Darin Adler.

This will indicate places that need fixing when new values are added.

  • WebGPU/BindGroupLayout.mm:

(WebGPU::createArgumentDescriptor):

  • WebGPU/Buffer.mm:

(WebGPU::Buffer::mapAsync):

  • WebGPU/Instance.mm:

(WebGPU::sortedDevices):

  • WebGPU/Queue.mm:

(WebGPU::Queue::writeBuffer):

2:37 PM Changeset in webkit [291889] by Wenson Hsieh
  • 13 edits
    2 adds in trunk

Enable PGO when building for release and production
​https://bugs.webkit.org/show_bug.cgi?id=238119
rdar://90182309

Reviewed by Alexey Proskuryakov and Geoff Garen.

Source/JavaScriptCore:

See WebCore/ChangeLog for more information.

  • Configurations/Base.xcconfig:
  • Configurations/JavaScriptCore.xcconfig:
  • JavaScriptCore.xcodeproj/project.pbxproj:

Source/WebCore:

Attempt to re-land support for compiling against profiling data, after it was reverted due to the profiling data
files being too large. We mitigate this by instead storing sparse profdata files as compressed files in
WebKitAdditions through git lfs, such that they don't cause the repo to grow significantly each time we update
profiling data.

At build time, we then introduce new build phase scripts to the JavaScriptCore, WebCore and WebKit builds to
decompress their respective .profdata.compressed files into .profdata files in the build, using
compression_tool. We compile against these profdata files when building for release and production
configurations, via the -fprofile-instr-use flag.

In the case where the *.profdata.compressed files are non-existent or haven't been downloaded yet, we instead
fall back to using an empty profiling data file, but only on non-production builds; this allows us to continue
passing in the -fprofile-instr-use flag, without running into build failures.

Note that we intentionally require production builds to use the (real) profiling data, and explicitly fail the
build with a specific error message in the case where the profiles are missing.

Additionally, note that in order to check for and deal with the case where the *.profdata.compressed files are
only undownloaded git-lfs stubs, we not only check whether or not the profdata.compressed file exists, but
also whether or not the file size is at least an arbitrary cutoff of 4 KB (which should already be an order of
magnitude larger than the git-lfs stub). While mostly arbitrary, I chose this cutoff due to the fact that it's
very close to the size of the Empty.profdata placeholder file in Tools; in practice, we should expect the
profiles for WebKit, WebCore and JavaScriptCore to be much, much larger than this empty file.

  • Configurations/Base.xcconfig:
  • Configurations/WebCore.xcconfig:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

See WebCore/ChangeLog for more information.

  • Configurations/Base.xcconfig:
  • Configurations/BaseTarget.xcconfig:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

Add an empty profiling data file that can be used as a fallback only for release (non-production) builds, when
the JavaScriptCore, WebCore or WebKit profiling data hasn't been locally downloaded.

  • Profiling/Empty.profdata: Added.
2:19 PM Changeset in webkit [291888] by youenn@apple.com
  • 19 edits
    3 adds in trunk

Add support for focused and visible ServiceWorkerWindowClient states
​https://bugs.webkit.org/show_bug.cgi?id=238372

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/clients-get.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/clients-matchall-exact-controller.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/clients-matchall.https-expected.txt:

Source/WebCore:

Add visible and focused to ServiceWorkerClientData.
In case document visibility or focused state changes, we push the corresponding ServiceWorkerClientData to network process.

Test: http/wpt/service-workers/client-properties.https.html

  • dom/Document.cpp:
  • dom/Document.h:
  • page/FocusController.cpp:
  • workers/service/ServiceWorkerClient.h:
  • workers/service/ServiceWorkerClientData.cpp:
  • workers/service/ServiceWorkerClientData.h:
  • workers/service/ServiceWorkerClients.cpp:
  • workers/service/ServiceWorkerWindowClient.cpp:
  • workers/service/ServiceWorkerWindowClient.h:

LayoutTests:

  • http/wpt/service-workers/client-properties-worker.js: Added.
  • http/wpt/service-workers/client-properties.https-expected.txt: Added.
  • http/wpt/service-workers/client-properties.https.html: Added.
2:02 PM Changeset in webkit [291887] by zhifei_fang@apple.com
  • 1 edit in trunk/Tools/Scripts/libraries/resultsdbpy/resultsdbpy/bug_trackers/bug_description.py

[results-safari] filter out None in automatically generated bug title
​https://bugs.webkit.org/show_bug.cgi?id=238360
rdar://90809419

Reviewed by Dewei Zhu and Jonathan Bedard.

  • Tools/Scripts/libraries/resultsdbpy/resultsdbpy/bug_trackers/bug_description.py:

(translate_selected_dots_to_bug_title_and_description):

Canonical link: ​https://commits.webkit.org/248886@main

1:54 PM Changeset in webkit [291886] by Devin Rousso
  • 15 edits
    1 copy
    3 adds in trunk

PointerEvent.movementX always 0 (breaks ​https://noisecraft.app/)
​https://bugs.webkit.org/show_bug.cgi?id=220194
<rdar://problem/72814440>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock-expected.txt:

This change causes the test to progress further than before, but there still appear to be
other issues elsewhere, so adjust the expected output to reflect that.

Source/WebCore:

Test: pointer-lock/pointermove-movement-delta.html

  • dom/PointerEvent.cpp:

(WebCore::PointerEvent::PointerEvent):
Also pass along the movement delta in the constructor that takes a MouseEvent.

  • dom/MouseEvent.h:
  • dom/MouseEvent.cpp:

(WebCore::MouseEvent::create):
(WebCore::MouseEvent::MouseEvent):
Require that all constructors that aren't invoked from JS always provide a movement delta.

  • dom/MouseRelatedEvent.h:

(WebCore::MouseRelatedEvent::movementX const):
(WebCore::MouseRelatedEvent::movementY const):
Expose these methods even when !ENABLE(POINTER_LOCK) so that they can be called without
the callsite having to also have a #if.

  • page/EventHandler.cpp:

(WebCore::EventHandler::dispatchDragEvent):
Pass along the movement delta even when !ENABLE(POINTER_LOCK).

Tools:

  • DumpRenderTree/mac/EventSendingController.mm:

(-[EventSendingController mouseMoveToX:Y:]):

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(WTR::EventSenderProxy::mouseMoveTo):
On macOS, the screen's origin is the bottom-left corner, so we need to flip the deltaY.

LayoutTests:

  • pointer-lock/pointermove-movement-delta.html: Added.
  • pointer-lock/pointermove-movement-delta-expected.txt: Added.
  • pointer-lock/mouse-event-delivery-expected.txt: Added.

On macOS, the screen's origin is the bottom-left corner, so we need to flip the deltaY.

  • platform/gtk/imported/w3c/web-platform-tests/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock-expected.txt: Added.

This change causes the test to progress further than before, but there still appear to be
other issues elsewhere, so adjust the expected output to reflect that.

  • platform/mac-wk1/TestExpectations:
1:51 PM Changeset in webkit [291885] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Add some generated sources to the WebKit project
​https://bugs.webkit.org/show_bug.cgi?id=238363

Reviewed by Alexey Proskuryakov.

There are many generated files which haven't been added to the project (they get built via
Sources.txt). Here, I add a few that I like to be able to find code in, particularly
MessageNames.h.

com.apple.WebKit.plugin-common.sb was deleted so is removed from the project.

  • WebKit.xcodeproj/project.pbxproj:
1:47 PM Changeset in webkit [291884] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Add Captive Portal alert to WKWebView
​https://bugs.webkit.org/show_bug.cgi?id=238326

Patch by C Lopez <​clopez1@apple.com> on 2022-03-25
Reviewed by Geoffrey Garen.

When WkWebView on iOS is initialized, we call _presentCaptivePortalModeAlertIfNeeded which checks whether an alert needs to be presented or not.

  • UIProcess/API/ios/WKWebViewIOS.h:
  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _presentCaptivePortalModeAlertIfNeeded]):
(-[WKWebView didMoveToWindow]):

1:32 PM Changeset in webkit [291883] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Drop duplicate isFiringEventListeners check in Node wrappers' isReachableFromOpaqueRoots()
​https://bugs.webkit.org/show_bug.cgi?id=238376

Reviewed by Geoffrey Garen.

Drop duplicate isFiringEventListeners check in Node wrappers' isReachableFromOpaqueRoots().
Those wrappers already call JSNodeOwner::isReachableFromOpaqueRoots() which already takes care
of checking the isFiringEventListeners flag.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

1:16 PM Changeset in webkit [291882] by J Pascoe
  • 8 edits in trunk

[WebAuthn] Maintain last modification time separate from last used time for platform credentials
​https://bugs.webkit.org/show_bug.cgi?id=238293
rdar://90655676

Reviewed by Brent Fulgham.

This patch splits a key returned from [_WKWebAuthenticationPanel getAllLocalAuthenticatorCredentials...],
_WKLocalAuthenticatorCredentialLastModificationDateKey, which previously signified the last time a
credential was modified or used in an assertion, to just the last time the credential was modified.

A new key, _WKLocalAuthenticatorCredentialLastUsedDateKey represents the old definition, the last
time a key was used or modified.

Source/WebCore:

  • Modules/webauthn/WebAuthenticationConstants.h:

Source/WebKit:

  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:

(getAllLocalAuthenticatorCredentialsImpl):
(+[_WKWebAuthenticationPanel setUsernameForLocalCredentialWithGroupAndID:credential:username:]):

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticator::continueMakeCredentialAfterUserVerification):

Tools:

Updated API test to verify differences between _WKLocalAuthenticatorCredentialLastModificationDateKey
and _WKLocalAuthenticatorCredentialLastModificationDateKey.

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST):

1:07 PM Changeset in webkit [291881] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebKit

[GPU Process] RemoteRenderingBackend::stopListeningForIPC() should not change the RemoteResourceCache on the main thread
​https://bugs.webkit.org/show_bug.cgi?id=238298
rdar://90731372

Reviewed by Simon Fraser.

To release the RemoteResourceCache and the rendering resource request on
the WorkQueue thread, RemoteRenderingBackend::stopListeningForIPC() dispatches
an empty lambda to its WorkQueue but m_renderingResourcesRequest and
m_remoteResourceCache are captured by-move to initializers to this lambda.

But this means m_remoteResourceCache is changed on the main thread while
the WorkQueue thread may be accessing it to get a cached remote resource.
The EWS crashes showed that, RemoteRenderingBackend::stopListeningForIPC()
on the main thread is waiting its WorkQueue to stop and complete all its
work including the dispatched empty lambda. And the WorkQueue thread is
getting wrong resource counters from the RemoteResourceCache. This would
happen if the HashMaps of RemoteResourceCache were emptied on the main
thread while the counters had outdated values.

To fix this thread safety issue, the RemoteResourceCache should not ever
be changed on the main thread. Since capturing by-move is kind of change,
we will capture m_renderingResourcesRequest and m_remoteResourceCache by
reference and we let the dispatched lambda explicitly releases them on
the WorkQueue thread.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::stopListeningForIPC):

12:34 PM Changeset in webkit [291880] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS][WP] Remove unused sandbox extension rule
​https://bugs.webkit.org/show_bug.cgi?id=238377

Reviewed by Geoffrey Garen.

Remove unused sandbox extension rule for RootDomainUserClient.

  • WebProcess/com.apple.WebProcess.sb.in:
12:20 PM Changeset in webkit [291879] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.18

Tag Safari-614.1.5.18.

12:19 PM Changeset in webkit [291878] by commit-queue@webkit.org
  • 9 edits in trunk/Source/WebCore

[TextureMapper] Implement GraphicsContextGLTextureMapperANGLE::prepareForDisplay()
​https://bugs.webkit.org/show_bug.cgi?id=238322

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-03-25
Reviewed by Darin Adler.

Use GraphicsContextGLTextureMapperANGLE::prepareForDisplay() to handle
buffer/texture preparation during the composition state flush instead of
doing it in the platform layer integration class.

The virtual GraphicsContextGL::prepareForDisplay() method is called
during the composition state flush on every context-backed canvas that
was changed since the previous flush. It's the most optimal location to
handle content display preparation, and it simplifies the actual display
through the TextureMapper facilities. It's a simple matter of ensuring
a current context and invoking texture preparation.

In Nicosia::GCGLANGLELayer::swapBuffersIfNeeded(), there's no need to
bother with the state of layer composition, everything is already set
to be wrapped into a buffer and pushed into the composition engine.

Similarly in TextureMapperGCGLPlatformLayer::paintToTextureMapper(),
the texture is already prepared and can be painted immediately, with
no further need for GL context switching.

GraphicsContextGLANGLE::prepareTexture() is not really used anymore
so it can be removed, and prepareTextureImpl() can use that name.
The method is still virtual so that GraphicsContextGLTextureMapperANGLE
can provide a more focused override, but GraphicsContextGLCocoa should
at some point also use its own implementation, at which point the
method could just be rolled into each class's prepareForDisplay().

No new tests, covered by existing tests.

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLANGLE::prepareTexture):
(WebCore::GraphicsContextGLANGLE::prepareTextureImpl): Deleted.

  • platform/graphics/angle/GraphicsContextGLANGLE.h:
  • platform/graphics/cocoa/GraphicsContextGLCocoa.mm:

(WebCore::GraphicsContextGLCocoa::prepareForDisplay):

  • platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.cpp:

(Nicosia::GCGLANGLELayer::swapBuffersIfNeeded):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:

Remove unused prepareTextureImpl() method declaration.

  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:

(WebCore::GraphicsContextGLTextureMapperANGLE::prepareTexture):
(WebCore::GraphicsContextGLTextureMapperANGLE::prepareForDisplay):
(WebCore::GraphicsContextGLTextureMapperANGLE::prepareTextureImpl): Deleted.

  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.h:
  • platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:

(WebCore::TextureMapperGCGLPlatformLayer::paintToTextureMapper):

12:18 PM Changeset in webkit [291877] by Russell Epstein
  • 2 edits in branches/safari-614.1.7-branch/Source/WebKit

Cherry-pick r291869. rdar://problem/90848250

Unreviewed, fix the internal iOS build after r291814
rdar://90848250

Removed extraneous double quote (") in com.apple.WebKit.WebContent.sb.in.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291869 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12:15 PM Changeset in webkit [291876] by Russell Epstein
  • 2 edits in branches/safari-614.1.5-branch/Source/WebKit

Cherry-pick r291869. rdar://problem/90848250

Unreviewed, fix the internal iOS build after r291814
rdar://90848250

Removed extraneous double quote (") in com.apple.WebKit.WebContent.sb.in.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291869 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12:08 PM Changeset in webkit [291875] by ysuzuki@apple.com
  • 12 edits in trunk/Source/JavaScriptCore

[JSC] Use Data CallIC in unlinked DFG
​https://bugs.webkit.org/show_bug.cgi?id=238176

Reviewed by Saam Barati.

This patch enables Data CallIC when Options::useDataICInOptimizingJIT() is true
to pave the way to introducing unlinked DFG.

The most complicated part is DFG tail call handling. We load CallLinkInfo in one
non-callee-save register, and we set up CallFrameShuffleData to keep this value
in the same register even after call frame shuffling for the tail call. This must
be non-callee-save register since callee-save registers are restored to values
of the one-level upper caller for the tail-call.

We also clean up CallLinkInfo code so that many functions work well with DataIC.
Currently, direct calls are not supported, and we will not emit direct calls when
unlinked DFG is used.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateImpl):

  • bytecode/CallLinkInfo.cpp:

(JSC::BaselineCallLinkInfo::initialize):
(JSC::OptimizingCallLinkInfo::emitFastPath):
(JSC::OptimizingCallLinkInfo::emitTailCallFastPath):
(JSC::OptimizingCallLinkInfo::slowPathStart):
(JSC::OptimizingCallLinkInfo::emitDirectFastPath):
(JSC::OptimizingCallLinkInfo::emitDirectTailCallFastPath):

  • bytecode/CallLinkInfo.h:

(JSC::CallLinkInfo::isDataIC const):
(JSC::CallLinkInfo::useDataIC const):
(JSC::CallLinkInfo::CallLinkInfo):
(JSC::CallLinkInfo::setUsesDataICs): Deleted.

  • bytecode/Repatch.cpp:

(JSC::linkPolymorphicCall):

  • dfg/DFGCommonData.h:

(JSC::DFG::CommonData::addCallLinkInfo):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::prepareForTailCallSlow):

  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):

12:00 PM Changeset in webkit [291874] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.5.3

Tag Safari-614.1.5.5.3.

11:59 AM Changeset in webkit [291873] by Russell Epstein
  • 2 edits in branches/safari-614.1.5.5-branch/Source/WebKit

Cherry-pick r291869. rdar://problem/90848250

Unreviewed, fix the internal iOS build after r291814
rdar://90848250

Removed extraneous double quote (") in com.apple.WebKit.WebContent.sb.in.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291869 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:54 AM Changeset in webkit [291872] by Russell Epstein
  • 9 edits in branches/safari-614.1.5.5-branch/Source

Versioning.

WebKit-7614.1.5.5.3

11:52 AM Changeset in webkit [291871] by keith_miller@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Remove unused JITOperation, operationTryOSREnterAtCatch.
​https://bugs.webkit.org/show_bug.cgi?id=238379

Reviewed by Mark Lam.

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
11:46 AM Changeset in webkit [291870] by Russell Epstein
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.18

11:39 AM Changeset in webkit [291869] by msaboff@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix the internal iOS build after r291814
rdar://90848250

Removed extraneous double quote (") in com.apple.WebKit.WebContent.sb.in.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
11:29 AM Changeset in webkit [291868] by graouts@webkit.org
  • 2 edits in trunk/Source/WTF

[web-animations] enable support for mutable timelines by default
​https://bugs.webkit.org/show_bug.cgi?id=237958
<rdar://problem/90370794>

Reviewed by Dean Jackson.

Both Chrome and Firefox have been shipping this feature for quite some time.
Our support for it is complete, we just need to turn it on by default.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
11:03 AM Changeset in webkit [291867] by commit-queue@webkit.org
  • 47 edits
    9 copies
    18 adds in trunk

Add css-typed-om color IDL skeletons
​https://bugs.webkit.org/show_bug.cgi?id=238208

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-25
Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-typed-om/idlharness-expected.txt:
  • web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssColorValue-expected.txt:
  • web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssHSL-expected.txt:
  • web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssRGB-expected.txt:

Source/WebCore:

This is an off-by-default experimental feature.
Covered by wpt tests.

  • DerivedSources-input.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • css/typedom/CSSKeywordValue.idl:
  • css/typedom/CSSNumericValue.h:
  • css/typedom/color/CSSColor.cpp: Added.

(WebCore::CSSColor::setColorSpace):
(WebCore::CSSColor::CSSColor):

  • css/typedom/color/CSSColor.h: Added.

(WebCore::CSSColor::create):
(WebCore::CSSColor::alpha const):
(WebCore::CSSColor::setAlpha):

  • css/typedom/color/CSSColor.idl:
  • css/typedom/color/CSSColorValue.h: Added.

(WebCore::CSSColorValue::colorSpace):
(WebCore::CSSColorValue::to):
(WebCore::CSSColorValue::parse):

  • css/typedom/color/CSSColorValue.idl:
  • css/typedom/color/CSSHSL.cpp: Added.

(WebCore::CSSHSL::CSSHSL):

  • css/typedom/color/CSSHSL.h: Added.

(WebCore::CSSHSL::create):
(WebCore::CSSHSL::h const):
(WebCore::CSSHSL::setH):
(WebCore::CSSHSL::s const):
(WebCore::CSSHSL::setS):
(WebCore::CSSHSL::l const):
(WebCore::CSSHSL::setL):
(WebCore::CSSHSL::alpha const):
(WebCore::CSSHSL::setAlpha):

  • css/typedom/color/CSSHSL.idl:
  • css/typedom/color/CSSHWB.cpp: Added.

(WebCore::CSSHWB::CSSHWB):

  • css/typedom/color/CSSHWB.h: Added.

(WebCore::CSSHWB::create):
(WebCore::CSSHWB::h const):
(WebCore::CSSHWB::setH):
(WebCore::CSSHWB::w const):
(WebCore::CSSHWB::setW):
(WebCore::CSSHWB::b const):
(WebCore::CSSHWB::setB):
(WebCore::CSSHWB::alpha const):
(WebCore::CSSHWB::setAlpha):

  • css/typedom/color/CSSHWB.idl:
  • css/typedom/color/CSSLCH.cpp: Added.

(WebCore::CSSLCH::CSSLCH):

  • css/typedom/color/CSSLCH.h: Added.

(WebCore::CSSLCH::create):
(WebCore::CSSLCH::l const):
(WebCore::CSSLCH::setL):
(WebCore::CSSLCH::c const):
(WebCore::CSSLCH::setC):
(WebCore::CSSLCH::h const):
(WebCore::CSSLCH::setH):
(WebCore::CSSLCH::alpha const):
(WebCore::CSSLCH::setAlpha):

  • css/typedom/color/CSSLCH.idl:
  • css/typedom/color/CSSLab.cpp: Added.

(WebCore::CSSLab::CSSLab):

  • css/typedom/color/CSSLab.h: Added.

(WebCore::CSSLab::create):
(WebCore::CSSLab::l const):
(WebCore::CSSLab::setL):
(WebCore::CSSLab::a const):
(WebCore::CSSLab::setA):
(WebCore::CSSLab::b const):
(WebCore::CSSLab::setB):
(WebCore::CSSLab::alpha const):
(WebCore::CSSLab::setAlpha):

  • css/typedom/color/CSSLab.idl:
  • css/typedom/color/CSSOKLCH.cpp: Added.

(WebCore::CSSOKLCH::CSSOKLCH):

  • css/typedom/color/CSSOKLCH.h: Added.

(WebCore::CSSOKLCH::create):
(WebCore::CSSOKLCH::l const):
(WebCore::CSSOKLCH::setL):
(WebCore::CSSOKLCH::c const):
(WebCore::CSSOKLCH::setC):
(WebCore::CSSOKLCH::h const):
(WebCore::CSSOKLCH::setH):
(WebCore::CSSOKLCH::alpha const):
(WebCore::CSSOKLCH::setAlpha):

  • css/typedom/color/CSSOKLCH.idl:
  • css/typedom/color/CSSOKLab.cpp: Added.

(WebCore::CSSOKLab::CSSOKLab):

  • css/typedom/color/CSSOKLab.h: Added.

(WebCore::CSSOKLab::create):
(WebCore::CSSOKLab::l const):
(WebCore::CSSOKLab::setL):
(WebCore::CSSOKLab::a const):
(WebCore::CSSOKLab::setA):
(WebCore::CSSOKLab::b const):
(WebCore::CSSOKLab::setB):
(WebCore::CSSOKLab::alpha const):
(WebCore::CSSOKLab::setAlpha):

  • css/typedom/color/CSSOKLab.idl:
  • css/typedom/color/CSSRGB.cpp: Added.

(WebCore::CSSRGB::CSSRGB):

  • css/typedom/color/CSSRGB.h: Added.

(WebCore::CSSRGB::create):
(WebCore::CSSRGB::r const):
(WebCore::CSSRGB::setR):
(WebCore::CSSRGB::g const):
(WebCore::CSSRGB::setG):
(WebCore::CSSRGB::b const):
(WebCore::CSSRGB::setB):
(WebCore::CSSRGB::alpha const):
(WebCore::CSSRGB::setAlpha):

  • css/typedom/color/CSSRGB.idl:
10:39 AM Changeset in webkit [291866] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Reduce EventListenerVector's minimum capacity from 16 to 2
​https://bugs.webkit.org/show_bug.cgi?id=238374

Reviewed by Geoffrey Garen.

Reduce EventListenerVector's minimum capacity from 16 to 2 to save memory and get a small speedup on Speedometer.
Very few event listeners are registered for a given type in the common case so eagerly allocating enough memory for 16 is wasteful.
This is a confirmed 0.4% progression on Speedometer according to A/B bots.

  • dom/EventListenerMap.h:
10:32 AM Changeset in webkit [291865] by Jonathan Bedard
  • 22 edits in trunk/Tools

[git-webkit] Handle no repository case
​https://bugs.webkit.org/show_bug.cgi?id=238383
<rdar://problem/90842476>

Reviewed by Aakash Jain.

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

(main): Set repository to 'None' instead of raising an OSError.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/canonicalize/init.py:

(Canonicalize.main): If no repository is provided, exit the program.

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

(Checkout.main): Ditto.

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

(FilteredCommand.pager): Ditto.
(FilteredCommand.main): Ditto.

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

(Info.main): Ditto.

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

(InstallGitLFS.parser): configure depends on if a repository is provided.
(InstallGitLFS.main): Install git lfs when no repository is provided.

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

(Land.main): If no repository is provided, exit the program.

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

(Pull.main): Ditto.

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

(SetupGitSvn.main): Ditto.

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

(TestBranch.test_basic_none):

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

(TestCanonicalize.test_invalid_svn): Renamed from test_invalid.
(TestCanonicalize.test_invalid_None):
(TestCanonicalize.test_invalid): Renamed to test_invalid_svn.

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

(TestCheckout.test_checkout_none):

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

(TestFind.test_none):

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

(TestInstallGitLFS.test_no_repo):

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

(TestLand.test_none):

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/log_unittest.py:
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py:
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/setup_git_svn_unittest.py:

(TestSetupGitSvn.test_none):

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

(TestSetup.test_none):

Canonical link: ​https://commits.webkit.org/248871@main

10:24 AM Changeset in webkit [291864] by Russell Epstein
  • 1 copy in tags/Safari-614.1.7.2

Tag Safari-614.1.7.2.

10:13 AM Changeset in webkit [291863] by Chris Dumez
  • 211 edits in trunk

Start preparing WebCore for making the String(const char*) constructor explicit
​https://bugs.webkit.org/show_bug.cgi?id=238336

Reviewed by Geoffrey Garen.

Start preparing WebCore for making the String(const char*) constructor explicit.
Making this constructor explicit helps catch at compile time cases where the ""_s
prefix is missing on String literals.

Source/JavaScriptCore:

  • API/JSValue.mm:

(createStructHandlerMap):
(handerForStructTag):

  • API/JSWrapperMap.mm:

(allocateConstructorForCustomClass):

  • inspector/agents/InspectorAuditAgent.cpp:

(Inspector::InspectorAuditAgent::run):

Source/WebCore:

  • Modules/applepay-ams-ui/ApplePayAMSUIPaymentHandler.cpp:

(WebCore::convertAndValidateApplePayAMSUIRequest):

  • Modules/applepay/ApplePayContactField.cpp:

(WebCore::convertAndValidate):

  • Modules/applepay/ApplePayMerchantCapability.cpp:

(WebCore::convertAndValidate):

  • Modules/applepay/ApplePayRequestBase.cpp:

(WebCore::convertAndValidate):

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::ApplePaySession::create):
(WebCore::ApplePaySession::openPaymentSetup):
(WebCore::ApplePaySession::begin):

  • Modules/applepay/ApplePaySetup.cpp:

(WebCore::ApplePaySetup::begin):

  • Modules/applepay/PaymentInstallmentConfiguration.mm:

(WebCore::PaymentInstallmentConfiguration::create):

  • Modules/applepay/PaymentRequestValidator.mm:

(WebCore::PaymentRequestValidator::validateTotal):
(WebCore::validateCountryCode):
(WebCore::validateCurrencyCode):
(WebCore::validateMerchantCapabilities):
(WebCore::validateSupportedNetworks):
(WebCore::validateShippingMethod):

  • Modules/applepay/PaymentSession.cpp:

(WebCore::PaymentSession::canCreateSession):

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::convertAndValidateApplePayRequest):

  • Modules/applicationmanifest/ApplicationManifestParser.cpp:

(WebCore::ApplicationManifestParser::parseIcons):
(WebCore::ApplicationManifestParser::parseScope):

  • Modules/cache/WindowOrWorkerGlobalScopeCaches.cpp:
  • Modules/encryptedmedia/InitDataRegistry.cpp:

(WebCore::sanitizeKeyids):

  • Modules/entriesapi/DOMFileSystem.cpp:

(WebCore::listDirectoryWithMetadata):
(WebCore::validatePathIsExpectedType):

  • Modules/fetch/FetchBodyConsumer.cpp:

(WebCore::FetchBodyConsumer::packageFormData):

  • Modules/fetch/FetchHeaders.cpp:

(WebCore::fillHeaderMap):

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::startLoadingBlobURL):

  • Modules/filesystemaccess/FileSystemFileHandle.cpp:

(WebCore::FileSystemFileHandle::getFile):
(WebCore::FileSystemFileHandle::createSyncAccessHandle):

  • Modules/filesystemaccess/FileSystemHandle.cpp:

(WebCore::FileSystemHandle::isSameEntry const):
(WebCore::FileSystemHandle::move):

  • Modules/indexeddb/IDBDatabaseIdentifier.h:
  • Modules/indexeddb/IDBKeyData.cpp:

(WebCore::IDBKeyData::encode const):
(WebCore::IDBKeyData::decode):

  • Modules/indexeddb/IDBKeyRange.cpp:

(WebCore::IDBKeyRange::includes):

  • Modules/indexeddb/server/IDBSerialization.cpp:

(WebCore::serializeIDBKeyPath):
(WebCore::deserializeIDBKeyPath):

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::getAllDatabaseNamesAndVersions):
(WebCore::IDBServer::IDBServer::getOrigins const):
(WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesModifiedSince):
(WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesForOrigins):
(WebCore::IDBServer::removeAllDatabasesForFullOriginPath):
(WebCore::IDBServer::IDBServer::renameOrigin):
(WebCore::IDBServer::IDBServer::upgradeFilesIfNecessary):
(WebCore::IDBServer::IDBServer::upgradedDatabaseDirectory):

  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::beginTransaction):
(WebCore::IDBServer::MemoryIDBBackingStore::abortTransaction):
(WebCore::IDBServer::MemoryIDBBackingStore::commitTransaction):
(WebCore::IDBServer::MemoryIDBBackingStore::generateKeyNumber):

  • Modules/indexeddb/server/MemoryObjectStore.cpp:

(WebCore::IDBServer::MemoryObjectStore::updateIndexesForPutRecord):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::v1RecordsTableSchema):
(WebCore::IDBServer::v1RecordsTableSchemaAlternate):
(WebCore::IDBServer::v2RecordsTableSchema):
(WebCore::IDBServer::v2RecordsTableSchemaAlternate):
(WebCore::IDBServer::v1IndexRecordsTableSchema):
(WebCore::IDBServer::v1IndexRecordsTableSchemaAlternate):
(WebCore::IDBServer::v2IndexRecordsTableSchema):
(WebCore::IDBServer::v2IndexRecordsTableSchemaAlternate):
(WebCore::IDBServer::SQLiteIDBBackingStore::encodeDatabaseName):
(WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabasePathForDirectory):
(WebCore::IDBServer::SQLiteIDBBackingStore::getOrEstablishDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetKeyGeneratorValue):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedSetKeyGeneratorValue):
(WebCore::IDBServer::SQLiteIDBBackingStore::generateKeyNumber):

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::createObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::deleteObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::clearObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::createIndex):
(WebCore::IDBServer::UniqueIDBDatabase::deleteIndex):
(WebCore::IDBServer::UniqueIDBDatabase::renameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAddAfterSpaceCheck):
(WebCore::IDBServer::UniqueIDBDatabase::getRecord):
(WebCore::IDBServer::UniqueIDBDatabase::getAllRecords):
(WebCore::IDBServer::UniqueIDBDatabase::getCount):
(WebCore::IDBServer::UniqueIDBDatabase::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabase::openCursor):
(WebCore::IDBServer::UniqueIDBDatabase::iterateCursor):
(WebCore::IDBServer::UniqueIDBDatabase::commitTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::abortTransaction):

  • Modules/indexeddb/shared/IDBIndexInfo.cpp:

(WebCore::IDBIndexInfo::loggingString const):

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::layoutTraitsClassName const):

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::create):

  • Modules/mediasource/MediaSource.cpp:

(WebCore::addVP9FullRangeVideoFlagToContentType):
(WebCore::MediaSource::isTypeSupported):

  • Modules/mediastream/MediaTrackConstraints.cpp:

(WebCore::set):
(WebCore::convertToInternalForm):

  • Modules/mediastream/RTCIceCandidate.cpp:

(WebCore::RTCIceCandidate::create):

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::setLocalDescription):
(WebCore::RTCPeerConnection::addIceCandidate):
(WebCore::RTCPeerConnection::iceServersFromConfiguration):
(WebCore::RTCPeerConnection::certificatesFromConfiguration):
(WebCore::RTCPeerConnection::initializeConfiguration):
(WebCore::RTCPeerConnection::setConfiguration):
(WebCore::RTCPeerConnection::chainOperation):

  • Modules/mediastream/RTCRtpSFrameTransformer.cpp:

(WebCore::RTCRtpSFrameTransformer::transform):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::LibWebRTCPeerConnectionBackend::doCreateAnswer):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransceiverBackend.cpp:

(WebCore::toRtpCodecCapability):

  • Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:

(WebCore::toException):
(WebCore::toRTCError):

  • Modules/model-element/scenekit/SceneKitModelLoaderUSD.mm:

(WebCore::writeToTemporaryFile):

  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::checkAndCanonicalizeDetails):
(WebCore::PaymentRequest::show):

  • Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp:

(WebCore::HTMLVideoElementPictureInPicture::requestPictureInPicture):

  • Modules/plugins/YouTubePluginReplacement.cpp:

(WebCore::YouTubePluginReplacement::installReplacement):
(WebCore::processAndCreateYouTubeURL):

  • Modules/speech/SpeechRecognitionCaptureSourceImpl.cpp:

(WebCore::SpeechRecognitionCaptureSourceImpl::updateDataSource):
(WebCore::SpeechRecognitionCaptureSourceImpl::sourceStopped):
(WebCore::SpeechRecognitionCaptureSourceImpl::sourceMutedChanged):

  • Modules/speech/cocoa/WebSpeechRecognizerTaskMock.mm:

(-[WebSpeechRecognizerTaskMock audioSamplesAvailable:]):

  • Modules/storage/StorageManager.cpp:

(WebCore::connectionInfo):

  • Modules/web-locks/WebLockManager.cpp:

(WebCore::WebLockManager::signalToAbortTheRequest):

  • Modules/webaudio/AudioListener.cpp:

(WebCore::AudioListener::AudioListener):

  • Modules/webaudio/AudioParam.cpp:

(WebCore::AudioParam::setAutomationRate):

  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::insertEvent):

  • Modules/webaudio/BiquadFilterNode.cpp:

(WebCore::BiquadFilterNode::getFrequencyResponse):

  • Modules/webaudio/BiquadProcessor.cpp:

(WebCore::BiquadProcessor::BiquadProcessor):

  • Modules/webaudio/DelayProcessor.cpp:

(WebCore::DelayProcessor::DelayProcessor):

  • Modules/webaudio/WaveShaperNode.cpp:

(WebCore::WaveShaperNode::create):
(WebCore::WaveShaperNode::setCurveForBindings):

  • Modules/webauthn/AuthenticatorCoordinator.cpp:

(WebCore::AuthenticatorCoordinatorInternal::needsAppIdQuirks):

  • Modules/webauthn/WebAuthenticationUtils.cpp:

(WebCore::buildAttestationMap):

  • Modules/webauthn/fido/DeviceResponseConverter.cpp:

(fido::readCTAPMakeCredentialResponse):

  • Modules/webauthn/fido/Pin.cpp:

(fido::pin::KeyAgreementResponse::parseFromCOSE):
(fido::pin::TokenRequest::tryCreate):

  • Modules/webauthn/fido/U2fResponseConverter.cpp:

(fido::readU2fRegisterResponse):

  • Modules/webdatabase/ChangeVersionWrapper.cpp:

(WebCore::ChangeVersionWrapper::performPreflight):

  • Modules/webdatabase/DOMWindowWebDatabase.cpp:

(WebCore::DOMWindowWebDatabase::openDatabase):

  • Modules/webdatabase/Database.cpp:

(WebCore::Database::Database):
(WebCore::Database::runTransaction):

  • Modules/webdatabase/DatabaseAuthorizer.cpp:

(WebCore::DatabaseAuthorizer::addAllowedFunctions):

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::trackerDatabasePath const):
(WebCore::DatabaseTracker::openTrackerDatabase):

  • Modules/webdatabase/SQLStatement.cpp:

(WebCore::SQLStatement::execute):
(WebCore::SQLStatement::setDatabaseDeletedError):
(WebCore::SQLStatement::setVersionMismatchedError):
(WebCore::SQLStatement::setFailureDueToQuota):

  • Modules/webdatabase/SQLTransaction.cpp:

(WebCore::SQLTransaction::callErrorCallbackDueToInterruption):
(WebCore::SQLTransaction::openTransactionAndPreflight):
(WebCore::SQLTransaction::deliverTransactionCallback):
(WebCore::SQLTransaction::deliverStatementCallback):
(WebCore::SQLTransaction::handleCurrentStatementError):
(WebCore::SQLTransaction::postflightAndCommit):

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::subprotocolSeparator):
(WebCore::WebSocket::close):
(WebCore::WebSocket::suspend):

  • Modules/websockets/WebSocket.h:
  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::didOpenSocketStream):
(WebCore::WebSocketChannel::didReceiveSocketStreamData):
(WebCore::WebSocketChannel::processFrame):
(WebCore::WebSocketChannel::processOutgoingFrameQueue):

  • Modules/websockets/WebSocketDeflateFramer.cpp:

(WebCore::WebSocketExtensionDeflateFrame::processResponse):
(WebCore::WebSocketDeflateFramer::deflate):
(WebCore::WebSocketDeflateFramer::inflate):

  • Modules/websockets/WebSocketExtensionDispatcher.cpp:

(WebCore::WebSocketExtensionDispatcher::processHeaderValue):

  • Modules/websockets/WebSocketFrame.cpp:

(WebCore::WebSocketFrame::parseFrame):

  • Modules/webxr/WebXRWebGLLayer.cpp:

(WebCore::createOpaqueFramebuffer):
(WebCore::WebXRWebGLLayer::create):

  • accessibility/AXImage.cpp:

(WebCore::AXImage::imageOverlayElements):

  • accessibility/AXLogger.cpp:

(WebCore::AXLogger::AXLogger):
(WebCore::AXLogger::log):
(WebCore::operator<<):

  • accessibility/AXLogger.h:
  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::isModalElement const):
(WebCore::createFromRenderer):
(WebCore::AXObjectCache::remove):
(WebCore::AXObjectCache::textChanged):
(WebCore::AXObjectCache::handleMenuOpened):
(WebCore::AXObjectCache::notificationPostTimerFired):
(WebCore::AXObjectCache::passwordNotificationPostTimerFired):
(WebCore::AXObjectCache::postNotification):
(WebCore::AXObjectCache::handleMenuItemSelected):
(WebCore::AXObjectCache::selectedStateChanged):
(WebCore::AXObjectCache::postTextStateChangeNotification):
(WebCore::AXObjectCache::handleModalChange):
(WebCore::AXObjectCache::performDeferredCacheUpdate):
(WebCore::AXObjectCache::updateIsolatedTree):

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::determineAccessibilityRole):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::readOnlyValue const):
(WebCore::AccessibilityObject::autoCompleteValue const):
(WebCore::AccessibilityObject::currentValue const):
(WebCore::AccessibilityObject::replaceTextInRange):
(WebCore::AccessibilityObject::computedRoleString const):
(WebCore::nodeHasPresentationRole):
(WebCore::AccessibilityObject::resolvedEditingStyles const):
(WebCore::Accessibility::isRadioButtonInDifferentAdhocGroup):
(WebCore::Accessibility::findMatchingObjects):

  • accessibility/AccessibilityObjectInterface.h:

(WebCore::accessibilityRoleToString):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::renderObjectIsObservable const):
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):
(WebCore::AccessibilityRenderObject::updateRoleAfterChildrenCreation):
(WebCore::AccessibilityRenderObject::liveRegionRelevant const):

  • accessibility/AccessibilityTableCell.cpp:

(WebCore::AccessibilityTableCell::computeAccessibilityIsIgnored const):

  • accessibility/AccessibilityTree.cpp:

(WebCore::AccessibilityTree::nodeHasTreeItemChild const):
(WebCore::AccessibilityTree::isTreeValid const):

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):
(WebCore::AXIsolatedObject::classList const):

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::AXIsolatedTree):
(WebCore::AXIsolatedTree::~AXIsolatedTree):
(WebCore::AXIsolatedTree::clear):
(WebCore::AXIsolatedTree::treeForID):
(WebCore::AXIsolatedTree::create):
(WebCore::AXIsolatedTree::removeTreeForPageID):
(WebCore::AXIsolatedTree::objectsForIDs const):
(WebCore::AXIsolatedTree::generateSubtree):
(WebCore::AXIsolatedTree::collectNodeChangesForSubtree):
(WebCore::AXIsolatedTree::updateNode):
(WebCore::AXIsolatedTree::updateNodeProperty):
(WebCore::AXIsolatedTree::updateChildren):
(WebCore::AXIsolatedTree::focusedNode):
(WebCore::AXIsolatedTree::rootNode):
(WebCore::AXIsolatedTree::setRootNode):
(WebCore::AXIsolatedTree::setFocusedNodeID):
(WebCore::AXIsolatedTree::updateLoadingProgress):
(WebCore::AXIsolatedTree::removeNode):
(WebCore::AXIsolatedTree::removeSubtreeFromNodeMap):
(WebCore::AXIsolatedTree::applyPendingChanges):

  • accessibility/mac/AccessibilityObjectMac.mm:

(WebCore::AccessibilityObject::subrolePlatformString const):
(WebCore::AccessibilityObject::rolePlatformDescription const):

  • animation/AnimationEffect.cpp:

(WebCore::AnimationEffect::getTiming const):

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::animate):

  • animation/EffectTiming.h:
  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::CSSPropertyIDToIDLAttributeName):
(WebCore::KeyframeEffect::getKeyframes):

  • bindings/js/GCController.cpp:

(WebCore::GCController::GCController):

  • bindings/js/JSCustomElementInterface.cpp:

(WebCore::JSCustomElementInterface::upgradeElement):

  • bindings/js/JSDOMConvertNumbers.h:

(WebCore::Converter<IDLFloat>::convert):

  • bindings/js/JSExecStateInstrumentation.h:

(WebCore::JSExecState::instrumentFunction):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::callInWorld):

  • bridge/objc/objc_runtime.mm:

(JSC::Bindings::ObjcArray::setValueAt const):
(JSC::Bindings::ObjcArray::valueAt const):

  • bridge/runtime_array.cpp:

(JSC::RuntimeArray::put):
(JSC::RuntimeArray::putByIndex):

  • bridge/runtime_object.cpp:

(JSC::Bindings::throwRuntimeObjectInvalidAccessError):

  • contentextensions/ContentExtensionActions.cpp:

(WebCore::ContentExtensions::ModifyHeadersAction::ModifyHeaderInfo::parse):
(WebCore::ContentExtensions::RedirectAction::parse):
(WebCore::ContentExtensions::RedirectAction::URLTransformAction::parse):
(WebCore::ContentExtensions::RedirectAction::URLTransformAction::QueryTransform::parse):
(WebCore::ContentExtensions::RedirectAction::URLTransformAction::QueryTransform::QueryKeyValue::parse):

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):

  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::getDomainList):
(WebCore::ContentExtensions::loadTrigger):
(WebCore::ContentExtensions::loadAction):

  • contentextensions/SerializedNFA.cpp:

(WebCore::ContentExtensions::SerializedNFA::serialize):

  • contentextensions/URLFilterParser.cpp:

(WebCore::ContentExtensions::URLFilterParser::statusString):

  • contentextensions/URLFilterParser.h:
  • crypto/SubtleCrypto.cpp:

(WebCore::SubtleCrypto::addAuthenticatedEncryptionWarningIfNecessary):

  • crypto/algorithms/CryptoAlgorithmAES_CBC.h:
  • crypto/algorithms/CryptoAlgorithmAES_CFB.h:
  • crypto/algorithms/CryptoAlgorithmAES_CTR.h:
  • crypto/algorithms/CryptoAlgorithmAES_GCM.h:
  • crypto/algorithms/CryptoAlgorithmAES_KW.h:
  • crypto/algorithms/CryptoAlgorithmECDH.h:
  • crypto/algorithms/CryptoAlgorithmECDSA.h:
  • crypto/algorithms/CryptoAlgorithmHKDF.h:
  • crypto/algorithms/CryptoAlgorithmHMAC.h:
  • crypto/algorithms/CryptoAlgorithmPBKDF2.h:
  • crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h:
  • crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:
  • crypto/algorithms/CryptoAlgorithmRSA_OAEP.h:
  • crypto/algorithms/CryptoAlgorithmRSA_PSS.h:
  • crypto/algorithms/CryptoAlgorithmSHA1.h:
  • crypto/algorithms/CryptoAlgorithmSHA224.h:
  • crypto/algorithms/CryptoAlgorithmSHA256.h:
  • crypto/algorithms/CryptoAlgorithmSHA384.h:
  • crypto/algorithms/CryptoAlgorithmSHA512.h:
  • crypto/keys/CryptoKeyAES.cpp:

(WebCore::CryptoKeyAES::exportJwk const):

  • crypto/keys/CryptoKeyEC.cpp:

(WebCore::CryptoKeyEC::exportJwk const):

  • crypto/keys/CryptoKeyHMAC.cpp:

(WebCore::CryptoKeyHMAC::exportJwk const):

  • crypto/keys/CryptoKeyRSA.cpp:

(WebCore::CryptoKeyRSA::exportJwk const):

  • css/CSSFontFaceSrcValue.cpp:

(WebCore::CSSFontFaceSrcValue::isSupportedFormat const):

  • css/CSSGridTemplateAreasValue.cpp:

(WebCore::stringForPosition):

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::unitTypeString):

  • css/CSSSubgridValue.cpp:

(WebCore::CSSSubgridValue::customCSSText const):

  • css/DOMCSSNamespace.cpp:

(WebCore::valueWithoutImportant):

  • css/DOMCSSRegisterCustomProperty.cpp:

(WebCore::DOMCSSRegisterCustomProperty::registerProperty):

  • css/DeprecatedCSSOMValue.cpp:

(WebCore::DeprecatedCSSOMValue::cssText const):

  • css/FontFace.cpp:

(WebCore::FontFace::unicodeRange const):

  • css/MediaQueryExpression.cpp:

(WebCore::MediaQueryExpression::serialize const):

  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getLayeredShorthandValue const):
(WebCore::MutableStyleProperties::setCustomProperty):

  • css/makevalues.pl:
  • css/parser/MediaQueryParser.cpp:

(WebCore::MediaQueryParser::skipUntilComma):
(WebCore::MediaQueryParser::parseInternal):

  • css/parser/SizesAttributeParser.cpp:

(WebCore::SizesAttributeParser::mediaConditionMatches):

  • css/typedom/CSSNumericFactory.h:
  • css/typedom/CSSNumericValue.cpp:

(WebCore::CSSNumericValue::multiplyInternal):
(WebCore::CSSNumericValue::to):
(WebCore::CSSNumericValue::parse):

  • css/typedom/CSSStyleValueFactory.cpp:

(WebCore::CSSStyleValueFactory::reifyValue):

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverterCaches::propertyValueForNode):
(HTMLConverter::_processElement):

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::attachmentForData):

  • loader/cocoa/BundleResourceLoader.mm:

(WebCore::BundleResourceLoader::loadResourceFromBundle):

  • loader/mac/LoaderNSURLExtras.mm:

(suggestedFilenameWithMIMEType):

  • page/cocoa/ResourceUsageOverlayCocoa.mm:

(WebCore::HistoricResourceUsageData::HistoricResourceUsageData):
(WebCore::drawCpuHistory):
(WebCore::drawGCHistory):
(WebCore::drawMemHistory):

  • page/cocoa/SettingsBaseCocoa.mm:

(WebCore::SettingsBase::initializeDefaultFontFamilies):

  • page/mac/PageMac.mm:

(WebCore::Page::platformInitialize):

  • platform/LocalizedStrings.cpp:

(WebCore::AXARIAContentGroupText):

  • platform/LocalizedStrings.h:
  • platform/Pasteboard.h:
  • platform/PasteboardCustomData.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::updateNowPlayingInfo):

  • platform/cocoa/KeyEventCocoa.mm:

(WebCore::keyIdentifierForCharCode):

  • platform/cocoa/PasteboardCocoa.mm:

(WebCore::imageTypeToFakeFilename):
(WebCore::Pasteboard::read):

  • platform/cocoa/PasteboardCustomDataCocoa.mm:

(WebCore::PasteboardCustomData::cocoaType):

  • platform/graphics/FourCC.h:

(WTF::LogArgument<WebCore::FourCC>::toString):

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLANGLE::validateDepthStencil):

  • platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm:

(WebCore::CDMPrivateMediaSourceAVFObjC::parseKeySystem):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:

(WebCore::CDMInstanceFairPlayStreamingAVFObjC::setStorageDirectory):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequests):

  • platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm:

(WebCore::CDMSessionMediaSourceAVFObjC::storagePath const):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::streamSession):

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):

  • platform/mac/DataDetectorHighlight.mm:

(WebCore::DataDetectorHighlight::fadeIn):
(WebCore::DataDetectorHighlight::fadeOut):

  • platform/mac/PasteboardMac.mm:
  • platform/mac/PlatformEventFactoryMac.mm:

(WebCore::keyIdentifierForKeyEvent):
(WebCore::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder):

  • platform/mac/PlatformPasteboardMac.mm:

(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
(WebCore::PlatformPasteboard::write):
(WebCore::createPasteboardItem):

  • platform/mac/StringUtilities.mm:

(WebCore::wildcardRegexPatternString):

  • platform/mac/ThreadCheck.mm:

(WebCoreReportThreadViolation):

  • platform/mac/UserAgentMac.mm:

(WebCore::standardUserAgentWithApplicationName):

  • platform/network/ResourceErrorBase.cpp:
  • platform/network/ResourceErrorBase.h:
  • platform/network/cocoa/RangeResponseGenerator.mm:

(WebCore::synthesizedResponseForRange):

  • rendering/RenderThemeMac.mm:

(WebCore::iconForAttachment):

  • rendering/style/RenderStyleConstants.cpp:

(WebCore::operator<<):

  • svg/SVGFilterElement.h:
  • svg/SVGFilterPrimitiveStandardAttributes.h:
  • svg/SVGLinearGradientElement.h:
  • svg/SVGMarkerElement.h:
  • svg/SVGMaskElement.h:
  • svg/SVGPathSegImpl.h:
  • svg/SVGRadialGradientElement.h:
  • svg/properties/SVGPropertyTraits.h:

(WebCore::SVGPropertyTraits<bool>::toString):

  • testing/MockContentFilterSettings.h:

(WebCore::MockContentFilterSettings::unblockURLHost):

  • xml/XPathValue.h:

(WebCore::XPath::Value::Value):

  • xml/XSLStyleSheet.h:

Source/WebGPU:

  • WGSL/Parser.cpp:

(WGSL::Parser<Lexer>::parseGlobalDecl):
(WGSL::Parser<Lexer>::parseAttribute):
(WGSL::Parser<Lexer>::parseTypeDecl):
(WGSL::Parser<Lexer>::parseStorageClass):
(WGSL::Parser<Lexer>::parseAccessMode):
(WGSL::Parser<Lexer>::parseStatement):
(WGSL::Parser<Lexer>::parsePrimaryExpression):
(WGSL::Parser<Lexer>::parseCoreLHSExpression):

  • WGSL/Token.cpp:

(WGSL::toString):

  • WebGPU/Adapter.mm:

(WebGPU::Adapter::requestDevice):

  • WebGPU/Buffer.mm:

(WebGPU::Buffer::mapAsync):
(WebGPU::Buffer::unmap):

  • WebGPU/CommandEncoder.mm:

(WebGPU::CommandEncoder::copyBufferToBuffer):
(WebGPU::CommandEncoder::clearBuffer):
(WebGPU::CommandEncoder::finish):

  • WebGPU/ComputePipeline.mm:

(WebGPU::createConstantValues):
(WebGPU::Device::createComputePipeline):

  • WebGPU/Queue.mm:

(WebGPU::Queue::submit):

  • WebGPU/Sampler.mm:

(WebGPU::Device::createSampler):

  • WebGPU/ShaderModule.mm:

(WebGPU::earlyCompileShaderModule):

Source/WebKit:

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::setPromisedDataForImage):
(WebKit::WebViewImpl::requestDOMPasteAccess):

Source/WebKitLegacy/mac:

  • Misc/WebNSPasteboardExtras.mm:

(-[NSPasteboard _web_declareAndWriteDragImageForElement:URL:title:archive:source:]):

Source/WTF:

  • wtf/text/TextStream.h:

(WTF::TextStream::dumpProperty):

Tools:

  • TestWebKitAPI/Tests/mac/DragAndDropTestsMac.mm:

(TEST):

10:09 AM Changeset in webkit [291862] by Russell Epstein
  • 2 edits in branches/safari-614.1.7-branch/Source/WebKit

Cherry-pick r291828. rdar://problem/90794287

After r291814, we need to create the INSTALL_PATH for the iOS sandbox files
​https://bugs.webkit.org/show_bug.cgi?id=238351

Reviewed by Saam Barati.

We need to create the $(INSTALL_PATH) for the preprocessed iOS sandbox files.
Before r291814, the built-in Xcode copy step used ditto when copying the .sb
files thus creating $(INSTALL_PATH) and its intermediate directories.
That change set made it so that all WebKit iOS sandbox profile files are preprocessed
thus eliminating the Xcode copy step.

  • WebKit.xcodeproj/project.pbxproj:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291828 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:09 AM Changeset in webkit [291861] by Russell Epstein
  • 10 edits
    4 moves in branches/safari-614.1.7-branch/Source/WebKit

Cherry-pick r291814. rdar://problem/90343926

Update Sandbox profiles for system content path
​https://bugs.webkit.org/show_bug.cgi?id=238255

Reviewed by Per Arne Vollan.

Updated WebKit sandbox profiles to include system content path rule files when building with the system content path.
Changed the iOS profiles to be preprocessed to make these changes.

  • DerivedSources-input.xcfilelist
  • DerivedSources-output.xcfilelist
  • DerivedSources.make:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb.
  • Shared/Sandbox/preferences.sb:
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291814 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:04 AM Changeset in webkit [291860] by Russell Epstein
  • 9 edits in branches/safari-614.1.7-branch/Source

Versioning.

WebKit-7614.1.7.2

9:58 AM Changeset in webkit [291859] by Russell Epstein
  • 1 copy in tags/Safari-614.1.7.1

Tag Safari-614.1.7.1.

9:58 AM Changeset in webkit [291858] by Simon Fraser
  • 3 edits in trunk/LayoutTests

Unreviewed cleanup.

Fix some errors found by lint-test-expectations (which add noise to every test run).

  • platform/ios/TestExpectations:
  • platform/win/TestExpectations:
9:43 AM Changeset in webkit [291857] by Russell Epstein
  • 9 edits in branches/safari-614.1.7-branch/Source

Versioning.

WebKit-7614.1.7.1

9:28 AM Changeset in webkit [291856] by Diego Pino Garcia
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix non-unified build after r291779

  • wasm/WasmExceptionType.h:
9:07 AM Changeset in webkit [291855] by Tyler Wilcock
  • 3 edits in trunk/Source/WebCore

Include object IDs in logs and assert in AXIsolatedTree and WebAccessibilityObjectWrapperBase
​https://bugs.webkit.org/show_bug.cgi?id=238352

Reviewed by Chris Fleizach.

I've found this additional information to be useful in other branches I'm working on.

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::removeSubtreeFromNodeMap):

  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(-[WebAccessibilityObjectWrapperBase detachIsolatedObject:]):

8:55 AM Changeset in webkit [291854] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix the internal iOS build after r291842
​https://bugs.webkit.org/show_bug.cgi?id=238344

Apply a similar adjustment to WKModelView.mm, as in ARKitInlinePreviewModelPlayerMac.mm, when generating a
usdz file path.

  • UIProcess/ios/WKModelView.mm:

(-[WKModelView createFileForModel:]):

8:52 AM Changeset in webkit [291853] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

media/auto-play-web-audio-in-about-blank-iframe.html is failing on EWS MacOS Debug bot
​https://bugs.webkit.org/show_bug.cgi?id=238315

Reviewed by Eric Carlson.

Make sure to reset the state to foreground.
Speculative fix as I was not able to reproduce locally.

  • testing/Internals.cpp:
2:15 AM Changeset in webkit [291852] by commit-queue@webkit.org
  • 10 edits in trunk

Improve rebuilding of ruby subtrees
​https://bugs.webkit.org/show_bug.cgi?id=238365

Source/WebCore:

Patch by Frédéric Wang <​fwang@igalia.com> on 2022-03-25
Reviewed by Alan Bujtas.

Don't collapse generated Ruby subtree when tearing down children and take into account the
fact that anonymous before/after node can belong to a display: content child.

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::destroyAndCleanUpAnonymousWrappers): Don't collapse.

  • rendering/updating/RenderTreeBuilderRuby.cpp:

(WebCore::lastRubyRun): Child can be also be an anonymous after content.
(WebCore::RenderTreeBuilder::Ruby::findOrCreateParentForChild): When beforeChild is
an anonymous before/after, just fallback to appending to the last ruby run.

LayoutTests:

Patch by Frederic Wang <​fred.wang@free.fr> on 2022-03-25
Reviewed by Alan Bujtas.

Expectation for rubyDOM-remove-text2.html is updated now that we don't collapse anonymous
RenderRubyBase nodes.

  • platform/gtk/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
  • platform/ios/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
  • platform/mac/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
  • platform/win/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
  • platform/wincairo/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
  • platform/wpe/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
1:54 AM Changeset in webkit [291851] by sihui_liu@apple.com
  • 22 edits in trunk

Introduce an SPI to get website data directory for origin and use it in API tests
​https://bugs.webkit.org/show_bug.cgi?id=238269

Reviewed by Alex Christensen.

Source/WebKit:

There are a few tests using hardcoded website data paths to check if files are correcly modified by API.
Everytime we migrate website data (for example, if we start using general storage directory for IndexedDB
storage), we need to update these tests with new paths, otherwise the tests will check the wrong paths. Let's
just add an SPI so these tests can get the paths in use dynamically, which would avoid test breakage when
we do website data migration.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::websiteDataOriginDirectoryForTesting):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::moveData):
(WebKit::NetworkStorageManager::getOriginDirectory):

  • NetworkProcess/storage/NetworkStorageManager.h:
  • NetworkProcess/storage/OriginStorageManager.cpp:

(WebKit::OriginStorageManager::StorageBucket::toStorageType const):
(WebKit::OriginStorageManager::StorageBucket::resolvedLocalStoragePath):
(WebKit::OriginStorageManager::StorageBucket::resolvedIDBStoragePath):
(WebKit::OriginStorageManager::StorageBucket::resolvedPath):
(WebKit::OriginStorageManager::resolvedPath):
(WebKit::OriginStorageManager::resolvedLocalStoragePath): Deleted.
(WebKit::OriginStorageManager::resolvedIDBStoragePath): Deleted.

  • NetworkProcess/storage/OriginStorageManager.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _originDirectoryForTesting:topOrigin:type:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::websiteDataOriginDirectoryForTesting):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::originDirectoryForTesting):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/IDBCheckpointWAL.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IDBIndexUpgradeToV2.mm:

(runMultipleIndicesTestWithDatabase):

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBFileName.mm:

(runTest):
(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBTempFileSize.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/StoreBlobThenDelete.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:

(runWebsiteDataStoreCustomPaths):

12:43 AM Changeset in webkit [291850] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebCore

Mismatched forward declaration of GraphicsContextState
​https://bugs.webkit.org/show_bug.cgi?id=238359

Reviewed by Darin Adler.

Forward declaration should be for a class not a struct. Fixes a warning.

  • platform/graphics/cairo/CairoOperations.h:

Mar 24, 2022:

10:02 PM Changeset in webkit [291849] by don.olmstead@sony.com
  • 11 edits in trunk/Source

Non-unified build fixes, late March 2022 edition
​https://bugs.webkit.org/show_bug.cgi?id=238358

Unreviewed non-unified build fixes.

Source/JavaScriptCore:

  • bytecode/ExitKind.cpp:
  • bytecode/ExitKind.h:
  • heap/RootMarkReason.cpp:
  • heap/RootMarkReason.h:
  • runtime/CallData.h:

Source/WebCore:

  • html/HTMLInputElement.cpp:

Source/WebKit:

  • GPUProcess/GPUProcess.cpp:
  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:
9:21 PM Changeset in webkit [291848] by Chris Dumez
  • 7 edits in trunk/Source

String::split() should take in a StringView instead of a String
​https://bugs.webkit.org/show_bug.cgi?id=238355

Reviewed by Geoffrey Garen.

Source/WebCore:

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::classList const):
Call the more efficient split(UChar) overload instead.

Source/WebKit:

  • UIProcess/Inspector/socket/RemoteInspectorProtocolHandler.cpp:

Optimize by calling StringView::split() instead of String::split().

Source/WTF:

String::split() should take in a StringView instead of a String, to avoid unnecessary construction
of Strings in some instances.

  • wtf/text/WTFString.cpp:

(WTF::String::splitInternal const):
(WTF::String::split const):
(WTF::String::splitAllowingEmptyEntries const):

  • wtf/text/WTFString.h:
9:14 PM Changeset in webkit [291847] by ysuzuki@apple.com
  • 1 edit
    1 add in trunk/JSTests

Add additional reported regression tests to ensure multiline token's column offset is reset
​https://bugs.webkit.org/show_bug.cgi?id=221548

Reviewed by Alexey Shvayka.

The bug is fixed and tested in ​https://github.com/WebKit/WebKit/commit/6d1e5d9498f24805988ad81ca3228588dd000a51.
But let's add reported regression tests to ensure that they will not reproduce.

  • stress/multiline-token-error-column.js: Added.

(shouldBe):
(throw.new.Error):

9:08 PM Changeset in webkit [291846] by mmaxfield@apple.com
  • 15 edits
    2 adds in trunk

[Cocoa] REGRESSION(r281291): When accessibility bold is enabled, font-family:system-ui is supposed to be bold
​https://bugs.webkit.org/show_bug.cgi?id=237817
<rdar://problem/88249241>

Reviewed by Alan Bujtas.

Source/WebCore:

Accessibility bold is supposed to cause the system font to be rendered as bold, even if the
value of the font-weight property is normal.

The way this is originally supposed to work is that, when accessibility bold is enabled and
software asks for the system font, the font reports to not be bold, but the metrics/contours
end up visually bold to the user. Font variations, however, are a lower-level interface to
the font, and don't abide by the facade. So, before r281291, we weren't applying font variations
to the system font, so the facade was maintained, but r281291 started applying variations to the
system font, thereby breaking this accessibility bold setting.

The solution is to re-implement accessibility bold when we apply font variations. At the point
where we apply the weight variation, we should determine if accessibility bold is in effect, and
if it is, artificially increase the weight of the created font according to the platform's
inflation amount. There are a few SPI functions which aid in this endeavor.

Test: fast/text/accessibility-bold.html

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::fontIsSystemFont):
(WebCore::normalizeGXWeight):
(WebCore::normalizeCTWeight):
(WebCore::denormalizeGXWeight):
(WebCore::denormalizeCTWeight):
(WebCore::overrideEnhanceTextLegibility):
(WebCore::setOverrideEnhanceTextLegibility):
(WebCore::shouldEnhanceTextLegibility):
(WebCore::preparePlatformFont):
(WebCore::fontCacheRegisteredFontsChangedNotificationCallback):
(WebCore::FontCache::platformInit):
(WebCore::variationCapabilitiesForFontDescriptor):
(WebCore::normalizeWeight): Deleted.
(WebCore::denormalizeWeight): Deleted.

  • platform/graphics/cocoa/FontCacheCoreText.h:
  • testing/Internals.cpp:

(WebCore::Internals::setOverrideEnhanceTextLegibility):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebCore/PAL:

  • pal/spi/cf/CoreTextSPI.h:
  • pal/spi/cocoa/AccessibilitySupportSPI.h:

LayoutTests:

This test has <!-- webkit-test-runner [ runSingly=true ] --> so the testing
infrastructure for accessibility bold can be web-process-global.

  • fast/text/accessibility-bold-expected-mismatch.html: Added.
  • fast/text/accessibility-bold.html: Added.
  • platform/mac/TestExpectations: Because this test relies on a webkit-test-runner

header, skip it on WK1.

  • platform/ios/TestExpectations: Ditto.
  • platform/mac-wk2/TestExpectations: Mark as PASS.
  • platform/ios-wk2/TestExpectations: Ditto.
7:51 PM Changeset in webkit [291845] by Alan Coon
  • 9 edits in branches/safari-613.1.17.1-branch/Source

Versioning.

WebKit-7613.1.17.1.13

7:40 PM Changeset in webkit [291844] by Alan Coon
  • 1 copy in tags/Safari-613.1.17.1.12

Tag Safari-613.1.17.1.12.

7:07 PM Changeset in webkit [291843] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

Require click-to-play for media in Captive Portals
​https://bugs.webkit.org/show_bug.cgi?id=238353
<rdar://90575996>

Reviewed by Chris Dumez.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::adjustSettingsForCaptivePortal): Disable auto-play for media for
Captive Portals.

7:05 PM Changeset in webkit [291842] by Chris Dumez
  • 31 edits in trunk

FileSystem::pathByAppendingComponent() should take in StringViews instead of Strings
​https://bugs.webkit.org/show_bug.cgi?id=238344

Reviewed by Geoff Garen.

Source/JavaScriptCore:

  • jsc.cpp:

Source/WebCore:

  • Modules/indexeddb/IDBDatabaseIdentifier.cpp:

(WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot const):
(WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot):

  • Modules/indexeddb/IDBDatabaseIdentifier.h:
  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::getAllDatabaseNamesAndVersions):
(WebCore::IDBServer::IDBServer::diskUsage):
(WebCore::IDBServer::IDBServer::upgradedDatabaseDirectory):

  • Modules/webdatabase/OriginLock.cpp:

(WebCore::lockFileNameForPath):

  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:

(WebCore::CDMInstanceFairPlayStreamingAVFObjC::setStorageDirectory):

  • platform/network/curl/CurlCacheManager.cpp:

(WebCore::CurlCacheManager::loadIndex):

Source/WebKit:

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:

(WebKit::PCM::Database::Database):

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::storagePath):
(WebKit::CacheStorage::Engine::initialize):

  • NetworkProcess/cache/CacheStorageEngineCaches.cpp:

(WebKit::CacheStorage::cachesListFilename):
(WebKit::CacheStorage::cachesOriginFilename):
(WebKit::CacheStorage::Caches::cachesSizeFilename):

  • NetworkProcess/cache/NetworkCacheBlobStorage.cpp:

(WebKit::NetworkCache::BlobStorage::blobPathForHash const):

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::makeCachePath):

  • NetworkProcess/storage/IDBStorageManager.cpp:

(WebKit::IDBStorageManager::idbStorageOriginDirectory):

  • UIProcess/Inspector/win/InspectorResourceURLSchemeHandler.cpp:

(WebKit::InspectorResourceURLSchemeHandler::platformStartTask):

Source/WebKitLegacy/mac:

  • Storage/WebDatabaseProvider.mm:

(WebDatabaseProvider::indexedDatabaseDirectoryPath):

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):

Source/WTF:

FileSystem::pathByAppendingComponent() should take in StringViews instead of Strings, to avoid
unnecessary String constructor in many instances.

  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::pathByAppendingComponent):

  • wtf/FileSystem.h:
  • wtf/posix/FileSystemPOSIX.cpp:

(WTF::FileSystemImpl::pathByAppendingComponent):

Tools:

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::TEST_F):

6:03 PM Changeset in webkit [291841] by Nikos Mouchtaris
  • 5 edits in trunk

calc(): Handle finite value with infinite step in round()
​https://bugs.webkit.org/show_bug.cgi?id=238231

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-values/round-function-expected.txt:

Source/WebCore:

Add handling for finite value with infinite step in round().

  • css/calc/CSSCalcOperationNode.cpp:

(WebCore::CSSCalcOperationNode::evaluateOperator):

  • css/calc/CSSCalcPrimitiveValueNode.cpp:

(WebCore::CSSCalcPrimitiveValueNode::invert):

5:50 PM Changeset in webkit [291840] by Alan Coon
  • 1 edit in branches/safari-613-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm

Apply patch. rdar://problem/90792723

5:41 PM Changeset in webkit [291839] by Russell Epstein
  • 1 copy in tags/Safari-614.1.7

Tag Safari-614.1.7.

5:15 PM Changeset in webkit [291838] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.17

Tag Safari-614.1.5.17.

5:13 PM Changeset in webkit [291837] by Chris Dumez
  • 29 edits in trunk

String's startsWith() / endsWith() / replace() should take in a StringView instead of a String
​https://bugs.webkit.org/show_bug.cgi?id=238333

Reviewed by Geoff Garen.

Source/JavaScriptCore:

  • runtime/FileBasedFuzzerAgent.cpp:

(JSC::FileBasedFuzzerAgent::getPredictionInternal):

  • runtime/IntlRelativeTimeFormat.cpp:

(JSC::singularUnit):

  • runtime/TemporalObject.cpp:

(JSC::singularUnit):

Source/WebCore:

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::shouldIgnoreIceCandidate):

  • css/CSSImageValue.cpp:

(WebCore::ResolvedURL::isLocalURL const):

  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::screenshot):

  • page/csp/ContentSecurityPolicySource.cpp:

(WebCore::ContentSecurityPolicySource::pathMatches const):

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLANGLE::getUnmangledInfoLog):

  • platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:

(WebCore::CDMFactoryFairPlayStreaming::supportsKeySystem):

  • platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:

(WebCore::ImageDecoderGStreamer::supportsContainerType):
(WebCore::ImageDecoderGStreamer::canDecodeType):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::supportsType):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::checkVaryingsPacking const):

  • platform/network/ParsedRequestRange.cpp:

(WebCore::ParsedRequestRange::parse):

  • platform/network/curl/CookieJarDB.cpp:

(WebCore::checkSecureCookie):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::handleAcceptedCandidateWithSoftSpaces):

Source/WTF:

String's startsWith() / endsWith() / replace() should take in a StringView instead of a String,
to avoid unnecessary String creation in many instances.

  • wtf/text/AtomString.h:
  • wtf/text/StringCommon.h:

(WTF::startsWith): Deleted.
(WTF::startsWithIgnoringASCIICase): Deleted.
(WTF::endsWith): Deleted.
(WTF::endsWithIgnoringASCIICase): Deleted.

  • wtf/text/StringImpl.cpp:

(WTF::equalInner):
(WTF::StringImpl::startsWith const):
(WTF::StringImpl::startsWithIgnoringASCIICase const):
(WTF::StringImpl::hasInfixStartingAt const):
(WTF::StringImpl::endsWith):
(WTF::StringImpl::endsWithIgnoringASCIICase const):
(WTF::StringImpl::hasInfixEndingAt const):
(WTF::StringImpl::replace):

  • wtf/text/StringImpl.h:

(WTF::StringImpl::startsWith const): Deleted.
(WTF::StringImpl::endsWith const): Deleted.

  • wtf/text/StringView.h:

(WTF::startsWith):
(WTF::startsWithIgnoringASCIICase):
(WTF::endsWith):
(WTF::endsWithIgnoringASCIICase):
(WTF::String::replace):
(WTF::String::startsWith const):
(WTF::String::startsWithIgnoringASCIICase const):
(WTF::String::endsWith const):
(WTF::String::endsWithIgnoringASCIICase const):
(WTF::String::hasInfixStartingAt const):
(WTF::String::hasInfixEndingAt const):
(WTF::AtomString::startsWith const):
(WTF::AtomString::startsWithIgnoringASCIICase const):
(WTF::AtomString::endsWith const):
(WTF::AtomString::endsWithIgnoringASCIICase const):

  • wtf/text/WTFString.h:
5:13 PM Changeset in webkit [291836] by Russell Epstein
  • 2 edits in branches/safari-614.1.5-branch/Source/WebKit

Cherry-pick r291828. rdar://problem/90794287

After r291814, we need to create the INSTALL_PATH for the iOS sandbox files
​https://bugs.webkit.org/show_bug.cgi?id=238351

Reviewed by Saam Barati.

We need to create the $(INSTALL_PATH) for the preprocessed iOS sandbox files.
Before r291814, the built-in Xcode copy step used ditto when copying the .sb
files thus creating $(INSTALL_PATH) and its intermediate directories.
That change set made it so that all WebKit iOS sandbox profile files are preprocessed
thus eliminating the Xcode copy step.

  • WebKit.xcodeproj/project.pbxproj:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291828 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5:08 PM Changeset in webkit [291835] by don.olmstead@sony.com
  • 6 edits in trunk/Source

[GLib] Add user directories to WTF::FileSystem
​https://bugs.webkit.org/show_bug.cgi?id=238348

Reviewed by Adrian Perez de Castro.

Source/WebKit:

Use the new FileSystem APIs instead of calling glib directly.

  • UIProcess/Inspector/gtk/WebInspectorUIProxyGtk.cpp:

(WebKit::inspectorWebsiteDataStore):

  • UIProcess/glib/WebsiteDataStoreGLib.cpp:

(WebKit::WebsiteDataStore::cacheDirectoryFileSystemRepresentation):
(WebKit::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation):

Source/WTF:

Add FileSystem::userCacheDirectory and FileSystem::userDataDirectory which call into
g_get_user_cache_dir and g_get_user_data_dir respectively.

  • wtf/FileSystem.h:
  • wtf/glib/FileSystemGlib.cpp:

(WTF::FileSystemImpl::userCacheDirectory):
(WTF::FileSystemImpl::userDataDirectory):

5:01 PM Changeset in webkit [291834] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.5.2

Tag Safari-614.1.5.5.2.

4:59 PM Changeset in webkit [291833] by Russell Epstein
  • 2 edits in branches/safari-614.1.5.5-branch/Source/WebKit

Cherry-pick r291828. rdar://problem/90794287

After r291814, we need to create the INSTALL_PATH for the iOS sandbox files
​https://bugs.webkit.org/show_bug.cgi?id=238351

Reviewed by Saam Barati.

We need to create the $(INSTALL_PATH) for the preprocessed iOS sandbox files.
Before r291814, the built-in Xcode copy step used ditto when copying the .sb
files thus creating $(INSTALL_PATH) and its intermediate directories.
That change set made it so that all WebKit iOS sandbox profile files are preprocessed
thus eliminating the Xcode copy step.

  • WebKit.xcodeproj/project.pbxproj:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291828 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4:57 PM Changeset in webkit [291832] by Devin Rousso
  • 6 edits in trunk/Source

[iOS] make WKMouseGestureRecognizer officially conform to _UIHoverEventRespondable
​https://bugs.webkit.org/show_bug.cgi?id=238242
<rdar://problem/88828903>

Reviewed by Tim Horton.

Source/WebKit:

  • UIProcess/ios/WKMouseGestureRecognizer.h:
  • UIProcess/ios/WKMouseGestureRecognizer.mm:
  • Platform/spi/ios/UIKitSPI.h:

Source/WTF:

  • wtf/PlatformHave.h:
4:56 PM Changeset in webkit [291831] by Russell Epstein
  • 9 edits in branches/safari-614.1.5.5-branch/Source

Versioning.

WebKit-7614.1.5.5.2

4:53 PM Changeset in webkit [291830] by Nikos Mouchtaris
  • 8 edits in trunk

Fix serialization of nan, infinity, -infinity for calc()
​https://bugs.webkit.org/show_bug.cgi?id=238288

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-values/calc-catch-divide-by-0-expected.txt:
  • web-platform-tests/css/css-values/calc-infinity-nan-serialize-angle-expected.txt:
  • web-platform-tests/css/css-values/calc-infinity-nan-serialize-length-expected.txt:
  • web-platform-tests/css/css-values/calc-infinity-nan-serialize-time-expected.txt:

Source/WebCore:

Update serializing of nan, infinity, -infinity to be in line with step 2 of:
​https://drafts.csswg.org/css-values/#calc-serialize.

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::formatNumberValue const):
(WebCore::CSSPrimitiveValue::formatIntegerValue const):

4:48 PM Changeset in webkit [291829] by Russell Epstein
  • 10 edits
    4 moves in branches/safari-614.1.5-branch/Source/WebKit

Cherry-pick r291814. rdar://problem/90343926

Update Sandbox profiles for system content path
​https://bugs.webkit.org/show_bug.cgi?id=238255

Reviewed by Per Arne Vollan.

Updated WebKit sandbox profiles to include system content path rule files when building with the system content path.
Changed the iOS profiles to be preprocessed to make these changes.

  • DerivedSources-input.xcfilelist
  • DerivedSources-output.xcfilelist
  • DerivedSources.make:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb.
  • Shared/Sandbox/preferences.sb:
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291814 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4:38 PM Changeset in webkit [291828] by msaboff@apple.com
  • 2 edits in trunk/Source/WebKit

After r291814, we need to create the INSTALL_PATH for the iOS sandbox files
​https://bugs.webkit.org/show_bug.cgi?id=238351

Reviewed by Saam Barati.

We need to create the $(INSTALL_PATH) for the preprocessed iOS sandbox files.
Before r291814, the built-in Xcode copy step used ditto when copying the .sb
files thus creating $(INSTALL_PATH) and its intermediate directories.
That change set made it so that all WebKit iOS sandbox profile files are preprocessed
thus eliminating the Xcode copy step.

  • WebKit.xcodeproj/project.pbxproj:
4:38 PM Changeset in webkit [291827] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.5.1

Tag Safari-614.1.5.5.1.

4:37 PM Changeset in webkit [291826] by Russell Epstein
  • 10 edits
    4 moves in branches/safari-614.1.5.5-branch/Source/WebKit

Cherry-pick r291814. rdar://problem/90343926

Update Sandbox profiles for system content path
​https://bugs.webkit.org/show_bug.cgi?id=238255

Reviewed by Per Arne Vollan.

Updated WebKit sandbox profiles to include system content path rule files when building with the system content path.
Changed the iOS profiles to be preprocessed to make these changes.

  • DerivedSources-input.xcfilelist
  • DerivedSources-output.xcfilelist
  • DerivedSources.make:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb.
  • Shared/Sandbox/preferences.sb:
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291814 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4:37 PM Changeset in webkit [291825] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Set bug_title property appropriately
​https://bugs.webkit.org/show_bug.cgi?id=238342

Reviewed by Ryan Haddad.

  • CISupport/ews-build/steps.py:

(BugzillaMixin._is_bug_closed):

4:29 PM Changeset in webkit [291824] by Patrick Angle
  • 4 edits in trunk/Source/WebCore

Web Inspector: Blank inspector in a page with container queries
​https://bugs.webkit.org/show_bug.cgi?id=238338

Reviewed by Devin Rousso.

Because there is no CSSOM implementation for container queries, we are unable to inspect them currently.
However, we should be resilient to the absence of that implementation and expect that not all rules have a
matching CSSOM implementation, instead of just crashing when it happens. This patch only resolves crashes as the
result of the presence of container queries, and followup work will be done to actually plumb the correct
information to Web Inspector to show these rules.

  • inspector/InspectorStyleSheet.cpp:

(WebCore::InspectorStyleSheet::collectFlatRules):

  • inspector/agents/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::collectStyleSheets):

  • style/InspectorCSSOMWrappers.cpp:

(WebCore::Style::InspectorCSSOMWrappers::collect):

4:23 PM Changeset in webkit [291823] by Patrick Angle
  • 2 edits in trunk/Source/WebKit

REGRESSION(STP142): "A JavaScript exception occured: Can't find variable: utils" from SafariDriver
​https://bugs.webkit.org/show_bug.cgi?id=238335

Reviewed by Devin Rousso.

Following r289467, we can't just copy the WebDriver atom scripts to the build products, since they now need to
have utils.js in any script that uses the utils namespace. The WebKit.framework copy of these scripts are
later used while building safaridriver, so they need to include the scripts as well.

  • WebKit.xcodeproj/project.pbxproj:
4:22 PM Changeset in webkit [291822] by Russell Epstein
  • 9 edits in branches/safari-614.1.5.5-branch/Source

Versioning.

WebKit-7614.1.5.5.1

4:14 PM Changeset in webkit [291821] by pvollan@apple.com
  • 6 edits in trunk/Source/WebKit

REGRESSION(r286590): Links with URL schemes are not clickable in Mail
​https://bugs.webkit.org/show_bug.cgi?id=238262
<rdar://89145552>

Reviewed by Geoffrey Garen.

This feature requires access to the Launch Services daemon in Mail and other apps on iOS.
This patch is a partial revert of r286590.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::nonBrowserServices):
(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

4:09 PM Changeset in webkit [291820] by Russell Epstein
  • 1 copy in branches/safari-614.1.5.5-branch

New branch.

3:57 PM Changeset in webkit [291819] by Russell Epstein
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.17

3:43 PM Changeset in webkit [291818] by Brent Fulgham
  • 4 edits in trunk

Disable RTCRtpScriptTransform in CaptivePortal mode
​https://bugs.webkit.org/show_bug.cgi?id=238340
<rdar://87821636>

Reviewed by Chris Dumez.

Source/WebKit:

When displaying content in a captive portal, we should make sure we disable
WebRTCEncodedTransform.

Tests: TestWebKitAPI

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::adjustSettingsForCaptivePortal): Disable WebRTCEncodedTransform.

Tools:

Add a test that RTCRtpScriptTransform is properly disabled in
CaptivePortal mode.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
3:27 PM Changeset in webkit [291817] by graouts@webkit.org
  • 15 edits
    3 adds in trunk

DOM GPUP: paintSystemPreviewBadge (AR QuickLook element badge)
​https://bugs.webkit.org/show_bug.cgi?id=238295
rdar://83580608

Reviewed by Dean Jackson.

Source/WebCore:

Add a new SystemImage subclass to deal with the ARKit badge, moving the custom drawing code under
RenderThemeIOS::paintSystemPreviewBadge() to ARKitBadgeSystemImage::draw().

To facilitate this, we must also have ARKitBadgeSystemImage wrap the input Image provided to
RenderThemeIOS::paintSystemPreviewBadge() so that the CoreImage filters are applied correctly.

Finally, we remove some use of using namespace WebCore in WebSpeechRecognizerTask and
WebSpeechRecognizerTaskMock since it caused some unified build failures.

  • Headers.cmake:
  • Modules/speech/cocoa/WebSpeechRecognizerTask.mm:

(-[WebSpeechRecognizerTaskImpl initWithIdentifier:locale:doMultipleRecognitions:reportInterimResults:maxAlternatives:delegateCallback:]):
(-[WebSpeechRecognizerTaskImpl callbackWithTranscriptions:isFinal:]):
(-[WebSpeechRecognizerTaskImpl sendSpeechStartIfNeeded]):
(-[WebSpeechRecognizerTaskImpl sendSpeechEndIfNeeded]):
(-[WebSpeechRecognizerTaskImpl sendEndIfNeeded]):
(-[WebSpeechRecognizerTaskImpl speechRecognizer:availabilityDidChange:]):
(-[WebSpeechRecognizerTaskImpl speechRecognitionTask:didFinishSuccessfully:]):
(-[WebSpeechRecognizerTask initWithIdentifier:locale:doMultipleRecognitions:reportInterimResults:maxAlternatives:delegateCallback:]):

  • Modules/speech/cocoa/WebSpeechRecognizerTaskMock.mm:

(-[WebSpeechRecognizerTaskMock initWithIdentifier:locale:doMultipleRecognitions:reportInterimResults:maxAlternatives:delegateCallback:]):
(-[WebSpeechRecognizerTaskMock audioSamplesAvailable:]):
(-[WebSpeechRecognizerTaskMock abort]):

  • Modules/system-preview/ARKitBadgeSystemImage.h: Added.

(WebCore::ARKitBadgeSystemImage::encode const):
(WebCore::ARKitBadgeSystemImage::decode):
(isType):

  • Modules/system-preview/ARKitBadgeSystemImage.mm: Added.

(WebCore::arKitBundle):
(WebCore::loadARKitPDFPage):
(WebCore::systemPreviewLogo):
(WebCore::ARKitBadgeSystemImage::draw const):

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/SystemImage.h:
  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::drawSystemImage):

  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::paintSystemPreviewBadge):
(WebCore::arKitBundle): Deleted.
(WebCore::loadARKitPDFPage): Deleted.
(WebCore::systemPreviewLogo): Deleted.

Source/WebKit:

Make sure we restore the Image on the ARKitBadgeSystemImage before we attempt to draw it.

  • GPUProcess/graphics/RemoteDisplayListRecorder.cpp:

(WebKit::RemoteDisplayListRecorder::drawSystemImage):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Ref<SystemImage>>::encode):
(IPC::ArgumentCoder<Ref<SystemImage>>::decode):

LayoutTests:

The system-preview/badge.html test now passes reliably with DOM GPUP enabled,
which incidentally fixes bug 236922.

  • platform/ios-wk2/TestExpectations:
3:22 PM Changeset in webkit [291816] by Kate Cheney
  • 3 edits
    2 adds in trunk

REGRESSION (Safari 15.4): Nonce from link isn't used when loading style sheet
​https://bugs.webkit.org/show_bug.cgi?id=238014
<rdar://problem/90599352>

Reviewed by Brent Fulgham.

Source/WebCore:

In ​https://bugs.webkit.org/show_bug.cgi?id=179728 we implemented
nonce hiding from the DOM. It seems we missed once location
where we need to reference the element.nonce() instead of the
nonce attribute.

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::process):

LayoutTests:

  • http/tests/security/contentSecurityPolicy/stylesheet-allowed-with-nonce-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/stylesheet-allowed-with-nonce.py: Added.
2:55 PM WebKitGTK/2.36.x edited by Adrian Perez de Castro
(diff)
2:41 PM Changeset in webkit [291815] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] JSRemoteFunction thunk should materialize code-pointer
​https://bugs.webkit.org/show_bug.cgi?id=238313

Reviewed by Mark Lam.

When invoking a JSRemoteFunction, we must first wrap the arguments passed to it.
The wrapping operation may trigger a GC, and GC can jettison JIT code. As a result,
even though we know that the target JSFunction has JIT code that we want to execute,
the JIT code may be jettisoned (while wrapping the arguments for it) before we get
to the call. This resulted in occasional crashes on the JSTests/stress/shadow-realm-evaluate.js test.

This patch fixes this by doing a null check on the JIT code just before calling it,
and if null (i.e. the JIT code has been jettisoned), re-materializing the JIT code
first before making the call.

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

  • jit/JITOperations.h:
  • jit/ThunkGenerators.cpp:

(JSC::remoteFunctionCallGenerator):

2:39 PM Changeset in webkit [291814] by msaboff@apple.com
  • 10 edits
    4 moves in trunk/Source/WebKit

Update Sandbox profiles for system content path
​https://bugs.webkit.org/show_bug.cgi?id=238255

Reviewed by Per Arne Vollan.

Updated WebKit sandbox profiles to include system content path rule files when building with the system content path.
Changed the iOS profiles to be preprocessed to make these changes.

  • DerivedSources-input.xcfilelist
  • DerivedSources-output.xcfilelist
  • DerivedSources.make:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb.
  • Shared/Sandbox/preferences.sb:
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/com.apple.WebProcess.sb.in:
1:59 PM WebKitGTK/2.36.x edited by Adrian Perez de Castro
(diff)
1:50 PM Changeset in webkit [291813] by Jean-Yves Avenard
  • 5 edits
    4 adds in trunk

Safari can't play video completely at bilibili.com
​https://bugs.webkit.org/show_bug.cgi?id=236440
rdar://88761053

Reviewed by Jer Noble.

Source/WebCore:

Video frames were incorrectly evicted during a call to appendBuffer
as the Source Buffer incorrectly assumed a discontinuity was present.

When appending data to a source buffer, the MSE specs describe a method
to detect discontinuities in the Coded Frame Processing algorithm
(​https://www.w3.org/TR/media-source/#sourcebuffer-coded-frame-processing)
step 6:
"

  • If last decode timestamp for track buffer is set and decode timestamp is less than last decode timestamp:

OR

  • If last decode timestamp for track buffer is set and the difference between decode timestamp and last decode timestamp is greater than 2 times last frame duration.

"
The issue being what defines the last frame duration.
Is it the frame last seen in the coded frame processing loop or the frame
whose presentation timestamp is just before the one we are currently
processing.

H264 and HEVC have a concept of b-frames: that is a frame that depends
on a future frame to be decoded.
Those frames are found in the container and can be identified by their
presentation timestamp higher than the frame following in decode order.
Those present a challenge as the frame prior the current one in
presentation order, may actually only be found several frames back in
decode order.
Bug 181891 attempted to fix a similar issue, and used the longest
"decode duration" as a workaround to detect discontinuity in the content.
It mentioned adopting the same technique as in Mozilla's MSE
implementation, but Mozilla also skip discontinuity detection within a
media segment (​https://www.w3.org/TR/media-source/#media-segment which for
fMP4 is a single moof box) an approach that can't be achieved with
CoreMedia's AVStreamDataParser.
As mentioned in bug 181891, CoreMedia ignore the decode timestamps' delta
and juggles with the sample's duration so that there's no discontinuity
in the demuxed samples' presentation time, causing false positive in the
gap detection algorithm.

Bilibili uses HEVC content, and uses an encoding that generate lots
of b-frames, with a very wide sliding window (seen up to 12 frames).
By using the longest frame duration found in either presentation or
decode duration as threshold to identify a discontinuity, we can
properly parse the content and not incorrectly evict appended frames.
(As a side note, the use of HEVC with B-Frames is peculiar as not all
hardware support it.)
It is difficult to identify here if the issue is within the bilibili's
content or CoreMedia's output, though the responsibility more than
likely lies with bilibili.

Test: media/media-source/media-mp4-hevc-bframes.html

  • platform/graphics/SourceBufferPrivate.cpp:

(WebCore::SourceBufferPrivate::TrackBuffer::TrackBuffer):
(WebCore::SourceBufferPrivate::resetTrackBuffers):
(WebCore::SourceBufferPrivate::didReceiveSample):

  • platform/graphics/SourceBufferPrivate.h:

LayoutTests:

  • media/media-source/content/test-bframes-hevc-manifest.json: Added.
  • media/media-source/content/test-bframes-hevc.mp4: Added.
  • media/media-source/media-mp4-hevc-bframes-expected.txt: Added.
  • media/media-source/media-mp4-hevc-bframes.html: Added.
12:53 PM Changeset in webkit [291812] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[WinCairo] WCTileGrid should create tiles only for the inside of layer area
​https://bugs.webkit.org/show_bug.cgi?id=238317

Reviewed by Don Olmstead.

The coverage rect returned by computeVisibleAndCoverageRect may be
bigger than the layer rect. Tiles should be paved only for the
intersection of the coverage rect and the layer rect.

  • WebProcess/WebPage/wc/WCTileGrid.cpp:

(WebKit::WCTileGrid::tileRectFromPixelRect): Take the intersection
with the layer rect. Return an empty rect if the intersection is
empty.

12:39 PM Changeset in webkit [291811] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Remove slow codepath matching arithmetics in FontCascade::widthForSimpleText
​https://bugs.webkit.org/show_bug.cgi?id=238306

Reviewed by Antti Koivisto.

By now if we measure some text using the fast codepath, we usually stay on this codepath for the rest
of the layout (i.e. preferred width computation uses the same fast codepath, and we also don't dynamically switch between modern and legacy).

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::widthForSimpleText const):

12:36 PM Changeset in webkit [291810] by pvollan@apple.com
  • 6 edits in trunk/Source/WebKit

[iOS] Disable unneeded code when content filtering is running in the Network process
​https://bugs.webkit.org/show_bug.cgi?id=238332

Reviewed by Geoffrey Garen.

  • Shared/Cocoa/LoadParametersCocoa.mm:

(WebKit::LoadParameters::platformEncode const):
(WebKit::LoadParameters::platformDecode):

  • Shared/LoadParameters.h:
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::addPlatformLoadParameters):

  • UIProcess/WebProcessProxy.h:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::platformDidReceiveLoadParameters):

11:52 AM Changeset in webkit [291809] by Elliott Williams
  • 6 edits
    1 add
    2 deletes in trunk/Source/WebKit

[XCBuild] WebKit: Use native headers + build rules for migrated headers
​https://bugs.webkit.org/show_bug.cgi?id=238213
<rdar://problem/90172142>

Reviewed by Alexey Proskuryakov.

Replace the Make-based header migration script phase with a native project-based
representation in WebKit.xcodeproj.

The project now contains a 'Migrated Headers' group which lists the headers from
WebKitLegacy and WebCore that are copied to WebKit.framework during the build process. This
group must be kept in sync with the actual headers in WebKitLegacy, but since new headers
shouldn't really be added to WebKitLegacy this will be low-friction.

The preexisting postprocess-header-rule build rule is refactored to handle the
transformations needed for Migrated headers, which previous came from WebKitLegacy's
postprocess-header-rule script or from one of the MigrateHeaders*.make files.

  • Configurations/WebKit.xcconfig: Use EXCLUDED_SOURCE_FILE_NAMES to customize migrated

headers on mac vs. non-mac platforms.

  • Scripts/postprocess-header-rule: Refactored to incorporate WebKitLegacy's postprocessing

steps, and to do less disk I/O, now that it's always invoked as a build rule and can do less
in-place editing. Local testing shows a ~15% speedup.

  • Shared/API/Cocoa/WebKitLegacy.h: Added. Xcode's header maps forbid a header's name from

changing during the copy process, so we have to duplicate WebKitLegacy's umbrella header
instead of renaming it WebKit.h -> WebKitLegacy.h during the build.

  • WebKit.xcodeproj/project.pbxproj: Added 'Migrated Headers' group and build rule.

Configured headers to always copy using XCBuild. Removed legacy-only header script phases.

  • WebProcess/WebCoreSupport/ios/WebFrameLoaderClientIOS.mm: This file used unqualified

<HEADER.h> imports, which are not supported by Xcode's headermaps. Replaced with "HEADER.h".

  • mac/MigrateHeadersFromWebKitLegacy.make: Removed, logic now lives in

mingrate-headers-rule.sh.

  • mac/postprocess-framework-headers.sh: Removed.
  • mac/replace-webkit-additions-includes.py: Refactored to use stdin and stdout rather than

editing in-place. Corresponds to refactors in postprocess-header-rule.

11:50 AM Changeset in webkit [291808] by gnavamarino@apple.com
  • 3 edits in trunk/Source/WebCore

FormDataConsumer callback happens more than once with an exception
​https://bugs.webkit.org/show_bug.cgi?id=238091

In case of an error, it is not expected for the FormDataConsumer callback to happen
more than once with an exception. To avoid this, we introduce FormDataConsumer::didFail
which cancels/clears everything after reporting an error.

Reviewed by Youenn Fablet.

  • Modules/fetch/FormDataConsumer.cpp:

(WebCore::FormDataConsumer::read):
(WebCore::FormDataConsumer::consumeFile):
(WebCore::FormDataConsumer::consumeBlob):
(WebCore::FormDataConsumer::didFail):
(WebCore::FormDataConsumer::cancel):

  • Modules/fetch/FormDataConsumer.h:

(WebCore::FormDataConsumer::isCancelled):

11:16 AM Changeset in webkit [291807] by Matteo Flores
  • 36 edits
    4 deletes in trunk

Unreviewed, reverting r291789.

This revision caused 65+ new API failures on iOS debug

Reverted changeset:

"Release assert in Document::updateLayout() via
HTMLTextAreaElement::childrenChanged"
​https://bugs.webkit.org/show_bug.cgi?id=224471
​https://commits.webkit.org/r291789

11:15 AM Changeset in webkit [291806] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[macOS] Remove reports for some sandbox violations on process launch
​https://bugs.webkit.org/show_bug.cgi?id=238324

Reviewed by Geoffrey Garen.

Remove reports for some sandbox violations on process launch on macOS. These violations are not critical,
and are slowing down process launch. This patch also adds access to a mach syscall observed being in use.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
11:08 AM Changeset in webkit [291805] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebGPU

[WebGPU] Fix the watchOS build
​https://bugs.webkit.org/show_bug.cgi?id=238337

Unreviewed.

  • WebGPU/Texture.mm:

(WebGPU::Device::createTexture):

10:57 AM Changeset in webkit [291804] by Jonathan Bedard
  • 9 edits
    2 adds in trunk/Tools

[git-webkit] Install git-lfs
​https://bugs.webkit.org/show_bug.cgi?id=238270
<rdar://problem/90708032>

Reviewed by Aakash Jain and Wenson Hsieh.

  • Tools/Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitcorepy/webkitcorepy/mocks/requests_.py:

(Response.init): Accept binary content or text.
(Response.text): Decode binary content.

  • Tools/Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:

(Git): Add git lfs mocks.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/git_hub.py:

(GitHub.init): Mock project release binaries.
(GitHub.request): Ditto.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/init.py: Add InstallGitLFS.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/install_git_lfs.py: Added.

(InstallGitLFS):
(InstallGitLFS.url): Return URL specific to the current platform.
(InstallGitLFS.install): Install git lfs globally on this machine.
(InstallGitLFS.parser): Install git lfs even if it is already installed.
(InstallGitLFS.main): Check git lfs version, install it if needed, and then run git lfs install.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/install_git_lfs_unittest.py: Added.

(TestInstallGitLFS):
(TestInstallGitLFS.setUp):
(TestInstallGitLFS.test_svn):
(TestInstallGitLFS.test_remote_git):
(TestInstallGitLFS.test_url):
(TestInstallGitLFS.test_install):
(TestInstallGitLFS.test_configure):
(TestInstallGitLFS.test_no_op):

Canonical link: ​https://commits.webkit.org/248831@main

10:30 AM Changeset in webkit [291803] by Alan Coon
  • 1 edit in branches/safari-613-branch/Source/WebCore/PAL/pal/spi/cocoa/AVFoundationSPI.h

Unreviewed build fix. rdar://problem/89972004

10:20 AM Changeset in webkit [291802] by Ben Nham
  • 5 edits in trunk

PushAPI.firePushEventWithNoPagesTimeout fails in debug builds
​https://bugs.webkit.org/show_bug.cgi?id=238309

Reviewed by Youenn Fablet.

Source/WebCore:

Export RegistrationDatabase::schemaVersion for tests to use.

  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::databaseFilename):
(WebCore::cleanOldDatabases):

  • workers/service/server/RegistrationDatabase.h:

Tools:

This test was dying on an assertion in debug builds because we were calling
terminateNetworkProcessWhileRegistrationIsStored with a brand new WKWebsiteDataStore, which
wasn't associated with an active NetworkProcess connection since it was a brand new object.
Fix this by using the existing data store object instead.

Additionally, terminateNetworkProcessWhileRegistrationIsStored was waiting on the wrong
filename, so I changed the test to reference the correct filename.

  • TestWebKitAPI/Tests/WebKitCocoa/PushAPI.mm:
10:18 AM Changeset in webkit [291801] by jonlee@apple.com
  • 4 edits in trunk/LayoutTests

Unreviewed gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk2/TestExpectations:
9:55 AM Changeset in webkit [291800] by Chris Dumez
  • 36 edits in trunk

String's find() / reverseFind() / replace() should take in a StringView instead of a String
​https://bugs.webkit.org/show_bug.cgi?id=238287

Reviewed by Darin Adler.

Source/WebCore:

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::decodeDatabaseName):

  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::setValueCommon):

  • page/UserContentURLPattern.cpp:

(WebCore::UserContentURLPattern::parse):

  • platform/mediastream/CaptureDevice.h:

(WebCore::CaptureDevice::label const):

Source/WebKit:

  • WebProcess/WebCoreSupport/WebContextMenuClient.cpp:

(WebKit::WebContextMenuClient::searchWithGoogle):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebContextMenuClient.cpp:

(WebContextMenuClient::searchWithGoogle):

Source/WTF:

String's find() / reverseFind() / replace() should take in a StringView instead of a String
to avoid unnecessary String construction in many cases. We should probably do the same for
more String functions where we don't really need a String parameter, but those will be
addressed separately.

  • wtf/text/AtomString.h:
  • wtf/text/StringCommon.h:

(WTF::findCommon): Deleted.

  • wtf/text/StringImpl.cpp:

(WTF::StringImpl::find):
(WTF::StringImpl::findIgnoringASCIICase const):
(WTF::StringImpl::reverseFind):
(WTF::StringImpl::replace):

  • wtf/text/StringImpl.h:
  • wtf/text/StringView.h:

(WTF::findCommon):
(WTF::findIgnoringASCIICase):
(WTF::String::find const):
(WTF::String::findIgnoringASCIICase const):
(WTF::String::reverseFind const):
(WTF::String::contains const):
(WTF::String::containsIgnoringASCIICase const):
(WTF::String::replace):
(WTF::AtomString::find const):
(WTF::AtomString::findIgnoringASCIICase const):
(WTF::AtomString::contains const):
(WTF::AtomString::containsIgnoringASCIICase const):

  • wtf/text/WTFString.h:
8:55 AM Changeset in webkit [291799] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Do not construct a TextRun for measuring a single whitespace when simplified content measuring can be used
​https://bugs.webkit.org/show_bug.cgi?id=238228

Reviewed by Antti Koivisto.

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::InlineItemsBuilder::computeInlineTextItemWidths): Just simply call TextUtil::width

  • layout/formattingContexts/inline/text/TextUtil.cpp:

(WebCore::Layout::spaceWidth):
(WebCore::Layout::TextUtil::width):
(WebCore::Layout::TextUtil::spaceWidth): Deleted.

  • layout/formattingContexts/inline/text/TextUtil.h:
8:53 AM Changeset in webkit [291798] by Tyler Wilcock
  • 7 edits in trunk/Source/WebCore

AX: Remove firstChild, lastChild, previousSibling, nextSibling, nextSiblingUnignored, and previousSiblingUnignored from the AXCoreObject interface
​https://bugs.webkit.org/show_bug.cgi?id=238267

Reviewed by Andres Gonzalez.

All of these except nextSibling and previousSibling are ASSERT_NOT_REACHED no-ops
in AXIsolatedObject. We do compute next and previous sibling for isolated objects,
but they're only used in one place (appendChildrenToArray). Usage of these functions
in appendChildrenToArray doesn't make sense for isolated objects, as it would require
the isolated object to be ignored for them to be called, and we should never have created an
isolated object from an ignored live object.

Dovetailing from that, this patch also removes AXPropertyName::IsAccessibilityIgnored,
since this should always be false for isolated objects. ASSERTs have been added in a
few places to assure this is the case.

  • accessibility/AccessibilityObject.cpp:

(WebCore::Accessibility::appendChildrenToArray):

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::firstChild const):
(WebCore::AccessibilityObject::lastChild const):
(WebCore::AccessibilityObject::previousSibling const):
(WebCore::AccessibilityObject::nextSibling const):

  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):
(WebCore::AXIsolatedObject::firstChild const): Deleted.
(WebCore::AXIsolatedObject::lastChild const): Deleted.
(WebCore::AXIsolatedObject::nextSiblingUnignored const): Deleted.
(WebCore::AXIsolatedObject::previousSiblingUnignored const): Deleted.

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/isolatedtree/AXIsolatedTree.h:

Remove AXPropertyName::NextSibling, AXPropertyName::PreviousSibling,
AXPropertyName::IsAccessibilityIgnored.

8:50 AM Changeset in webkit [291797] by cathiechen
  • 16 edits
    2 copies
    40 adds in trunk/LayoutTests

Update css/css-sizing/contain-intrinsic-size tests from WPT
​https://bugs.webkit.org/show_bug.cgi?id=238312

Reviewed by Rob Buis.

LayoutTests/imported/w3c:

Update the contain-intrinsic-size tests to wpt commit: 7c61a4594a95682531367b6956d1c37f8b8fd486

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/animation/contain-intrinsic-size-interpolation-expected.txt:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/animation/contain-intrinsic-size-interpolation.html:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-001-expected.txt: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-001.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-002-expected.txt: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-002.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-003-expected.txt: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-003.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-004-expected.txt: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-004.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-005-expected.txt: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-005.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-001-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-002-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-003-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-004-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-005-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-006-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-007-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-008-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-009-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-010-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-011-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-012-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-013-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-014-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-015-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-016-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-017-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-018-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-019-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-020-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-021-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-022-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-023-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-024-ref.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-025-expected.html:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-025-ref.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-025-expected.html.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-026-expected.html:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-026-ref.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-026-expected.html.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-027-expected.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-027.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-logical-001-expected.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-logical-001.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-logical-002-expected.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-logical-002.html: Added.
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed-expected.txt:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed.html:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-invalid-expected.txt:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-invalid.html:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-valid-expected.txt:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-valid.html:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/w3c-import.log:

LayoutTests:

8:29 AM Changeset in webkit [291796] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

MatchedDeclarationCache key is already hashed
​https://bugs.webkit.org/show_bug.cgi?id=238321

Reviewed by Alan Bujtas.

  • style/MatchedDeclarationsCache.h:
8:03 AM Changeset in webkit [291795] by Chris Dumez
  • 2 edits in trunk/Tools

Unreviewed, update outdated comment after r291787.

  • TestWebKitAPI/Tests/WTF/StringImpl.cpp:

(TestWebKitAPI::TEST):

7:15 AM Changeset in webkit [291794] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[IFC][Integration] RenderText::computeCanUseSimplifiedTextMeasuring should take first-line style into account
​https://bugs.webkit.org/show_bug.cgi?id=238243

Reviewed by Antti Koivisto.

This is in preparation for using the fast text measuring codepath for legacy line layout content.

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::buildTree):

  • rendering/RenderText.cpp:

(WebCore::RenderText::computeCanUseSimplifiedTextMeasuring const):

6:47 AM Changeset in webkit [291793] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

Devirtualize RenderText::width
​https://bugs.webkit.org/show_bug.cgi?id=238285

Reviewed by Antti Koivisto.

RenderCombineText handling is moved to RenderText (we already handle combine text in RenderText::widthFromCache).

  • rendering/RenderCombineText.cpp:

(WebCore::RenderCombineText::combineTextIfNeeded): These are all non-text-combine callsites.
(WebCore::RenderCombineText::width const): Deleted.

  • rendering/RenderCombineText.h:
  • rendering/RenderText.cpp:

(WebCore::combineTextWidth): RenderCombineText::combinedTextWidth returns the same value as RenderCombineText::width.
(WebCore::RenderText::widthFromCache const):
(WebCore::RenderText::width const):

  • rendering/RenderText.h:
6:04 AM Changeset in webkit [291792] by Adrian Perez de Castro
  • 4 edits in trunk/Source/WebKit

[GTK] REGRESSION(r291613): Build broken with USE_GTK4 + ENABLE_ACCESSIBILITY
​https://bugs.webkit.org/show_bug.cgi?id=238320

Reviewed by Carlos Garcia Campos.

Guard remaning uses of ATK when building with GTK4, where ATK is not used at all.

  • UIProcess/API/glib/WebKitWebViewAccessible.cpp:
  • UIProcess/API/glib/WebKitWebViewAccessible.h:
  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseDispose):

5:44 AM Changeset in webkit [291791] by commit-queue@webkit.org
  • 4 edits in trunk

REGRESSION (r287807): WEBGL_multi_draw validation rejecting valid arguments
​https://bugs.webkit.org/show_bug.cgi?id=238239

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-24
Reviewed by Darin Adler.

Source/WebCore:

Fix off-by-one error causing full buffer multidraws to be
marked as invalid.

Enable the newer WebGL conformance tests that test this.

  • html/canvas/WebGLMultiDraw.cpp:

(WebCore::WebGLMultiDraw::validateOffset):

LayoutTests:

Enable the newer WebGL conformance tests that test this, marked
Slow as they take a while to run.

5:18 AM Changeset in webkit [291790] by Antti Koivisto
  • 5 edits in trunk/Source/WebCore

Allow styles with appearance in matched declaration cache
​https://bugs.webkit.org/show_bug.cgi?id=238247

Reviewed by Antoine Quint.

Improve cache efficiency by allowing styles with appearance (typically form controls) to be cached.

In Speedometer this improves the cache hit rate ~75% -> 94%.

  • style/MatchedDeclarationsCache.cpp:

(WebCore::Style::MatchedDeclarationsCache::isCacheable):

Remove appearance check.

(WebCore::Style::MatchedDeclarationsCache::add):

Also cache the UA style for styles with appearance.

(WebCore::Style::MatchedDeclarationsCache::remove):

  • style/MatchedDeclarationsCache.h:
  • style/StyleResolver.cpp:

(WebCore::Style::Resolver::applyMatchedProperties):

Also simplify the case where inherited properties affect resolution of other properties by
kicking out the existing entry. This also makes the second attempt cacheable.

  • style/StyleResolver.h:
1:33 AM Changeset in webkit [291789] by svillar@igalia.com
  • 36 edits
    1 copy
    4 adds in trunk

Release assert in Document::updateLayout() via HTMLTextAreaElement::childrenChanged
​https://bugs.webkit.org/show_bug.cgi?id=224471

Reviewed by Ryosuke Niwa.

Source/WebCore:

Executing some editing commands in a text area might force the recomputation of things
like caret or the visible selection position and extent. Under some circumstances (like
when the text area has no content and children) we might end up trying to update layout
when it is not safe as a side effect of updating the caret.

In order to fix that, we can switch to a model in which we update the selection asynchronously
in the case of having a non-user triggered change. That way we don't do it inside
a restricted layout scope.

The App Highlight restoration code had to be tuned as well (when restoring and scrolling to reveal
a Quick Note on iOS MacOS). It uses TemporarySelectionChange to select and scroll to reveal the highlight
range; the code assumed that this scrolling happens synchronously, since it reverts the selection to
the original range at the end of AppHighlightStorage::attemptToRestoreHighlightAndScroll when the
TemporarySelectionChange falls out of scope. That is however no longer the case. Actually no scrolling
happened after this patch because we end up only scheduling the appearance update timer before setting
the selection back to the original state with SelectionRevealMode::DoNotReveal. Since this only happens
when the user interacts in the Notes app, it seems sensible to consider it as a user triggered event.

  • Modules/highlight/AppHighlightStorage.cpp:

(WebCore::AppHighlightStorage::attemptToRestoreHighlightAndScroll): Consider the selection change
as user triggered so scrolling actually happens.

  • editing/Editor.cpp:

(WebCore::TemporarySelectionChange::setSelection): Check the UserTriggered flags for default options.

  • editing/Editor.h: Added a new UserTriggered flag.
  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::setSelection): Call scheduleAppearanceUpdateAfterStyleChange() for
IsUserTriggered changes.
(WebCore::FrameSelection::updateSelectionAppearanceNow): Renamed from updateSelectionByUpdatingLayoutOrStyle.
It does not need the Document& attribute because it was always called with m_document.
(WebCore::FrameSelection::absoluteCaretBounds): Replaced updateSelectionByUpdatingLayoutOrStyle with
updateSelectionAppearanceNow().
(WebCore::FrameSelection::setCaretVisibility): Ditto.
(WebCore::FrameSelection::selectionBounds const): Ditto.
(WebCore::FrameSelection::revealSelection): Call updateSelectionAppearanceNow().

(WebCore::FrameSelection::updateAppearanceIfRevealingSelectionIsNeeded): New method.

(WebCore::updateSelectionByUpdatingLayoutOrStyle): Deleted.

  • editing/FrameSelection.h:
  • page/EventHandler.cpp:

(WebCore::setSelectionIfNeeded): Set the UserTriggered flag for calling setSelection().

  • page/Page.cpp:

(WebCore::Page::doAfterUpdateRendering): Call updateAppearanceAfterLayout().

LayoutTests:

Moved some tests out of the text-based-repaint.js model because selection is now updated
and revealed asynchronously in the case of non-user triggered changes. The problem is that
by the time the repaint rects are queried the update has not happened yet. That's why
the tests were modified so that we wait until the repaint happens.

Same situation for other tests that do not involve repaint rects but trigger accesibility
tree updates. We must ensure that we let the notification be thrown before checking whether or
not has been emited. As it's done asynchronously we must let the main thread run before checking.

Last but not least, some of the tests are using setTimeout() instead of requestAnimationFrame()
because the results with the latter were not as reliable under stress/debug conditions.

  • accessibility/mac/selection-boundary-userinfo.html:
  • accessibility/mac/selection-change-userinfo.html:
  • accessibility/mac/selection-value-changes-for-aria-textbox.html:
  • editing/selection-with-absolute-positioned-empty-content.html:
  • fast/forms/textarea-scrolled-endline-caret.html:
  • fast/repaint/selection-gap-absolute-child-expected.txt:
  • fast/repaint/selection-gap-absolute-child.html:
  • fast/repaint/selection-gap-flipped-absolute-child-expected.txt:
  • fast/repaint/selection-gap-flipped-absolute-child.html:
  • fast/repaint/selection-gap-transformed-absolute-child-expected.txt:
  • fast/repaint/selection-gap-transformed-absolute-child.html:
  • fast/repaint/selection-gap-transformed-fixed-child-expected.txt:
  • fast/repaint/selection-gap-transformed-fixed-child.html:
  • fast/repaint/selection-paint-invalidation-expected.txt:
  • fast/repaint/selection-ruby-rl-expected.txt:
  • fast/repaint/selection-ruby-rl.html:
  • fast/repaint/text-selection-overflow-hidden-expected.txt:
  • fast/repaint/text-selection-overflow-hidden.html:
  • platform/gtk/TestExpectations:
  • platform/gtk/fast/repaint/selection-ruby-rl-expected.txt: Copied from LayoutTests/fast/repaint/selection-ruby-rl-expected.txt.
  • platform/gtk/fast/repaint/text-selection-overflow-hidden-expected.txt:
  • platform/mac-catalina-wk1/fast/repaint/focus-setting-selection-syncronizing-not-clearing-expected.txt: Added.
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk1/fast/repaint/4776765-expected.txt: Added.
  • platform/mac-wk1/accessibility/mac/focus-setting-selection-syncronizing-not-clearing-expected.txt: Added.
  • platform/mac-wk1/imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-target-margin-005-expected.txt:
  • platform/mac/TestExpectations:
  • platform/win/fast/repaint/4776765-expected.txt: Added.
  • platform/win/fast/repaint/selection-gap-fixed-child-expected.txt:
  • platform/win/fast/repaint/selection-ruby-rl-expected.txt:
  • platform/win/fast/repaint/text-selection-overflow-hidden-expected.txt:

Mar 23, 2022:

11:32 PM Changeset in webkit [291788] by commit-queue@webkit.org
  • 48 edits in trunk/Source/WebCore

setNeedsLayout() should not be called when changing the SVG properties
​https://bugs.webkit.org/show_bug.cgi?id=230296

Patch by Rob Buis <​rbuis@igalia.com> on 2022-03-23
Reviewed by Said Abou-Hallawa.

Make SVG not call setNeedsLayout() from outside RenderTreeUpdater::updateRenderTree() when an attribute changes.
This ensures there will not be a dirty rendering tree immediately after updating it.

The patch also tries to avoid invalidate wording since this is quite generic.

Based on the initial patch by Said Abou-Hallawa.

  • dom/ElementData.h:

(WebCore::ElementData::svgResourcesInAncestorChainAreDirty const):
(WebCore::ElementData::setSVGResourcesInAncestorChainAreDirty const):

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateRenderTree):

  • svg/SVGAnimateMotionElement.cpp:

(WebCore::SVGAnimateMotionElement::applyResultsToTarget):

  • svg/SVGClipPathElement.cpp:

(WebCore::SVGClipPathElement::svgAttributeChanged):
(WebCore::SVGClipPathElement::childrenChanged):

  • svg/SVGComponentTransferFunctionElement.cpp:

(WebCore::SVGComponentTransferFunctionElement::svgAttributeChanged):

  • svg/SVGElement.cpp:

(WebCore::SVGElement::setSVGResourcesInAncestorChainAreDirty):
(WebCore::SVGElement::invalidateSVGResourcesInAncestorChainIfNeeded):

  • svg/SVGElement.h:
  • svg/SVGElementInlines.h:

(WebCore::SVGElement::setPresentationalHintStyleIsDirty):

  • svg/SVGFEBlendElement.cpp:

(WebCore::SVGFEBlendElement::svgAttributeChanged):

  • svg/SVGFEColorMatrixElement.cpp:

(WebCore::SVGFEColorMatrixElement::svgAttributeChanged):

  • svg/SVGFECompositeElement.cpp:

(WebCore::SVGFECompositeElement::svgAttributeChanged):

  • svg/SVGFEConvolveMatrixElement.cpp:

(WebCore::SVGFEConvolveMatrixElement::setOrder):
(WebCore::SVGFEConvolveMatrixElement::setKernelUnitLength):
(WebCore::SVGFEConvolveMatrixElement::svgAttributeChanged):

  • svg/SVGFEDiffuseLightingElement.cpp:

(WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged):

  • svg/SVGFEDisplacementMapElement.cpp:

(WebCore::SVGFEDisplacementMapElement::svgAttributeChanged):

  • svg/SVGFEDropShadowElement.cpp:

(WebCore::SVGFEDropShadowElement::setStdDeviation):
(WebCore::SVGFEDropShadowElement::svgAttributeChanged):

  • svg/SVGFEGaussianBlurElement.cpp:

(WebCore::SVGFEGaussianBlurElement::setStdDeviation):
(WebCore::SVGFEGaussianBlurElement::svgAttributeChanged):

  • svg/SVGFEImageElement.cpp:

(WebCore::SVGFEImageElement::buildPendingResource):
(WebCore::SVGFEImageElement::svgAttributeChanged):

  • svg/SVGFELightElement.cpp:

(WebCore::SVGFELightElement::childrenChanged):

  • svg/SVGFEMergeNodeElement.cpp:

(WebCore::SVGFEMergeNodeElement::svgAttributeChanged):

  • svg/SVGFEMorphologyElement.cpp:

(WebCore::SVGFEMorphologyElement::setRadius):
(WebCore::SVGFEMorphologyElement::svgAttributeChanged):

  • svg/SVGFEOffsetElement.cpp:

(WebCore::SVGFEOffsetElement::svgAttributeChanged):

  • svg/SVGFESpecularLightingElement.cpp:

(WebCore::SVGFESpecularLightingElement::svgAttributeChanged):

  • svg/SVGFETileElement.cpp:

(WebCore::SVGFETileElement::svgAttributeChanged):

  • svg/SVGFilterElement.cpp:

(WebCore::SVGFilterElement::svgAttributeChanged):
(WebCore::SVGFilterElement::childrenChanged):

  • svg/SVGFilterPrimitiveStandardAttributes.cpp:

(WebCore::SVGFilterPrimitiveStandardAttributes::svgAttributeChanged):
(WebCore::SVGFilterPrimitiveStandardAttributes::childrenChanged):
(WebCore::SVGFilterPrimitiveStandardAttributes::invalidateFilterPrimitiveParent):
(WebCore::invalidateFilterPrimitiveParent): Deleted.

  • svg/SVGFilterPrimitiveStandardAttributes.h:

(WebCore::SVGFilterPrimitiveStandardAttributes::invalidate): Deleted.

  • svg/SVGForeignObjectElement.cpp:

(WebCore::SVGForeignObjectElement::svgAttributeChanged):

  • svg/SVGGeometryElement.cpp:

(WebCore::SVGGeometryElement::svgAttributeChanged):

  • svg/SVGGradientElement.cpp:

(WebCore::SVGGradientElement::svgAttributeChanged):
(WebCore::SVGGradientElement::childrenChanged):

  • svg/SVGGraphicsElement.cpp:

(WebCore::SVGGraphicsElement::svgAttributeChanged):

  • svg/SVGImageElement.cpp:

(WebCore::SVGImageElement::svgAttributeChanged):

  • svg/SVGLineElement.cpp:

(WebCore::SVGLineElement::svgAttributeChanged):

  • svg/SVGLinearGradientElement.cpp:

(WebCore::SVGLinearGradientElement::svgAttributeChanged):

  • svg/SVGMarkerElement.cpp:

(WebCore::SVGMarkerElement::svgAttributeChanged):
(WebCore::SVGMarkerElement::childrenChanged):

  • svg/SVGMaskElement.cpp:

(WebCore::SVGMaskElement::svgAttributeChanged):
(WebCore::SVGMaskElement::childrenChanged):

  • svg/SVGPathElement.cpp:

(WebCore::SVGPathElement::svgAttributeChanged):

  • svg/SVGPatternElement.cpp:

(WebCore::SVGPatternElement::svgAttributeChanged):
(WebCore::SVGPatternElement::childrenChanged):

  • svg/SVGPolyElement.cpp:

(WebCore::SVGPolyElement::svgAttributeChanged):

  • svg/SVGRadialGradientElement.cpp:

(WebCore::SVGRadialGradientElement::svgAttributeChanged):

  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::updateCurrentTranslate):
(WebCore::SVGSVGElement::svgAttributeChanged):

  • svg/SVGStopElement.cpp:

(WebCore::SVGStopElement::svgAttributeChanged):

  • svg/SVGTRefElement.cpp:

(WebCore::SVGTRefElement::svgAttributeChanged):

  • svg/SVGTextContentElement.cpp:

(WebCore::SVGTextContentElement::svgAttributeChanged):

  • svg/SVGTextPathElement.cpp:

(WebCore::SVGTextPathElement::svgAttributeChanged):

  • svg/SVGTextPositioningElement.cpp:

(WebCore::SVGTextPositioningElement::svgAttributeChanged):

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::svgAttributeChanged):

  • svg/SVGViewElement.cpp:

(WebCore::SVGViewElement::svgAttributeChanged):

11:27 PM Changeset in webkit [291787] by Chris Dumez
  • 10 edits in trunk

Inline String(ASCIILiteral) constructor so the compiler can optimize out strlen()
​https://bugs.webkit.org/show_bug.cgi?id=238162

Reviewed by Geoffrey Garen.

I have verified using a profiler that strlen() is no longer called under String::String(WTF::ASCIILiteral)
or StringImpl::createFromLiteral(WTF::ASCIILiteral) when running Speedometer.

  • wtf/text/StringImpl.cpp:
  • wtf/text/StringImpl.h:

(WTF::StringImpl::createFromLiteral):

  • wtf/text/WTFString.cpp:
  • wtf/text/WTFString.h:

(WTF::String::String):

11:25 PM Changeset in webkit [291786] by sihui_liu@apple.com
  • 7 edits in trunk/Source

Add logging for LocalStorage and IndexedDB data migration
​https://bugs.webkit.org/show_bug.cgi?id=238169

Reviewed by Chris Dumez.

Source/WebCore:

  • platform/sql/SQLiteFileSystem.cpp:

(WebCore::SQLiteFileSystem::moveDatabaseFile):

  • platform/sql/SQLiteFileSystem.h:

Source/WebKit:

  • NetworkProcess/storage/IDBStorageManager.cpp:

(WebKit::migrateOriginDataImpl):
(WebKit::IDBStorageManager::migrateOriginData):

  • NetworkProcess/storage/IDBStorageManager.h:
  • NetworkProcess/storage/OriginStorageManager.cpp:

(WebKit::OriginStorageManager::StorageBucket::resolvedLocalStoragePath):
(WebKit::OriginStorageManager::StorageBucket::resolvedIDBStoragePath):

10:33 PM Changeset in webkit [291785] by commit-queue@webkit.org
  • 4 edits in trunk

[JSC] Fix remoteFunctionCallGenerator on MIPS
​https://bugs.webkit.org/show_bug.cgi?id=238274

Patch by Geza Lore <Geza Lore> on 2022-03-23
Reviewed by Yusuke Suzuki.

JSTests:

  • stress/shadow-realm-evaluate.js:

Source/JavaScriptCore:

Eliminate register conflict (nonArgGPR0 == regT4, which is used in
valueRegs)

  • jit/ThunkGenerators.cpp:

(JSC::remoteFunctionCallGenerator):

9:35 PM Changeset in webkit [291784] by Simon Fraser
  • 16 edits in trunk

Have MiniBrowser shows the GPU Process pid in its title bar
​https://bugs.webkit.org/show_bug.cgi?id=238286

Reviewed by Tim Horton.

Source/WebKit:

Expose _gpuProcessIdentifier on WKWebView as SPI. In order to support KVO for this, we need
to pass gpuProcessDidFinishLaunching() all the way from
GPUProcessProxy::didFinishLaunching() to PageClientImplCocoa. This KVO isn't accurate (the
"willChange" fires after the new pid is available) but for SPI it's good enough.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _gpuProcessIdentifier]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/Cocoa/PageClientImplCocoa.h:
  • UIProcess/Cocoa/PageClientImplCocoa.mm:

(WebKit::PageClientImplCocoa::gpuProcessDidFinishLaunching):
(WebKit::PageClientImplCocoa::gpuProcessDidExit):

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::didFinishLaunching):

  • UIProcess/PageClient.h:

(WebKit::PageClient::gpuProcessDidFinishLaunching):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::gpuProcessIdentifier const):
(WebKit::WebPageProxy::gpuProcessDidFinishLaunching):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::gpuProcessDidFinishLaunching):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::gpuProcessDidFinishLaunching):

  • UIProcess/WebProcessProxy.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::gpuProcessDidExit):

Tools:

KVO-observe the WKWebView's _gpuProcessIdentifier property and include it in the
window title.

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController awakeFromNib]):
(-[WK2BrowserWindowController dealloc]):
(-[WK2BrowserWindowController updateTitle:]):
(-[WK2BrowserWindowController observeValueForKeyPath:ofObject:change:context:]):

9:17 PM Changeset in webkit [291783] by Cameron McCormack
  • 2 edits in trunk/LayoutTests/imported/w3c

Bump up fuzzy tolerance on css-backgrounds/background-gradient-subpixel-fills-area.html
​https://bugs.webkit.org/show_bug.cgi?id=238307

Unreviewed test gardening.

  • web-platform-tests/css/css-backgrounds/background-gradient-subpixel-fills-area.html:
8:45 PM Changeset in webkit [291782] by commit-queue@webkit.org
  • 6 edits in trunk

Add off-by-default experimental feature for app store attribution
​https://bugs.webkit.org/show_bug.cgi?id=238294

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-23
Reviewed by John Wilander.

Source/WebCore:

In r291735 I landed a way to give SKAdNetwork a way to private report app purchase attribution
which isn't implemented yet. Turn it off in WebKit until the time is right.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::parsePrivateClickMeasurementForSKAdNetwork const):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:

(TestWebKitAPI::TEST):

7:48 PM Changeset in webkit [291781] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebGPU

[WebGPU] Fix the non-macOS build
​https://bugs.webkit.org/show_bug.cgi?id=238304

Unreviewed.

Some texture formats are only available on macOS.

  • WebGPU/Texture.mm:

(WebGPU::pixelFormat):

7:28 PM Changeset in webkit [291780] by Simon Fraser
  • 4 edits in trunk/Source/WebKit

REGRESSION (248692@main?): [iOS] ASSERTION FAILED: m_layer->owner()->platformCALayerDelegatesDisplay(m_layer) in WebKit::RemoteLayerBackingStore::paintContents()
​https://bugs.webkit.org/show_bug.cgi?id=238277
<rdar://problem/90715046>

Reviewed by Tim Horton.

Empty backing store (height or width of zero) never need display; ImageBuffer allocation
with empty sizes always returns null anyway.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::needsDisplay const):

  • Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:

(WebKit::RemoteLayerBackingStoreCollection::backingStoreNeedsDisplay):

  • Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm:

(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::backingStoreNeedsDisplay):

6:40 PM Changeset in webkit [291779] by Chris Dumez
  • 453 edits in trunk/Source

Prepare JSC for making the String(const char*) constructor explicit
​https://bugs.webkit.org/show_bug.cgi?id=238264

Reviewed by Geoff Garen.

Source/JavaScriptCore:

Prepare JSC for making the String(const char*) constructor explicit. Making this constructor
explicit helps catch many instances where we're constructing a String from a literal but we
are missing the ""_s suffix.

  • API/JSAPIGlobalObject.cpp:
  • API/JSAPIGlobalObject.mm:

(JSC::computeValidImportSpecifier):
(JSC::JSAPIGlobalObject::moduleLoaderFetch):

  • API/JSAPIValueWrapper.cpp:
  • API/JSAPIWrapperObject.mm:
  • API/JSCallbackConstructor.cpp:
  • API/JSCallbackFunction.cpp:
  • API/JSCallbackObject.cpp:
  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::getOwnPropertySlot):

  • API/JSScript.mm:

(-[JSScript readCache]):

  • API/JSTypedArray.cpp:

(JSObjectMakeTypedArrayWithArrayBuffer):
(JSObjectMakeTypedArrayWithArrayBufferAndOffset):

  • API/JSValue.mm:

(createStructHandlerMap):
(handerForStructTag):

  • API/JSWrapperMap.mm:

(allocateConstructorForCustomClass):

  • API/ObjCCallbackFunction.mm:

(JSC::ObjCCallbackFunctionImpl::name):

  • API/glib/JSAPIWrapperGlobalObject.cpp:
  • API/glib/JSAPIWrapperObjectGLib.cpp:
  • API/glib/JSCCallbackFunction.cpp:
  • API/tests/JSONParseTest.cpp:

(testJSONParse):

  • bindings/ScriptFunctionCall.cpp:

(Deprecated::ScriptCallArgumentHandler::appendArgument):

  • bytecode/CodeBlock.cpp:
  • bytecode/EvalCodeBlock.cpp:
  • bytecode/ExecutableToCodeBlockEdge.cpp:
  • bytecode/ExitKind.cpp:

(JSC::exitKindToString):

  • bytecode/ExitKind.h:
  • bytecode/FunctionCodeBlock.cpp:
  • bytecode/ModuleProgramCodeBlock.cpp:
  • bytecode/ProgramCodeBlock.cpp:
  • bytecode/UnlinkedCodeBlock.cpp:
  • bytecode/UnlinkedEvalCodeBlock.cpp:
  • bytecode/UnlinkedFunctionCodeBlock.cpp:
  • bytecode/UnlinkedFunctionExecutable.cpp:
  • bytecode/UnlinkedModuleProgramCodeBlock.cpp:
  • bytecode/UnlinkedProgramCodeBlock.cpp:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitHasPrivateBrand):
(JSC::BytecodeGenerator::emitCheckPrivateBrand):
(JSC::BytecodeGenerator::emitReturn):

  • bytecompiler/NodesCodegen.cpp:

(JSC::PropertyListNode::emitSaveComputedFieldName):
(JSC::BaseDotNode::emitGetPropertyValue):
(JSC::BaseDotNode::emitPutProperty):
(JSC::PostfixNode::emitDot):
(JSC::DeleteBracketNode::emitBytecode):
(JSC::DeleteDotNode::emitBytecode):
(JSC::PrefixNode::emitDot):
(JSC::InstanceOfNode::emitBytecode):

  • debugger/DebuggerCallFrame.cpp:

(JSC::DebuggerCallFrame::functionName const):

  • debugger/DebuggerScope.cpp:
  • heap/HeapSnapshotBuilder.cpp:

(JSC::HeapSnapshotBuilder::json):

  • heap/RootMarkReason.cpp:

(JSC::rootMarkReasonDescription):

  • heap/RootMarkReason.h:
  • inspector/JSGlobalObjectInspectorController.cpp:

(Inspector::JSGlobalObjectInspectorController::appendAPIBacktrace):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::getInternalProperties):

  • inspector/JSInjectedScriptHostPrototype.cpp:
  • inspector/JSJavaScriptCallFrame.cpp:
  • inspector/JSJavaScriptCallFramePrototype.cpp:
  • inspector/agents/InspectorAuditAgent.cpp:

(Inspector::InspectorAuditAgent::run):

  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::getScriptSource):

  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/agents/InspectorHeapAgent.cpp:

(Inspector::InspectorHeapAgent::getRemoteObject):

  • jit/ExecutableAllocator.cpp:

(JSC::dumpJITMemory):

  • jit/JITCode.cpp:

(JSC::JITCode::typeName):

  • jit/JITCode.h:
  • jit/JITOperations.cpp:

(JSC::getWrappedValue):

  • jsc.cpp:

(toCString):
(JSC_DEFINE_HOST_FUNCTION):
(runWithOptions):
(CommandLine::parseArguments):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::handleVarargsCheckpoint):

  • parser/Lexer.cpp:

(JSC::Lexer<T>::scanRegExp):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parsePrimaryExpression):

  • runtime/AbstractModuleRecord.cpp:
  • runtime/AggregateErrorConstructor.cpp:
  • runtime/ArrayConstructor.cpp:
  • runtime/ArrayIteratorPrototype.cpp:
  • runtime/ArrayPrototype.cpp:
  • runtime/AsyncFromSyncIteratorPrototype.cpp:
  • runtime/AsyncFunctionConstructor.cpp:
  • runtime/AsyncFunctionPrototype.cpp:
  • runtime/AsyncGeneratorFunctionConstructor.cpp:
  • runtime/AsyncGeneratorFunctionPrototype.cpp:
  • runtime/AsyncGeneratorPrototype.cpp:
  • runtime/AsyncIteratorPrototype.cpp:
  • runtime/AtomicsObject.cpp:
  • runtime/BigIntConstructor.cpp:
  • runtime/BigIntObject.cpp:
  • runtime/BigIntPrototype.cpp:
  • runtime/BooleanConstructor.cpp:
  • runtime/BooleanObject.cpp:
  • runtime/BooleanPrototype.cpp:
  • runtime/BytecodeCacheError.cpp:

(JSC::BytecodeCacheError::StandardError::message const):

  • runtime/CallData.cpp:

(JSC::call):

  • runtime/CallData.h:
  • runtime/ClassInfo.h:
  • runtime/ClonedArguments.cpp:
  • runtime/CodeCache.cpp:

(JSC::CodeCache::getUnlinkedGlobalFunctionExecutable):

  • runtime/Completion.cpp:

(JSC::checkModuleSyntax):
(JSC::createSymbolForEntryPointModule):

  • runtime/ConsoleObject.cpp:
  • runtime/ConstructData.cpp:

(JSC::construct):

  • runtime/ConstructData.h:
  • runtime/CustomGetterSetter.cpp:
  • runtime/DOMAttributeGetterSetter.cpp:
  • runtime/DateConstructor.cpp:
  • runtime/DateInstance.cpp:
  • runtime/DatePrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/DirectArguments.cpp:
  • runtime/Error.h:

(JSC::throwVMError):

  • runtime/ErrorConstructor.cpp:
  • runtime/ErrorInstance.cpp:
  • runtime/ErrorPrototype.cpp:
  • runtime/EvalExecutable.cpp:
  • runtime/Exception.cpp:
  • runtime/ExceptionHelpers.cpp:

(JSC::notAFunctionSourceAppender):
(JSC::invalidParameterInSourceAppender):
(JSC::invalidParameterInstanceofSourceAppender):
(JSC::invalidPrototypeSourceAppender):
(JSC::createTDZError):
(JSC::createInvalidPrivateNameError):
(JSC::createRedefinedPrivateNameError):
(JSC::createPrivateMethodAccessError):
(JSC::createReinstallPrivateMethodError):

  • runtime/ExecutableBase.cpp:
  • runtime/FinalizationRegistryConstructor.cpp:
  • runtime/FinalizationRegistryPrototype.cpp:
  • runtime/FunctionConstructor.cpp:
  • runtime/FunctionExecutable.cpp:

(JSC::FunctionExecutable::toStringSlow):

  • runtime/FunctionPrototype.cpp:
  • runtime/FunctionRareData.cpp:
  • runtime/GeneratorFunctionConstructor.cpp:
  • runtime/GeneratorFunctionPrototype.cpp:
  • runtime/GeneratorPrototype.cpp:
  • runtime/GetterSetter.cpp:
  • runtime/GlobalExecutable.cpp:
  • runtime/HashMapImpl.cpp:
  • runtime/InternalFunction.cpp:
  • runtime/IntlCollator.cpp:

(JSC::IntlCollator::initializeCollator):

  • runtime/IntlCollatorConstructor.cpp:
  • runtime/IntlCollatorPrototype.cpp:
  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::initializeDateTimeFormat):

  • runtime/IntlDateTimeFormatConstructor.cpp:
  • runtime/IntlDateTimeFormatPrototype.cpp:
  • runtime/IntlDisplayNames.cpp:
  • runtime/IntlDisplayNamesConstructor.cpp:
  • runtime/IntlDisplayNamesPrototype.cpp:
  • runtime/IntlListFormat.cpp:
  • runtime/IntlListFormatConstructor.cpp:
  • runtime/IntlListFormatPrototype.cpp:
  • runtime/IntlLocale.cpp:

(JSC::IntlLocale::initializeLocale):

  • runtime/IntlLocaleConstructor.cpp:
  • runtime/IntlLocalePrototype.cpp:
  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::initializeNumberFormat):

  • runtime/IntlNumberFormatConstructor.cpp:
  • runtime/IntlNumberFormatPrototype.cpp:
  • runtime/IntlObject.cpp:

(JSC::intlStringOption):

  • runtime/IntlObject.h:
  • runtime/IntlPluralRules.cpp:
  • runtime/IntlPluralRulesConstructor.cpp:
  • runtime/IntlPluralRulesPrototype.cpp:
  • runtime/IntlRelativeTimeFormat.cpp:

(JSC::IntlRelativeTimeFormat::initializeRelativeTimeFormat):

  • runtime/IntlRelativeTimeFormatConstructor.cpp:
  • runtime/IntlRelativeTimeFormatPrototype.cpp:
  • runtime/IntlSegmentIterator.cpp:
  • runtime/IntlSegmentIteratorPrototype.cpp:
  • runtime/IntlSegmenter.cpp:
  • runtime/IntlSegmenterConstructor.cpp:
  • runtime/IntlSegmenterPrototype.cpp:
  • runtime/IntlSegments.cpp:
  • runtime/IntlSegmentsPrototype.cpp:
  • runtime/IteratorPrototype.cpp:
  • runtime/JSArray.cpp:

(JSC::JSArray::tryCreateUninitializedRestricted):

  • runtime/JSArrayBuffer.cpp:
  • runtime/JSArrayBufferConstructor.cpp:
  • runtime/JSArrayBufferPrototype.cpp:
  • runtime/JSArrayBufferView.cpp:
  • runtime/JSArrayIterator.cpp:
  • runtime/JSAsyncFunction.cpp:
  • runtime/JSAsyncGenerator.cpp:
  • runtime/JSAsyncGeneratorFunction.cpp:
  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::parseInt):

  • runtime/JSBoundFunction.cpp:
  • runtime/JSCallee.cpp:
  • runtime/JSCell.cpp:

(JSC::JSCell::dumpToStream):
(JSC::JSCell::className const):

  • runtime/JSCell.h:
  • runtime/JSCustomGetterFunction.cpp:
  • runtime/JSCustomSetterFunction.cpp:
  • runtime/JSDataView.cpp:
  • runtime/JSDataViewPrototype.cpp:

(JSC::JSC_DEFINE_CUSTOM_GETTER):

  • runtime/JSFinalizationRegistry.cpp:

(JSC::JSFinalizationRegistry::runFinalizationCleanup):

  • runtime/JSFunction.cpp:
  • runtime/JSGenerator.cpp:
  • runtime/JSGeneratorFunction.cpp:
  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::create):
(JSC::JSGenericTypedArrayView<Adaptor>::validateRange):

  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::speciesConstruct):
(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):

  • runtime/JSGlobalLexicalEnvironment.cpp:
  • runtime/JSGlobalObject.cpp:
  • runtime/JSImmutableButterfly.cpp:
  • runtime/JSInternalPromise.cpp:
  • runtime/JSInternalPromiseConstructor.cpp:
  • runtime/JSInternalPromisePrototype.cpp:
  • runtime/JSLexicalEnvironment.cpp:
  • runtime/JSMap.cpp:
  • runtime/JSMapIterator.cpp:
  • runtime/JSModuleEnvironment.cpp:
  • runtime/JSModuleLoader.cpp:
  • runtime/JSModuleNamespaceObject.cpp:
  • runtime/JSModuleRecord.cpp:
  • runtime/JSNativeStdFunction.cpp:
  • runtime/JSONObject.cpp:
  • runtime/JSObject.cpp:

(JSC::JSObject::markAuxiliaryAndVisitOutOfLineProperties):

  • runtime/JSPromise.cpp:
  • runtime/JSPromiseConstructor.cpp:
  • runtime/JSPromisePrototype.cpp:
  • runtime/JSPropertyNameEnumerator.cpp:
  • runtime/JSProxy.cpp:
  • runtime/JSRemoteFunction.cpp:

(JSC::wrapArgument):
(JSC::wrapReturnValue):
(JSC::JSRemoteFunction::finishCreation):

  • runtime/JSScope.cpp:
  • runtime/JSScriptFetchParameters.cpp:
  • runtime/JSScriptFetcher.cpp:
  • runtime/JSSegmentedVariableObject.cpp:
  • runtime/JSSet.cpp:
  • runtime/JSSetIterator.cpp:
  • runtime/JSSourceCode.cpp:
  • runtime/JSString.cpp:

(JSC::JSString::dumpToStream):

  • runtime/JSStringIterator.cpp:
  • runtime/JSSymbolTableObject.cpp:
  • runtime/JSTemplateObjectDescriptor.cpp:
  • runtime/JSTypedArrayConstructors.cpp:
  • runtime/JSTypedArrayPrototypes.cpp:
  • runtime/JSTypedArrayViewConstructor.cpp:
  • runtime/JSTypedArrayViewPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSTypedArrays.cpp:
  • runtime/JSWeakMap.cpp:
  • runtime/JSWeakObjectRef.cpp:
  • runtime/JSWeakSet.cpp:
  • runtime/JSWithScope.cpp:
  • runtime/LiteralParser.cpp:

(JSC::LiteralParser<CharType>::parsePrimitiveValue):

  • runtime/MapConstructor.cpp:
  • runtime/MapIteratorPrototype.cpp:
  • runtime/MapPrototype.cpp:
  • runtime/MathObject.cpp:
  • runtime/ModuleProgramExecutable.cpp:
  • runtime/NativeErrorConstructor.cpp:
  • runtime/NativeExecutable.cpp:
  • runtime/NullGetterFunction.cpp:
  • runtime/NullSetterFunction.cpp:
  • runtime/NumberConstructor.cpp:
  • runtime/NumberObject.cpp:
  • runtime/NumberPrototype.cpp:

(JSC::toStringWithRadix):
(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::numberToStringInternal):
(JSC::int52ToString):

  • runtime/ObjectConstructor.cpp:
  • runtime/ObjectPrototype.cpp:
  • runtime/Operations.h:

(JSC::arithmeticBinaryOp):
(JSC::shift):
(JSC::bitwiseBinaryOp):

  • runtime/ProgramExecutable.cpp:
  • runtime/PropertyTable.cpp:
  • runtime/ProxyConstructor.cpp:

(JSC::ProxyConstructor::finishCreation):

  • runtime/ProxyObject.cpp:
  • runtime/ProxyRevoke.cpp:
  • runtime/ReflectObject.cpp:
  • runtime/RegExp.cpp:
  • runtime/RegExpCache.cpp:

(JSC::RegExpCache::ensureEmptyRegExpSlow):

  • runtime/RegExpConstructor.cpp:
  • runtime/RegExpObject.cpp:
  • runtime/RegExpPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/RegExpStringIteratorPrototype.cpp:
  • runtime/ScopedArguments.cpp:
  • runtime/ScopedArgumentsTable.cpp:
  • runtime/ScriptExecutable.cpp:
  • runtime/SetConstructor.cpp:
  • runtime/SetIteratorPrototype.cpp:
  • runtime/SetPrototype.cpp:
  • runtime/ShadowRealmConstructor.cpp:
  • runtime/ShadowRealmObject.cpp:
  • runtime/ShadowRealmPrototype.cpp:
  • runtime/SparseArrayValueMap.cpp:
  • runtime/StrictEvalActivation.cpp:
  • runtime/StringConstructor.cpp:
  • runtime/StringIteratorPrototype.cpp:
  • runtime/StringObject.cpp:
  • runtime/StringPrototype.cpp:

(JSC::toLocaleCase):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/Structure.cpp:
  • runtime/StructureChain.cpp:
  • runtime/StructureRareData.cpp:
  • runtime/Symbol.cpp:
  • runtime/SymbolConstructor.cpp:
  • runtime/SymbolObject.cpp:
  • runtime/SymbolPrototype.cpp:
  • runtime/SymbolTable.cpp:
  • runtime/TemporalCalendar.cpp:
  • runtime/TemporalCalendarConstructor.cpp:
  • runtime/TemporalCalendarPrototype.cpp:
  • runtime/TemporalDuration.cpp:

(JSC::TemporalDuration::total const):

  • runtime/TemporalDurationConstructor.cpp:
  • runtime/TemporalDurationPrototype.cpp:
  • runtime/TemporalInstant.cpp:
  • runtime/TemporalInstantConstructor.cpp:
  • runtime/TemporalInstantPrototype.cpp:
  • runtime/TemporalNow.cpp:
  • runtime/TemporalObject.cpp:

(JSC::temporalLargestUnit):
(JSC::temporalSmallestUnit):

  • runtime/TemporalPlainDate.cpp:
  • runtime/TemporalPlainDateConstructor.cpp:
  • runtime/TemporalPlainDatePrototype.cpp:
  • runtime/TemporalPlainTime.cpp:
  • runtime/TemporalPlainTimeConstructor.cpp:
  • runtime/TemporalPlainTimePrototype.cpp:
  • runtime/TemporalTimeZone.cpp:
  • runtime/TemporalTimeZoneConstructor.cpp:
  • runtime/TemporalTimeZonePrototype.cpp:
  • runtime/TypeProfiler.cpp:

(JSC::TypeProfiler::logTypesForTypeLocation):

  • runtime/TypeSet.cpp:

(JSC::StructureShape::propertyHash):

  • runtime/WeakMapConstructor.cpp:
  • runtime/WeakMapPrototype.cpp:

(JSC::WeakMapPrototype::finishCreation):

  • runtime/WeakObjectRefConstructor.cpp:
  • runtime/WeakObjectRefPrototype.cpp:
  • runtime/WeakSetConstructor.cpp:
  • runtime/WeakSetPrototype.cpp:

(JSC::WeakSetPrototype::finishCreation):

  • testRegExp.cpp:
  • tools/FunctionAllowlist.cpp:

(JSC::FunctionAllowlist::FunctionAllowlist):

  • tools/FunctionOverrides.cpp:

(JSC::initializeOverrideInfo):

  • tools/JSDollarVM.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::JSC_DEFINE_HOST_FUNCTION_WITH_ATTRIBUTES):

  • tools/SigillCrashAnalyzer.cpp:

(JSC::SigillCrashAnalyzer::analyze):

  • tools/VMInspector.cpp:

(JSC::VMInspector::dumpRegisters):
(JSC::VMInspector::dumpCellMemoryToStream):

  • wasm/WasmExceptionType.h:

(JSC::Wasm::errorMessageForExceptionType):

  • wasm/WasmFormat.h:

(JSC::Wasm::typeToString):

  • wasm/WasmGlobal.cpp:

(JSC::Wasm::Global::set):

  • wasm/WasmLLIntPlan.cpp:

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

  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

  • wasm/js/JSToWasmICCallee.cpp:
  • wasm/js/JSWebAssembly.cpp:
  • wasm/js/JSWebAssemblyException.cpp:
  • wasm/js/JSWebAssemblyGlobal.cpp:

(JSC::JSWebAssemblyGlobal::type):

  • wasm/js/JSWebAssemblyHelpers.h:

(JSC::fromJSValue):

  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::createPrivateModuleKey):
(JSC::JSWebAssemblyInstance::tryCreate):

  • wasm/js/JSWebAssemblyMemory.cpp:
  • wasm/js/JSWebAssemblyModule.cpp:
  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::type):

  • wasm/js/JSWebAssemblyTag.cpp:
  • wasm/js/WebAssemblyCompileErrorConstructor.cpp:
  • wasm/js/WebAssemblyCompileErrorPrototype.cpp:
  • wasm/js/WebAssemblyExceptionConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyExceptionPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyFunction.cpp:
  • wasm/js/WebAssemblyFunctionBase.cpp:
  • wasm/js/WebAssemblyGlobalConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyGlobalPrototype.cpp:
  • wasm/js/WebAssemblyInstanceConstructor.cpp:
  • wasm/js/WebAssemblyInstancePrototype.cpp:
  • wasm/js/WebAssemblyLinkErrorConstructor.cpp:
  • wasm/js/WebAssemblyLinkErrorPrototype.cpp:
  • wasm/js/WebAssemblyMemoryConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyMemoryPrototype.cpp:
  • wasm/js/WebAssemblyModuleConstructor.cpp:
  • wasm/js/WebAssemblyModulePrototype.cpp:
  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::initializeExports):

  • wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:
  • wasm/js/WebAssemblyRuntimeErrorPrototype.cpp:
  • wasm/js/WebAssemblyTableConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyTablePrototype.cpp:
  • wasm/js/WebAssemblyTagConstructor.cpp:
  • wasm/js/WebAssemblyTagPrototype.cpp:
  • wasm/js/WebAssemblyWrapperFunction.cpp:

(JSC::WebAssemblyWrapperFunction::create):

  • yarr/RegularExpression.cpp:

(JSC::Yarr::RegularExpression::Private::compile):

  • yarr/YarrErrorCode.cpp:

(JSC::Yarr::errorMessage):

  • yarr/YarrErrorCode.h:

Source/WebCore:

  • bindings/js/JSDOMGlobalObject.cpp:
  • bindings/js/JSDOMWindowBase.cpp:
  • bindings/js/JSDOMWindowProperties.cpp:
  • bindings/js/JSFileSystemDirectoryHandleIterator.cpp:
  • bindings/js/JSIDBSerializationGlobalObject.cpp:
  • bindings/js/JSRemoteDOMWindowBase.cpp:
  • bindings/js/JSShadowRealmGlobalScopeBase.cpp:
  • bindings/js/JSWindowProxy.cpp:
  • bindings/js/JSWorkerGlobalScopeBase.cpp:
  • bindings/js/JSWorkletGlobalScopeBase.cpp:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

  • bridge/objc/ObjCRuntimeObject.mm:
  • bridge/objc/objc_instance.mm:

(JSC::Bindings::ObjcInstance::getMethod):

  • bridge/objc/objc_runtime.mm:
  • bridge/runtime_array.cpp:
  • bridge/runtime_method.cpp:
  • bridge/runtime_object.cpp:

Source/WTF:

  • wtf/ResourceUsage.h:
  • wtf/cocoa/ResourceUsageCocoa.cpp:

(WTF::displayNameForVMTag):

  • wtf/text/WTFString.cpp:

(WTF::String::numberToStringFixedPrecision):
(WTF::String::number):
(WTF::String::numberToStringFixedWidth):

  • wtf/text/WTFString.h:
6:25 PM Changeset in webkit [291778] by sihui_liu@apple.com
  • 10 edits in trunk/Source/WebKit

[ BigSur+ Debug wk2 EWS ] imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/quirks.window.html is a flaky crash
​https://bugs.webkit.org/show_bug.cgi?id=237165
<rdar://problem/89443602>

Reviewed by Chris Dumez.

The test is hitting an assertion in StorageAreaBase::addListener. The assertion is used to verify that one
connection will not be added to a StorageArea twice, i.e. one web process will not have two StorageAreaMaps
pointing to the same StorageArea in network process. With our current implementation, there is an edge case that
we load a.com, navigate to b.com and go back to a.com. In this case, we would create a StorageAreaMap for a.com,
destroy it on navigation, and create another StorageAreaMap for a.com on going back. Because we don't remove
listener during destruction of StorageAreaMap (we do it when web process receives reply from network process),
the assertion is hit for two StorageAreaMaps from one connection pointing to the same StorageArea. We can fix
it by sending a cancelConnectToStorage message to remove listener during destruction.

The edge case is a bit hard to reproduce with auto test since we need to ensure web process sends the second
ConnectionToStorageArea message before receiving the reply of the first ConnectionToStorageArea message, so I
manually tested it by adding delay in NetworkStorageManager::connectToStorageArea.

  • NetworkProcess/storage/LocalStorageManager.cpp:

(WebKit::LocalStorageManager::cancelConnectToLocalStorageArea):
(WebKit::LocalStorageManager::cancelConnectToTransientLocalStorageArea):

  • NetworkProcess/storage/LocalStorageManager.h:
  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::cancelConnectToStorageArea):

  • NetworkProcess/storage/NetworkStorageManager.h:
  • NetworkProcess/storage/NetworkStorageManager.messages.in:
  • NetworkProcess/storage/SessionStorageManager.cpp:

(WebKit::SessionStorageManager::cancelConnectToSessionStorageArea):

  • NetworkProcess/storage/SessionStorageManager.h:
  • WebProcess/WebStorage/StorageAreaMap.cpp:

(WebKit::StorageAreaMap::computeStorageType const):
(WebKit::StorageAreaMap::clientOrigin const):
(WebKit::StorageAreaMap::sendConnectMessage):
(WebKit::StorageAreaMap::didConnect):
(WebKit::StorageAreaMap::disconnect):

  • WebProcess/WebStorage/StorageAreaMap.h:
6:03 PM Changeset in webkit [291777] by mmaxfield@apple.com
  • 6 edits in trunk

[WebGPU] Implement Device::createTexture() according to the spec
​https://bugs.webkit.org/show_bug.cgi?id=238251

Reviewed by Darin Adler.

Source/WebGPU:

Simply type in the spec into the computer, in C++ form.
All functionality has links to the spec to describe its origins.

Test: api/validation/createTexture.spec.ts

  • WebGPU/Device.h:
  • WebGPU/Texture.h:

(WebGPU::Texture::create):
(WebGPU::Texture::descriptor const):

  • WebGPU/Texture.mm:

(WebGPU::featureRequirementForFormat):
(WebGPU::isCompressedFormat):
(WebGPU::isDepthOrStencilFormat):
(WebGPU::texelBlockWidth):
(WebGPU::texelBlockHeight):
(WebGPU::isRenderableFormat):
(WebGPU::supportsMultisampling):
(WebGPU::maximumMiplevelCount):
(WebGPU::hasStorageBindingCapability):
(WebGPU::Device::validateCreateTexture):
(WebGPU::usage):
(WebGPU::pixelFormat):
(WebGPU::storageMode):
(WebGPU::Device::createTexture):
(WebGPU::Texture::Texture):

Tools:

Document the behavior of fastLog2().

  • TestWebKitAPI/Tests/WTF/MathExtras.cpp:

(TestWebKitAPI::TEST):

5:32 PM Changeset in webkit [291776] by Russell Epstein
  • 9 edits in branches/safari-613.1.17.1-branch/Source

Versioning.

WebKit-7613.1.17.1.12

5:22 PM Changeset in webkit [291775] by eric.carlson@apple.com
  • 6 edits in trunk/Source

[Cocoa] Adopt new AVCapture SPI
​https://bugs.webkit.org/show_bug.cgi?id=238289
rdar://90576101

Reviewed by Jer Noble.

Source/WebCore/PAL:

  • pal/spi/cocoa/AVFoundationSPI.h:

Source/WebKit:

Call AVCapture SPI once the GPU process sandbox has been expanded to allow capture.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::updateSandboxAccess):

  • GPUProcess/GPUProcess.h:
  • GPUProcess/cocoa/GPUProcessCocoa.mm:

(WebKit::GPUProcess::dispatchSimulatedNotificationsForPreferenceChange):
(WebKit::GPUProcess::sandboxWasUpatedForCapture):

5:11 PM Changeset in webkit [291774] by Alan Coon
  • 2 edits in branches/safari-613-branch/Tools

Cherry-pick r291773. rdar://problem/90716064

[Cocoa] Make IPCTestingAPI.CGColorInNSSecureCoding more robust
​https://bugs.webkit.org/show_bug.cgi?id=238300
<rdar://problem/90124325>

Unreviewed test gardening.

Round-tripping a CGColor through CFData on iOS can turn extended sRGB color spaces
into regular sRGB color spaces, if the color is common to both.

  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291773 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5:03 PM Changeset in webkit [291773] by mmaxfield@apple.com
  • 2 edits in trunk/Tools

[Cocoa] Make IPCTestingAPI.CGColorInNSSecureCoding more robust
​https://bugs.webkit.org/show_bug.cgi?id=238300
<rdar://problem/90124325>

Unreviewed test gardening.

Round-tripping a CGColor through CFData on iOS can turn extended sRGB color spaces
into regular sRGB color spaces, if the color is common to both.

  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:
4:07 PM Changeset in webkit [291772] by Jonathan Bedard
  • 16 edits in trunk/Tools

[commits.webkit.org] Sync tags
​https://bugs.webkit.org/show_bug.cgi?id=238144
<rdar://problem/90594915>

Reviewed by Dewei Zhu.

  • Tools/Scripts/libraries/reporelaypy/reporelaypy/init.py: Bump version.
  • Tools/Scripts/libraries/reporelaypy/reporelaypy/checkout.py:

(Checkout): Make 'origin' a global variable.
(Checkout.init): Ditto.
(Checkout.is_updated): Ditto.
(Checkout.push_update): Support pushing a tag.
(Checkout.fetch): Fetch a specific remote.
(Checkout.update_for): Make 'origin' a global variable.
(Checkout.update_all): Add tag syncing.

  • Tools/Scripts/libraries/reporelaypy/reporelaypy/hooks.py:

(HookProcessor):
(HookProcessor.process_worker_hook): Update tags as well as branches.

  • Tools/Scripts/libraries/reporelaypy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitscmpy/setup.py: Ditto.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git.tags): List tags for remote.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn.tags): Remove @property tag.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:

(Git.init): List tags for remote.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/bitbucket.py:

(BitBucket.tags): Remove @property tag.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:

(GitHub.tags): Ditto.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/svn.py:

(Svn.tags): Ditto.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/scm_base.py:

(ScmBase.tags): Ditto.
(ScmBase.find): tags is a function instead of a property.

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

(TestGit.test_tags):

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

(TestLocalSvn.test_tags):
(TestRemoteSvn.test_tags):

Canonical link: ​https://commits.webkit.org/248802@main

3:50 PM Changeset in webkit [291771] by Said Abou-Hallawa
  • 4 edits in trunk/Source/WebCore

[GPU Process] Ensure DisplayList::Recorder and its base class are initialized with the same GraphicsContextState
​https://bugs.webkit.org/show_bug.cgi?id=238278
rdar://84602660

Reviewed by Simon Fraser.

DisplayList::RecorderImpl passes the initial GraphicsContextState to its
base class DisplayList::Recorder which pushes it on its stack. But
DisplayList::Recorder does not pass this initial GraphicsContextState to
its base class which is GraphicsContext. So DisplayList::Recorder ends up
having the initial state but the GraphicsContext ends up having the default
state.

DisplayList::Recorder::drawGlyphs() calls DrawGlyphsRecorder::drawGlyphs()
which stores the original fillBrush, strokeBrush and dropShadow. It uses
these original values to restore the owner GraphicsContext when it finishes.
The problem is DrawGlyphsRecorder::drawGlyphs() stores the values in the
state of the GraphicsContext which are the default. So in some cases we
may restore the default state to the drawing GraphicsContext.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::GraphicsContext):

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::Recorder):

3:07 PM Changeset in webkit [291770] by Wenson Hsieh
  • 6 edits in trunk

[iOS] Mail compose web view no longer scrolls to reveal selection upon showing the keyboard
​https://bugs.webkit.org/show_bug.cgi?id=238271
rdar://89821087

Reviewed by Tim Horton.

Source/WebKit:

When a certain UIKit feature is enabled on certain builds of iOS, Mail compose no longer scrolls to reveal the
selection range or caret. This is because we have logic to defer scrolling/zooming to reveal the selection after
focusing the body element, for reasons outlined in trac.webkit.org/r288178. However, when the feature flag is
enabled, UIKeyboardWillShowNotification is no longer fired synchronously underneath the call to
-reloadInputViews, which means that isKeyboardAnimatingIn() will (most of the time) return false upon
calling -_zoomToRevealFocusedElement when receiving the next post-layout editor state update.

To mitigate this, add a new boolean flag, _waitingForKeyboardToStartAnimatingInAfterElementFocus, that's set
right before we reload input views when focusing an element that requires the keyboard (either software or
hardware), and unset when we observe the "WillShow" notification. In addition to checking
_page->isKeyboardAnimatingIn() when determining whether to defer zooming, we check this new flag as well.

Covered by an existing layout test (which currently fails when the aforementioned UIKit feature is enabled):
editing/selection/ios/scroll-to-reveal-selection-with-keyboard-avoidance-disabled.html

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _keyboardWillShow:]):

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView cleanUpInteraction]):
(-[WKContentView _keyboardWillShow]):
(-[WKContentView _zoomToRevealFocusedElement]):
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):
(-[WKContentView _elementDidBlur]):

LayoutTests:

While I'm here, adjust the test to ensure that the keyboard is hidden afterwards. When running this test back to
back with the relevant UIKit feature flag enabled, it sometimes fails without this adjustment, due to keyboard
disappearance notifications triggered from prior test invocations being fired in subsequent test invocations.

  • editing/selection/ios/scroll-to-reveal-selection-with-keyboard-avoidance-disabled.html:
2:57 PM Changeset in webkit [291769] by Andres Gonzalez
  • 4 edits in trunk/Source/WebCore

ITM: Lazy caching of HelpText property that results in a call to textUnderElement().
​https://bugs.webkit.org/show_bug.cgi?id=237923
<rdar://problem/90332779>

Reviewed by Chris Fleizach.

Caching HelpText in the initialization of an IsolatedObject properties
for all objects often results in a call to AXRenderObject::textUnderElement,
which can be expensive and makes the creation and update of the isolated
tree costly. With this patch we cache HelpText on first request.

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::getOrRetrievePropertyValue):

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm:

(WebCore::AXIsolatedObject::initializePlatformProperties):
(WebCore::AXIsolatedObject::helpTextAttributeValue const):

2:55 PM Changeset in webkit [291768] by Andres Gonzalez
  • 6 edits in trunk/LayoutTests

ITM: Fix for accessibility/table-attributes.html in isolated tree mode.
​https://bugs.webkit.org/show_bug.cgi?id=238258
<rdar://problem/90707533>

Reviewed by Chris Fleizach.

  • Modified this test to build the output in memory and log it at the end

in one call. This makes the test to run faster and not timeout in
isolated tree mode. In addition, we now retrieve the table element by
ID instead of setting focus to the body and getting the first child of
the focused element, which is not ITM friendly.

  • Added the axDebug helper function which unlike debug causes minimum

side effects by modifying the innerText of the console element instead
of adding span children to it. Adding children to the console element
causes event notifications that affect the behavior of the test in both
ITM on and off.

  • accessibility/table-attributes-expected.txt:
  • accessibility/table-attributes.html:
  • platform/glib/accessibility/table-attributes-expected.txt:
  • resources/accessibility-helper.js:

(axDebug): Added.

  • resources/js-test.js:

(getOrCreate): Exposes this function.

2:27 PM Changeset in webkit [291767] by jonlee@apple.com
  • 19 edits in trunk/LayoutTests

Unreviewed fuzzy gardening.

LayoutTests/imported/mozilla:

  • svg/filters/feImage-1.svg:
  • svg/text/simple-fill-gradient.svg:

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-backgrounds/background-gradient-subpixel-fills-area.html:
  • web-platform-tests/css/css-backgrounds/background-repeat-space-6.html:
  • web-platform-tests/css/css-backgrounds/background-rounded-image-clip.html:
  • web-platform-tests/css/css-backgrounds/border-bottom-right-radius-005.xht:
  • web-platform-tests/css/css-backgrounds/border-top-left-radius-005.xht:
  • web-platform-tests/css/css-backgrounds/border-top-right-radius-005.xht:
  • web-platform-tests/css/css-backgrounds/css-box-shadow-001.html:
  • web-platform-tests/css/css-transforms/2d-rotate-001.html:
  • web-platform-tests/css/css-transforms/css-skew-002.html:

LayoutTests:

  • fast/multicol/columns-on-body.html:
  • http/tests/images/draw-pattern-slow-load-large-image.html:
  • imported/blink/fast/gradients/gradient-transparency.html:
  • imported/blink/fast/text/international/rtl-space-in-ltr-element.html:
  • svg/custom/hidpi-masking-clipping.svg:
2:21 PM Changeset in webkit [291766] by zhifei_fang@apple.com
  • 2 edits
    4 adds in trunk/Tools/Scripts/libraries/resultsdbpy/resultsdbpy

[results.webkit.org] Add file bugzilla button
​https://bugs.webkit.org/show_bug.cgi?id=237802

Reviewed by Jonathan Bedard.

  • Tools/Scripts/libraries/resultsdbpy/resultsdbpy/bug_trackers/init.py: Added.
  • Tools/Scripts/libraries/resultsdbpy/resultsdbpy/bug_trackers/bug_description.py: Added.

(translate_selected_dots_to_bug_title_and_description):

  • Tools/Scripts/libraries/resultsdbpy/resultsdbpy/bug_trackers/bugzilla.py: Added.

(Bugzilla):
(Bugzilla.init):
(Bugzilla.create_bug):

  • Tools/Scripts/libraries/resultsdbpy/resultsdbpy/controller/api_routes.py:

(APIRoutes.init):

  • Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/timeline.js:

(TimelineFromEndpoint.prototype._renderSelectedDotsButtonGroup):
(TimelineFromEndpoint):

Canonical link: ​https://commits.webkit.org/248796@main

1:26 PM Changeset in webkit [291765] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ iOS EWS ] editing/deleting/insert-in-orphaned-selection-crash.html is a constant text failure
​https://bugs.webkit.org/show_bug.cgi?id=238282

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
1:23 PM Changeset in webkit [291764] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[ EWS iOS ] editing/spelling/spellcheck-async-remove-frame.html is a crash
​https://bugs.webkit.org/show_bug.cgi?id=238284

Unreviewed test gardening.

  • platform/ios/TestExpectations:
1:20 PM Changeset in webkit [291763] by mmaxfield@apple.com
  • 3 edits in trunk/LayoutTests

Make fast/text/emoji-num-glyphs.html more robust
​https://bugs.webkit.org/show_bug.cgi?id=238283
<rdar://problem/88842010>

Unreviewed test gardening.

Remove the U+26F9 PERSON WITH BALL without the U+FE0F emoji variation selector.

  • fast/text/emoji-num-glyphs-expected.txt:
  • fast/text/emoji-num-glyphs.html:
1:01 PM Changeset in webkit [291762] by jer.noble@apple.com
  • 6 edits in trunk

[Cocoa] MSE-backed videos fail to play in Captive Portal mode
​https://bugs.webkit.org/show_bug.cgi?id=237787
<rdar://89318047>

Reviewed by Eric Carlson.

Source/WebCore:

Updated test: media/media-source/media-source-allowed-codecs.html

When generating the "codecs" string for a given MSE track, we were previously casting
the FourCC code (a uint32) to a string, and passing that across the GPU process boundary,
and reconstituting the string on the WebContent process side. This caused the codec entry
to be "reversed", (e.g., 'aac ' turned into ' caa'), and fail codec validation.

Instead, use the FourCharCode class to properly create a string from the codec ID.

  • platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:

LayoutTests:

  • media/media-source/media-source-allowed-codecs-expected.txt:
  • media/media-source/media-source-allowed-codecs.html:
12:24 PM Changeset in webkit [291761] by J Pascoe
  • 2 edits in trunk/Source/WebKit

[WebAuthn] Specify correct ASCPublicKeyCredentialKind in configureAssertionOptions
​https://bugs.webkit.org/show_bug.cgi?id=238272
rdar://problem/90710080

Reviewed by Brent Fulgham.

There was a typo when refactoring code into this method. The kind passed to the function
should be used, instead of always ASCPublicKeyCredentialKindPlatform.

  • UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:

(WebKit::configureAssertionOptions):

12:22 PM Changeset in webkit [291760] by Russell Epstein
  • 6 edits in branches/safari-614.1.7-branch/Source/WebKit

Cherry-pick r291691. rdar://problem/90654598

Prefer WK_EXTERN to WK_EXPORT in Cocoa API headers
​https://bugs.webkit.org/show_bug.cgi?id=238129

Reviewed by Wenson Hsieh.

  • UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h:
  • UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
  • UIProcess/API/Cocoa/_WKElementAction.h:
  • UIProcess/API/Cocoa/_WKErrorRecoveryAttempting.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h: WK_EXPORT comes from WKDeclarationSpecifiers.h, which is a legacy C SPI header. WK_EXTERN comes from WKFoundation.h, part of the modern public API. We should prefer the modern version in Cocoa-only headers (even in private headers).

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291691 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12:21 PM Changeset in webkit [291759] by jer.noble@apple.com
  • 16 edits
    2 adds in trunk

[iOS] WebKit app is sometimes not "Now Playing" during initial playback
​https://bugs.webkit.org/show_bug.cgi?id=236993
<rdar://88827167>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/audio-session-category-at-most-recent-playback.html

Recently, we have added the concept of "preparingToPlay" to PlatformMediaSession to allow
the correct category to be set if updateSessionState() is called after playback is allowed
by the MediaSessionManager, but before playback is actually started by the media element.
However, this depends on updateSessionState() being called synchronously during playback.
We disabled this synchronous update in r269077 due to the large runtime cost when a large
number of media elements are created (but not used) at once.

Relax this asynchronous update in the case where the state is moving to "Playing", which
ensures that the correct AudioSessionCategory is set before playback starts, rather than
immediately afterward.

To support testing that the category was correctly set before playback started, add an
ivar to HTMLMediaElement that is set to the current AudioSessionCategory immediately before
the media element instructs the MediaPlayer to start playback. Expose this ivar to Internals.

Drive-by fixes: AudioSession::CategoryType cannot be forward declared, as it is a public
member of a class. Allow the enum to be forward declared by moving the declaration outside
the class, but allow current uses of the enum to continue by typedefing it inside the class
to the original enum name. Add an IDL enumeration matching the AudioSession one in Interals.idl
and convert the existing audioSessionCategory() call to use the new enumeration.

(Unforunately in the case where USE_AUDIO_SESSION is not set, the enumeration must be re-
declared. This can be removed and the entire implementation wrapped in a USE() check, once
the bindings generator is extended to allow "Conditional="-style attributes for USE checks.)

The added test is flakey due to a previous change which would keep the MediaSession category
in "MediaPlayback" for up to 2s after playback ends. To counteract this flakiness, reset the
state of the PlatformMediaSessionManager between tests.

  • html/HTMLMediaElement.cpp:

(WebCore::m_categoryAtMostRecentPlayback):
(WebCore::HTMLMediaElement::playPlayer):
(WebCore::m_logIdentifier): Deleted.

  • html/HTMLMediaElement.h:

(WebCore::HTMLMediaElement::categoryAtMostRecentPlayback const):

  • platform/audio/AudioSession.h:
  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::sessionStateChanged):

  • platform/audio/PlatformMediaSessionManager.h:

(WebCore::PlatformMediaSessionManager::resetSessionState):

  • platform/audio/cocoa/MediaSessionManagerCocoa.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::resetSessionState):

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):

  • testing/Internals.cpp:

(WebCore::Internals::audioSessionCategory const):
(WebCore::Internals::categoryAtMostRecentPlayback const):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

Fix the audio-session-category test. Creating the oscilator actually does change the
AudioSession category to "Ambient", but (previously) only in the next run loop, so a
synchronous test that the AudioSession category is "None" succeeds. Now that starting
playback (as happens when creating an audio node) changes the AudioSession synchronously,
the test begins failing.

  • media/audio-session-category-at-most-recent-playback-expected.txt: Added.
  • media/audio-session-category-at-most-recent-playback.html: Added.
  • media/audio-session-category-expected.txt:
  • media/audio-session-category.html:
11:58 AM Changeset in webkit [291758] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebGPU

[WebGPU] Clean up implementation of Device::createSampler()
​https://bugs.webkit.org/show_bug.cgi?id=238250

Reviewed by Darin Adler.

Refactor repeated code into reusable functions.

  • WebGPU/Sampler.mm:

(WebGPU::addressMode):
(WebGPU::minMagFilter):
(WebGPU::mipFilter):
(WebGPU::compareFunction):
(WebGPU::Device::createSampler):

11:53 AM Changeset in webkit [291757] by commit-queue@webkit.org
  • 303 edits
    8 adds
    4 deletes in trunk/Source/ThirdParty/ANGLE

Roll ANGLE to 2022-03-22 (e7f29440f02514126f30350dcd7132b68f7954d7)
​https://bugs.webkit.org/show_bug.cgi?id=238171

Large autogenerated ChangeLog elided.

Tested locally with Minibrowser on M1, with test cases from the
following recent bugs:

​https://bugs.webkit.org/show_bug.cgi?id=237006
​https://bugs.webkit.org/show_bug.cgi?id=237906
​https://bugs.webkit.org/show_bug.cgi?id=238022

and confirmed all render correctly.

Patch by Kenneth Russell <​kbr@chromium.org> on 2022-03-23
Reviewed by Kimmo Kinnunen.

11:47 AM Changeset in webkit [291756] by ysuzuki@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

[JSC][MSVC] custom getter creation needs to include classInfo since MSVC ICF is not "safe" variant
​https://bugs.webkit.org/show_bug.cgi?id=238030

Reviewed by Alexey Shvayka.

MSVC performs very aggressive ICF (identical code folding) and it even merges the identical two functions
into one even though a pointer to this function is used. This means MSVC's ICF is not "safe"[1], and custom
function weakmap is broken on MSVC since it is assuming function pointers are different for different functions.
Unfortunately, it seems that there is no attribute / annotation to prevent this behavior, so we need to workaround it.
Since JSCustomGetterFunction does separate thing based on attached DOMAttribute, we need to include const ClassInfo*
into a key of JSCustomGetterFunction weakmap to ensure that two identical functions with different const ClassInfo*
do not get the same JSCustomGetterFunction.

[1]: ​https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36912.pdf

  • runtime/JSCustomGetterFunction.h:
  • runtime/JSCustomSetterFunction.h:
  • runtime/JSGlobalObject.h:
  • runtime/JSGlobalObjectInlines.h:

(JSC::JSGlobalObject::WeakCustomGetterOrSetterHash<T>::hash):

  • runtime/JSObject.cpp:

(JSC::WeakCustomGetterOrSetterHashTranslator::hash):
(JSC::WeakCustomGetterOrSetterHashTranslator::equal):
(JSC::createCustomGetterFunction):
(JSC::createCustomSetterFunction):

11:37 AM Changeset in webkit [291755] by Chris Dumez
  • 2 edits in trunk/Source/JavaScriptCore

Avoid unnecessary String constructor under FunctionExecutable::toStringSlow()
​https://bugs.webkit.org/show_bug.cgi?id=238263

Reviewed by Darin Adler.

  • runtime/FunctionExecutable.cpp:

(JSC::FunctionExecutable::toStringSlow):

11:31 AM Changeset in webkit [291754] by Brandon
  • 2 edits in trunk/Source/WebCore

WBR element should set Clear property to None
​https://bugs.webkit.org/show_bug.cgi?id=238275

Reviewed by Alan Bujtas.

WBR elements need to have their Clear property automatically set to None.
BR elements do not need this change.

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::buildTree):

11:17 AM Changeset in webkit [291753] by Matteo Flores
  • 2 edits in trunk/LayoutTests

Unreviewed, reverting r291721.

Bug has been fixed

Reverted changeset:

"[ EWS iOS ] fast/text/emoji-num-glyphs.html is a flaky text
failure"
​https://bugs.webkit.org/show_bug.cgi?id=238233
​https://commits.webkit.org/r291721

10:58 AM Changeset in webkit [291752] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix DataIC's slowPathJump handling
​https://bugs.webkit.org/show_bug.cgi?id=231224

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileInById):

10:56 AM Changeset in webkit [291751] by jonlee@apple.com
  • 5 edits in trunk

Turn DOM in GPU Process on by default on iOS layout tests
​https://bugs.webkit.org/show_bug.cgi?id=236547
rdar://88863036

Reviewed by Geoffrey Garen.

Tools:

  • WebKitTestRunner/TestOptions.cpp:

(WTR::TestOptions::defaults):

LayoutTests:

  • gpu-process/TestExpectations: Transfer expectations.
  • platform/ios-wk2/TestExpectations:
10:39 AM Changeset in webkit [291750] by Russell Epstein
  • 2 edits in branches/safari-614.1.7-branch/Source/WebCore

Cherry-pick r291566. rdar://problem/90346629

Accessing WebGL content crashes in macOS Recovery OS
​https://bugs.webkit.org/show_bug.cgi?id=238139

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-21
Reviewed by Antti Koivisto.

Add a quick fix trying to circumvent a Recovery OS crash.
Parts of this will be reverted once the true source is found.

  • platform/graphics/cocoa/GraphicsContextGLCocoa.mm: (WebCore::platformSupportsMetal):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291566 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:12 AM Changeset in webkit [291749] by commit-queue@webkit.org
  • 10 edits in trunk

After losing context due to too many contexts, getError() does not return CONTEXT_LOST_WEBGL
​https://bugs.webkit.org/show_bug.cgi?id=236965

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-23
Reviewed by Kenneth Russell.

Source/WebCore:

After generating context lost, getError() is specified to return:

  • CONTEXT_LOST_WEBGL for first call
  • NO_ERROR for all the next calls.

WEBGL_lose_context is specified to add INVALID_OPERATION errors
even after context lost.

Change the code so that CONTEXT_LOST_WEBGL and WEBGL_lose_context induced
INVALID_OPERATION errors go to error vector in context lost -specific state.

Previously, these errors went into the m_context error vector. This is problematic
especially in the case where context loss happens where the m_context gets destroyed --
the error vector would be gone. This kind of loss happens for example when contexts
get lost due to the process having too many active contexts (least active context is "recycled").

Previously, any synthetized error was potentially obtainable after context lost. This is problematic
as it is not as specified. As mentioned above, only errors allowed after context lost is

  • CONTEXT_LOST_WEBGL first after context lost
  • WEBGL_lose_context.loseContext() and WEBGL_lose_context.restoreContext() induced INVALID_OPERATIONs

Changes the behavior to not report INVALID_OPERATION error in the theoretical case where we fail to
instantiate a new context. This is not allowed by the spec. Instead, just print an error to the console.

No new tests, updates the expectations of old ones with less failures.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::initializeNewContext):
(WebCore::WebGLRenderingContextBase::getError):
(WebCore::WebGLRenderingContextBase::isContextLost const):
(WebCore::WebGLRenderingContextBase::isContextLostOrPending):
(WebCore::WebGLRenderingContextBase::forceLostContext):
(WebCore::WebGLRenderingContextBase::loseContextImpl):
(WebCore::WebGLRenderingContextBase::forceRestoreContext):
(WebCore::WebGLRenderingContextBase::isContextUnrecoverablyLost const):
(WebCore::WebGLRenderingContextBase::scheduleTaskToDispatchContextLostEvent):
(WebCore::WebGLRenderingContextBase::maybeRestoreContext):
(WebCore::WebGLRenderingContextBase::synthesizeGLError):
(WebCore::WebGLRenderingContextBase::synthesizeLostContextGLError):

  • html/canvas/WebGLRenderingContextBase.h:

(WebCore::WebGLRenderingContextBase::ContextLostState::ContextLostState):

Source/WebKit:

Remove recording of synthetic webgl context lost error from the proxy.
This is now recorded in the WebGLRenderingContextBase.

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::synthesizeGLError):
(WebKit::RemoteGraphicsContextGLProxy::getError):

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:

LayoutTests:

  • fast/canvas/webgl/lose-context-on-status-failure-expected.txt:
  • webgl/lose-context-after-context-lost-expected.txt:
  • webgl/max-active-contexts-webglcontextlost-prevent-default-expected.txt:
10:05 AM Changeset in webkit [291748] by commit-queue@webkit.org
  • 8 edits in trunk

Context2D drawImage(img, x, y, w, h) should not throw IndexSizeError when width == 0 or height == 0
​https://bugs.webkit.org/show_bug.cgi?id=238195

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-23
Reviewed by Simon Fraser.

Source/WebCore:

When drawing HTMLImageElement with width == 0 or height==0, do nothing as per spec.

When drawing HTMLCanvasElement with source rectangle width == 0 or height == 0,
do nothing as per spec.

Previously these would throw IndexSizeError. The CanvasDrawImage methods do not throw these.

Spec:
HTML Living Standard — Last Updated 17 March 2022
​https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-drawimage

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::drawImage):

LayoutTests:

  • fast/canvas/canvas-overloads-drawImage-expected.txt:
  • fast/canvas/canvas-overloads-drawImage.html:
  • fast/canvas/drawImage-with-invalid-args-expected.txt:
  • fast/canvas/drawImage-with-invalid-args.html:
10:00 AM Changeset in webkit [291747] by Tyler Wilcock
  • 8 edits
    3 adds in trunk

AccessibilityRenderObject::nextSibling should allow parent differences in the presence of display: contents
​https://bugs.webkit.org/show_bug.cgi?id=238184

Reviewed by Andres Gonzalez.

Source/WebCore:

AccessibilityRenderObject::nextSibling currently has this logic to
return nullptr if the computed sibling has a parent different from this:

auto* nextObject = objectCache->getOrCreate(nextSibling);
if (nextObject && nextObject->parentObject() != this->parentObject())

return nullptr;

This is problematic in the presence of display: contents since we expect
parent object differences due to the way this property affects the render tree.

Concretely, this breaks the firstChild(), nextSibling() iteration we do throughout
WebKit (e.g. in AccessibilityRenderObject::addChildren), as when we get to an element
with display: contents we get a parent mismatch and iteration stops unnecessarily.

This patch fixes the issue by allowing a parent mismatch when either
object has display: contents, as we account for this difference in the
appropriate places (e.g. AccessibilityObject::insertChild).

Test: accessibility/display-contents-search-traversal.html

  • accessibility/AXLogger.cpp:

(WebCore::operator<<):
Log when an object has display: contents. This property affects the
render tree and AX tree, so it's useful to log.

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::hasDisplayContents const): Added.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::nextSibling const):

LayoutTests:

  • accessibility/display-contents-search-traversal-expected.txt: Added.
  • accessibility/display-contents-search-traversal.html: Added.
  • platform/glib/TestExpectations: Skip new test.
  • platform/ios/TestExpectations: Enable new test.
  • platform/ios/accessibility/display-contents-search-traversal-expected.txt: Added.
  • platform/win/TestExpectations: Skip new test.
9:40 AM Changeset in webkit [291746] by Patrick Angle
  • 7 edits
    2 adds in trunk

No breakpoints hit on github.com, and some are invalid
​https://bugs.webkit.org/show_bug.cgi?id=235607

Reviewed by Yusuke Suzuki.

JSTests:

Add test for multi-line parsing errors.

  • stress/regress-88440831.js: Added.

Source/JavaScriptCore:

New test: JSTests/stress/regress-88440831.js
Added test case in: inspector/debugger/breakpoints/resolved-dump-all-pause-locations.html

Previously not all line terminations resulted in setting the m_lineStart to the current m_code, which meant
that the location for pause-able locations and stack traces were inaccurate when they were on a line that
terminated multi-line comments, strings, or template strings. We now always update m_lineStart when shifting for
a line terminator, instead of only when the terminator appears outside a string or comment.

  • debugger/Breakpoint.cpp:

(JSC::Breakpoint::resolve):

  • The existing assertions were somewhat in conflict with each other. If we permit the line number to increase,

there is no guarantee that the column number will remain the same or increase, which can now more easily occur
with multi-line strings. Instead, we should make sure that the overall offset has increased.

  • parser/Lexer.cpp:

(JSC::Lexer<T>::shiftLineTerminator):
(JSC::Lexer<T>::lexWithoutClearingLineTerminator):
(JSC::Lexer<T>::scanTemplateString):

LayoutTests:

Add test cases for resolving breakpoints on lines that begin with the end of multi-line strings, comments, and
template strings.

  • inspector/debugger/breakpoints/resolved-dump-all-pause-locations-expected.txt:
  • inspector/debugger/breakpoints/resolved-dump-all-pause-locations.html:
  • inspector/debugger/breakpoints/resources/dump-multiline.js: Added.

(test):

7:12 AM Changeset in webkit [291745] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] Add DoNotHaveTagRegisters mode to unboxDouble
​https://bugs.webkit.org/show_bug.cgi?id=238018

Patch by Xan Lopez <Xan Lopez> on 2022-03-23
Reviewed by Yusuke Suzuki.

Wasm cannot use unboxDouble as-is because
GPRInfo::numberTagRegister is not available. Add a
DoNotHaveTagRegister mode so we can get rid of some duplicated
code.

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::add64):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::unboxDoubleWithoutAssertions):
(JSC::AssemblyHelpers::unboxDouble):

  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):

6:54 AM Changeset in webkit [291744] by youenn@apple.com
  • 11 edits
    1 add in trunk/Source/WebCore

VideoFrame does not need to inherit from MediaSample
​https://bugs.webkit.org/show_bug.cgi?id=238071

Reviewed by Eric Carlson.

Update MediaSample, MediaSampleAVFObjC and VideoFrame according the separation.
This is a refactoring, covered by existing tests.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/MediaSample.h:
  • platform/VideoFrame.cpp:
  • platform/VideoFrame.h:
  • platform/VideoFrame.mm: Added.
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
  • platform/graphics/gstreamer/VideoFrameGStreamer.cpp:
  • platform/graphics/gstreamer/VideoFrameGStreamer.h:
6:10 AM Changeset in webkit [291743] by vjaquez@igalia.com
  • 3 edits in trunk/Source/WebCore

REGRESSION(r291611): Fix GTK/WPE build
​https://bugs.webkit.org/show_bug.cgi?id=238248

Unreviewed build fix.

  • platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.cpp:

(WebCore::RealtimeIncomingVideoSourceLibWebRTC::OnFrame):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.cpp:

(WebCore::RealtimeOutgoingVideoSourceLibWebRTC::videoFrameAvailable):

4:52 AM Changeset in webkit [291742] by Ziran Sun
  • 18 edits
    1 copy in trunk

[InputElement] Add HTMLInputElement::showPicker() method
​https://bugs.webkit.org/show_bug.cgi?id=237192

LayoutTests/imported/w3c:

Reviewed by Darin Adler.

Update test expectations as more tests are now passing.

  • web-platform-tests/html/dom/idlharness.https-expected.txt:
  • web-platform-tests/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe-expected.txt:
  • web-platform-tests/html/semantics/forms/the-input-element/show-picker-expected.txt:

Source/WebCore:

Reviewed by Darin Adler.

At ​https://github.com/whatwg/html/issues/6909, it proposes to add a
new HTMLInputElement::showPicker() method to show a brower picker for
temporal, color and file input elements.

Chromium has introduced this feature at
​https://bugs.chromium.org/p/chromium/issues/detail?id=939561.

This CL imports the changes from Chromium CLs at
​https://chromium-review.googlesource.com/c/chromium/src/+/3056920
and
​https://chromium-review.googlesource.com/c/chromium/src/+/3310677

The support for temporal input element is not included in this CL. We might
need a bit more investigation on it and hopefully will addess at a later stage.

  • html/ColorInputType.cpp:

(WebCore::ColorInputType::handleDOMActivateEvent):
(WebCore::ColorInputType::showPicker):
(WebCore::ColorInputType::allowsShowPickerAcrossFrames):

  • html/ColorInputType.h:
  • html/FileInputType.cpp:

(WebCore::FileInputType::handleDOMActivateEvent):
(WebCore::FileInputType::showPicker):
(WebCore::FileInputType::allowsShowPickerAcrossFrames):

  • html/FileInputType.h:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::showPicker):

  • html/HTMLInputElement.h:
  • html/HTMLInputElement.idl:
  • html/InputType.cpp:

(WebCore::InputType::allowsShowPickerAcrossFrames):
(WebCore::InputType::showPicker):

  • html/InputType.h:

LayoutTests:

Reviewed by Darin Adler .

  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe-expected.txt.
2:04 AM Changeset in webkit [291741] by youenn@apple.com
  • 6 edits
    5 adds in trunk

Computation of Document siteForCookies is buggy in case document is created by window.open
​https://bugs.webkit.org/show_bug.cgi?id=238202
<rdar://88979099>

Reviewed by John Wilander.

Source/WebCore:

For top level navigations, we need to use the security origin to compute siteForCookies as the document
may have the opener security origin.
Add a Document routine to handle this case.

Tests: http/tests/cookies/same-site/popup-from-iframe-same-site-with-post-form.html

http/tests/cookies/same-site/popup-same-site-with-post-form.html

  • dom/Document.cpp:
  • dom/Document.h:
  • loader/FrameLoader.cpp:

LayoutTests:

  • http/tests/cookies/resources/testharness-helpers.js:
  • http/tests/cookies/same-site/popup-from-iframe-same-site-with-post-form-expected.txt: Added.
  • http/tests/cookies/same-site/popup-from-iframe-same-site-with-post-form.html: Added.
  • http/tests/cookies/same-site/popup-same-site-with-post-form-expected.txt: Added.
  • http/tests/cookies/same-site/popup-same-site-with-post-form.html: Added.
  • http/tests/cookies/same-site/resources/popup-iframe.html: Added.
1:40 AM Changeset in webkit [291740] by Razvan Caliman
  • 5 edits in trunk

Web Inspector: Styles panel: Unwanted extra dash when autocompleting CSS variable names
​https://bugs.webkit.org/show_bug.cgi?id=237676

Reviewed by Patrick Angle.

Source/WebInspectorUI:

The CSS-mode tokenizer provided by CodeMirror and used in Web Inspector matches strictly conforming
CSS variable names, i.e. prefixed with two dahses, --.

An identifier like -name gets split into two tokens - and name.
The token at the cursor position becomes just name.
This token's value is used as a query string for autocompletion.

When a completion suggestion is picked, the query string gets replaced with the suggestion text in
WI.SpreadsheetTextField._updatePendingValueWithCompletionText().
But because it was split from the query, the dash ends up prepended to the replaced string.

This patch adds a special case in WI.CSSKeywordCompletions.forPartialPropertyValue()
to account for this aspect of the tokenizer.

  • UserInterface/Models/CSSKeywordCompletions.js:

LayoutTests:

Add tests for special cases of matching incomplete CSS variable names in autocompletion.

  • inspector/unit-tests/css-keyword-completions-expected.txt:
  • inspector/unit-tests/css-keyword-completions.html:
1:09 AM Changeset in webkit [291739] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[WinCairo] Unreviewed build fix after r291733

  • WebProcess/GPU/graphics/PrepareBackingStoreBuffersData.h:
1:02 AM Changeset in webkit [291738] by Nikos Mouchtaris
  • 1 edit
    8 adds in trunk/LayoutTests/imported/w3c

Import calc() infinite/nan tests
​https://bugs.webkit.org/show_bug.cgi?id=238237

Unreviewed, test import.

  • web-platform-tests/css/css-values/calc-catch-divide-by-0-expected.txt: Added.
  • web-platform-tests/css/css-values/calc-catch-divide-by-0.html: Added.
  • web-platform-tests/css/css-values/calc-infinity-nan-serialize-angle-expected.txt: Added.
  • web-platform-tests/css/css-values/calc-infinity-nan-serialize-angle.html: Added.
  • web-platform-tests/css/css-values/calc-infinity-nan-serialize-length-expected.txt: Added.
  • web-platform-tests/css/css-values/calc-infinity-nan-serialize-length.html: Added.
  • web-platform-tests/css/css-values/calc-infinity-nan-serialize-time-expected.txt: Added.
  • web-platform-tests/css/css-values/calc-infinity-nan-serialize-time.html: Added.

Mar 22, 2022:

11:47 PM Changeset in webkit [291737] by Ben Nham
  • 19 edits
    1 copy
    3 adds in trunk

Only show notification permission prompt on transient activation
​https://bugs.webkit.org/show_bug.cgi?id=238188

Reviewed by Youenn Fablet.

Source/WebCore:

In r291427, we changed Notification.requestPermission and PushManager.subscribe to only show
a permission prompt when processing a user gesture. This ended up being too restrictive and
causes compatibility problems with some large sites.

Instead, match Chrome and Firefox by allowing these prompts after a transient activiation,
i.e. a user gesture within the past second.

Per Maciej's suggestion, we also consume the activation to help combat prompt spam.

Covered by new and existing layout tests.

  • Modules/notifications/Notification.cpp:

(WebCore::Notification::requestPermission):

  • Modules/push-api/PushManager.cpp:

(WebCore::PushManager::subscribe):

Tools:

Add an internal API denyWebNotificationPermissionOnPrompt to WebKitTestRunner that allows a
notification permission prompt to first be displayed and then rejected. This differs from
the existing denyNotificationPermission call, which denied notification permissions before
prompting.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::denyWebNotificationPermission):
(WTR::TestRunner::denyWebNotificationPermissionOnPrompt):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::originUserVisibleName):
(WTR::TestController::denyNotificationPermissionOnPrompt):
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::decidePolicyForNotificationPermissionRequest):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

Add test cases to make sure that showing a permission prompt consumes a user gesture.

  • http/tests/notifications/notification-request-permission-no-callback.html:
  • http/tests/notifications/notification-request-permission.html:
  • http/tests/notifications/request-consumes-activation-expected.txt: Added.
  • http/tests/notifications/request-consumes-activation.html: Added.
  • http/tests/push-api/resources/subscribe-tests.js:

(async testDocumentSubscribeWithUserGesture):
(async testDocumentSubscribeWithoutUserGesture):
(async testDocumentSubscribeImpl):

  • http/tests/push-api/subscribe-deny-permissions-expected.txt:
  • http/tests/push-api/subscribe-deny-permissions-on-prompt-expected.txt:
  • http/tests/push-api/subscribe-deny-permissions-on-prompt.html: Added.
  • http/tests/push-api/subscribe-deny-permissions.html:
  • platform/gtk/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
11:45 PM Changeset in webkit [291736] by ysuzuki@apple.com
  • 17 edits in trunk

[JSC] Test DFG / FTL DataIC
​https://bugs.webkit.org/show_bug.cgi?id=231224

Reviewed by Saam Barati.

JSTests:

  • microbenchmarks/deltablue-varargs.js:
  • microbenchmarks/richards-try-catch.js:

Source/JavaScriptCore:

This patch revives DataIC in DFG and FTL, and re-enable testing to make it usable
for unlinked DFG. Currently, only x64 / ARM64 are supported.

  • bytecode/InlineAccess.cpp:

(JSC::InlineAccess::isCacheableArrayLength):
(JSC::InlineAccess::isCacheableStringLength):
(JSC::InlineAccess::rewireStubAsJumpInAccess):
(JSC::InlineAccess::resetStubAsJumpInAccess):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetById):
(JSC::DFG::SpeculativeJIT::compileGetByIdFlush):
(JSC::DFG::SpeculativeJIT::compileInById):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):
(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):
(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::cachedPutById):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • jit/JITCode.h:

(JSC::JITCode::useDataIC):

  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITByIdGenerator::generateFastCommon):
(JSC::generateGetByIdInlineAccess):
(JSC::JITGetByIdGenerator::generateFastPath):
(JSC::JITGetByIdWithThisGenerator::generateFastPath):
(JSC::generatePutByIdInlineAccess):
(JSC::JITPutByIdGenerator::generateBaselineDataICFastPath):
(JSC::JITPutByIdGenerator::generateFastPath):
(JSC::JITDelByValGenerator::generateFastPath):
(JSC::JITDelByIdGenerator::generateFastPath):
(JSC::JITInByValGenerator::generateFastPath):
(JSC::generateInByIdInlineAccess):
(JSC::JITInByIdGenerator::generateFastPath):
(JSC::JITInByIdGenerator::generateBaselineDataICFastPath):
(JSC::JITInstanceOfGenerator::generateFastPath):
(JSC::JITGetByValGenerator::generateFastPath):
(JSC::JITPutByValGenerator::generateFastPath):
(JSC::JITPrivateBrandAccessGenerator::generateFastPath):

  • jit/JITInlineCacheGenerator.h:

(JSC::JITInlineCacheGenerator::reportSlowPathCall):
(JSC::JITInlineCacheGenerator::slowPathBegin const):
(JSC::JITByIdGenerator::slowPathJump const):
(JSC::JITInByValGenerator::slowPathJump const):

  • runtime/Options.cpp:

(JSC::Options::recomputeDependentOptions):

  • runtime/OptionsList.h:

Tools:

  • Scripts/run-jsc-stress-tests:
10:26 PM Changeset in webkit [291735] by achristensen@apple.com
  • 19 edits
    1 add in trunk

Implement PCM to SKAdNetwork bridge
​https://bugs.webkit.org/show_bug.cgi?id=237969
<rdar://82988054>

Reviewed by John Wilander.

Source/WebCore:

When clicking on an app store link that has been decorated with the necessary PCM attributes,
we give information about the click to SKAdNetwork to send an anonymous attribution report later
if the user buys the app because of the click. That part has not been implemented yet, so to test
we simply report the information that we are giving to SKAdNetwork in an API test which uses an HTTPS
proxy so we don't actually connect to apps.apple.com when running the test.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::attributionDestinationURLForPCM const):
(WebCore::HTMLAnchorElement::mainDocumentRegistrableDomainForPCM const):
(WebCore::HTMLAnchorElement::attributionSourceNonceForPCM const):
(WebCore::HTMLAnchorElement::parsePrivateClickMeasurementForSKAdNetwork const):
(WebCore::HTMLAnchorElement::parsePrivateClickMeasurement const):
(WebCore::HTMLAnchorElement::handleClick):

  • html/HTMLAnchorElement.h:
  • loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::appStoreURLAdamID):

  • loader/PrivateClickMeasurement.h:

(WebCore::PrivateClickMeasurement::adamID const):
(WebCore::PrivateClickMeasurement::setAdamID):
(WebCore::PrivateClickMeasurement::encode const):
(WebCore::PrivateClickMeasurement::decode):

Source/WebKit:

The WebKit parts of this just introduce a new information flow to SKAdNetwork to send the app purchase attribution
kind of like WebKit sends a PCM attribution report 24-48 hours after a non-app-purchase click with attribution.

  • Configurations/WebKit.xcconfig:
  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::storePrivateClickMeasurement):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::donateToSKAdNetwork):

  • NetworkProcess/cocoa/AppStoreDaemonSPI.h: Added.
  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::donateToSKAdNetwork):

  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
  • Scripts/process-entitlements.sh:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didCommitLoadForFrame):

  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:

  • wtf/PlatformHave.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:

(TestWebKitAPI::TEST):

9:25 PM Changeset in webkit [291734] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

Add a few more WEBCORE_EXPORT macros
​https://bugs.webkit.org/show_bug.cgi?id=238214

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-22
Reviewed by Eric Carlson.

These are needed to successfully link when building with -fsanitize=fuzzer,address

  • dom/Document.h:
  • html/HTMLCollection.h:
  • html/HTMLOptionsCollection.h:
  • platform/Pasteboard.h:
  • platform/mediastream/mac/CoreAudioCaptureSource.h:
7:06 PM Changeset in webkit [291733] by Simon Fraser
  • 14 edits
    1 add in trunk/Source/WebKit

Swap all RemoteLayerBackingStore buffers in a single IPC
​https://bugs.webkit.org/show_bug.cgi?id=238210

Reviewed by Tim Horton.

PrepareBuffersForDisplay is a sync IPC (since we need the result before painting), and sync
IPC per-layer has performance impact. So group all the swapping into a single IPC with the
GPU Process.

The PrepareBuffersForDisplay message now takes a vector of
PrepareBackingStoreBuffersInputData, and returns a vector of
PrepareBackingStoreBuffersOutputData. Swapped buffers are applied to the
RemoteLayerBackingStore as before, with a minor change in the place that setNeedsDisplay()
is called in the case where we need a full display.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::prepareBuffersForDisplay):
(WebKit::RemoteRenderingBackend::prepareLayerBuffersForDisplay):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Scripts/webkit/messages.py:

(headers_for_type):

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::applySwappedBuffers):
(WebKit::RemoteLayerBackingStore::performDelegatedLayerDisplay):
(WebKit::RemoteLayerBackingStore::prepareToDisplay):
(WebKit::RemoteLayerBackingStore::ensureFrontBuffer):
(WebKit::RemoteLayerBackingStore::prepareBuffers):
(WebKit::operator<<): Deleted.

  • Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:

(WebKit::RemoteLayerBackingStoreCollection::prepareBackingStoreBuffers): Deleted.

  • Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.h:
  • Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm:

(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::prepareBackingStoresForDisplay):
(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::prepareBackingStoreBuffers): Deleted.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/PrepareBackingStoreBuffersData.h: Added.

(WebKit::PrepareBackingStoreBuffersInputData::encode const):
(WebKit::PrepareBackingStoreBuffersInputData::decode):
(WebKit::PrepareBackingStoreBuffersOutputData::encode const):
(WebKit::PrepareBackingStoreBuffersOutputData::decode):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::prepareBuffersForDisplay):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
6:39 PM Changeset in webkit [291732] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (248499@main): [iOS] ASSERTION FAILED: Completion handler should always be called under WebKit::NetworkProcess::prepareToSuspend()
​https://bugs.webkit.org/show_bug.cgi?id=238234
<rdar://problem/90665237>

Reviewed by Chris Dumez.

Invoke completion handler on early return.

  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::suspend):

6:27 PM Changeset in webkit [291731] by Chris Dumez
  • 5 edits in trunk/Source

Use ASCIILiteral in a few more places where it is useful
​https://bugs.webkit.org/show_bug.cgi?id=238235

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

  • runtime/FunctionExecutable.cpp:

(JSC::FunctionExecutable::toStringSlow):

Source/WebCore:

  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::setValueCommon):

  • platform/animation/TimingFunction.cpp:

(WebCore::TimingFunction::cssText const):

5:58 PM Changeset in webkit [291730] by Chris Dumez
  • 6 edits in trunk/Source

Add URL::stringWithoutFragmentIdentifier() overload which returns a String instead of a StringView
​https://bugs.webkit.org/show_bug.cgi?id=238221

Reviewed by Geoffrey Garen.

Source/WebCore:

  • page/History.cpp:

(WebCore::History::stateObjectAdded):

  • platform/network/BlobRegistryImpl.cpp:

(WebCore::BlobRegistryImpl::getBlobDataFromURL const):
(WebCore::BlobRegistryImpl::registerBlobURLHandle):
(WebCore::BlobRegistryImpl::unregisterBlobURLHandle):
(WebCore::blobURLWithoutFragment): Deleted.

Source/WTF:

  • wtf/URL.cpp:

(WTF::URL::viewWithoutQueryOrFragmentIdentifier const):
(WTF::URL::viewWithoutFragmentIdentifier const):
(WTF::URL::stringWithoutFragmentIdentifier const):
(WTF::equalIgnoringFragmentIdentifier):
(WTF::URL::stringWithoutQueryOrFragmentIdentifier const): Deleted.

  • wtf/URL.h:
5:19 PM Changeset in webkit [291729] by Patrick Angle
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Elements tab: selection variable not displayed after losing focus
​https://bugs.webkit.org/show_bug.cgi?id=238226

Reviewed by Devin Rousso.

When rebuilding the underlying DOMTreeElements, we should make sure the inspected node is marked as such,
otherwise we won't update this until a different element becomes the inspected node.

  • UserInterface/Views/DOMTreeOutline.js:

(WI.DOMTreeOutline.prototype.update):

5:11 PM Changeset in webkit [291728] by Megan Gardner
  • 2 edits in trunk/Source/WebKit

Expand autocorrect context for more accurate results.
​https://bugs.webkit.org/show_bug.cgi?id=237990
rdar://87353381

Expand autocorrect context to at least 10 words instead of 3, and with a min/max length of 40/100 instead of 12/30
and start context at the beginning of sentences to help with having more accurate autocorrect suggestions.

Reviewed by Tim Horton.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::autocorrectionContext):

5:00 PM Changeset in webkit [291727] by jonlee@apple.com
  • 2 edits in trunk/LayoutTests

Expose the AX tree of PDFs loaded via iframes on the Mac
​https://bugs.webkit.org/show_bug.cgi?id=238168

Patch by Tyler Wilcock <Tyler Wilcock> on 2022-03-22
Reviewed by Chris Fleizach.

  • accessibility/mac/iframe-pdf-expected.txt: Added.
  • accessibility/mac/iframe-pdf.html: Added.
  • platform/mac-wk1/TestExpectations:

Skip new test as it always times out in WK1 (similar to
accessibility/mac/basic-embed-pdf-accessibility.html)

4:53 PM Changeset in webkit [291726] by sihui_liu@apple.com
  • 6 edits in trunk

Check if origin can access storage in Storage API
​https://bugs.webkit.org/show_bug.cgi?id=238158

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/file-system-access/opaque-origin.https.window-expected.txt:
  • web-platform-tests/storage/opaque-origin.https.window-expected.txt:

Source/WebCore:

According to spec ​https://storage.spec.whatwg.org/#obtain-a-storage-key, origin should not access Storage API if
it's opaque. Also, origin should not access storage if it's blocked by storage policy, so we use
SecurityOrigin::canAccessStorage to perform the origin check, like what we do for the other storage APIs.

Updated expectation for imported tests.

  • Modules/storage/StorageManager.cpp:

(WebCore::connectionInfo):

  • page/SecurityOrigin.h:

(WebCore::SecurityOrigin::canAccessStorageManager const):

4:46 PM Changeset in webkit [291725] by Alan Bujtas
  • 3 edits
    1 move in trunk/Source/WebCore

[IFC][Integration] Rename InlineIteratorLine.cpp to InlineIteratorLineBox.cpp
​https://bugs.webkit.org/show_bug.cgi?id=238219

Unreviewed.

r291548 should have included this rename.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/integration/InlineIteratorLineBox.cpp: Renamed from Source/WebCore/layout/integration/InlineIteratorLine.cpp.

(WebCore::InlineIterator::LineBoxIterator::LineBoxIterator):
(WebCore::InlineIterator::LineBoxIterator::atEnd const):
(WebCore::InlineIterator::LineBoxIterator::traverseNext):
(WebCore::InlineIterator::LineBoxIterator::traversePrevious):
(WebCore::InlineIterator::LineBoxIterator::operator== const):
(WebCore::InlineIterator::firstLineBoxFor):
(WebCore::InlineIterator::lastLineBoxFor):
(WebCore::InlineIterator::LineBox::next const):
(WebCore::InlineIterator::LineBox::previous const):
(WebCore::InlineIterator::LineBox::firstLeafBox const):
(WebCore::InlineIterator::LineBox::lastLeafBox const):
(WebCore::InlineIterator::closestBoxForHorizontalPosition):

4:37 PM Changeset in webkit [291724] by Tyler Wilcock
  • 4 edits
    2 adds in trunk

Expose the AX tree of PDFs loaded via iframes on the Mac
​https://bugs.webkit.org/show_bug.cgi?id=238168

Reviewed by Chris Fleizach.

Source/WebKit:

Given this markup:

<iframe src="/path/to/paystub.pdf">

An accessibility tree is built for paystub.pdf, but we don't expose it
to AX clients, making the PDF entirely inaccessible.

This happens because we were setting the AX parent to be the webpage
for full-frame PDF plugins (which an iframe with this markup is).
This behavior is correct only for main-frame (i.e. not iframe)
full-frame plugins, so this patch adds an extra condition to that logic.

Test: accessibility/mac/iframe-pdf.html

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::PDFPlugin):

LayoutTests:

  • accessibility/mac/iframe-pdf-expected.txt: Added.
  • accessibility/mac/iframe-pdf.html: Added.
  • platform/mac-wk1/TestExpectations:

Skip new test as it always times out in WK1 (similar to
accessibility/mac/basic-embed-pdf-accessibility.html)

4:25 PM Changeset in webkit [291723] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[macOS WK2] LayoutTest webaudio/silent-audio-interrupted-in-background.html is a flaky timeout on older OSes (El Capitan / Sierra) (172201)
​https://bugs.webkit.org/show_bug.cgi?id=172201

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:24 PM Changeset in webkit [291722] by Russell Epstein
  • 1 copy in tags/Safari-614.1.6.2

Tag Safari-614.1.6.2.

4:22 PM Changeset in webkit [291721] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[ EWS iOS ] fast/text/emoji-num-glyphs.html is a flaky text failure
​https://bugs.webkit.org/show_bug.cgi?id=238233

Unreviewed test gardening.

  • platform/ios/TestExpectations:
4:19 PM Changeset in webkit [291720] by Russell Epstein
  • 6 edits in branches/safari-614.1.6-branch/Source/WebKit

Cherry-pick r291691. rdar://problem/90654598

Prefer WK_EXTERN to WK_EXPORT in Cocoa API headers
​https://bugs.webkit.org/show_bug.cgi?id=238129

Reviewed by Wenson Hsieh.

  • UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h:
  • UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
  • UIProcess/API/Cocoa/_WKElementAction.h:
  • UIProcess/API/Cocoa/_WKErrorRecoveryAttempting.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h: WK_EXPORT comes from WKDeclarationSpecifiers.h, which is a legacy C SPI header. WK_EXTERN comes from WKFoundation.h, part of the modern public API. We should prefer the modern version in Cocoa-only headers (even in private headers).

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291691 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4:13 PM Changeset in webkit [291719] by Kocsen Chung
  • 1 copy in tags/Safari-611.3.10.1.16

Tag Safari-611.3.10.1.16.

4:09 PM Changeset in webkit [291718] by Kocsen Chung
  • 1 copy in tags/Safari-609.4.1.1.1

Tag Safari-609.4.1.1.1.

4:01 PM Changeset in webkit [291717] by Russell Epstein
  • 9 edits in branches/safari-614.1.6-branch/Source

Versioning.

WebKit-7614.1.6.2

4:00 PM Changeset in webkit [291716] by Jonathan Bedard
  • 5 edits in trunk/Tools

[git-webkit] Do not re-prompt configuration options during setup
​https://bugs.webkit.org/show_bug.cgi?id=237571
<rdar://problem/89940351>

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/setup.py:

(Setup.git): Skip already configured options by default.
(Setup.parser): Add option to re-prompt for previously configured options.

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

Canonical link: ​https://commits.webkit.org/248753@main

3:34 PM Changeset in webkit [291715] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[ EWS iOS ] imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-050.html is a flaky crash
​https://bugs.webkit.org/show_bug.cgi?id=238229

Unreviewed test gardening.

  • platform/ios/TestExpectations:
3:34 PM Changeset in webkit [291714] by Russell Epstein
  • 2 edits in branches/safari-614.1.7-branch/Source/ThirdParty/libwebrtc

Cherry-pick r291713. rdar://problem/90604028

REGRESSION(r291455): libwebrtc has the wrong install name when using override frameworks directory
​https://bugs.webkit.org/show_bug.cgi?id=238212
rdar://90604028

Reviewed by Alexey Proskuryakov.

r291455 introduced a default definition of DYLIB_INSTALL_NAME_BASE for non-macOS platforms that
stays defined as /S/L/PF/WebCore.framework/Frameworks. This explicit definition (rather than
falling back to the build system default of $INSTALL_PATH) is fine for those platforms but
clashes with the macOS definition of this variable when building with an override frameworks path:

DYLIB_INSTALL_NAME_BASE_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(DYLIB_INSTALL_NAME_BASE);

Because of the new default definition of DYLIB_INSTALL_NAME_BASE, the semantics of this line
were changed from "use the install path as the install name when there's an override frameworks
directory" to "use /S/L/PF/WebCore.frameworks/Frameworks as the install name when there's an
override frameworks directory", which completely bypasses the point of the *override* directory.

Resolve this by redefining DYLIB_INSTALL_NAME_BASE_USE_OVERRIDE_FRAMEWORKS_DIR_YES to explicitly
use the INSTALL_PATH as the base of the install name, which was the original intent before
r291455 changed the behavior of falling back to DYLIB_INSTALL_NAME_BASE.

  • Configurations/libwebrtc.xcconfig:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291713 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:28 PM Changeset in webkit [291713] by david_quesada@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

REGRESSION(r291455): libwebrtc has the wrong install name when using override frameworks directory
​https://bugs.webkit.org/show_bug.cgi?id=238212
rdar://90604028

Reviewed by Alexey Proskuryakov.

r291455 introduced a default definition of DYLIB_INSTALL_NAME_BASE for non-macOS platforms that
stays defined as /S/L/PF/WebCore.framework/Frameworks. This explicit definition (rather than
falling back to the build system default of $INSTALL_PATH) is fine for those platforms but
clashes with the macOS definition of this variable when building with an override frameworks path:

DYLIB_INSTALL_NAME_BASE_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(DYLIB_INSTALL_NAME_BASE);

Because of the new default definition of DYLIB_INSTALL_NAME_BASE, the semantics of this line
were changed from "use the install path as the install name when there's an override frameworks
directory" to "use /S/L/PF/WebCore.frameworks/Frameworks as the install name when there's an
override frameworks directory", which completely bypasses the point of the *override* directory.

Resolve this by redefining DYLIB_INSTALL_NAME_BASE_USE_OVERRIDE_FRAMEWORKS_DIR_YES to explicitly
use the INSTALL_PATH as the base of the install name, which was the original intent before
r291455 changed the behavior of falling back to DYLIB_INSTALL_NAME_BASE.

  • Configurations/libwebrtc.xcconfig:
3:22 PM Changeset in webkit [291712] by Patrick Angle
  • 5 edits in trunk

Source/WebInspectorUI:
Web Inspector: console.log format strings containing invalid specifiers results in [Object object] replacing the specifier instead of ignoring the invalid specifier
​https://bugs.webkit.org/show_bug.cgi?id=235061

Reviewed by Devin Rousso.

Logged console messages previously allows an specifier, even invalid ones, to be replaced with values. We should
instead ignore the invalid specifier to match Firefox's behavior. (Chrome's behavior currently is to remove the
invalid specifier from the result without replacing it with the first next available substitution value.)

Other call sites using String.format are handling localized strings or other backend-provided strings that
should always be well-formatted, so falling back to handling a format specifier as a string is not a particularly
useful behavior.

  • UserInterface/Base/Utilities.js:

(value):

LayoutTests:
Web Inspector: console.log print strings contains '%_' result is Object
​https://bugs.webkit.org/show_bug.cgi?id=235061

Reviewed by Devin Rousso.

  • inspector/unit-tests/string-utilities-expected.txt:
  • inspector/unit-tests/string-utilities.html:
3:18 PM Changeset in webkit [291711] by achristensen@apple.com
  • 24 edits in branches/safari-613-branch/Source

Fix build on safari-613-branch

Source/WebCore:

  • rendering/LegacyInlineFlowBox.cpp:

(WebCore::LegacyInlineFlowBox::addToLine):

  • rendering/LegacyLineLayout.cpp:

(WebCore::repaintSelfPaintInlineBoxes):

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h:
  • pal/spi/cocoa/AVFoundationSPI.h:

Source/WebKit:

Most of this is just merging most of ​https://github.com/WebKit/WebKit/commit/ecdbbe0b667c3231bbbf93ab3a5d4df29a6df985
for rdar://problem/89972004

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::createSocketChannel):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::transferToNewWebProcess):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::createWebSocketTask):

  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/NetworkSocketChannel.cpp:

(WebKit::NetworkSocketChannel::create):
(WebKit::NetworkSocketChannel::NetworkSocketChannel):

  • NetworkProcess/NetworkSocketChannel.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::createWebSocketTask):

  • NetworkProcess/soup/NetworkSessionSoup.cpp:

(WebKit::NetworkSessionSoup::createWebSocketTask):

  • NetworkProcess/soup/NetworkSessionSoup.h:
  • Shared/Cocoa/AuxiliaryProcessCocoa.mm:

(WebKit::handleAXPreferenceChange):

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::connect):

Source/WebKitLegacy/mac:

  • Plugins/WebBasePluginPackage.mm:

(-[WebBasePluginPackage isNativeLibraryData:]):

3:18 PM Changeset in webkit [291710] by Matteo Flores
  • 2 edits in trunk/LayoutTests

REGRESSION(r291523-r291501): [ iOS ] fast/dom/intersection-observer-document-leak.html is a flaky text failure
​https://bugs.webkit.org/show_bug.cgi?id=238227

Unreviewed test gardening.

  • platform/ios/TestExpectations:
3:04 PM Changeset in webkit [291709] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[iOS] editing/spelling/editing-word-with-marker-1.html causes the subsequent test to time out
​https://bugs.webkit.org/show_bug.cgi?id=237812

Unreviewed test gardening.

  • platform/ios/TestExpectations:
2:52 PM Changeset in webkit [291708] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.16

Tag Safari-614.1.5.16.

2:51 PM Changeset in webkit [291707] by Russell Epstein
  • 6 edits in branches/safari-614.1.5-branch/Source

Revert r291458. rdar://problem/90655518

2:50 PM Changeset in webkit [291706] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[ iOS ] fast/text/text-shadow-ink-overflow-missing.html is a flaky image failure
​https://bugs.webkit.org/show_bug.cgi?id=238211

Unreviewed test gardening.

  • platform/ios/TestExpectations:
2:47 PM Changeset in webkit [291705] by Matteo Flores
  • 2 edits in trunk/LayoutTests

Unreviewed, reverting r291679.

Expectation should be ImageOnlyFailure

Reverted changeset:

"[ iOS EWS ] fast/text/text-shadow-ink-overflow-missing.html
is a flaky image failure"
​https://bugs.webkit.org/show_bug.cgi?id=238211
​https://commits.webkit.org/r291679

2:27 PM Changeset in webkit [291704] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ Debug wk2 ] ASSERTION FAILED: willBeComposited == needsToBeComposited(layer, queryData) (223750)
​https://bugs.webkit.org/show_bug.cgi?id=223750

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations: Removing no longer needed test expectation.
2:16 PM Changeset in webkit [291703] by Robert Jenner
  • 2 edits
    5 adds in trunk/LayoutTests

[ BigSur+ ] imported/w3c/web-platform-t ests/media-source/mediasour ce-addsourcebuffer.html (layout-test) is consistently failing (221230)
​https://bugs.webkit.org/show_bug.cgi?id=221230

Unreviewed test gardening. Rebaseline for test.

  • platform/mac-bigsur-wk1/imported/w3c/web-platform-tests/media-source/mediasource-addsourcebuffer-expected.txt: Added.
  • platform/mac-wk1/imported/w3c/web-platform-tests/media-source/mediasource-addsourcebuffer-expected.txt: Added.
  • platform/mac-wk2/imported/w3c/web-platform-tests/media-source/mediasource-addsourcebuffer-expected.txt: Added.
  • platform/mac/TestExpectations: Removing old expectations.
2:15 PM Changeset in webkit [291702] by Cameron McCormack
  • 3 edits in trunk/LayoutTests

Disable remaining HEIC tests
​https://bugs.webkit.org/show_bug.cgi?id=238191
<rdar://88980849>

Reviewed by Simon Fraser.

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
2:11 PM Changeset in webkit [291701] by mmaxfield@apple.com
  • 7 edits in trunk/Source/WebGPU

[WebGPU] Allocating a buffer of size 0 crashes
​https://bugs.webkit.org/show_bug.cgi?id=238165

Reviewed by Kimmo Kinnunen.

Metal requires buffer sizes to be > 0, but WebGPU allows for = 0.
This patch simply clamps all buffer sizes to 1. In the future, if this
causes performance problems, we could consider some more invasive change
where the MTLBuffer member of a WebGPU::Buffer is nil. But, for now,
just clamping the size to 1 is enough to get the test to stop crashing.

Test: api/validation/buffer/mapping.spec.ts. (We can't actually enable the test
until WebCore links with WebGPU.)

  • WebGPU/BindGroup.mm:

(WebGPU::Device::createBindGroup):

  • WebGPU/Buffer.mm:

(WebGPU::Device::safeCreateBuffer const):
(WebGPU::Device::createBuffer):

  • WebGPU/ComputePipeline.mm:
  • WebGPU/Device.h:
  • WebGPU/Instance.mm:

(wgpuGetProcAddress):

  • WebGPU/ShaderModule.mm:

(WebGPU::ShaderModule::createLibrary):

2:09 PM Changeset in webkit [291700] by Russell Epstein
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.16

2:09 PM Changeset in webkit [291699] by Fujii Hironori
  • 6 edits in trunk/Source

[WinCairo] RemoteGraphicsContextGL.h(78): error C2027: use of undefined type 'WebCore::GraphicsContextGL'
​https://bugs.webkit.org/show_bug.cgi?id=238223

Unreviewed build fix.
r291610 renamed GraphicsContextGLTextureMapper to GraphicsContextGLTextureMapperANGLE.

Source/WebCore:

  • platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:

(WebCore::TextureMapperGCGLPlatformLayer::TextureMapperGCGLPlatformLayer):

  • platform/graphics/texmap/TextureMapperGCGLPlatformLayer.h:

Source/WebKit:

  • GPUProcess/graphics/RemoteGraphicsContextGL.h:
  • GPUProcess/graphics/RemoteGraphicsContextGLWin.cpp:

(WebKit::RemoteGraphicsContextGLWin::platformWorkQueueInitialize):

1:45 PM Changeset in webkit [291698] by Matteo Flores
  • 2 edits in trunk/LayoutTests

REGRESSION(r289402-r289376): [ Debug iOS ] webgl/1.0.3/conformance/uniforms/uniform-samplers-test.html is a constant timeout
​https://bugs.webkit.org/show_bug.cgi?id=237694

Unreviewed test gardening.

  • platform/ios/TestExpectations:
1:38 PM Changeset in webkit [291697] by Robert Jenner
  • 1 edit
    4 adds in trunk/LayoutTests

imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html fails (221819)
​https://bugs.webkit.org/show_bug.cgi?id=221819

Unreviewed test gardening. Re-baseline for wk1.

  • platform/mac-wk1/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest-expected.txt: Added.
1:37 PM Changeset in webkit [291696] by Said Abou-Hallawa
  • 19 edits in trunk/Source

[GPU Process] Make GraphicsContextState a class
​https://bugs.webkit.org/show_bug.cgi?id=238192

Reviewed by Simon Fraser.

Source/WebCore:

This will make the members be private so we have to provide getters for
all of them. This change will prevent changing the members without going
through the setters.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::GraphicsContext):

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::GraphicsContext):
(WebCore::GraphicsContext::fillBrush const):
(WebCore::GraphicsContext::fillColor const):
(WebCore::GraphicsContext::fillGradient const):
(WebCore::GraphicsContext::fillGradientSpaceTransform const):
(WebCore::GraphicsContext::fillPattern const):
(WebCore::GraphicsContext::fillRule const):
(WebCore::GraphicsContext::strokeBrush const):
(WebCore::GraphicsContext::strokeColor const):
(WebCore::GraphicsContext::strokeGradient const):
(WebCore::GraphicsContext::strokeGradientSpaceTransform const):
(WebCore::GraphicsContext::strokePattern const):
(WebCore::GraphicsContext::strokeThickness const):
(WebCore::GraphicsContext::strokeStyle const):
(WebCore::GraphicsContext::dropShadow const):
(WebCore::GraphicsContext::compositeMode const):
(WebCore::GraphicsContext::alpha const):
(WebCore::GraphicsContext::textDrawingMode const):
(WebCore::GraphicsContext::imageInterpolationQuality const):
(WebCore::GraphicsContext::shouldAntialias const):
(WebCore::GraphicsContext::shouldSmoothFonts const):
(WebCore::GraphicsContext::shouldSubpixelQuantizeFonts const):
(WebCore::GraphicsContext::shadowsIgnoreTransforms const):
(WebCore::GraphicsContext::drawLuminanceMask const):
(WebCore::GraphicsContext::useDarkAppearance const):

  • platform/graphics/GraphicsContextState.cpp:

(WebCore::GraphicsContextState::GraphicsContextState):
(WebCore::GraphicsContextState::containsOnlyInlineChanges const):
(WebCore::GraphicsContextState::mergeChanges):
(WebCore::GraphicsContextState::didBeginTransparencyLayer):
(WebCore::GraphicsContextState::didEndTransparencyLayer):
(WebCore::GraphicsContextState::dump const):

  • platform/graphics/GraphicsContextState.h:

(WebCore::GraphicsContextState::GraphicsContextState):
(WebCore::GraphicsContextState::changes const):
(WebCore::GraphicsContextState::didApplyChanges):
(WebCore::GraphicsContextState::fillBrush const):
(WebCore::GraphicsContextState::setFillBrush):
(WebCore::GraphicsContextState::setFillColor):
(WebCore::GraphicsContextState::setFillGradient):
(WebCore::GraphicsContextState::setFillPattern):
(WebCore::GraphicsContextState::fillRule const):
(WebCore::GraphicsContextState::setFillRule):
(WebCore::GraphicsContextState::strokeBrush const):
(WebCore::GraphicsContextState::setStrokeBrush):
(WebCore::GraphicsContextState::setStrokeColor):
(WebCore::GraphicsContextState::setStrokeGradient):
(WebCore::GraphicsContextState::setStrokePattern):
(WebCore::GraphicsContextState::strokeThickness const):
(WebCore::GraphicsContextState::setStrokeThickness):
(WebCore::GraphicsContextState::strokeStyle const):
(WebCore::GraphicsContextState::setStrokeStyle):
(WebCore::GraphicsContextState::compositeMode const):
(WebCore::GraphicsContextState::setCompositeMode):
(WebCore::GraphicsContextState::dropShadow const):
(WebCore::GraphicsContextState::setDropShadow):
(WebCore::GraphicsContextState::alpha const):
(WebCore::GraphicsContextState::setAlpha):
(WebCore::GraphicsContextState::imageInterpolationQuality const):
(WebCore::GraphicsContextState::setImageInterpolationQuality):
(WebCore::GraphicsContextState::textDrawingMode const):
(WebCore::GraphicsContextState::setTextDrawingMode):
(WebCore::GraphicsContextState::shouldAntialias const):
(WebCore::GraphicsContextState::setShouldAntialias):
(WebCore::GraphicsContextState::shouldSmoothFonts const):
(WebCore::GraphicsContextState::setShouldSmoothFonts):
(WebCore::GraphicsContextState::shouldSubpixelQuantizeFonts const):
(WebCore::GraphicsContextState::setShouldSubpixelQuantizeFonts):
(WebCore::GraphicsContextState::shadowsIgnoreTransforms const):
(WebCore::GraphicsContextState::setShadowsIgnoreTransforms):
(WebCore::GraphicsContextState::drawLuminanceMask const):
(WebCore::GraphicsContextState::setDrawLuminanceMask):
(WebCore::GraphicsContextState::useDarkAppearance const):
(WebCore::GraphicsContextState::setUseDarkAppearance):
(WebCore::GraphicsContextState::setProperty):
(WebCore::GraphicsContextState::encode const):
(WebCore::GraphicsContextState::decode):

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::FillSource::FillSource):
(WebCore::Cairo::StrokeSource::StrokeSource):
(WebCore::Cairo::ShadowState::ShadowState):

  • platform/graphics/cairo/FontCairo.cpp:

(WebCore::FontCascade::drawGlyphs):

  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContextCairo::drawNativeImage):
(WebCore::GraphicsContextCairo::didUpdateState):
(WebCore::GraphicsContextCairo::drawGlyphs):

  • platform/graphics/cairo/ImageBufferCairoBackend.cpp:

(WebCore::ImageBufferCairoBackend::draw):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::coreInterpolationQuality):
(WebCore::GraphicsContextCG::GraphicsContextCG):
(WebCore::GraphicsContextCG::didUpdateState):
(WebCore::GraphicsContextCG::strokeRect):
(WebCore::GraphicsContextCG::canUseShadowBlur const):

  • platform/graphics/coretext/DrawGlyphsRecorderCoreText.cpp:

(WebCore::DrawGlyphsRecorder::populateInternalState):
(WebCore::DrawGlyphsRecorder::populateInternalContext):

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::shouldDumpForFlags):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::endTransparencyLayer):

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::applySetStateItem):

  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:

(Nicosia::CairoOperationRecorder::didUpdateState):
(Nicosia::CairoOperationRecorder::fillRect):
(Nicosia::CairoOperationRecorder::fillRoundedRect):
(Nicosia::CairoOperationRecorder::drawGlyphs):
(Nicosia::CairoOperationRecorder::drawNativeImage):
(Nicosia::CairoOperationRecorder::drawRect):
(Nicosia::CairoOperationRecorder::drawLine):
(Nicosia::CairoOperationRecorder::drawLinesForText):
(Nicosia::CairoOperationRecorder::drawEllipse):

Source/WebKit:

  • GPUProcess/graphics/RemoteDisplayListRecorder.cpp:

(WebKit::RemoteDisplayListRecorder::setState):

  • Shared/cairo/ShareableBitmapCairo.cpp:

(WebKit::ShareableBitmap::paint):

  • WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:

(WebKit::convertCairoSurfaceToShareableBitmap):

1:33 PM Changeset in webkit [291695] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[ iOS GPUP arm64 ] 5 webaudio/* are constant text failures since being unskipped.
​https://bugs.webkit.org/show_bug.cgi?id=238220

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
1:24 PM Changeset in webkit [291694] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebCore

REGRESSION(r288307): instanceof value wrong in MutationObserver callback for Safari extensions
​https://bugs.webkit.org/show_bug.cgi?id=237912
<rdar://90333276>

Patch by Alexey Shvayka <​ashvayka@apple.com> on 2022-03-22
Reviewed by Saam Barati.

ScriptExecutionContext::globalObject() returns stray global object if called on an object
that was created inside a Safari extension. I am unsure whether this is a bug, and if so,
how to promptly fix it, so this patch changes the way callback functions / interfaces
resolve lexical global object, which is used to create DOM wrappers.

Now they rely only on their JSCallbackData, which was proven to return correct
global object for Safari extensions.

For [IsWeakCallback] interfaces, liveness of the callback object is guaranteed
by the canInvokeCallback() check above.

No new tests: Safari extensions are covered in internal repo.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateCallbackImplementationContent):

  • bindings/scripts/test/JS/*: Updated.
1:17 PM Changeset in webkit [291693] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ macOS Debug ] inspector/console/queryInstances.html is a flaky failure (215814)
​https://bugs.webkit.org/show_bug.cgi?id=215814

Unreviewed test gardening.

  • platform/mac/TestExpectations: Removing no longer needed test expectation.
1:11 PM Changeset in webkit [291692] by Robert Jenner
  • 2 edits in trunk/LayoutTests

inspector/canvas/setRecordingAutoCaptureFrameCount.html is flaky failing (228011)
​https://bugs.webkit.org/show_bug.cgi?id=228011

Unreviewed test gardening.

  • platform/mac/TestExpectations: Removing no longer needed test expectation.
1:03 PM Changeset in webkit [291691] by timothy_horton@apple.com
  • 6 edits in trunk/Source/WebKit

Prefer WK_EXTERN to WK_EXPORT in Cocoa API headers
​https://bugs.webkit.org/show_bug.cgi?id=238129

Reviewed by Wenson Hsieh.

  • UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h:
  • UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
  • UIProcess/API/Cocoa/_WKElementAction.h:
  • UIProcess/API/Cocoa/_WKErrorRecoveryAttempting.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:

WK_EXPORT comes from WKDeclarationSpecifiers.h, which is a legacy C SPI header.
WK_EXTERN comes from WKFoundation.h, part of the modern public API.
We should prefer the modern version in Cocoa-only headers (even in private headers).

12:54 PM Changeset in webkit [291690] by commit-queue@webkit.org
  • 9 edits
    2 deletes in trunk

Unreviewed, reverting r291546.
​https://bugs.webkit.org/show_bug.cgi?id=238218

7% regression in Speedometer2/jQuery-TodoMVC

Reverted changeset:

"Fix CSS cascade regarding logical properties"
​https://bugs.webkit.org/show_bug.cgi?id=236199
​https://commits.webkit.org/r291546

12:51 PM Changeset in webkit [291689] by Chris Dumez
  • 6 edits
    2 adds in trunk

REGRESSION (iOS 15.1 / r280824) QuickLook - model not loading when passing extra parameters
​https://bugs.webkit.org/show_bug.cgi?id=236069
<rdar://problem/88461772>

Reviewed by Darin Adler.

Source/WebCore:

To extend the lifetime of Blob objects while loading/downloading is pending, we rely to
BlobURLHandle objects, which tell the NetworkProcess that we still need this blob data,
even if the corresponding Blob object gets GC'd by JS. The issue here is that the load
was not using the vanilla blob URL but was intead appending a fragment to the URL. As
a result, BlobRegistryImpl::registerBlobURLHandle() would fail to look up the
corresponding blob data and would fail to extend its lifetime.

To address the issue, BlobRegistryImpl::registerBlobURLHandle() / unregisterBlobURLHandle()
now strip fragments from the blob URL, similarly to what was already done inside
BlobRegistryImpl::getBlobDataFromURL().

Test: fast/files/blob-with-fragment-as-frame-url.html

  • platform/network/BlobRegistryImpl.cpp:

(WebCore::blobURLWithoutFragment):
(WebCore::BlobRegistryImpl::registerBlobURLHandle):
(WebCore::BlobRegistryImpl::unregisterBlobURLHandle):

Source/WebKit:

Fix theoretical blob data leak. A WebContent process could create several BlobURLHandles for
the same blob URL. This would result in several calls to NetworkConnectionToWebProcess::registerBlobURLHandle()
for the same URL and several calls to to BlobRegistryImpl::registerBlobURLHandle() for the
same URL as well. BlobRegistryImpl is using a HashCountedSet for m_blobReferences in order
to deal with this fact. However, NetworkConnectionToWebProcess was using a simple HashSet
for m_blobURLHandles. As a result, if the WebContent process would exit and didClose()
would get called, the NetworkConnectionToWebProcess may call BlobRegistryImpl::unregisterBlobURLHandle()
only once even though the WebContent process had several handles for this URL, which would
not fully remove the URL from BlobRegistryImpl's HashCountedSet. To address the issue,
NetworkConnectionToWebProcess::m_blobURLHandles is now a HashCountedSet too and we call
BlobRegistryImpl::unregisterBlobURLHandle() as many times as needed in didClose().

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didClose):

  • NetworkProcess/NetworkConnectionToWebProcess.h:

LayoutTests:

Add layout test coverage.

  • fast/files/blob-with-fragment-as-frame-url-expected.txt: Added.
  • fast/files/blob-with-fragment-as-frame-url.html: Added.
12:45 PM Changeset in webkit [291688] by mmaxfield@apple.com
  • 5 edits in trunk/Source/WebGPU

[WebGPU] Implement Queue::writeBuffer()
​https://bugs.webkit.org/show_bug.cgi?id=238194

Reviewed by Kimmo Kinnunen.

The semantics of writeBuffer() are that the data should be written, but specifically
at the current point in the queue. So, we can't just naively memcpy(), for 2 reasons:

  1. If the buffer is in-use, memcpy() will clobber its current contents, leading to

corruption. Instead, it's supposed to populate the buffer at the current point
in the queue, as-if it was a queue item.

  1. If the buffer is a private buffer, we can't memcpy() to it anyway

So, the implementation of this function first tries to see if we can memcpy(): if the
buffer is shared or managed, and if the queue is idle. If it can, then it does so, but
if it can't, it creates a temporary buffer and enqueues a queue command to copy the
contents of the temporary buffer into the destination buffer.

That copy command is part of a lazily created command buffer.

Test: api/validation/queue/writeBuffer.spec.ts

  • WebGPU/Buffer.h:

(WebGPU::Buffer::state const):

  • WebGPU/Device.h:

(WebGPU::Device::device const):

  • WebGPU/Queue.h:

(WebGPU::Queue::isIdle const):

  • WebGPU/Queue.mm:

(WebGPU::Queue::~Queue):
(WebGPU::Queue::ensureBlitCommandEncoder):
(WebGPU::Queue::finalizeBlitCommandEncoder):
(WebGPU::Queue::onSubmittedWorkDone):
(WebGPU::Queue::commitMTLCommandBuffer):
(WebGPU::Queue::submit):
(WebGPU::validateWriteBufferInitial):
(WebGPU::Queue::validateWriteBuffer const):
(WebGPU::Queue::writeBuffer):

12:04 PM Changeset in webkit [291687] by mmaxfield@apple.com
  • 48 edits in trunk/Source/WebGPU

[WebGPU] Remove the double pointer indirection in front of all objects
​https://bugs.webkit.org/show_bug.cgi?id=238001

Reviewed by Kimmo Kinnunen.

Instead of doing

class Buffer {

...

};
struct WGPUBufferImpl {

Ref<Buffer> buffer;

}

we can instead do

struct WGPUBufferImpl {
};
struct Buffer : public WGPUBufferImpl {

...

};

so we don't have to do pointer chasing to interact with objects.

  • WebGPU/APIConversions.h:

(WebGPU::fromAPI):
(WebGPU::releaseToAPI):

  • WebGPU/Adapter.h:
  • WebGPU/Adapter.mm:

(wgpuAdapterRelease):
(wgpuAdapterRequestDevice):
(wgpuAdapterRequestDeviceWithBlock):

  • WebGPU/BindGroup.h:
  • WebGPU/BindGroup.mm:

(wgpuBindGroupRelease):

  • WebGPU/BindGroupLayout.h:
  • WebGPU/BindGroupLayout.mm:

(wgpuBindGroupLayoutRelease):

  • WebGPU/Buffer.h:
  • WebGPU/Buffer.mm:

(wgpuBufferRelease):

  • WebGPU/CommandBuffer.h:
  • WebGPU/CommandBuffer.mm:

(wgpuCommandBufferRelease):

  • WebGPU/CommandEncoder.h:
  • WebGPU/CommandEncoder.mm:

(wgpuCommandEncoderRelease):
(wgpuCommandEncoderBeginComputePass):
(wgpuCommandEncoderBeginRenderPass):
(wgpuCommandEncoderFinish):

  • WebGPU/ComputePassEncoder.h:
  • WebGPU/ComputePassEncoder.mm:

(wgpuComputePassEncoderRelease):

  • WebGPU/ComputePipeline.h:
  • WebGPU/ComputePipeline.mm:

(WebGPU::ComputePipeline::getBindGroupLayout):
(wgpuComputePipelineRelease):
(wgpuComputePipelineGetBindGroupLayout):

  • WebGPU/Device.h:
  • WebGPU/Device.mm:

(wgpuDeviceRelease):
(wgpuDeviceCreateBindGroup):
(wgpuDeviceCreateBindGroupLayout):
(wgpuDeviceCreateBuffer):
(wgpuDeviceCreateCommandEncoder):
(wgpuDeviceCreateComputePipeline):
(wgpuDeviceCreateComputePipelineAsync):
(wgpuDeviceCreateComputePipelineAsyncWithBlock):
(wgpuDeviceCreatePipelineLayout):
(wgpuDeviceCreateQuerySet):
(wgpuDeviceCreateRenderBundleEncoder):
(wgpuDeviceCreateRenderPipeline):
(wgpuDeviceCreateRenderPipelineAsync):
(wgpuDeviceCreateRenderPipelineAsyncWithBlock):
(wgpuDeviceCreateSampler):
(wgpuDeviceCreateShaderModule):
(wgpuDeviceCreateSwapChain):
(wgpuDeviceCreateTexture):
(wgpuDeviceGetQueue):

  • WebGPU/Instance.h:
  • WebGPU/Instance.mm:

(wgpuInstanceRelease):
(wgpuCreateInstance):
(wgpuInstanceCreateSurface):
(wgpuInstanceRequestAdapter):
(wgpuInstanceRequestAdapterWithBlock):

  • WebGPU/PipelineLayout.h:
  • WebGPU/PipelineLayout.mm:

(wgpuPipelineLayoutRelease):

  • WebGPU/QuerySet.h:
  • WebGPU/QuerySet.mm:

(wgpuQuerySetRelease):

  • WebGPU/Queue.h:
  • WebGPU/Queue.mm:

(wgpuQueueRelease):

  • WebGPU/RenderBundle.h:
  • WebGPU/RenderBundle.mm:

(wgpuRenderBundleRelease):

  • WebGPU/RenderBundleEncoder.h:
  • WebGPU/RenderBundleEncoder.mm:

(wgpuRenderBundleEncoderRelease):
(wgpuRenderBundleEncoderFinish):

  • WebGPU/RenderPassEncoder.h:
  • WebGPU/RenderPassEncoder.mm:

(wgpuRenderPassEncoderRelease):

  • WebGPU/RenderPipeline.h:
  • WebGPU/RenderPipeline.mm:

(WebGPU::RenderPipeline::getBindGroupLayout):
(wgpuRenderPipelineRelease):
(wgpuRenderPipelineGetBindGroupLayout):

  • WebGPU/Sampler.h:
  • WebGPU/Sampler.mm:

(wgpuSamplerRelease):

  • WebGPU/ShaderModule.h:
  • WebGPU/ShaderModule.mm:

(WebGPU::earlyCompileShaderModule):
(wgpuShaderModuleRelease):

  • WebGPU/Surface.h:
  • WebGPU/Surface.mm:

(wgpuSurfaceRelease):

  • WebGPU/SwapChain.h:
  • WebGPU/SwapChain.mm:

(WebGPU::SwapChain::getCurrentTextureView):
(wgpuSwapChainRelease):
(wgpuSwapChainGetCurrentTextureView):

  • WebGPU/Texture.h:
  • WebGPU/Texture.mm:

(wgpuTextureRelease):
(wgpuTextureCreateView):

  • WebGPU/TextureView.h:
  • WebGPU/TextureView.mm:

(wgpuTextureViewRelease):

11:58 AM Changeset in webkit [291686] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebGPU

[WebGPU] Implement GPUBufferDescriptor.mappedAtCreation
​https://bugs.webkit.org/show_bug.cgi?id=238190

Reviewed by Kimmo Kinnunen.

On Macs, we can use MTLStorageModeManaged to implement mappedAtCreation.
On non-Macs, all resources are shared, so they're already mapped.
This patch turned out to be surprisingly easy to write, because Metal has
already implemented all the heavy lifting.

Test: api/validation/buffer/mapping.spec.ts

  • WebGPU/Buffer.mm:

(WebGPU::storageMode):
(WebGPU::Device::createBuffer):
(WebGPU::Buffer::getMappedRange):
(WebGPU::Buffer::unmap):

11:54 AM Changeset in webkit [291685] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebGPU

[WebGPU] Lifetime of CommandEncoder's internal MTLBlitCommandEncoder is not managed correctly
​https://bugs.webkit.org/show_bug.cgi?id=238167

Reviewed by Kimmo Kinnunen.

We lazily create a MTLBlitCommandEncoder inside CommandEncoder to service a few various calls
which require one. Metal has some state tracking inside it, such that when objects are destroyed,
they have to be in the right state. This patch aligns WebGPU's state tracking and Metal's state
tracking.

Test: api/validation/encoding/programmable/pipeline_bind_group_compat.spec.ts

  • WebGPU/CommandEncoder.mm:

(WebGPU::CommandEncoder::~CommandEncoder):
(WebGPU::CommandEncoder::finalizeBlitCommandEncoder):

11:49 AM Changeset in webkit [291684] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

LibWebRTCCodecsProxy.mm and SharedVideoFrame.cpp do not need to be built as part of WebContent executable
​https://bugs.webkit.org/show_bug.cgi?id=238002

Reviewed by Eric Carlson.

  • WebKit.xcodeproj/project.pbxproj:
11:37 AM Changeset in webkit [291683] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-614.1.7-branch

Cherry-pick r291629. rdar://problem/89495774

YouTube.com - Clicking anywhere on the progress bar pauses the video
​https://bugs.webkit.org/show_bug.cgi?id=237750
<rdar://problem/90364846>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-unexpected-pause.html

When calling play() or pause() on a MediaPlayerPrivateMediaSourceAVFObjC, the object will
respond by calling m_player->playbackStateChanged(), which will in turn call
HTMLMediaElement::mediaPlayerPlaybackStateChanged() with the new state. However, HTMLMediaElement
expects this to be called only for unanticipated state changes, not expected state changes. And
when that method is called and the reported state does not match the element's own expected state,
the element calls its own play() or pause() function to update its own state to match the player's.
And because MediaPlayerPrivateMediaSourceAVFObjC calls this method on the next run loop, there is
an opportunity for those states to get out of sync, which happens when YouTube responds to a tap
in its timeline.

Remove the unnecessary "call on next run loop" behavior of …
play() and ::pause(). Also, remove the unnecessary notification that the play state has changed. In the future, this can be accomplished by adding a callback parameter to MediaPlayer::play() rather than relying on a state change notification.
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::play): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playInternal): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pause): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pauseInternal): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playAtHostTime): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pauseAtHostTime):

LayoutTests:

  • media/media-source/media-source-unexpected-pause-expected.txt: Added.
  • media/media-source/media-source-unexpected-pause.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291629 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:37 AM Changeset in webkit [291682] by Russell Epstein
  • 6 edits in branches/safari-614.1.7-branch

Cherry-pick r291606. rdar://problem/89616625

Website policies are not respected when doing COOP based process swap
​https://bugs.webkit.org/show_bug.cgi?id=238036
<rdar://89616625>

Reviewed by Chris Dumez.

Source/WebKit:

In case of normal process swap, we make use of website policies so everything is fine.
For COOP based process swap, this happens later on, at a point where we lost website policies.
To overcome this, we store the website policies used by a navigation inside the API::Navigation object.
It is used by continueNavigationInNewProcess to correctly initialize the new WebPage website policies.
We then set the website policies in the navigation object just before continuing the load in the same process,
as process swap may happen later when inspecting the response.
Minor refactoring in continueNavigationInNewProcess to get the policies directly from the given Navigation object.
Minor refactoring in receivedNavigationPolicyDecision to make the code doing process swap clearer.

Covered by API test.

  • UIProcess/API/APINavigation.h: (API::Navigation::setWebsitePoliciesForProcessSwap): (API::Navigation::takeWebsitePoliciesForProcessSwap):
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::receivedNavigationPolicyDecision): (WebKit::WebPageProxy::receivedPolicyDecision): (WebKit::WebPageProxy::continueNavigationInNewProcess): (WebKit::WebPageProxy::triggerBrowsingContextGroupSwitchForNavigation):
  • UIProcess/WebPageProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291606 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:27 AM Changeset in webkit [291681] by Alan Coon
  • 3 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r291598. rdar://problem/89972004

Adjust when _setPrivacyProxyFailClosedForUnreachableNonMainHosts is called
​https://bugs.webkit.org/show_bug.cgi?id=237735

Reviewed by Geoff Garen.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): (WebKit::NetworkSessionCocoa::createWebSocketTask):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291598 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:27 AM Changeset in webkit [291680] by Alan Coon
  • 19 edits in branches/safari-613-branch/Source

Cherry-pick r289134. rdar://problem/89972004

Remember whether cached main resources used private relay when considering whether to call _setPrivacyProxyFailClosed
​https://bugs.webkit.org/show_bug.cgi?id=236125

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-02-04
Reviewed by Geoffrey Garen.

Source/WebCore:

Use an unused bit on disk to remember whether the response was originally received over private relay.
Also, instead of remembering on the main frame's DocumentLoader, remember on the WebProcess.
This makes it so if you enter the same URL twice, which loads from the MemoryCache from different WebCore::Pages, it still remembers.
If you load a different domain, it will load in a different WebProcess anyways, at which point you will not be using the same MemoryCache.

  • loader/DocumentLoader.h: (WebCore::DocumentLoader::setMainResourceWasPrivateRelayed): Deleted. (WebCore::DocumentLoader::mainResourceWasPrivateRelayed const): Deleted.

Source/WebKit:

  • NetworkProcess/NetworkLoadParameters.h:
  • NetworkProcess/NetworkResourceLoadParameters.cpp: (WebKit::NetworkResourceLoadParameters::encode const): (WebKit::NetworkResourceLoadParameters::decode):
  • NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::retrieveCacheEntry): (WebKit::NetworkResourceLoader::didReceiveResponse): (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry): (WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::makeEntry): (WebKit::NetworkCache::Cache::store): (WebKit::NetworkCache::Cache::update):
  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheEntry.cpp: (WebKit::NetworkCache::Entry::Entry): (WebKit::NetworkCache::Entry::encodeAsStorageRecord const): (WebKit::NetworkCache::Entry::decodeStorageRecord):
  • NetworkProcess/cache/NetworkCacheEntry.h: (WebKit::NetworkCache::Entry::privateRelayed const):
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::didReceiveResponse): (WebKit::NetworkCache::SpeculativeLoad::didFinishLoading):
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
  • NetworkProcess/cache/PrefetchCache.cpp: (WebKit::PrefetchCache::Entry::Entry): (WebKit::PrefetchCache::store):
  • NetworkProcess/cache/PrefetchCache.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
  • WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::addParametersShared):
  • WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::didReceiveResponse):
  • WebProcess/WebProcess.h: (WebKit::WebProcess::setHadMainFrameMainResourcePrivateRelayed): (WebKit::WebProcess::hadMainFrameMainResourcePrivateRelayed const):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289134 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:27 AM Changeset in webkit [291679] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[ iOS EWS ] fast/text/text-shadow-ink-overflow-missing.html is a flaky image failure
​https://bugs.webkit.org/show_bug.cgi?id=238211

Unreviewed test gardening.

  • platform/ios/TestExpectations:
11:27 AM Changeset in webkit [291678] by Alan Coon
  • 40 edits
    1 add in branches/safari-613-branch/Source

Cherry-pick r289018. rdar://problem/89972004

This reverts r289843.

11:17 AM Changeset in webkit [291677] by pvollan@apple.com
  • 2 edits in trunk

REGRESSION(r291587): Unintentionally removed contributors change
​https://bugs.webkit.org/show_bug.cgi?id=238204

Unreviewed, partial revert of r291587.

  • metadata/contributors.json:
10:57 AM Changeset in webkit [291676] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r291573. rdar://problem/89964344

[watchOS] Add required syscall
​https://bugs.webkit.org/show_bug.cgi?id=238117
<rdar://89964344>

Reviewed by Brent Fulgham.

Add rarely used syscall on watchOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291573 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:57 AM Changeset in webkit [291675] by Alan Coon
  • 3 edits in branches/safari-613-branch

Cherry-pick r291527. rdar://problem/88857731

Dialog element only animates once
​https://bugs.webkit.org/show_bug.cgi?id=236274
rdar://88857731

Reviewed by Dean Jackson, Tim Nguyen and Antti Koivisto.

LayoutTests/imported/w3c:

Import relevant WPT tests that had already been upstreamed in a previous, reverted
version of this patch.

  • web-platform-tests/css/css-animations/dialog-animation-expected.txt: Added.
  • web-platform-tests/css/css-animations/dialog-animation.html: Added.
  • web-platform-tests/css/css-animations/dialog-backdrop-animation-expected.txt: Added.
  • web-platform-tests/css/css-animations/dialog-backdrop-animation.html: Added.
  • web-platform-tests/css/css-animations/support/testcommon.js: (addElement): (addDiv):

Source/WebCore:

Two issues related to CSS Animation surfaced in this bug which animates both <dialog>
and its ::backdrop as the dialog is open and eventually re-opened.

The first issue was that we didn't clear all CSS Animations state when a <dialog> was
closed and its style was set to display: none. We now call setAnimationsCreatedByMarkup
to correctly clear such state both when we identify a Styleable is newly getting
display: none. We do the same when cancelDeclarativeAnimations() is called, but also
call setCSSAnimationList() on the associated effect stack since that wasn't done either.
Now both functions do similar cleanup.

This allows us to remove removeCSSAnimationCreatedByMarkup() which did a fair bit of work
to clear CSS Animation state per-animation when we only ever used that function for
_all_ animations.

The second issue was that we never called cancelDeclarativeAnimations() for ::backdrop.
We now do that inside of Element::removeFromTopLayer() at a point where the code in
Styleable::fromRenderer() will still work as the element will still be contained in
Document::topLayerElements().

Finally, we need to be sure that calling Element::setAnimationsCreatedByMarkup() with an
empty list doesn't end up creating an ElementAnimationRareData object if there was no
pre-existing object and the list of animations are empty.

Tests: imported/w3c/web-platform-tests/css/css-animations/dialog-animation.html

imported/w3c/web-platform-tests/css/css-animations/dialog-backdrop-animation.html

  • dom/Element.cpp: (WebCore::Element::removeFromTopLayer): (WebCore::Element::setAnimationsCreatedByMarkup):
  • style/Styleable.cpp: (WebCore::Styleable::cancelDeclarativeAnimations const): (WebCore::Styleable::updateCSSAnimations const): (WebCore::removeCSSAnimationCreatedByMarkup): Deleted.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291527 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:57 AM Changeset in webkit [291674] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r291522. rdar://problem/90124325

Fix the build (hopefully)

  • Shared/Cocoa/ArgumentCodersCocoa.mm:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291522 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:57 AM Changeset in webkit [291673] by Alan Coon
  • 7 edits in branches/safari-613-branch

Cherry-pick r291518. rdar://problem/90124325

[Cocoa] Teach WebKit how to serialize CGColors
​https://bugs.webkit.org/show_bug.cgi?id=238069
<rdar://problem/90124325>

Reviewed by Dean Jackson and Tim Horton.

Source/WebKit:

We have 2 ways of serializing Cocoa objects: NS type handling in ArgumentCodersCocoa.mm,
and CF type handling in ArgumentCodersCF.mm. CGColors are CF types, so this patch adds
direct support in ArgumentCodersCF to serialize them, by round-tripping them through
WebCore::Colors. However, NS containers (like font descriptor attribute dictionaries)
can contain CGColors, so this patch also teaches ArgumentCodersCocoa that there may be
CF types inside NS containers. If one is present, ArgumentCodersCocoa has to call into
ArgumentCodersCF to serialize it.

This patch doesn't add support for the reverse path, where an NS object is contained
within a CF container. I intentionally omitted implementing this because I wasn't sure
if it would be a layering violation; ArgumentCodersCococa.mm already #includes
ArgumentCodersCF.h, but ArgumentCodersCF.mm doesn't #include ArgumentCodersCocoa.h.
This path isn't actually necessary to solve my problem at hand, so someone else can
add support if necessary in the future. I also added a comment at the site where the
code would fail, describing what the problem is and a potential workaround.

This patch also adds support for our NSSecureCoding implementation for CGColors. This
is necessary because sometimes we want to serialize things like NSAttributedStrings,
which we don't have direct support for, so we use NSSecureCoding to serialize them
instead. NSAttributedStrings can contain fonts whose descriptor dictionaries contain
CGColors, so this path needs to work with CGColors too. Support is implemented using
NSKeyedArchiverDelegate and NSKeyedUnarchiverDelegate.

Test: IPCTestingAPI.CGColorInNSSecureCoding

The non-NSSecureCoding parts of this patch are tested by our regular LayoutTests
when DOM GPU Process rendering is enabled.

  • Shared/Cocoa/ArgumentCodersCocoa.mm: (-[WKSecureCodingArchivingDelegate archiver:willEncodeObject:]): (-[WKSecureCodingArchivingDelegate unarchiver:didDecodeObject:]): (-[WKSecureCodingCGColorWrapper wrappedColor]): (+[WKSecureCodingCGColorWrapper supportsSecureCoding]): (-[WKSecureCodingCGColorWrapper encodeWithCoder:]): (-[WKSecureCodingCGColorWrapper initWithCoder:]): (-[WKSecureCodingCGColorWrapper initWithCGColor:]): (IPC::typeFromObject): (IPC::decodeSecureCodingInternal): (IPC::encodeCFInternal): (IPC::decodeCFInternal): (IPC::encodeObject): (IPC::decodeObject):
  • Shared/cf/ArgumentCodersCF.cpp: (IPC::typeFromCFTypeRef): (IPC::ArgumentCoder<CFTypeRef>::encode): (IPC::ArgumentCoder<RetainPtr<CFTypeRef>>::decode): (IPC::ArgumentCoder<CGColorRef>::encode): (IPC::ArgumentCoder<RetainPtr<CGColorRef>>::decode):
  • Shared/cf/ArgumentCodersCF.h:

Tools:

  • Scripts/webkitpy/style/checkers/cpp.py:
  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291518 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:57 AM Changeset in webkit [291672] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r291451. rdar://problem/89940620

[Apple Pay] REGRESSION(r283431): HAVE_PASSKIT_PAYMENT_METHOD_BILLING_ADDRESS was removed without also removing where it was used
​https://bugs.webkit.org/show_bug.cgi?id=238056
<rdar://problem/89940620>

Reviewed by Tim Horton.

  • Modules/applepay/cocoa/PaymentMethodCocoa.mm: (WebCore::convert):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291451 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:57 AM Changeset in webkit [291671] by Alan Coon
  • 4 edits
    2 adds in branches/safari-613-branch

Cherry-pick r291330. rdar://problem/90320701

REGRESSION (r282737): text-shadow is clipped
​https://bugs.webkit.org/show_bug.cgi?id=237898
<rdar://problem/90320701>

Reviewed by Darin Adler.

Source/WebCore:

Inflate the ink overflow rect with the text shadow values (note that here, in the display builder we work with physical coordinates).

Test: fast/text/text-shadow-ink-overflow-missing.html

  • layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp: (WebCore::Layout::InlineDisplayContentBuilder::appendTextDisplayBox):
  • rendering/style/RenderStyle.h: (WebCore::RenderStyle::getTextShadowHorizontalExtent const): (WebCore::RenderStyle::getTextShadowVerticalExtent const):

LayoutTests:

  • fast/text/text-shadow-ink-overflow-missing-expected.html: Added.
  • fast/text/text-shadow-ink-overflow-missing.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291330 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:57 AM Changeset in webkit [291670] by Alan Coon
  • 13 edits in branches/safari-613-branch/Source

Cherry-pick r291326. rdar://problem/85551863

Video poster disappears prematurely on play, leaving transparent video element.
​https://bugs.webkit.org/show_bug.cgi?id=226960
<rdar://problem/79315114>

Reviewed by Jer Noble.

Source/WebCore:

If a media file has an enabled video track, don't advance readyState to
HAVE_ENOUGH_DATA until we have the first frame so we won't hide the poster image
until AVFoundation has something to render.

Tested manually.

  • html/HTMLVideoElement.cpp: (WebCore::HTMLVideoElement::mediaPlayerFirstVideoFrameAvailable): Always log.
  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: (WebCore::MediaPlayerPrivateAVFoundation::updateStates): Move the test for the first video frame above the player item status check. If a file has a video track, don't advance to HAVE_ENOUGH_DATA unless we have the first video frame.
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad): Clear m_cachedHasEnabledVideo. (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer): Remove unneeded local variable. (WebCore::MediaPlayerPrivateAVFoundationObjC::platformSetVisible): Minro cleanup. (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): Set hasVideo if AVPlayerItem.hasEnabledVideo is true, because it remains stable while AVAssetTracks sometimes disappear and reappear. (WebCore::MediaPlayerPrivateAVFoundationObjC::firstFrameAvailableDidChange): Add logging. (WebCore::MediaPlayerPrivateAVFoundationObjC::hasEnabledAudioDidChange): Ditto (WebCore::MediaPlayerPrivateAVFoundationObjC::hasEnabledVideoDidChange): New, cache AVPlayerItem.hasEnabledVideo. (WebCore::itemKVOProperties): (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]): Respond to @"hasEnabledVideo".
  • platform/graphics/avfoundation/objc/VideoLayerManagerObjC.h:

Source/WebKit:

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: (WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote): Always log. (WebKit::MediaPlayerPrivateRemote::~MediaPlayerPrivateRemote): Ditto. (WebKit::MediaPlayerPrivateRemote::prepareForPlayback): Pass the player's content rect box to createVideoLayerRemote so it can be sized correctly even before it becomes visible. (WebKit::MediaPlayerPrivateRemote::firstVideoFrameAvailable): Always log. (WebKit::MediaPlayerPrivateRemote::renderingModeChanged): Ditto.
  • WebProcess/GPU/media/VideoLayerRemote.h:
  • WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.mm: (WebKit::createVideoLayerRemote): Set the new layer's frame so its children will be positioned correctly when the are made visible.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291326 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291669] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r291324. rdar://problem/45607220

Crash under HTMLDocumentParser::didBeginYieldingParser()
​https://bugs.webkit.org/show_bug.cgi?id=237930
<rdar://45607220>

Reviewed by Geoffrey Garen.

Add null pointer check.

No new tests, unable to reproduce.

  • html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::didBeginYieldingParser): (WebCore::HTMLDocumentParser::didEndYieldingParser):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291324 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291668] by Alan Coon
  • 3 edits
    3 adds in branches/safari-613-branch

Cherry-pick r291303. rdar://problem/72432683

background-clip:text doesn't work with display:flex
​https://bugs.webkit.org/show_bug.cgi?id=169125
<rdar://problem/72432683>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex-ref.html: Added.
  • web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex.html: Added.

Source/WebCore:

Tests: imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex.html

  • rendering/RenderElement.cpp: (WebCore::RenderElement::paintAsInlineBlock):

Flexbox children paint as inline blocks. This path didn't support text clip paint phase.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291303 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291667] by Alan Coon
  • 5 edits
    4 adds in branches/safari-613-branch

Cherry-pick r291282. rdar://problem/88857731

Dialog element only animates once
​https://bugs.webkit.org/show_bug.cgi?id=236274

Reviewed by Dean Jackson, Tim Nguyen and Antti Koivisto.

LayoutTests/imported/w3c:

Import relevant WPT tests that had already been upstreamed in a previous, reverted
version of this patch.

  • web-platform-tests/css/css-animations/dialog-animation-expected.txt: Added.
  • web-platform-tests/css/css-animations/dialog-animation.html: Added.
  • web-platform-tests/css/css-animations/dialog-backdrop-animation-expected.txt: Added.
  • web-platform-tests/css/css-animations/dialog-backdrop-animation.html: Added.
  • web-platform-tests/css/css-animations/support/testcommon.js: (addElement): (addDiv):

Source/WebCore:

Two issues related to CSS Animation surfaced in this bug which animates both <dialog>
and its ::backdrop as the dialog is open and eventually re-opened.

The first issue was that we didn't clear all CSS Animations state when a <dialog> was
closed and its style was set to display: none. We now call setAnimationsCreatedByMarkup
to correctly clear such state both when we identify a Styleable is newly getting
display: none. We do the same when cancelDeclarativeAnimations() is called, but also
call setCSSAnimationList() on the associated effect stack since that wasn't done either.
Now both functions do similar cleanup.

This allows us to remove removeCSSAnimationCreatedByMarkup() which did a fair bit of work
to clear CSS Animation state per-animation when we only ever used that function for
_all_ animations.

The second issue was that we never called cancelDeclarativeAnimations() for ::backdrop.
We now do that inside of Element::removeFromTopLayer() at a point where the code in
Styleable::fromRenderer() will still work as the element will still be contained in
Document::topLayerElements().

Tests: imported/w3c/web-platform-tests/css/css-animations/dialog-animation.html

imported/w3c/web-platform-tests/css/css-animations/dialog-backdrop-animation.html

  • dom/Element.cpp: (WebCore::Element::removeFromTopLayer):
  • style/Styleable.cpp: (WebCore::Styleable::cancelDeclarativeAnimations const): (WebCore::Styleable::updateCSSAnimations const): (WebCore::removeCSSAnimationCreatedByMarkup): Deleted.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291282 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291666] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/ThirdParty/ANGLE

Cherry-pick r291218. rdar://problem/89382320

REGRESSION (iOS 15.4 beta) - WebGL yields incorrect results when using preserveDrawingBuffer on iOS 15.4 Beta
​https://bugs.webkit.org/show_bug.cgi?id=237113

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-14
Reviewed by Myles C. Maxfield.

Cherry-pick without tests conflicting tests.

Cherry-pick ANGLE commit: 74f3270214394c896154e4bf9338e7d75002de61
From: Gregg Tavares <Gregg Tavares>
Date: Thu, 3 Mar 2022 13:13:34 -0800
Subject: [PATCH] Metal: Fix for mulitsampled buffers losing their contents

Fixes tst included as well as WebGL CTS

​https://www.khronos.org/registry/webgl/sdk/tests/conformance2/renderbuffers/multisample-draws-between-blits.html

Both fail on M1 without this fix.

Also fixes WebKit bug ​https://bugs.webkit.org/show_bug.cgi?id=237113

Bug: angleproject:7073

  • src/libANGLE/renderer/metal/FrameBufferMtl.mm: (rx::FramebufferMtl::setLoadStoreActionOnRenderPassFirstStart):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291218 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291665] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/bmalloc

Cherry-pick r291199. rdar://problem/89984164

Unreviewed, ASan specific build fix
​https://bugs.webkit.org/show_bug.cgi?id=237572

  • libpas/src/libpas/pas_utils.h: (pas_zero_memory):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291199 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291664] by Alan Coon
  • 10 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r291182. rdar://problem/88226412

Delay responsiveness checks for the Network Process until it has finished initialization
​https://bugs.webkit.org/show_bug.cgi?id=237782
<rdar://88226412>

Reviewed by Geoffrey Garen.

Delay responsiveness checks for the Network Process until it has finished initialization.
Network process initialization can be slow but we have evidence that it is not truly
hung since we see network process terminations right as the network process is initiating
the WebProcess connection later on.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::initializeNetworkProcess):
  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/AuxiliaryProcessProxy.cpp: (WebKit::AuxiliaryProcessProxy::didFinishLaunching): (WebKit::AuxiliaryProcessProxy::beginResponsivenessChecks): (WebKit::AuxiliaryProcessProxy::startResponsivenessTimer):
  • UIProcess/AuxiliaryProcessProxy.h:
  • UIProcess/GPU/GPUProcessProxy.cpp: (WebKit::GPUProcessProxy::didFinishLaunching):
  • UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::sendCreationParametersToNewProcess):
  • UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp: (WebKit::WebAuthnProcessProxy::didFinishLaunching):
  • UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::didFinishLaunching):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291182 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291663] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r291175. rdar://problem/88549631

Fix WebContent jetsam that occurs when selecting text in a large e-mail
​https://bugs.webkit.org/show_bug.cgi?id=237698

Reviewed by Simon Fraser.

When selecting text in a large e-mail in MobileMail, we often jetsam. This is due to this
chain of events:

  1. If the selection extends enough to start causing the content to pan (which is easy to do when zoomed in on the mail content), then AutoscrollController ends up changing the scroll position of the FrameView to perform the pan.
  2. FrameView::requestScrollPositionUpdate tries to prepopulate tiles around the endpoint of the pan by calling TileController::prepopulateRect with visibleContentRect's size.

The problem is that MobileMail resizes their web view (and therefore FrameView) to match
the size of the content. This causes FrameView's visibleContentRect to be very large (>100k
pts high for some emails). As a result, we end up prepopulating every single tile in the
email, causing a huge spike in IOSurface memory usage that leads to a jetsam.

To fix this, we make FrameView::requestScrollPositionUpdate act more like
RenderLayerCompositor::visibleRectForLayerFlushing. In particular, on iOS, we now use
exposedContentRect instead of visibleContentRect. Since exposedContentRect is derived from
contentOffset/contentSize of the scroll view in the UIProcess, it's more correct and is much
smaller than visibleContentRect in this case.

  • page/FrameView.cpp: (WebCore::FrameView::requestScrollPositionUpdate):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291175 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291662] by Alan Coon
  • 6 edits
    3 adds in branches/safari-613-branch

Cherry-pick r291141. rdar://problem/90035071

Main document is leaking on haaretz.co.il due to lazy image loading
​https://bugs.webkit.org/show_bug.cgi?id=237660
<rdar://problem/90035071>

Reviewed by Geoffrey Garen.

Source/WebCore:

When an HTML image uses loading=lazy, ImageLoader::updateFromElement() may get
called twice. If the image is outside the viewport, the first time ImageLoader::updateFromElement()
is called, we'll request a CachedImage but we'll set m_lazyImageLoadState to LazyImageLoadState::Deferred
and not ask the CachedImage to load. Then, later on, if the HTML image approaches the viewport,
ImageLoader::loadDeferredImage() will get called. It will set m_lazyImageLoadState to LazyImageLoadState::LoadImmediately
and call updateFromElement() again. This time however, updateFromElement() will actually ask the CachedImage
to load.

The issue was that the first time ImageLoader::updateFromElement(), we would set m_lazyImageLoadState to Deferred
and not ask the CachedImage to load but still set m_hasPendingLoadEvent to true. This is problematic if the CachedImage
is not already loaded since no was was started and thus no load event is coming (and no load event may ever come if the
image never approaches the viewport). When updatedHasPendingEvent() is called, it will protect the HTMLImageElement if
m_hasPendingLoadEvent is true, to make sure the image element stays alive long enough for us to dispatch the load event.
With lazy loading, this meant that we would protect the HTMLImageElement right away and undefinitely since no load event
may ever come. This meant that when navigating away from a page with images that are lazily loaded (and not loaded yet),
we would leak the HTMLImageElements (and ImageLoaders), which in turn would keep the Document alive too.

To address the issue, we now make sure that m_hasPendingLoadEvent is no longer set to true when updateFromElement()
is called but the CachedImage is not already loaded and not loading (lazy loading case). When updateFromElement() gets
called the second time (when the lazily loaded image approaches the viewport), we make sure that the m_hasPendingLoadEvent
flag gets set to true then.

Test: fast/dom/lazy-image-loading-document-leak.html

  • loader/ImageLoader.cpp: (WebCore::ImageLoader::ImageLoader): (WebCore::ImageLoader::updateFromElement): (WebCore::ImageLoader::didUpdateCachedImage): (WebCore::ImageLoader::didStartLoading):
  • loader/ImageLoader.h:
  • loader/cache/CachedImage.cpp: (WebCore::CachedImage::load):
  • loader/cache/CachedImageClient.h: (WebCore::CachedImageClient::didStartLoading):

LayoutTests:

Add layout test coverage.

  • fast/dom/lazy-image-loading-document-leak-expected.txt: Added.
  • fast/dom/lazy-image-loading-document-leak.html: Added.
  • fast/dom/resources/lazy-image-loading-document-leak-popup.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291141 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291661] by Alan Coon
  • 4 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r291127. rdar://problem/90050632

Document is leaking on haaretz.co.il due to an async script
​https://bugs.webkit.org/show_bug.cgi?id=237672
<rdar://problem/90050632>

Reviewed by Geoffrey Garen.

I haven't been able to reproduce this in the context of a layout test, however,
I see the ​https://acdn.adnxs.com/dmp/async_usersync.html document flakily leaking
on haaretz.co.il due to an async script (sometimes the top document too).

From a memgraph, I can see that the cycle is:
HTMLDocument -> ScriptRunner -> PendingScript (via m_scriptsToExecuteSoon) -> HTMLScriptElement -> HTMLDocument (again)

To address the issue, I updated Document::commonTeardown() to clear all its ScriptRunner's pending scripts, right after
we stop all ActiveDOMObjects. At this point, we no longer want to run script and clearing any pending scripts is critical
since they hold a strong reference to the Document.

I have validated the fix on haaretz.co.il since I wasn't able to write an automated
test for this.

  • dom/Document.cpp: (WebCore::Document::commonTeardown):
  • dom/ScriptRunner.cpp: (WebCore::ScriptRunner::clearPendingScripts):
  • dom/ScriptRunner.h:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291127 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291660] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/bmalloc

Cherry-pick r291097. rdar://problem/89116983

[libpas] We should gurantee that in-flux-stash is fully baked when pointing table is set
​https://bugs.webkit.org/show_bug.cgi?id=237697
rdar://89116983

Reviewed by Mark Lam.

To support enumerating hashtable which can be in the middle of resizing, we have in-flux-stash: this
small stash is used to keep old table and size while resizing. However, Mark pointed that
pas_tiny_large_map_hashtable_for_each_entry_remote's assertion is firing, which is ensuring that table's
underlying pointer should be NULL when the size is 0. But in-flux-stash, we did not guarantee that
in-flux-stash data is consistent when it is exposed to the enumerator (when setting hashtable_being_resized).

This patch inserts pas_compiler_fence when exposing and unexposing in-flux-stash. pas_compiler_fence is
enough (pas_store_store_fence is not necessary) because pas_enumerator runs after suspending the process.
Thus, data structure's consistency between instruction boundary is enough.

  • libpas/src/libpas/pas_hashtable.h:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291097 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291659] by Alan Coon
  • 5 edits
    3 adds in branches/safari-613-branch

Cherry-pick r291030. rdar://problem/89989815

IntersectionObserver is causing massive document leaks on haaretz.co.il
​https://bugs.webkit.org/show_bug.cgi?id=237619
<rdar://problem/89989815>

Reviewed by Simon Fraser.

Source/WebCore:

On haaretz.co.il, many of the iframe documents (for Google ad frames) were leaking due to
IntersectionObserver. In particular, IntersectionObserver::isReachableFromOpaqueRoots()
was returning true because m_targetsWaitingForFirstObservation was non-empty. This indicates
that the IntersectionObserver is waiting for its first observation since that target was
added. However, the observation is not coming because we navigated away from the document.

To address the issue, I updated Document::commonTeardown() to disconnect all
IntersectionObservers (and the very similar ResizeObservers), right after stopping all
ActiveDOMObject.

Test: fast/dom/intersection-observer-document-leak.html

  • dom/Document.cpp: (WebCore::Document::commonTeardown):
  • dom/Document.h:
  • page/IntersectionObserver.cpp: (WebCore::IntersectionObserver::disconnect): No longer return early if hasObservationTargets() returns false. This is because

LayoutTests:

Add layout test coverage.

  • fast/dom/intersection-observer-document-leak-expected.txt: Added.
  • fast/dom/intersection-observer-document-leak.html: Added.
  • fast/dom/resources/intersection-observer-document-leak-popup.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291030 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291658] by Alan Coon
  • 5 edits
    2 adds in branches/safari-613-branch

Cherry-pick r291029. rdar://problem/88690874

[Cocoa] metadata cue endTime may not be updated
​https://bugs.webkit.org/show_bug.cgi?id=237630
rdar://88690874

Reviewed by Jer Noble.

Source/WebCore:

Data cues have a start time but not an explicit duration, a data cue ends when
the next data cue from the same track starts. This means we don’t know the
duration of cue #1 until cue #2 is delivered, so when cue #1 is delivered it is
given the end time of the media file’s duration and the actual end time is updated
when cue #2 arrives.

​http://webkit.org/b/229924 refactored text, audio, and video tracks to not depend
on HTMLMediaElement. Because InbandDataTextTrack could no longer access the
HTMLMediaElement to get its duration, a duration property was added to TextTrackList
that InbandDataTextTrack uses to set the duration of temporary cues.
TextTrackList.duration is set when it is created and updated when the media player
reports a duration change.

This means that if the media file’s duration is not known when the text track list
is created, and the file's duration never changes, the text track list never has a
valid duration and data cues were not added to the temporary list.

Fix this by updating TextTrackList.duration when a HTMLMediaElement reaches HAVE_METADATA.

Test: http/tests/media/hls/track-in-band-hls-metadata-cue-duration.html

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::durationChanged): Update m_textTracks.duration and post the 'durationchange' event. (WebCore::HTMLMediaElement::setReadyState): Call durationChanged. (WebCore::HTMLMediaElement::mediaPlayerDurationChanged): Ditto.
  • html/HTMLMediaElement.h:
  • html/track/InbandDataTextTrack.cpp: (WebCore::InbandDataTextTrack::addDataCue): Add cues to the incomplete cue map even if the track list doesn't have duration.

LayoutTests:

  • http/tests/media/hls/track-in-band-hls-metadata-cue-duration-expected.txt: Added.
  • http/tests/media/hls/track-in-band-hls-metadata-cue-duration.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291029 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291657] by Alan Coon
  • 3 edits
    2 adds in branches/safari-613-branch

Cherry-pick r291009. rdar://problem/89952347

AX: Speech Synthesis no longer returning list of voices in macOS 12.3
​https://bugs.webkit.org/show_bug.cgi?id=237584
<rdar://problem/89952347>

Reviewed by Andres Gonzalez.

Source/WTF:

The minimum macOS version was meant to be 13 and above, but we started including 12.x releases inadvertently.

  • wtf/PlatformHave.h:

LayoutTests:

  • fast/speechsynthesis/voices-non-mock-expected.txt: Added.
  • fast/speechsynthesis/voices-non-mock.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291009 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:56 AM Changeset in webkit [291656] by Alan Coon
  • 13 edits in branches/safari-613-branch/Source/bmalloc

Cherry-pick r291007. rdar://problem/89984164

[libpas] Report more actionable crash in pas_enumerator
​https://bugs.webkit.org/show_bug.cgi?id=237572

Reviewed by Saam Barati.

  1. Adds PAS_ASSERT_WITH_DETAIL, which can report more detailed crash information than PAS_ASSERT while it is not efficient as much as PAS_ASSERT. We use it only in pas_enumerator related code to report more actionable crash from these code. It is OK since pas_enumerator is not used usually, which will be used only when vmmap is attached.
  2. Extract enumerate_large_map, enumerate_small_large_map, and enumerate_tiny_large_map to report which part of these functions can crash (in very rare case).
  3. Ensure pas_thread_local_cache_create's thread_local_cache is exposed after setting up all the data.
  • libpas/src/libpas/pas_enumerable_range_list.c: (pas_enumerable_range_list_append): (pas_enumerable_range_list_iterate): (pas_enumerable_range_list_iterate_remote):
  • libpas/src/libpas/pas_enumerate_bitfit_heaps.c: (view_callback): (enumerate_bitfit_heap_callback):
  • libpas/src/libpas/pas_enumerate_initially_unaccounted_pages.c: (range_list_iterate_add_unaccounted_callback): (range_list_iterate_exclude_accounted_callback):
  • libpas/src/libpas/pas_enumerate_large_heaps.c: (range_list_iterate_add_large_payload_callback): (record_span): (large_map_hashtable_entry_callback): (small_large_map_hashtable_entry_callback): (tiny_large_map_hashtable_entry_callback): (enumerate_large_map): (enumerate_small_large_map): (enumerate_tiny_large_map): (pas_enumerate_large_heaps):
  • libpas/src/libpas/pas_enumerate_segregated_heaps.c: (local_allocator_map_entry_is_empty_or_deleted): (local_allocator_map_entry_is_empty): (local_allocator_map_entry_is_deleted): (collect_shared_page_directories_heap_callback): (enumerate_exclusive_view): (enumerate_shared_view): (enumerate_partial_view): (shared_page_directory_view_callback): (size_directory_view_callback): (consider_allocator): (pas_enumerate_segregated_heaps):
  • libpas/src/libpas/pas_enumerate_unaccounted_pages_as_meta.c: (pas_enumerate_unaccounted_pages_as_meta):
  • libpas/src/libpas/pas_enumerator.c: (pas_enumerator_create): (pas_enumerator_read_compact): (pas_enumerator_read): (pas_enumerator_add_unaccounted_pages): (pas_enumerator_exclude_accounted_page): (pas_enumerator_exclude_accounted_pages): (pas_enumerator_record): (pas_enumerator_record_page_payload_and_meta):
  • libpas/src/libpas/pas_enumerator.h: (pas_enumerator_record_kind_get_string):
  • libpas/src/libpas/pas_enumerator_region.c: (pas_enumerator_region_allocate):
  • libpas/src/libpas/pas_thread_local_cache.c: (pas_thread_local_cache_create):
  • libpas/src/libpas/pas_utils.c: (pas_assertion_failed_no_inline):
  • libpas/src/libpas/pas_utils.h: (pas_zero_memory):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291007 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291655] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r291006. rdar://problem/85361911

The accessibility library should be soft linked optionally
​https://bugs.webkit.org/show_bug.cgi?id=236513

Reviewed by Geoffrey Garen.

The accessibility library should be soft linked optionally, since it is not always present.

  • Shared/Cocoa/AuxiliaryProcessCocoa.mm: (WebKit::handleAXPreferenceChange): (WebKit::AuxiliaryProcess::handlePreferenceChange):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291006 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291654] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290999. rdar://problem/89218299

UniqueIDBDatabase::didFireVersionChangeEvent should capture identifier of UniqueIDBDatabaseConnection
​https://bugs.webkit.org/show_bug.cgi?id=236950
rdar://problem/89218299

Reviewed by Chris Dumez.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp: (WebCore::IDBServer::UniqueIDBDatabase::didFireVersionChangeEvent):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290999 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291653] by Alan Coon
  • 3 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290994. rdar://problem/89923867

REGRESSION (r290853): CrashTracer: com.apple.WebKit.WebContent.Development at com.apple.WebCore: WebCore::FrameLoader::clear
​https://bugs.webkit.org/show_bug.cgi?id=237565
<rdar://problem/88356074>

Reviewed by Chris Dumez.

No new tests. Fixes crashing test: accessibility/mac/value-change/value-change-user-info-textarea.html

newDocument may be the frame's document. We should make it a RefPtr
because it could get set to null in this function.

  • loader/FrameLoader.cpp: (WebCore::FrameLoader::clear):
  • loader/FrameLoader.h:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290994 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291652] by Alan Coon
  • 3 edits
    1 add in branches/safari-613-branch

Cherry-pick r290981. rdar://problem/83326232

Remove invalid ASSERT in LocaleIDBuilder::overrideLanguageScriptRegion().
​https://bugs.webkit.org/show_bug.cgi?id=237573
<rdar://problem/83326232>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/handle-empty-localeID-in-localeIDBufferForLanguageTagWithNullTerminator.js: Added.

Source/JavaScriptCore:

The ASSERT(length) in LocaleIDBuilder::overrideLanguageScriptRegion() is simply
incorrect. The length can be 0 if uloc_forLanguageTag returns a 0 length in
localeIDBufferForLanguageTagWithNullTerminator(). LocaleIDBuilder::overrideLanguageScriptRegion()
already handles this scenario correctly. We just need to remove this incorrect ASSERT.

Also verified that we're producing the same result on the attached test case as
Chrome and Firefox produces.

  • runtime/IntlObject.cpp: (JSC::localeIDBufferForLanguageTagWithNullTerminator):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290981 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291651] by Alan Coon
  • 10 edits in branches/safari-613-branch/Source

Cherry-pick r290969. rdar://problem/89638872

Preconnecting after process swap is a page load time improvement on some devices
​https://bugs.webkit.org/show_bug.cgi?id=237055
<rdar://problem/89638872>

Reviewed by Geoffrey Garen.

Source/WebCore:

Export method.

  • platform/network/NetworkLoadMetrics.h:

Source/WebKit:

On some devices we see that doing a second preconnect on HTTP/1.1 is a significant page load time improvement.
This is due to the fact that most page loads on HTTP/1.1 will open several connections, and having two
preconnected connections instead of one, will speed up page load time. This patch implements this by starting
a second preconnect after the first has finished. It is important to wait until the first preconnect has
finished, otherwise the second preconnect will go to waste, since the underlying network layer does not yet
know if this is HTTP/1.1 or not. Since we do not see page load time improvement on iOS with this behavior,
it is currently only enabled for macOS. The next step is to investigate why it does not seem to be a page
load time improvement on iOS. We probably need to make sure the main resource load has started before we
start the second preconect. This will avoid that the second preconnect returns immediately.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::sendH2Ping): (WebKit::NetworkConnectionToWebProcess::preconnectTo):
  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::preconnectTo):
  • NetworkProcess/PreconnectTask.cpp: (WebKit::PreconnectTask::PreconnectTask): (WebKit::PreconnectTask::didFinishLoading): (WebKit::PreconnectTask::didFailLoading): (WebKit::PreconnectTask::didFinish):
  • NetworkProcess/PreconnectTask.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::SpeculativeLoadManager::preconnectForSubresource):

Source/WTF:

Add ENABLE guard for this behavior.

  • wtf/PlatformEnableCocoa.h:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290969 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291650] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290878. rdar://problem/89000777

Release_Assert | WebCore::Document::addTopLayerElement()
​https://bugs.webkit.org/show_bug.cgi?id=237307

Patch by Frédéric Wang <​fwang@igalia.com> on 2022-03-07
Reviewed by Chris Dumez.

setBooleanAttribute() call in HTMLDialogElement::showModal() dispatches a DOMSubtreeModified
event. Postpone it so that listeners cannot disconnect the dialog element.

  • html/HTMLDialogElement.cpp: (WebCore::HTMLDialogElement::showModal): Add a queue to postpone event.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290878 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291649] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/JavaScriptCore

Cherry-pick r290873. rdar://problem/89770507

Fix JITOperationList::addPointers() to support JIT_OPERATION_VALIDATION_ASSERT_ENABLED.
​https://bugs.webkit.org/show_bug.cgi?id=237504
<rdar://problem/89770507>

Reviewed by Saam Barati.

According to tagJSCCodePtrImpl(), we will only use an operation's validation entry
if Options::useJITCage(). Make JITOperationList::addPointers() conform to this.

  • assembler/JITOperationList.cpp: (JSC::JITOperationList::addPointers):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290873 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291648] by Alan Coon
  • 16 edits in branches/safari-613-branch/Source

Cherry-pick r290856. rdar://problem/89569036

REGRESSION (r284472): [ Monterey ] http/tests/websocket/tests/hybi/inspector/send-and-recieve-debugger.html is failing
​https://bugs.webkit.org/show_bug.cgi?id=237280

Reviewed by Devin Rousso.

Source/WebCore:

Covered by existing http/tests/websocket/tests/hybi/inspector/* test cases.

On macOS Monterey we use NSURLSession-based WebSockets by default, unlike earlier versions of macOS. The channel
for these sockets is implemented in WebKit::WebSocketChannel. The non-NSURLSession WebSockets channel (at
least on Cocoa platforms) is implemented in WebCore::WebSocketChannel.

As of r284472 the logic to delay the dispatch of received WebSocket message on platforms using
NSURLSession-based WebSockets is handled by WebCore::WebSocket, not the WebKit::WebSocketChannel.
WebKit::WebSocketChannel now immediately does the work it needs to, and only the delegated work to WebSocket
is queued and taken care of when the socket has resumed. This resulted in some of the instrumentation in
WebKit::WebSocketChannel being able to be called while the socket was suspended leading to events being logged
in the frontend "in the future" (e.g. before the paused script would have been able to be aware of them). To
correct this the WebKit::WebSocketChannel now provides a hook into its helper WebSocketChannelInspector
object to allow the WebCore::WebSocket to notify Web Inspector of events at the same time it is being
logically handled by the page.

Other ThreadableWebSocketChannel implementations will instead provide nullptr in place of a pointer to a
WebInspectorChannelInspector. WebCore::WebSocketChannel was not affected by the changes in r284472 as it has
a different way to guarantee that the methods containing InspectorInstrumentation were not called while the
channel was suspended (and enforced with numerous ASSERT(!m_suspended) checks).

  • Modules/websockets/ThreadableWebSocketChannel.h: (WebCore::ThreadableWebSocketChannel::channelInspector const):
  • Modules/websockets/WebSocketChannelClient.h:
  • Add reason for error messages so they can be sent to Web Inspector.
  • Modules/websockets/WebSocket.cpp: (WebCore::WebSocket::didReceiveMessage): (WebCore::WebSocket::didReceiveBinaryData): (WebCore::WebSocket::didReceiveMessageError): (WebCore::WebSocket::didClose):
  • Modules/websockets/WebSocket.h:
  • Move inspector instrumentation calls from WebKit::WebSocketChannel to here so that they are not called until the socket is resumed.
  • We also now wrap these instrumentation calls in an unlikely check for frontends to avoid allocating the simulated call frames when Web Inspector isn't even open.
  • Modules/websockets/WebSocketChannelInspector.cpp: (WebCore::WebSocketChannelInspector::WebSocketChannelInspector): (WebCore::WebSocketChannelInspector::didCreateWebSocket const): (WebCore::WebSocketChannelInspector::willSendWebSocketHandshakeRequest const): (WebCore::WebSocketChannelInspector::didReceiveWebSocketHandshakeResponse const): (WebCore::WebSocketChannelInspector::didCloseWebSocket const): (WebCore::WebSocketChannelInspector::didReceiveWebSocketFrame const): (WebCore::WebSocketChannelInspector::didSendWebSocketFrame const): (WebCore::WebSocketChannelInspector::didReceiveWebSocketFrameError const): (WebCore::WebSocketChannelInspector::createFrame): (WebCore::WebSocketChannelInspector::didCreateWebSocket): Deleted. (WebCore::WebSocketChannelInspector::willSendWebSocketHandshakeRequest): Deleted. (WebCore::WebSocketChannelInspector::didReceiveWebSocketHandshakeResponse): Deleted. (WebCore::WebSocketChannelInspector::didCloseWebSocket): Deleted. (WebCore::WebSocketChannelInspector::didReceiveWebSocketFrame): Deleted. (WebCore::WebSocketChannelInspector::didSendWebSocketFrame): Deleted. (WebCore::WebSocketChannelInspector::didReceiveWebSocketFrameError): Deleted.
  • Modules/websockets/WebSocketChannelInspector.h:
  • Update to keep a WeakRef to the Document to reduce the amount of plumbing necessary to call these methods from WebSocket.
  • Move static utility method createFrame here from WebKit::WebSocketChannel since it is only used for inspector instrumentation.
  • Modules/websockets/WorkerThreadableWebSocketChannel.cpp: (WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessageError): (WebCore::WorkerThreadableWebSocketChannel::Bridge::connect):
  • Modules/websockets/WorkerThreadableWebSocketChannel.h:
  • Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp: (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessageError):
  • Modules/websockets/ThreadableWebSocketChannelClientWrapper.h:
  • Modules/websockets/WebSocketChannel.cpp: (WebCore::WebSocketChannel::fail): (WebCore::WebSocketChannel::didFailSocketStream):
  • Modules/websockets/WebSocketChannel.h:
  • Update these classes to pass along a reason, if available, for errors.

Source/WebKit:

Move inspector instrumentation for things that should be delayed until the websocket has resumed (in general,
these are instrumentation points for receiving messages) into WebCore::WebSocket so that they are sent at the
expected time in the frontend, not "in the future" when script execution is suspended (e.g. while debugging).

  • WebProcess/Network/WebSocketChannel.cpp: (WebKit::WebSocketChannel::notifySendFrame): (WebKit::WebSocketChannel::connect): (WebKit::WebSocketChannel::close): (WebKit::WebSocketChannel::fail): (WebKit::WebSocketChannel::disconnect): (WebKit::WebSocketChannel::didReceiveText): (WebKit::WebSocketChannel::didReceiveBinaryData): (WebKit::WebSocketChannel::didClose): (WebKit::WebSocketChannel::didReceiveMessageError): (WebKit::WebSocketChannel::didSendHandshakeRequest): (WebKit::WebSocketChannel::didReceiveHandshakeResponse): (WebKit::createWebSocketFrameForWebInspector): Deleted.
  • WebProcess/Network/WebSocketChannel.h:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290856 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291647] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r290855. rdar://problem/82814846

Web Inspector: [Cocoa] Continually opening and closing Web Inspector sometimes crashes
​https://bugs.webkit.org/show_bug.cgi?id=237484

Reviewed by Darin Adler.

We need to handle operations on the main queue because webView:stopURLSchemeTask: will be called from the main
queue, and we must not be in middle the operation when we get the request to stop said operation, otherwise we
may attempt to call [urlSchemeTask did*], which is not permitted after we have been asked to stop that task.
If we add the operation for the WKURLSchemeTask to a different queue it is possible we will have already
started the operation on a background queue while at the same time are receiving a request to stop that same
WKURLSchemeTask.

  • UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm: (-[WKInspectorResourceURLSchemeHandler webView:startURLSchemeTask:]): (-[WKInspectorResourceURLSchemeHandler webView:stopURLSchemeTask:]):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290855 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291646] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r290847. rdar://problem/89402338

Crash under ScrollingCoordinatorMac::hasNodeWithAnimatedScrollChanged()
​https://bugs.webkit.org/show_bug.cgi?id=237478
<rdar://89072235>

Reviewed by Alan Bujtas.

Crash data show that r290109 failed to fix this crash; the actual cause of the crash is a
null m_page on TiledCoreAnimationScrollingCoordinator, diagnosed by noting that the crash
offset corresponds to the offset of m_renderingUpdateRemainingSteps in Page.

  • WebProcess/WebPage/mac/TiledCoreAnimationScrollingCoordinator.mm: (WebKit::TiledCoreAnimationScrollingCoordinator::hasNodeWithAnimatedScrollChanged):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290847 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291645] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290832. rdar://problem/89758344

Top layers should not be moved
​https://bugs.webkit.org/show_bug.cgi?id=237305

Patch by Rob Buis <​rbuis@igalia.com> on 2022-03-04
Reviewed by Tim Nguyen.

Top layers are always children of RenderView and should not be moved.

  • rendering/RenderElement.cpp: (WebCore::RenderElement::moveLayers):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290832 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291644] by Alan Coon
  • 4 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290830. rdar://problem/89081463

CSP report does not get sent to the document in the case of a detached element
​https://bugs.webkit.org/show_bug.cgi?id=237440
<rdar://problem/89081463>

Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/security/contentSecurityPolicy/report-violation-to-document-after-element-has-been-detached.html

Only send a violation report to the element if it is connected. Check
right before dispatching in case the element gets detached after the
security policy violation has been created. If the element is not
connected in this case, we send the report to the document.

  • dom/Element.cpp: (WebCore::Element::enqueueSecurityPolicyViolationEvent):
  • page/csp/ContentSecurityPolicy.cpp: (WebCore::ContentSecurityPolicy::reportViolation const): Also sets the composed value on the violation event as per the spec.

LayoutTests:

  • http/tests/security/contentSecurityPolicy/report-violation-to-document-after-element-has-been-detached-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/report-violation-to-document-after-element-has-been-detached.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290830 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291643] by Alan Coon
  • 4 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290820. rdar://problem/88301613

AVVideoCaptureSource should reuse CaptureDevice label
​https://bugs.webkit.org/show_bug.cgi?id=237363
<rdar://88301613>

Reviewed by Eric Carlson.

We are getting AV device name through AVCaptureDevice.localizedName, first in UIProcess, then in GPUProcess.
To make sure we always use the ones from UIProcess (which are the ones exposed through mediaDevices.enumerateDevices),
We make sure to use CaptureDevice.label when creating an AVVideoCaptureSource.

Manually tested.

  • platform/mediastream/mac/AVVideoCaptureSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm: (WebCore::AVVideoCaptureSource::create): (WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290820 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291642] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r290744. rdar://problem/81609371

[WebAuthn] Ensure presenter gets dismissed on iOS
​https://bugs.webkit.org/show_bug.cgi?id=237336
rdar://81609371

Reviewed by Brent Fulgham.

Always call [m_presenter dismissWithError] to ensure presenter gets dismissed.

  • UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm: (WebKit::AuthenticatorPresenterCoordinator::dimissPresenter):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290744 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291641] by Alan Coon
  • 7 edits
    4 adds in branches/safari-613-branch

Cherry-pick r290676. rdar://problem/83831093

[Cocoa] HLS stream currentTime sometimes jumps backwards
​https://bugs.webkit.org/show_bug.cgi?id=235087
rdar://83831093

Reviewed by Dean Jackson.

Source/WebCore:

Test: http/tests/media/hls/hls-non-zero-start-time.html

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::updateActiveTextTrackCues): Drive-by: pass log identifier to lambda so the method name will be logged correctly. (WebCore::HTMLMediaElement::currentMediaTime const): Remove LOG_CACHED_TIME_WARNINGS build flag, always log time drift warnings when log level is DEBUG.
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer): Log when periodic time observer is passed unexpected values. (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem): Use NSKeyValueObservingOptionInitial KVO option for "@duration" property because we sometimes don't get a duration changed event for HLS streams, so m_cachedDuration remains invalid. (WebCore::MediaPlayerPrivateAVFoundationObjC::currentMediaTimeDidChange const): Drive-by: fix use-after-move.

Source/WebKit:

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: (WebKit::MediaPlayerPrivateRemote::currentTimeChanged): Always notify player when time jumps backwards.

LayoutTests:

  • http/tests/media/hls/hls-non-zero-start-time-expected.txt: Added.
  • http/tests/media/hls/hls-non-zero-start-time.html: Added.
  • http/tests/media/resources/hls/bip-bop-live.m3u8: Added.
  • http/tests/media/resources/hls/bipbop/start-offset.m3u8: Added.
  • http/tests/media/resources/hls/bipbop/start-offset.ts: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290676 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:55 AM Changeset in webkit [291640] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290675. rdar://problem/89585043

Remove release assert when UI process is blocking IOSurface IOKit access
​https://bugs.webkit.org/show_bug.cgi?id=237278
<rdar://problem/89585043>

Unreviewed, address review comments.

Log error instead of creating CrashTracer reports.

  • platform/graphics/cocoa/IOSurface.mm: (WebCore::IOSurface::bytesPerRowAlignment):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290675 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:54 AM Changeset in webkit [291639] by Alan Coon
  • 6 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290645. rdar://problem/89180092

REGRESSION (r273129): Text contents in <span> with opacity not repainting/updating when sibling element has "will-change: transform"
​https://bugs.webkit.org/show_bug.cgi?id=236876
<rdar://problem/89180092>

Reviewed by Simon Fraser.

Source/WebCore:

This patch implements a slightly naive repaint for inline boxes with self painting layers.

  1. Mark the line when it gains an inline box (RenderInline) with self painting layer (e.g. <span style="position: relative">this has dedicated layer</span>)
  2. Issue repaint at the end of the line layout on such renderers.

Test: fast/repaint/inline-box-with-self-paint-layer.html

  • rendering/LegacyInlineFlowBox.cpp: (WebCore::LegacyInlineFlowBox::addToLine):
  • rendering/LegacyInlineFlowBox.h: (WebCore::LegacyInlineFlowBox::LegacyInlineFlowBox): (WebCore::LegacyInlineFlowBox::hasSelfPaintInlineBox const):
  • rendering/LegacyLineLayout.cpp: (WebCore::repaintSelfPaintInlineBoxes): (WebCore::LegacyLineLayout::layoutRunsAndFloats):
  • rendering/RenderInline.cpp: (WebCore::RenderInline::clippedOverflowRect const): expand the ASSERT to enclsing inline boxes too.

LayoutTests:

  • fast/repaint/inline-box-with-self-paint-layer-expected.html: Added.
  • fast/repaint/inline-box-with-self-paint-layer.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290645 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:54 AM Changeset in webkit [291638] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290618. rdar://problem/89585043

Remove release assert when UI process is blocking IOSurface IOKit access
​https://bugs.webkit.org/show_bug.cgi?id=237278

Reviewed by Darin Adler.

Remove release assert in IOSurface::bytesPerRowAlignment() when UI process is blocking IOSurface IOKit access.
Instead, log this event, and return an appropriate value.

  • platform/graphics/cocoa/IOSurface.mm: (WebCore::IOSurface::bytesPerRowAlignment):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290618 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:54 AM Changeset in webkit [291637] by Alan Coon
  • 4 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290615. rdar://problem/87919197

Handle widow relayout differently
​https://bugs.webkit.org/show_bug.cgi?id=235519

Patch by Rob Buis <​rbuis@igalia.com> on 2022-02-28
Reviewed by Alan Bujtas.

Source/WebCore:

Handle widow relayout differently to prevent function call recursion.

Test: fast/multicol/widow-many-relayouts-crash.html

  • rendering/RenderBlockFlow.cpp: (WebCore::RenderBlockFlow::layoutBlock): (WebCore::RenderBlockFlow::relayoutToAvoidWidows): Deleted.
  • rendering/RenderBlockFlow.h: (WebCore::RenderBlockFlow::didBreakAtLineToAvoidWidow const):

LayoutTests:

  • fast/multicol/widow-many-relayouts-crash-expected.txt: Added.
  • fast/multicol/widow-many-relayouts-crash.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290615 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:54 AM Changeset in webkit [291636] by Alan Coon
  • 4 edits in branches/safari-613-branch

Cherry-pick r290539. rdar://problem/88767812

[WebAuthn] Fallback to attestation=none whenever attestation fails
​https://bugs.webkit.org/show_bug.cgi?id=237223
rdar://88767812

Reviewed by Brent Fulgham.

Source/WebKit:

Whenever attestation is requested by a RP and it fails to complete,
we previously errored out of the registration. The more correct platform
behavior in this case is to provide attestation=none.

Created API test for this behavior.

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):

Tools:

Add test for local authenticator attestation fallback behavior.

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm: (TestWebKitAPI::TEST):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290539 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:54 AM Changeset in webkit [291635] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290526. rdar://problem/89372801

[Cocoa] HLS + Modern EME key rotation causes playback to stall indefinitely
​https://bugs.webkit.org/show_bug.cgi?id=237214
<rdar://89372801>

Reviewed by Eric Carlson.

In r275916, Ref was changed to perform pointer equality in its operator==. This caused
takeUnexpectedKeyRequestForInitializationData() to fail to find key requests matching
the initData passed in through MediaKeySession.

Fix the equality test by calling .get() on the Ref, which causes the == to resolve to
FragmentedSharedBuffer::operator==().

  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm: (WebCore::CDMInstanceFairPlayStreamingAVFObjC::takeUnexpectedKeyRequestForInitializationData):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290526 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:54 AM Changeset in webkit [291634] by Alan Coon
  • 18 edits
    15 adds in branches/safari-613-branch

Cherry-pick r290519. rdar://problem/89148022

Re-add YouTubePluginReplacement, removed in r285252
​https://bugs.webkit.org/show_bug.cgi?id=237182
Source/WebCore:

<rdar://89148022>

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-02-25
Reviewed by Chris Dumez.

Tests: security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement.html

security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement.html
security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type.html
security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement.html

Its removal broke webpages that work in Chrome and Firefox, so back it comes.

  • Headers.cmake:
  • Modules/plugins: Copied from Source/WebCore/Modules/plugins.
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSPluginElementFunctions.cpp: (WebCore::pluginScriptObject):
  • bindings/scripts/CodeGeneratorJS.pm: (GenerateImplementation):
  • bindings/scripts/test/JS/JSTestPluginInterface.cpp: (WebCore::JSTestPluginInterface::visitChildrenImpl):
  • html/HTMLPlugInElement.cpp: (WebCore::HTMLPlugInElement::createElementRenderer): (WebCore::HTMLPlugInElement::didAddUserAgentShadowRoot): (WebCore::registrar): (WebCore::pluginReplacementForType): (WebCore::HTMLPlugInElement::requestObject): (WebCore::HTMLPlugInElement::scriptObjectForPluginReplacement):
  • html/HTMLPlugInElement.h: (WebCore::HTMLPlugInElement::pluginReplacementScriptObject):
  • html/shadow/ShadowPseudoIds.cpp: (WebCore::ShadowPseudoIds::webkitPluginReplacement):
  • html/shadow/ShadowPseudoIds.h:
  • html/shadow/YouTubeEmbedShadowElement.cpp:
  • html/shadow/YouTubeEmbedShadowElement.h:
  • page/Settings.yaml:

Tools:

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-02-25
Reviewed by Chris Dumez.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/YouTubePluginReplacement.cpp:

LayoutTests:

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-02-25
Reviewed by Chris Dumez.

  • TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/win/TestExpectations:
  • security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement-expected.txt: Copied from LayoutTests/security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement-expected.txt.
  • security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement.html: Copied from LayoutTests/security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement.html.
  • security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement-expected.txt: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement-expected.txt.
  • security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement.html: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement.html.
  • security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-expected.txt: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-expected.txt.
  • security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type-expected.txt: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type-expected.txt.
  • security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type.html: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type.html.
  • security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement.html: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement.html.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290519 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:54 AM Changeset in webkit [291633] by Alan Coon
  • 4 edits
    1 add in branches/safari-613-branch

Cherry-pick r290517. rdar://problem/89428235

operationMaterializeObjectInOSR should DeferTerminationForAWhile instead of just DeferTermination.
​https://bugs.webkit.org/show_bug.cgi?id=237173
rdar://problem/89450245

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/termination-exception-in-operationMaterializeObjectInOSR2.js: Added.

Source/JavaScriptCore:

DeferTermination can throw the TerminationException on destruction of the scope
object. operationMaterializeObjectInOSR() was using DeferTermination, resulting
in the TerminationException being thrown on exit. This trips up
validateDFGExceptionHandling testing (which is enabled on Debug builds) because the
TerminationException is unexpected. The solution is simply to use
DeferTerminationForAWhile instead, and let a more natural trap checkpoint throw
the TerminationException later.

Also refactored notifyDebuggerOfUnwinding() to return early if a debugger is not
present. This avoids unnecessarily entering and exiting a DeferTermination scope
in notifyDebuggerOfUnwinding(). This was observed while testing this change on
the attached test case.

  • ftl/FTLOperations.cpp: (JSC::FTL::operationMaterializeObjectInOSR):
  • interpreter/Interpreter.cpp: (JSC::notifyDebuggerOfUnwinding):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290517 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:54 AM Changeset in webkit [291632] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r290328. rdar://problem/88567612

Fix GPUP WebGL generator script wrt uninitialised sized span
​https://bugs.webkit.org/show_bug.cgi?id=235889
<rdar://problem/88567612>

Reviewed by Chris Dumez.

Even though we check if the synchronous message was received successfully before using it,
if we didn't check then we might have a problem with pointing to uninitialized memory, which we then wouldn't use for anything.
To fix this hypothetical problem, I start out by pointing to initialized memory.

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.cpp: (WebKit::RemoteGraphicsContextGLProxy::getShaderPrecisionFormat):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290328 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:54 AM Changeset in webkit [291631] by Alan Coon
  • 9 edits in branches/safari-613-branch/Source

Cherry-pick r288662. rdar://problem/89582442

[WP] Avoid calling IOSurfaceAlignProperty
​https://bugs.webkit.org/show_bug.cgi?id=235659

Reviewed by Simon Fraser.

Source/WebCore:

Add information about alignment of bytes per row to IOSurface class.

  • platform/graphics/cocoa/IOSurface.h:
  • platform/graphics/cocoa/IOSurface.mm: (WebCore::surfaceBytesPerRowAlignment): (WebCore::IOSurface::bytesPerRowAlignment): (WebCore::IOSurface::setBytesPerRowAlignment):

Source/WebKit:

Avoid calling IOSurfaceAlignProperty in the WebContent process, since it requires IOKit access.
Information about the alignment of bytes per row of IOSurface will be retrieved in the UI process,
and sent to the WebContent process, where it will be stored.

  • Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode const): (WebKit::WebProcessCreationParameters::decode):
  • Shared/WebProcessCreationParameters.h:
  • Shared/cg/ShareableBitmapCG.cpp: (WebKit::ShareableBitmap::calculateBytesPerRow):
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeWebProcess):
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::platformInitializeWebProcess):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@288662 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:43 AM Changeset in webkit [291630] by pvollan@apple.com
  • 23 edits in trunk/Source

Enable content filtering in the Network process
​https://bugs.webkit.org/show_bug.cgi?id=238156

Reviewed by Geoffrey Garen.

Source/WebCore:

There is no need for sandbox extensions in the WebContent process when content filtering
is taking place in the Network process.

  • platform/cocoa/NetworkExtensionContentFilter.h:
  • platform/cocoa/NetworkExtensionContentFilter.mm:

(WebCore::NetworkExtensionContentFilter::enabled):

Source/WebKit:

Remove code associated with Network extension sandbox extensions.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • Shared/Cocoa/LoadParametersCocoa.mm:

(WebKit::LoadParameters::platformEncode const):
(WebKit::LoadParameters::platformDecode):

  • Shared/LoadParameters.h:
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::addPlatformLoadParameters):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::reloadAfterUnblockedContentFilter): Deleted.

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponseShared):

  • UIProcess/WebPageProxy.h:
  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::contentFilterDidBlockLoad):
(WebKit::WebResourceLoader::cancelMainResourceLoadForContentFilter): Deleted.

  • WebProcess/Network/WebResourceLoader.h:
  • WebProcess/Network/WebResourceLoader.messages.in:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::platformDidReceiveLoadParameters):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didReceivePolicyDecision):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/com.apple.WebProcess.sb.in:

Source/WTF:

Set the feature flag.

  • wtf/PlatformEnableCocoa.h:
10:42 AM Changeset in webkit [291629] by jer.noble@apple.com
  • 3 edits
    2 adds in trunk

YouTube.com - Clicking anywhere on the progress bar pauses the video
​https://bugs.webkit.org/show_bug.cgi?id=237750
<rdar://problem/90364846>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-unexpected-pause.html

When calling play() or pause() on a MediaPlayerPrivateMediaSourceAVFObjC, the object will
respond by calling m_player->playbackStateChanged(), which will in turn call
HTMLMediaElement::mediaPlayerPlaybackStateChanged() with the new state. However, HTMLMediaElement
expects this to be called only for unanticipated state changes, not expected state changes. And
when that method is called and the reported state does not match the element's own expected state,
the element calls its own play() or pause() function to update its own state to match the player's.
And because MediaPlayerPrivateMediaSourceAVFObjC calls this method on the next run loop, there is
an opportunity for those states to get out of sync, which happens when YouTube responds to a tap
in its timeline.

Remove the unnecessary "call on next run loop" behavior of MediaPlayerPrivateMediaSourceAVFObjC::
play() and ::pause(). Also, remove the unnecessary notification that the play state has changed. In
the future, this can be accomplished by adding a callback parameter to MediaPlayer::play() rather than
relying on a state change notification.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::play):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playInternal):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pause):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pauseInternal):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playAtHostTime):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pauseAtHostTime):

LayoutTests:

  • media/media-source/media-source-unexpected-pause-expected.txt: Added.
  • media/media-source/media-source-unexpected-pause.html: Added.
10:35 AM Changeset in webkit [291628] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Inline swatch popovers should hide when inline swatches are removed
​https://bugs.webkit.org/show_bug.cgi?id=235047
<rdar://problem/87687975>

Reviewed by Patrick Angle.

  • UserInterface/Views/InlineSwatch.js:

(WI.InlineSwatch):
(WI.InlineSwatch.prototype.dismissPopover):
(WI.InlineSwatch.prototype._presentPopover):

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype.detached):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype._renderValue):
(WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):

10:30 AM Changeset in webkit [291627] by Jonathan Bedard
  • 5 edits in trunk/Tools

[Merge-Queue] Add ValidateSquashed
​https://bugs.webkit.org/show_bug.cgi?id=238172
<rdar://problem/90602594>

Reviewed by Aakash Jain.

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

(MergeQueueFactory.init): Add ValidateSquashed.

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

(TestExpectedBuildSteps): Ditto.

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

(VerifyGitHubIntegrity.send_email_for_github_issue):
(ValidateSquashed): Ensure that a pull request only has a single commit.
(ValidateSquashed.init): Do not log environment variables.
(ValidateSquashed.start): Log commits between the HEAD branch and base branch.
(ValidateSquashed.getResultSummary):
(ValidateSquashed.evaluateCommand): Check number of commits between HEAD and base branch.
(ValidateSquashed.doStepIf): Only run step for pull requests.
(ValidateSquashed.hideStepIf): Hide step if we aren't running it.

Canonical link: ​https://commits.webkit.org/248720@main

10:19 AM Changeset in webkit [291626] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS][WP] Add telemetry for syscalls used during launch
​https://bugs.webkit.org/show_bug.cgi?id=235865
<rdar://problem/88228583>

Reviewed by Brent Fulgham.

Add telemetry in the WebContent process' sandbox on macOS to determine which syscalls are used only during launch.

  • WebProcess/com.apple.WebProcess.sb.in:
10:12 AM Changeset in webkit [291625] by J Pascoe
  • 8 edits in trunk

[WebAuthn] Pass along timeout to ASA and ignore timeout for conditional mediation requests
​https://bugs.webkit.org/show_bug.cgi?id=238147
rdar://90509464

Reviewed by Brent Fulgham.

Source/WebKit:

Currently we don't pass the timeout from the rp into ASA, so the default timeout is always used.
This patch starts passing along the timeout to ASA, and creates a place for ASA to specify the
mediation of the request, so we can ignore the timeout for requests using conditional mediation.

Modified API test.

  • Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:

(toWebCore):
(-[_WKWebAuthenticationPanel makeCredentialWithMediationRequirement:clientDataHash:options:completionHandler:]):
(-[_WKWebAuthenticationPanel makeCredentialWithClientDataHash:options:completionHandler:]):
(-[_WKWebAuthenticationPanel getAssertionWithMediationRequirement:clientDataHash:options:completionHandler:]):
(-[_WKWebAuthenticationPanel getAssertionWithClientDataHash:options:completionHandler:]):

  • UIProcess/WebAuthentication/AuthenticatorManager.cpp:

(WebKit::AuthenticatorManager::respondReceived):
(WebKit::AuthenticatorManager::initTimeOutTimer):

  • UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:

(WebKit::configureRegistrationRequestContext):
(WebKit::configureAssertionOptions):

Tools:

Modify API test to use new SPI.

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST):

9:14 AM Changeset in webkit [291624] by J Pascoe
  • 10 edits in trunk/Source

[WebAuthn] Support getAssertion for virtual HID authenticators
​https://bugs.webkit.org/show_bug.cgi?id=238154
rdar://problem/90593150

Reviewed by Brent Fulgham.

Source/WebCore:

Virtual authenticators for WebAuthn support different transprots: nfc, usb, internal,
and ble. Currently, we only fully support the internal transport and makeCredential for
usb-transport. The default transport for web-platform-tests is usb. This patch implements
getAssertion for hid-based virtual authneticators.

  • Modules/webauthn/WebAuthenticationUtils.cpp:

(WebCore::buildUserEntityMap):
(WebCore::buildCredentialDescriptor):

  • Modules/webauthn/WebAuthenticationUtils.h:
  • Modules/webauthn/fido/FidoConstants.h:

Source/WebKit:

Virtual authenticators for WebAuthn support different transports: nfc, usb, internal,
and ble. Currently, we only fully support the internal transport and makeCredential for
usb-transport. The default transport for web-platform-tests is usb. This patch implements
getAssertion for hid-based virtual authneticators.

Tested via manually creating virtual authenticator and performing create / get.

  • UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.cpp:

(WebKit::VirtualAuthenticatorManager::addCredential):
(WebKit::VirtualAuthenticatorManager::credentialsMatchingList):

  • UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.h:
  • UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorUtils.h:
  • UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorUtils.mm:

(WebKit::privateKeyFromBase64):
(WebKit::signatureForPrivateKey):

  • UIProcess/WebAuthentication/Virtual/VirtualHidConnection.cpp:

(WebKit::VirtualHidConnection::parseRequest):

9:01 AM Changeset in webkit [291623] by commit-queue@webkit.org
  • 6 edits in trunk

It should be possible to copy text out of "AutoFilledAndViewable" password fields
​https://bugs.webkit.org/show_bug.cgi?id=238160

Patch by Ricky Mondello <Ricky Mondello> on 2022-03-22
Reviewed by Geoffrey Garen.

Source/WebCore:

  • editing/Editor.cpp:

(WebCore::Editor::canCopy const): Allow copy in AutoFilledAndViewable password fields.

  • editing/VisibleSelection.cpp:

(WebCore::VisibleSelection::isInAutoFilledAndViewableField const): Added.

  • editing/VisibleSelection.h: Declare member function.

LayoutTests:

  • fast/forms/input-autofilled-and-viewable.html: Test copying.
8:45 AM Changeset in webkit [291622] by jer.noble@apple.com
  • 5 edits
    2 adds in trunk

Fetching a Blob URL with an unbounded Range header do not generate a Content-Range response header
​https://bugs.webkit.org/show_bug.cgi?id=238170

Reviewed by Eric Carlson.

Source/WebCore:

Test: fetch/fetch-blob-unbounded-range.html

Handle the case where the request contains an unbounded range, and property calculate the rangeEnd
to pass into ParsedContentRange.

  • platform/network/BlobResourceHandle.cpp:

(WebCore::BlobResourceHandle::notifyResponseOnSuccess):

Source/WebKit:

Handle the case where the request contains an unbounded range, and property calculate the rangeEnd
to pass into ParsedContentRange.

  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):

LayoutTests:

  • fetch/fetch-blob-unbounded-range-expected.txt: Added.
  • fetch/fetch-blob-unbounded-range.html: Added.
8:37 AM Changeset in webkit [291621] by magomez@igalia.com
  • 2 edits in trunk/Source/WebKit

Ensure that proxies are invalidated before destroying them.
​https://bugs.webkit.org/show_bug.cgi?id=237187

Reviewed by Carlos Garcia Campos.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::updateSceneState):

8:30 AM Changeset in webkit [291620] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

Ensure there is a Network process after launching the WebContent process
​https://bugs.webkit.org/show_bug.cgi?id=238080
<rdar://88933565>

Reviewed by Chris Dumez.

After the WebContent process has finished launching, ensure there is a Network process
which will provide the WebContent process with the Launch Services database.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didFinishLaunching):

8:25 AM Changeset in webkit [291619] by Jonathan Bedard
  • 5 edits in trunk/Tools

[Merge-Queue] Add ValidateCommitterAndReviewer
​https://bugs.webkit.org/show_bug.cgi?id=238150
<rdar://problem/90587620>

Reviewed by Aakash Jain.

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

(CommitQueueFactory.init): Rename ValidateCommiterAndReviewer to ValidateCommiterAndReviewer.
(MergeQueueFactory.init): Add ValidateCommitterAndReviewer, PrintConfiguration, CleanGitRepo,
CheckOutSource, FetchBranches, ShowIdentifier, VerifyGitHubIntegrity, UpdateWorkingDirectory
and CheckOutPullRequest.

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

(TestExpectedBuildSteps): Add Merge-Queue step names.

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

(GitHubMixin.get_pr_json): Retry tied to attempt not index.
(GitHubMixin.get_reviewers): Get list of reviewers for pull-request in repository.
(ValidateCommitterAndReviewer): Renamed from ValidateCommiterAndReviewer, inherit from GitHubMixin.
(ValidateCommitterAndReviewer.init): Rename ValidateCommiterAndReviewer.
(ValidateCommitterAndReviewer.fail_build): Block pull request, differentiate comment for pull
request and patch.
(ValidateCommitterAndReviewer.start): Support pull requests.
(ValidateCommiterAndReviewer): Renamed to ValidateCommitterAndReviewer.

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

Canonical link: ​https://commits.webkit.org/248712@main

8:24 AM Changeset in webkit [291618] by Wenson Hsieh
  • 5 edits
    1 add in trunk

-[WKWebView _spellCheckerDocumentTag] is inconsistent with the document tag passed into NSSpellChecker
​https://bugs.webkit.org/show_bug.cgi?id=238186
rdar://90591883

Reviewed by Tim Horton.

Source/WebKit:

Currently, WebViewImpl and WebPageProxy both maintain separate spellchecking document tag values, both of which
are derived from -[NSSpellChecker uniqueSpellDocumentTag]. While the former is used for autocorrection as well
as the WKWebView SPI -_spellCheckerDocumentTag, the latter is passed into NSSpellChecker API when performing
spellchecking.

For various reasons, Mail compose (using WebKit2) requires -_spellCheckerDocumentTag to be consistent with the
value of the spell checker document tag passed into -checkString:range:…:inSpellDocumentWithTag:orthography:.
Address this by simply having WebViewImpl call through into WebPageProxy's spellDocumentTag, such that the two
now share the same value.

Test: SpellCheckerDocumentTag.SpellCheckerDocumentTagWhenCheckingString

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::spellCheckerDocumentTag):

Tools:

Add a test to verify that the spell checking document tag passed into NSSpellChecker API is consistent with the
document tag reported by WKWebView.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/mac/SpellCheckerDocumentTag.mm: Added.

(TestWebKitAPI::TEST):

7:48 AM Changeset in webkit [291617] by Jonathan Bedard
  • 2 edits in trunk/Tools

[git-webkit] Make radar conditional on authentication (Follow-up fix)
​https://bugs.webkit.org/show_bug.cgi?id=238051
<rdar://problem/90384655>

Reviewed by Alexey Proskuryakov.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/radar.py:

(Tracker.init): Only check for authentication if library exists.

Canonical link: ​https://commits.webkit.org/248709@main

7:48 AM Changeset in webkit [291616] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebCore

Move TextureMapper member variables, types and code out of GraphicsContextGLANGLE
​https://bugs.webkit.org/show_bug.cgi?id=238200

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-03-22
Reviewed by Alejandro G. Castro.

Move member variables and code specific to the TextureMapper-oriented
GraphicsContextGLTextureMapperANGLE class from the parent
GraphicsContextGLANGLE class into GraphicsContextGLTextureMapperANGLE.

This means moving down various member variables and types as well as
friendship declarations. For behavior to remain the same, the
prepareTextureImpl() method is made virtual and overridden in the
TextureMapper class, but otherwise matches the previous behavior.

Nicosia::GCGLANGLELayer is adjusted to operate on a reference to the
derived class, not on the base GraphicsContextGLANGLE.

No new tests as there's no change in behavior.

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLANGLE::prepareTextureImpl):

  • platform/graphics/angle/GraphicsContextGLANGLE.h:
  • platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.cpp:

(Nicosia::GCGLANGLELayer::GCGLANGLELayer):

  • platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.h:
  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:

(WebCore::GraphicsContextGLANGLE::~GraphicsContextGLANGLE):
(WebCore::GraphicsContextGLTextureMapperANGLE::prepareTextureImpl):
(WebCore::GraphicsContextGLTextureMapperANGLE::EGLImageBacking::EGLImageBacking):
(WebCore::GraphicsContextGLTextureMapperANGLE::EGLImageBacking::~EGLImageBacking):
(WebCore::GraphicsContextGLTextureMapperANGLE::EGLImageBacking::format const):
(WebCore::GraphicsContextGLTextureMapperANGLE::EGLImageBacking::stride const):
(WebCore::GraphicsContextGLTextureMapperANGLE::EGLImageBacking::releaseResources):
(WebCore::GraphicsContextGLTextureMapperANGLE::EGLImageBacking::isReleased):
(WebCore::GraphicsContextGLTextureMapperANGLE::EGLImageBacking::reset):
(WebCore::GraphicsContextGLANGLE::EGLImageBacking::EGLImageBacking): Deleted.
(WebCore::GraphicsContextGLANGLE::EGLImageBacking::~EGLImageBacking): Deleted.
(WebCore::GraphicsContextGLANGLE::EGLImageBacking::format const): Deleted.
(WebCore::GraphicsContextGLANGLE::EGLImageBacking::stride const): Deleted.
(WebCore::GraphicsContextGLANGLE::EGLImageBacking::releaseResources): Deleted.
(WebCore::GraphicsContextGLANGLE::EGLImageBacking::isReleased): Deleted.
(WebCore::GraphicsContextGLANGLE::EGLImageBacking::reset): Deleted.

  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.h:
7:41 AM Changeset in webkit [291615] by Jonathan Bedard
  • 2 edits in trunk/Tools

[Python 3] Use sys.executable instead of Python
​https://bugs.webkit.org/show_bug.cgi?id=238175
<rdar://problem/90604107>

Reviewed by Ryan Haddad.

  • Tools/Scripts/webkitpy/common/system/executive_unittest.py:

(ExecutiveTest.test_run_command_with_bad_command):

Canonical link: ​https://commits.webkit.org/248708@main

7:09 AM Changeset in webkit [291614] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[WPE][GTK] VideoFrameGStreamer missing include after -r291610 refactor
​https://bugs.webkit.org/show_bug.cgi?id=238199

Patch by Alejandro G. Castro <​alex@igalia.com> on 2022-03-22
Reviewed by Žan Doberšek.

We need to add the define we had in the file before the refactor.

  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:
6:35 AM Changeset in webkit [291613] by Carlos Garcia Campos
  • 52 edits
    4 deletes in trunk

[GTK][WPE] Remove the ATK implementation
​https://bugs.webkit.org/show_bug.cgi?id=238198

Reviewed by Adrian Perez de Castro.

.:

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:

Source/WebCore:

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • accessibility/AXObjectCache.h:
  • accessibility/AccessibilityList.cpp:

(WebCore::AccessibilityList::childHasPseudoVisibleListItemMarkers):

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::canSetValueAttribute const):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::textIteratorBehaviorForTextRange const):

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::indexForVisiblePosition const):
(WebCore::AccessibilityRenderObject::shouldNotifyActiveDescendant const):

  • accessibility/AccessibilityTableColumn.cpp:

(WebCore::AccessibilityTableColumn::computeAccessibilityIsIgnored const):

  • accessibility/AccessibilityTableHeaderContainer.cpp:

(WebCore::AccessibilityTableHeaderContainer::computeAccessibilityIsIgnored const):

  • accessibility/atk/AXObjectCacheAtk.cpp: Removed.

(WebCore::wrapperParent): Deleted.
(WebCore::AXObjectCache::detachWrapper): Deleted.
(WebCore::AXObjectCache::attachWrapper): Deleted.
(WebCore::AXObjectCache::platformPerformDeferredCacheUpdate): Deleted.
(WebCore::getListObject): Deleted.
(WebCore::notifyChildrenSelectionChange): Deleted.
(WebCore::AXObjectCache::postPlatformNotification): Deleted.
(WebCore::AXObjectCache::nodeTextChangePlatformNotification): Deleted.
(WebCore::AXObjectCache::frameLoadingEventPlatformNotification): Deleted.
(WebCore::AXObjectCache::platformHandleFocusedUIElementChanged): Deleted.
(WebCore::AXObjectCache::handleScrolledToAnchor): Deleted.

  • accessibility/atk/AccessibilityObjectAtk.cpp: Removed.

(WebCore::AccessibilityObject::detachPlatformWrapper): Deleted.
(WebCore::AccessibilityObject::accessibilityIgnoreAttachment const): Deleted.
(WebCore::AccessibilityObject::accessibilityPlatformIncludesObject const): Deleted.
(WebCore::AccessibilityObject::allowsTextRanges const): Deleted.
(WebCore::AccessibilityObject::getLengthForTextRange const): Deleted.

  • accessibility/atk/WebKitAccessible.cpp: Removed.

(webkitAccessibleGetName): Deleted.
(webkitAccessibleGetDescription): Deleted.
(removeAtkRelationByType): Deleted.
(setAtkRelationSetFromCoreObject): Deleted.
(isRootObject): Deleted.
(webkitAccessibleGetParent): Deleted.
(webkitAccessibleGetNChildren): Deleted.
(webkitAccessibleRefChild): Deleted.
(webkitAccessibleGetIndexInParent): Deleted.
(webkitAccessibleGetAttributes): Deleted.
(atkRole): Deleted.
(webkitAccessibleGetRole): Deleted.
(isTextWithCaret): Deleted.
(setAtkStateSetFromCoreObject): Deleted.
(webkitAccessibleRefStateSet): Deleted.
(webkitAccessibleRefRelationSet): Deleted.
(webkitAccessibleInit): Deleted.
(webkitAccessibleGetObjectLocale): Deleted.
(webkit_accessible_class_init): Deleted.
(roleIsTextType): Deleted.
(interfaceMaskFromObject): Deleted.
(uniqueAccessibilityTypeName): Deleted.
(accessibilityTypeFromObject): Deleted.
(webkitAccessibleNew): Deleted.
(webkitAccessibleGetAccessibilityObject): Deleted.
(webkitAccessibleDetach): Deleted.
(webkitAccessibleIsDetached): Deleted.
(webkitAccessibleCacheAndReturnAtkProperty): Deleted.

  • accessibility/atk/WebKitAccessible.h: Removed.
  • accessibility/atk/WebKitAccessibleHyperlink.cpp: Removed.

(webkitAccessibleHyperlinkActionDoAction): Deleted.
(webkitAccessibleHyperlinkActionGetNActions): Deleted.
(webkitAccessibleHyperlinkActionGetDescription): Deleted.
(webkitAccessibleHyperlinkActionGetKeybinding): Deleted.
(webkitAccessibleHyperlinkActionGetName): Deleted.
(webkit_accessible_hyperlink_atk_action_interface_init): Deleted.
(webkitAccessibleHyperlinkGetURI): Deleted.
(webkitAccessibleHyperlinkGetObject): Deleted.
(rangeLengthForObject): Deleted.
(webkitAccessibleHyperlinkGetStartIndex): Deleted.
(webkitAccessibleHyperlinkGetEndIndex): Deleted.
(webkitAccessibleHyperlinkIsValid): Deleted.
(webkitAccessibleHyperlinkGetNAnchors): Deleted.
(webkitAccessibleHyperlinkIsSelectedLink): Deleted.
(webkitAccessibleHyperlinkGetProperty): Deleted.
(webkitAccessibleHyperlinkSetProperty): Deleted.
(webkit_accessible_hyperlink_class_init): Deleted.
(webkitAccessibleHyperlinkGetOrCreate): Deleted.

  • accessibility/atk/WebKitAccessibleHyperlink.h: Removed.
  • accessibility/atk/WebKitAccessibleInterfaceAction.cpp: Removed.

(core): Deleted.
(webkitAccessibleActionDoAction): Deleted.
(webkitAccessibleActionGetNActions): Deleted.
(webkitAccessibleActionGetDescription): Deleted.
(webkitAccessibleActionGetKeybinding): Deleted.
(webkitAccessibleActionGetName): Deleted.
(webkitAccessibleActionInterfaceInit): Deleted.

  • accessibility/atk/WebKitAccessibleInterfaceAction.h: Removed.
  • accessibility/atk/WebKitAccessibleInterfaceComponent.cpp: Removed.

(atkToContents): Deleted.
(webkitAccessibleComponentRefAccessibleAtPoint): Deleted.
(webkitAccessibleComponentGetExtents): Deleted.
(webkitAccessibleComponentGrabFocus): Deleted.
(webkitAccessibleComponentScrollTo): Deleted.
(webkitAccessibleComponentScrollToPoint): Deleted.
(webkitAccessibleComponentInterfaceInit): Deleted.

  • accessibility/atk/WebKitAccessibleInterfaceComponent.h: Removed.
  • accessibility/atk/WebKitAccessibleInterfaceDocument.cpp: Removed.

(core): Deleted.
(documentAttributeValue): Deleted.
(webkitAccessibleDocumentGetAttributeValue): Deleted.
(webkitAccessibleDocumentGetAttributes): Deleted.
(webkitAccessibleDocumentGetLocale): Deleted.
(webkitAccessibleDocumentInterfaceInit): Deleted.

  • accessibility/atk/WebKitAccessibleInterfaceDocument.h: Removed.
  • accessibility/atk/WebKitAccessibleInterfaceEditableText.cpp: Removed.

(core): Deleted.
(webkitAccessibleEditableTextSetRunAttributes): Deleted.
(webkitAccessibleEditableTextSetTextContents): Deleted.
(webkitAccessibleEditableTextInsertText): Deleted.
(webkitAccessibleEditableTextCopyText): Deleted.
(webkitAccessibleEditableTextCutText): Deleted.
(webkitAccessibleEditableTextDeleteText): Deleted.
(webkitAccessibleEditableTextPasteText): Deleted.
(webkitAccessibleEditableTextInterfaceInit): Deleted.

  • accessibility/atk/WebKitAccessibleInterfaceEditableText.h: Removed.
  • accessibility/atk/WebKitAccessibleInterfaceHyperlinkImpl.cpp: Removed.

(webkitAccessibleHyperlinkImplGetHyperlink): Deleted.
(webkitAccessibleHyperlinkImplInterfaceInit): Deleted.

  • accessibility/atk/WebKitAccessibleInterfaceHyperlinkImpl.h: Removed.
  • accessibility/atk/WebKitAccessibleInterfaceHypertext.cpp: Removed.

(core): Deleted.
(webkitAccessibleHypertextGetLink): Deleted.
(webkitAccessibleHypertextGetNLinks): Deleted.
(webkitAccessibleHypertextGetLinkIndex): Deleted.
(webkitAccessibleHypertextInterfaceInit): Deleted.

  • accessibility/atk/WebKitAccessibleInterfaceHypertext.h: Removed.
  • accessibility/atk/WebKitAccessibleInterfaceImage.cpp: Removed.

(core): Deleted.
(webkitAccessibleImageGetImagePosition): Deleted.
(webkitAccessibleImageGetImageDescription): Deleted.
(webkitAccessibleImageGetImageSize): Deleted.
(webkitAccessibleImageInterfaceInit): Deleted.

  • accessibility/atk/WebKitAccessibleInterfaceImage.h: Removed.
  • accessibility/atk/WebKitAccessibleInterfaceSelection.cpp: Removed.

(core): Deleted.
(listObjectForCoreSelection): Deleted.
(optionFromList): Deleted.
(optionFromSelection): Deleted.
(webkitAccessibleSelectionAddSelection): Deleted.
(webkitAccessibleSelectionClearSelection): Deleted.
(webkitAccessibleSelectionRefSelection): Deleted.
(webkitAccessibleSelectionGetSelectionCount): Deleted.
(webkitAccessibleSelectionIsChildSelected): Deleted.
(webkitAccessibleSelectionRemoveSelection): Deleted.
(webkitAccessibleSelectionSelectAllSelection): Deleted.
(webkitAccessibleSelectionInterfaceInit): Deleted.

  • accessibility/atk/WebKitAccessibleInterfaceSelection.h: Removed.
  • accessibility/atk/WebKitAccessibleInterfaceTable.cpp: Removed.

(core): Deleted.
(cell): Deleted.
(cellIndex): Deleted.
(cellAtIndex): Deleted.
(webkitAccessibleTableRefAt): Deleted.
(webkitAccessibleTableGetIndexAt): Deleted.
(webkitAccessibleTableGetColumnAtIndex): Deleted.
(webkitAccessibleTableGetRowAtIndex): Deleted.
(webkitAccessibleTableGetNColumns): Deleted.
(webkitAccessibleTableGetNRows): Deleted.
(webkitAccessibleTableGetColumnExtentAt): Deleted.
(webkitAccessibleTableGetRowExtentAt): Deleted.
(webkitAccessibleTableGetColumnHeader): Deleted.
(webkitAccessibleTableGetRowHeader): Deleted.
(webkitAccessibleTableGetCaption): Deleted.
(webkitAccessibleTableGetColumnDescription): Deleted.
(webkitAccessibleTableGetRowDescription): Deleted.
(webkitAccessibleTableInterfaceInit): Deleted.

  • accessibility/atk/WebKitAccessibleInterfaceTable.h: Removed.
  • accessibility/atk/WebKitAccessibleInterfaceTableCell.cpp: Removed.

(convertToGPtrArray): Deleted.
(core): Deleted.
(webkitAccessibleTableCellGetColumnHeaderCells): Deleted.
(webkitAccessibleTableCellGetRowHeaderCells): Deleted.
(webkitAccessibleTableCellGetColumnSpan): Deleted.
(webkitAccessibleTableCellGetRowSpan): Deleted.
(webkitAccessibleTableCellGetPosition): Deleted.
(webkitAccessibleTableCellGetTable): Deleted.
(webkitAccessibleTableCellInterfaceInit): Deleted.

  • accessibility/atk/WebKitAccessibleInterfaceTableCell.h: Removed.
  • accessibility/atk/WebKitAccessibleInterfaceText.cpp: Removed.

(core): Deleted.
(baselinePositionForRenderObject): Deleted.
(getAttributeSetForAccessibilityObject): Deleted.
(compareAttribute): Deleted.
(attributeSetDifference): Deleted.
(accessibilityObjectLength): Deleted.
(getAccessibilityObjectForOffset): Deleted.
(getRunAttributesFromAccessibilityObject): Deleted.
(textExtents): Deleted.
(offsetAdjustmentForListItem): Deleted.
(webCoreOffsetToAtkOffset): Deleted.
(atkOffsetToWebCoreOffset): Deleted.
(getNodeForAccessibilityObject): Deleted.
(getSelectionOffsetsForObject): Deleted.
(webkitAccessibleTextGetText): Deleted.
(emptyTextSelectionAtOffset): Deleted.
(webkitAccessibleTextGetChar): Deleted.
(nextWordStartPosition): Deleted.
(previousWordEndPosition): Deleted.
(wordAtPositionForAtkBoundary): Deleted.
(numberOfReplacedElementsBeforeOffset): Deleted.
(webkitAccessibleTextWordForBoundary): Deleted.
(isSentenceBoundary): Deleted.
(isWhiteSpaceBetweenSentences): Deleted.
(sentenceAtPositionForAtkBoundary): Deleted.
(webkitAccessibleTextSentenceForBoundary): Deleted.
(lineAtPositionForAtkBoundary): Deleted.
(webkitAccessibleTextLineForBoundary): Deleted.
(webkitAccessibleTextGetTextForOffset): Deleted.
(webkitAccessibleTextGetTextAfterOffset): Deleted.
(webkitAccessibleTextGetTextAtOffset): Deleted.
(webkitAccessibleTextGetTextBeforeOffset): Deleted.
(webkitAccessibleTextGetCharacterAtOffset): Deleted.
(webkitAccessibleTextGetCaretOffset): Deleted.
(webkitAccessibleTextGetRunAttributes): Deleted.
(webkitAccessibleTextGetDefaultAttributes): Deleted.
(webkitAccessibleTextGetCharacterExtents): Deleted.
(webkitAccessibleTextGetRangeExtents): Deleted.
(webkitAccessibleTextGetCharacterCount): Deleted.
(webkitAccessibleTextGetOffsetAtPoint): Deleted.
(webkitAccessibleTextGetNSelections): Deleted.
(webkitAccessibleTextGetSelection): Deleted.
(webkitAccessibleTextAddSelection): Deleted.
(webkitAccessibleTextSetSelection): Deleted.
(webkitAccessibleTextRemoveSelection): Deleted.
(webkitAccessibleTextSetCaretOffset): Deleted.
(webkitAccessibleTextGetStringAtOffset): Deleted.
(webkitAccessibleTextInterfaceInit): Deleted.

  • accessibility/atk/WebKitAccessibleInterfaceText.h: Removed.
  • accessibility/atk/WebKitAccessibleInterfaceValue.cpp: Removed.

(core): Deleted.
(webkitAccessibleSetNewValue): Deleted.
(webkitAccessibleGetIncrementValue): Deleted.
(webkitAccessibleGetValueAndText): Deleted.
(webkitAccessibleGetIncrement): Deleted.
(webkitAccessibleSetValue): Deleted.
(webkitAccessibleGetRange): Deleted.
(webkitAccessibleValueGetCurrentValue): Deleted.
(webkitAccessibleValueGetMaximumValue): Deleted.
(webkitAccessibleValueGetMinimumValue): Deleted.
(webkitAccessibleValueSetCurrentValue): Deleted.
(webkitAccessibleValueGetMinimumIncrement): Deleted.
(webkitAccessibleValueInterfaceInit): Deleted.

  • accessibility/atk/WebKitAccessibleInterfaceValue.h: Removed.
  • accessibility/atk/WebKitAccessibleUtil.cpp: Removed.

(addToAtkAttributeSet): Deleted.
(contentsRelativeToAtkCoordinateType): Deleted.
(titleTagShouldBeUsedInDescriptionField): Deleted.
(accessibilityTitle): Deleted.
(accessibilityDescription): Deleted.
(selectionBelongsToObject): Deleted.
(objectFocusedAndCaretOffsetUnignored): Deleted.

  • accessibility/atk/WebKitAccessibleUtil.h: Removed.
  • accessibility/atspi/AccessibilityObjectAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::attributes const):

  • editing/FrameSelection.h:
  • editing/atk/FrameSelectionAtk.cpp: Removed.

(WebCore::emitTextSelectionChange): Deleted.
(WebCore::maybeEmitTextFocusChange): Deleted.
(WebCore::FrameSelection::notifyAccessibilityForSelectionChange): Deleted.

  • page/Settings.yaml:
  • platform/graphics/PlatformDisplay.cpp:
  • platform/graphics/PlatformDisplay.h:
  • platform/graphics/x11/PlatformDisplayX11.cpp:
  • platform/graphics/x11/PlatformDisplayX11.h:

Source/WebKit:

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.cpp: Removed.

(coreRootObjectWrapperDetachedCallback): Deleted.
(rootWebAreaWrapper): Deleted.
(accessibilityRootObjectWrapper): Deleted.
(webkitWebPageAccessibilityObjectInitialize): Deleted.
(webkitWebPageAccessibilityObjectGetIndexInParent): Deleted.
(webkitWebPageAccessibilityObjectGetNChildren): Deleted.
(webkitWebPageAccessibilityObjectRefChild): Deleted.
(webkitWebPageAccessibilityObjectRefStateSet): Deleted.
(webkit_web_page_accessibility_object_class_init): Deleted.
(webkitWebPageAccessibilityObjectNew): Deleted.

  • WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.h: Removed.
  • WebProcess/WebPage/glib/WebPageGLib.cpp:

(WebKit::WebPage::platformInitialize):

  • WebProcess/wpe/WebProcessMainWPE.cpp:

(WebKit::initializeAccessibility): Deleted.

Tools:

  • DumpRenderTree/AccessibilityController.h:
  • DumpRenderTree/AccessibilityUIElement.h:
  • Scripts/valgrind/suppressions.txt:
  • Scripts/webkit-filter-log:
  • TestWebKitAPI/Tests/WebKitGtk/TestWebKitAccessibility.cpp:

(testAccessibleChildrenChanged):
(testAccessibleAttributes):
(testAccessibleState):
(testAccessibleStateChanged):
(testAccessibleListMarkers):
(testTextSurrogatePair):
(testTextIterator):
(testTextExtents):
(testTextSelections):
(testTextAttributes):
(testTextStateChanged):
(testTextReplacedObjects):
(testTextListMarkers):
(testHyperlinkBasic):
(testHypertextBasic):
(testActionBasic):
(testDocumentBasic):
(testImageBasic):
(testSelectionMenuList):
(testTableBasic):

  • TestWebKitAPI/glib/PlatformGTK.cmake:
  • WebKitTestRunner/InjectedBundle/AccessibilityController.h:
  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp: Removed.

(WTR::AccessibilityController::resetToConsistentState): Deleted.
(WTR::childElementById): Deleted.
(WTR::AccessibilityController::accessibleElementById): Deleted.
(WTR::AccessibilityController::platformName): Deleted.
(WTR::AccessibilityController::injectAccessibilityPreference): Deleted.
(WTR::AccessibilityController::rootElement): Deleted.
(WTR::AccessibilityController::focusedElement): Deleted.
(WTR::AccessibilityController::addNotificationListener): Deleted.
(WTR::AccessibilityController::removeNotificationListener): Deleted.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp: Removed.

(): Deleted.
(WTR::AccessibilityNotificationHandler::AccessibilityNotificationHandler): Deleted.
(WTR::AccessibilityNotificationHandler::~AccessibilityNotificationHandler): Deleted.
(WTR::AccessibilityNotificationHandler::setNotificationFunctionCallback): Deleted.
(WTR::AccessibilityNotificationHandler::removeAccessibilityNotificationHandler): Deleted.
(WTR::AccessibilityNotificationHandler::connectAccessibilityCallbacks): Deleted.
(WTR::AccessibilityNotificationHandler::disconnectAccessibilityCallbacks): Deleted.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.h: Removed.

(WTR::AccessibilityNotificationHandler::create): Deleted.
(WTR::AccessibilityNotificationHandler::setPlatformElement): Deleted.
(WTR::AccessibilityNotificationHandler::platformElement const): Deleted.
(WTR::AccessibilityNotificationHandler::notificationFunctionCallback const): Deleted.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp: Removed.

(): Deleted.
(WTR::AccessibilityUIElement::AccessibilityUIElement): Deleted.
(WTR::AccessibilityUIElement::~AccessibilityUIElement): Deleted.
(WTR::AccessibilityUIElement::isEqual): Deleted.
(WTR::AccessibilityUIElement::getChildren): Deleted.
(WTR::AccessibilityUIElement::getChildrenWithRange): Deleted.
(WTR::AccessibilityUIElement::childrenCount): Deleted.
(WTR::AccessibilityUIElement::elementAtPoint): Deleted.
(WTR::AccessibilityUIElement::indexOfChild): Deleted.
(WTR::AccessibilityUIElement::childAtIndex): Deleted.
(WTR::accessibilityElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::linkedUIElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaOwnsElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaOwnsReferencingElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaFlowToElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaFlowToReferencingElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaControlsElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaControlsReferencingElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaLabelledByElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaLabelledByReferencingElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaDescribedByElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaDescribedByReferencingElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaDetailsElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaDetailsReferencingElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaErrorMessageElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::ariaErrorMessageReferencingElementAtIndex): Deleted.
(WTR::AccessibilityUIElement::disclosedRowAtIndex): Deleted.
(WTR::AccessibilityUIElement::rowAtIndex): Deleted.
(WTR::AccessibilityUIElement::selectedChildAtIndex const): Deleted.
(WTR::AccessibilityUIElement::selectedChildrenCount const): Deleted.
(WTR::AccessibilityUIElement::selectedRowAtIndex): Deleted.
(WTR::AccessibilityUIElement::titleUIElement): Deleted.
(WTR::AccessibilityUIElement::parentElement): Deleted.
(WTR::AccessibilityUIElement::disclosedByRow): Deleted.
(WTR::AccessibilityUIElement::attributesOfLinkedUIElements): Deleted.
(WTR::AccessibilityUIElement::attributesOfDocumentLinks): Deleted.
(WTR::AccessibilityUIElement::attributesOfChildren): Deleted.
(WTR::AccessibilityUIElement::allAttributes): Deleted.
(WTR::AccessibilityUIElement::stringDescriptionOfAttributeValue): Deleted.
(WTR::AccessibilityUIElement::stringAttributeValue): Deleted.
(WTR::AccessibilityUIElement::numberAttributeValue): Deleted.
(WTR::AccessibilityUIElement::currentStateValue const): Deleted.
(WTR::AccessibilityUIElement::uiElementArrayAttributeValue const): Deleted.
(WTR::AccessibilityUIElement::rowHeaders const): Deleted.
(WTR::AccessibilityUIElement::columnHeaders const): Deleted.
(WTR::AccessibilityUIElement::uiElementAttributeValue const): Deleted.
(WTR::AccessibilityUIElement::boolAttributeValue): Deleted.
(WTR::AccessibilityUIElement::isAttributeSettable): Deleted.
(WTR::AccessibilityUIElement::isAttributeSupported): Deleted.
(WTR::AccessibilityUIElement::parameterizedAttributeNames): Deleted.
(WTR::AccessibilityUIElement::role): Deleted.
(WTR::AccessibilityUIElement::subrole): Deleted.
(WTR::AccessibilityUIElement::roleDescription): Deleted.
(WTR::AccessibilityUIElement::computedRoleString): Deleted.
(WTR::AccessibilityUIElement::title): Deleted.
(WTR::AccessibilityUIElement::description): Deleted.
(WTR::AccessibilityUIElement::orientation const): Deleted.
(WTR::AccessibilityUIElement::stringValue): Deleted.
(WTR::AccessibilityUIElement::language): Deleted.
(WTR::AccessibilityUIElement::helpText const): Deleted.
(WTR::AccessibilityUIElement::x): Deleted.
(WTR::AccessibilityUIElement::y): Deleted.
(WTR::AccessibilityUIElement::width): Deleted.
(WTR::AccessibilityUIElement::height): Deleted.
(WTR::AccessibilityUIElement::clickPointX): Deleted.
(WTR::AccessibilityUIElement::clickPointY): Deleted.
(WTR::AccessibilityUIElement::intValue const): Deleted.
(WTR::AccessibilityUIElement::minValue): Deleted.
(WTR::AccessibilityUIElement::maxValue): Deleted.
(WTR::AccessibilityUIElement::valueDescription): Deleted.
(WTR::AccessibilityUIElement::insertionPointLineNumber): Deleted.
(WTR::AccessibilityUIElement::isPressActionSupported): Deleted.
(WTR::AccessibilityUIElement::isIncrementActionSupported): Deleted.
(WTR::AccessibilityUIElement::isDecrementActionSupported): Deleted.
(WTR::AccessibilityUIElement::isEnabled): Deleted.
(WTR::AccessibilityUIElement::isRequired const): Deleted.
(WTR::AccessibilityUIElement::isFocused const): Deleted.
(WTR::AccessibilityUIElement::isSelected const): Deleted.
(WTR::AccessibilityUIElement::isSelectedOptionActive const): Deleted.
(WTR::AccessibilityUIElement::isExpanded const): Deleted.
(WTR::AccessibilityUIElement::isChecked const): Deleted.
(WTR::AccessibilityUIElement::isIndeterminate const): Deleted.
(WTR::AccessibilityUIElement::hierarchicalLevel const): Deleted.
(WTR::AccessibilityUIElement::speakAs): Deleted.
(WTR::AccessibilityUIElement::ariaIsGrabbed const): Deleted.
(WTR::AccessibilityUIElement::ariaDropEffects const): Deleted.
(WTR::AccessibilityUIElement::lineForIndex): Deleted.
(WTR::AccessibilityUIElement::rangeForLine): Deleted.
(WTR::AccessibilityUIElement::rangeForPosition): Deleted.
(WTR::AccessibilityUIElement::boundsForRange): Deleted.
(WTR::AccessibilityUIElement::stringForRange): Deleted.
(WTR::AccessibilityUIElement::attributedStringForRange): Deleted.
(WTR::AccessibilityUIElement::attributedStringRangeIsMisspelled): Deleted.
(WTR::AccessibilityUIElement::uiElementCountForSearchPredicate): Deleted.
(WTR::AccessibilityUIElement::uiElementForSearchPredicate): Deleted.
(WTR::AccessibilityUIElement::selectTextWithCriteria): Deleted.
(WTR::AccessibilityUIElement::attributesOfColumnHeaders): Deleted.
(WTR::AccessibilityUIElement::attributesOfRowHeaders): Deleted.
(WTR::AccessibilityUIElement::attributesOfColumns): Deleted.
(WTR::AccessibilityUIElement::attributesOfRows): Deleted.
(WTR::AccessibilityUIElement::attributesOfVisibleCells): Deleted.
(WTR::AccessibilityUIElement::attributesOfHeader): Deleted.
(WTR::AccessibilityUIElement::rowCount): Deleted.
(WTR::AccessibilityUIElement::columnCount): Deleted.
(WTR::AccessibilityUIElement::indexInTable): Deleted.
(WTR::AccessibilityUIElement::rowIndexRange): Deleted.
(WTR::AccessibilityUIElement::columnIndexRange): Deleted.
(WTR::AccessibilityUIElement::cellForColumnAndRow): Deleted.
(WTR::AccessibilityUIElement::horizontalScrollbar const): Deleted.
(WTR::AccessibilityUIElement::verticalScrollbar const): Deleted.
(WTR::AccessibilityUIElement::selectedTextRange): Deleted.
(WTR::AccessibilityUIElement::setSelectedTextRange): Deleted.
(WTR::AccessibilityUIElement::increment): Deleted.
(WTR::AccessibilityUIElement::decrement): Deleted.
(WTR::AccessibilityUIElement::showMenu): Deleted.
(WTR::AccessibilityUIElement::press): Deleted.
(WTR::AccessibilityUIElement::setSelectedChild const): Deleted.
(WTR::AccessibilityUIElement::setSelectedChildAtIndex const): Deleted.
(WTR::AccessibilityUIElement::removeSelectionAtIndex const): Deleted.
(WTR::AccessibilityUIElement::clearSelectedChildren const): Deleted.
(WTR::AccessibilityUIElement::accessibilityValue const): Deleted.
(WTR::AccessibilityUIElement::documentEncoding): Deleted.
(WTR::AccessibilityUIElement::documentURI): Deleted.
(WTR::AccessibilityUIElement::url): Deleted.
(WTR::AccessibilityUIElement::addNotificationListener): Deleted.
(WTR::AccessibilityUIElement::removeNotificationListener): Deleted.
(WTR::AccessibilityUIElement::isFocusable const): Deleted.
(WTR::AccessibilityUIElement::isSelectable const): Deleted.
(WTR::AccessibilityUIElement::isMultiSelectable const): Deleted.
(WTR::AccessibilityUIElement::isVisible const): Deleted.
(WTR::AccessibilityUIElement::isOffScreen const): Deleted.
(WTR::AccessibilityUIElement::isCollapsed const): Deleted.
(WTR::AccessibilityUIElement::isIgnored const): Deleted.
(WTR::AccessibilityUIElement::isSingleLine const): Deleted.
(WTR::AccessibilityUIElement::isMultiLine const): Deleted.
(WTR::AccessibilityUIElement::hasPopup const): Deleted.
(WTR::AccessibilityUIElement::takeFocus): Deleted.
(WTR::AccessibilityUIElement::takeSelection): Deleted.
(WTR::AccessibilityUIElement::addSelection): Deleted.
(WTR::AccessibilityUIElement::removeSelection): Deleted.
(WTR::AccessibilityUIElement::lineTextMarkerRangeForTextMarker): Deleted.
(WTR::AccessibilityUIElement::textMarkerRangeForElement): Deleted.
(WTR::AccessibilityUIElement::textMarkerRangeLength): Deleted.
(WTR::AccessibilityUIElement::previousTextMarker): Deleted.
(WTR::AccessibilityUIElement::nextTextMarker): Deleted.
(WTR::AccessibilityUIElement::stringForTextMarkerRange): Deleted.
(WTR::AccessibilityUIElement::rectsForTextMarkerRange): Deleted.
(WTR::AccessibilityUIElement::textMarkerRangeForMarkers): Deleted.
(WTR::AccessibilityUIElement::startTextMarkerForTextMarkerRange): Deleted.
(WTR::AccessibilityUIElement::endTextMarkerForTextMarkerRange): Deleted.
(WTR::AccessibilityUIElement::endTextMarkerForBounds): Deleted.
(WTR::AccessibilityUIElement::startTextMarkerForBounds): Deleted.
(WTR::AccessibilityUIElement::textMarkerForPoint): Deleted.
(WTR::AccessibilityUIElement::accessibilityElementForTextMarker): Deleted.
(WTR::AccessibilityUIElement::attributedStringForTextMarkerRange): Deleted.
(WTR::AccessibilityUIElement::attributedStringForTextMarkerRangeWithOptions): Deleted.
(WTR::AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute): Deleted.
(WTR::AccessibilityUIElement::indexForTextMarker): Deleted.
(WTR::AccessibilityUIElement::isTextMarkerValid): Deleted.
(WTR::AccessibilityUIElement::textMarkerForIndex): Deleted.
(WTR::AccessibilityUIElement::startTextMarker): Deleted.
(WTR::AccessibilityUIElement::endTextMarker): Deleted.
(WTR::AccessibilityUIElement::setSelectedTextMarkerRange): Deleted.
(WTR::AccessibilityUIElement::scrollToMakeVisible): Deleted.
(WTR::AccessibilityUIElement::scrollToGlobalPoint): Deleted.
(WTR::AccessibilityUIElement::scrollToMakeVisibleWithSubFocus): Deleted.
(WTR::AccessibilityUIElement::supportedActions const): Deleted.
(WTR::AccessibilityUIElement::pathDescription const): Deleted.
(WTR::AccessibilityUIElement::mathPostscriptsDescription const): Deleted.
(WTR::AccessibilityUIElement::mathPrescriptsDescription const): Deleted.
(WTR::AccessibilityUIElement::classList const): Deleted.
(WTR::stringAtOffset): Deleted.
(WTR::AccessibilityUIElement::characterAtOffset): Deleted.
(WTR::AccessibilityUIElement::wordAtOffset): Deleted.
(WTR::AccessibilityUIElement::lineAtOffset): Deleted.
(WTR::AccessibilityUIElement::sentenceAtOffset): Deleted.
(WTR::AccessibilityUIElement::replaceTextInRange): Deleted.
(WTR::AccessibilityUIElement::insertText): Deleted.
(WTR::AccessibilityUIElement::popupValue const): Deleted.

  • WebKitTestRunner/PlatformGTK.cmake:
  • WebKitTestRunner/PlatformWPE.cmake:
  • WebKitTestRunner/TestOptions.cpp:

(WTR::TestOptions::defaults):

LayoutTests:

  • accessibility/gtk/aria-modal-state-exposed-expected.txt:
  • accessibility/gtk/aria-modal-state-exposed.html:
  • accessibility/gtk/name-from-label-expected.txt:
  • accessibility/gtk/name-from-label.html:
  • accessibility/gtk/object-attributes-expected.txt:
  • accessibility/gtk/object-attributes.html:
  • accessibility/language-attribute.html:
5:33 AM Changeset in webkit [291612] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

[GLIB] Use a static string for default application name
​https://bugs.webkit.org/show_bug.cgi?id=238124

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-22
Reviewed by Xabier Rodriguez-Calvar.

  • platform/glib/ApplicationGLib.cpp:

(WebCore::getApplicationName):

  • platform/glib/ApplicationGLib.h:
3:36 AM Changeset in webkit [291611] by youenn@apple.com
  • 91 edits in trunk/Source

Move RealtimeMediaSource::VideoSampleObserver::videoSampleAvailable to VideoFrame
​https://bugs.webkit.org/show_bug.cgi?id=237884

Reviewed by Eric Carlson.

Source/WebCore:

Refactoring to do the following:

  • Renaming of VideoSampleObserver to VideoFrameObserver, videoSampleAvailable to videoFrameAvailable...
  • videoFrameAvailable takes a VideoFrame instead of a MediaSample
  • Use VideoFrame::rotation and VideoFrame::isMirrored.
  • Use VideoFrame::Rotation instead of MediaSample::VideoRotation

Update code according this renaming.
Move from using MediaSample to VideoFrame where it makes sense.

Prepare for removal of MediaSample as parent class of VideoFrame.

  • Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
  • html/canvas/WebGLRenderingContextBase.cpp:
  • platform/MediaSample.h:
  • platform/VideoFrame.cpp:
  • platform/VideoFrame.h:
  • platform/graphics/avfoundation/SampleBufferDisplayLayer.h:
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.h:
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
  • platform/graphics/cocoa/GraphicsContextGLCocoa.mm:
  • platform/graphics/cv/ImageRotationSessionVT.h:
  • platform/graphics/cv/ImageRotationSessionVT.mm:
  • platform/graphics/cv/ImageTransferSessionVT.h:
  • platform/graphics/cv/ImageTransferSessionVT.mm:
  • platform/graphics/cv/VideoFrameCV.h:
  • platform/graphics/cv/VideoFrameCV.mm:
  • platform/graphics/gstreamer/VideoFrameGStreamer.cpp:
  • platform/graphics/gstreamer/VideoFrameGStreamer.h:
  • platform/mediarecorder/MediaRecorderPrivate.h:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/MediaRecorderPrivateMock.cpp:
  • platform/mediarecorder/MediaRecorderPrivateMock.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:
  • platform/mediastream/RealtimeMediaSource.cpp:
  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeOutgoingVideoSource.cpp:
  • platform/mediastream/RealtimeOutgoingVideoSource.h:
  • platform/mediastream/RealtimeVideoCaptureSource.cpp:
  • platform/mediastream/RealtimeVideoCaptureSource.h:
  • platform/mediastream/RealtimeVideoSource.cpp:
  • platform/mediastream/RealtimeVideoSource.h:
  • platform/mediastream/VideoPreset.h:
  • platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:
  • platform/mediastream/cocoa/DisplayCaptureSourceCocoa.h:
  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:
  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:
  • platform/mediastream/ios/ReplayKitCaptureSource.mm:
  • platform/mediastream/libwebrtc/VideoFrameLibWebRTC.cpp:
  • platform/mediastream/libwebrtc/VideoFrameLibWebRTC.h:
  • platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.cpp:
  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.cpp:
  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.h:
  • platform/mediastream/mac/AVVideoCaptureSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:
  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.h:
  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.h:
  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm:
  • platform/mock/MockRealtimeVideoSource.cpp:
  • platform/mock/MockRealtimeVideoSource.h:
  • testing/Internals.cpp:
  • testing/Internals.h:

Source/WebKit:

Move from using MediaSample to VideoFrame directly.

  • GPUProcess/graphics/RemoteGraphicsContextGLCocoa.cpp:
  • GPUProcess/media/RemoteVideoFrameObjectHeap.cpp:
  • GPUProcess/media/RemoteVideoFrameObjectHeap.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:
  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:
  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.messages.in:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
  • WebProcess/GPU/media/RemoteVideoFrameProxy.cpp:
  • WebProcess/GPU/media/RemoteVideoFrameProxy.h:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:
  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.cpp:
  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h:
  • WebProcess/GPU/webrtc/SharedVideoFrame.cpp:
  • WebProcess/GPU/webrtc/SharedVideoFrame.h:
  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:
  • WebProcess/cocoa/RemoteCaptureSampleManager.h:
  • WebProcess/cocoa/RemoteCaptureSampleManager.messages.in:
  • WebProcess/cocoa/RemoteRealtimeVideoSource.h:
3:18 AM Changeset in webkit [291610] by commit-queue@webkit.org
  • 5 edits
    1 copy in trunk/Source/WebCore

[TextureMapper] Split GraphicsContextGLTextureMapper into two classes
​https://bugs.webkit.org/show_bug.cgi?id=238141

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-03-22
Reviewed by Alejandro G. Castro.

Split GraphicsContextGLTextureMapper into two distinct classes. The
current class unconditionally inherits from GraphicsContextGLOpenGL, and
the new GraphicsContextGLTextureMapperANGLE inherits from
GraphicsContextGLANGLE. This reduces complexity and avoids the
implementation to span across two separate files. The two classes can
also be developed independently, with more changes and cleanups already
planned for the ANGLE variant.

No new tests due to no actual change in behavior.

  • platform/TextureMapper.cmake:
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:

(WebCore::createWebProcessGraphicsContextGL):
(WebCore::GraphicsContextGLTextureMapper::create):
(WebCore::GraphicsContextGLTextureMapper::GraphicsContextGLTextureMapper):
(WebCore::GraphicsContextGLTextureMapper::layerContentsDisplayDelegate):
(WebCore::GraphicsContextGLTextureMapper::copyTextureFromMedia):
(WebCore::GraphicsContextGLTextureMapper::paintCompositedResultsToVideoFrame):
(WebCore::GraphicsContextGLTextureMapper::platformInitialize):

  • platform/graphics/texmap/GraphicsContextGLTextureMapper.h:
  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:

(WebCore::GraphicsContextGLANGLE::~GraphicsContextGLANGLE):
(WebCore::GraphicsContextGLANGLE::platformDisplay const):
(WebCore::GraphicsContextGLANGLE::platformConfig const):
(WebCore::GraphicsContextGLANGLE::makeContextCurrent):
(WebCore::GraphicsContextGLANGLE::checkGPUStatus):
(WebCore::GraphicsContextGLANGLE::platformReleaseThreadResources):
(WebCore::GraphicsContextGLANGLE::readCompositedResults):
(WebCore::createWebProcessGraphicsContextGL):
(WebCore::GraphicsContextGLTextureMapperANGLE::create):
(WebCore::GraphicsContextGLTextureMapperANGLE::GraphicsContextGLTextureMapperANGLE):
(WebCore::GraphicsContextGLTextureMapperANGLE::~GraphicsContextGLTextureMapperANGLE):
(WebCore::GraphicsContextGLTextureMapperANGLE::layerContentsDisplayDelegate):
(WebCore::GraphicsContextGLTextureMapperANGLE::copyTextureFromMedia):
(WebCore::GraphicsContextGLTextureMapperANGLE::paintCompositedResultsToVideoFrame):
(WebCore::GraphicsContextGLTextureMapperANGLE::platformInitializeContext):
(WebCore::GraphicsContextGLTextureMapperANGLE::platformInitialize):
(WebCore::GraphicsContextGLTextureMapperANGLE::setContextVisibility):
(WebCore::GraphicsContextGLTextureMapperANGLE::reshapeDisplayBufferBacking):
(WebCore::GraphicsContextGLTextureMapperANGLE::prepareForDisplay):
(WebCore::GraphicsContextGLTextureMapper::platformInitializeContext): Deleted.
(WebCore::GraphicsContextGLTextureMapper::platformInitialize): Deleted.
(WebCore::GraphicsContextGLTextureMapper::setContextVisibility): Deleted.
(WebCore::GraphicsContextGLTextureMapper::prepareForDisplay): Deleted.
(WebCore::GraphicsContextGLTextureMapper::reshapeDisplayBufferBacking): Deleted.

  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.h: Copied from Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapper.h.
2:43 AM Changeset in webkit [291609] by Ziran Sun
  • 16 edits in trunk

[selection] Change form's selection attribute to unsigned long
​https://bugs.webkit.org/show_bug.cgi?id=237951

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Update test expectations as more sub-tests are now passing.

  • web-platform-tests/html/semantics/forms/textfieldselection/selection-expected.txt:
  • web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-expected.txt:
  • web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange-expected.txt:

Source/WebCore:

We should change the type of attribute "selectionStart" and "selectionEnd"
from long to unsigned long. Also "start" and "end" parameters in function
selectionRange() need to be changed correspondingly.

This change is in line with Chromium CL at
​https://github.com/chromium/chromium/commit/b6ff6db1c5683b5e564a72b0941ad504b410d1af

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::setDefaultSelectionAfterFocus):
(WebCore::HTMLInputElement::selectionStartForBindings const):
(WebCore::HTMLInputElement::setSelectionStartForBindings):
(WebCore::HTMLInputElement::selectionEndForBindings const):
(WebCore::HTMLInputElement::setSelectionEndForBindings):
(WebCore::HTMLInputElement::setSelectionRangeForBindings):

  • html/HTMLInputElement.h:
  • html/HTMLInputElement.idl:
  • html/HTMLTextAreaElement.idl:
  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::handleBeforeTextInsertedEvent):

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::HTMLTextFormControlElement):
(WebCore::HTMLTextFormControlElement::setSelectionStart):
(WebCore::HTMLTextFormControlElement::setSelectionEnd):
(WebCore::HTMLTextFormControlElement::select):
(WebCore::HTMLTextFormControlElement::setSelectionRange):
(WebCore::HTMLTextFormControlElement::selectionStart const):
(WebCore::HTMLTextFormControlElement::computeSelectionStart const):
(WebCore::HTMLTextFormControlElement::selectionEnd const):
(WebCore::HTMLTextFormControlElement::computeSelectionEnd const):

  • html/HTMLTextFormControlElement.h:

(WebCore::HTMLTextFormControlElement::cacheSelection):
(WebCore::HTMLTextFormControlElement::hasCachedSelection const):

LayoutTests:

Update test accordingly. This is inline with Chromium.

Note that for selection-start-end-readonly.html, two sub-tests
are now failing. This is the right behaviour since the test assumes
types for selectionStart and selectionEnd as "int". We could modify the
test and make the type as unsigned. Interestingly the test script's
format is strange and it seems having "return" for each line. Simply updating
some lines on the test scripts causes errors when applying the patch. We have
decided to address this test in a separate patch (maybe remove the file and added
a new one with proper format).

  • fast/forms/input-appearance-selection.html:
  • fast/forms/selection-functions-expected.txt:
  • fast/forms/selection-start-end-readonly-expected.txt:
1:51 AM Changeset in webkit [291608] by Diego Pino Garcia
  • 4 edits in trunk/Source

Source/WebCore:
Unreviewed, fix non-unified build after r291597

  • css/typedom/CSSNumericValue.cpp:

Source/WebKit:
Unreviewed, fix non-unified build after r291589

  • NetworkProcess/NetworkBroadcastChannelRegistry.cpp:
1:14 AM Changeset in webkit [291607] by mmaxfield@apple.com
  • 2 edits in trunk/Tools

Squelch warning message from output of build-jsc
​https://bugs.webkit.org/show_bug.cgi?id=238177

Reviewed by Saam Barati.

There was a "prototype mismatch" error.

  • Scripts/webkitperl/BuildSubproject.pm:
12:44 AM Changeset in webkit [291606] by youenn@apple.com
  • 6 edits in trunk

Website policies are not respected when doing COOP based process swap
​https://bugs.webkit.org/show_bug.cgi?id=238036
<rdar://89616625>

Reviewed by Chris Dumez.

Source/WebKit:

In case of normal process swap, we make use of website policies so everything is fine.
For COOP based process swap, this happens later on, at a point where we lost website policies.
To overcome this, we store the website policies used by a navigation inside the API::Navigation object.
It is used by continueNavigationInNewProcess to correctly initialize the new WebPage website policies.
We then set the website policies in the navigation object just before continuing the load in the same process,
as process swap may happen later when inspecting the response.
Minor refactoring in continueNavigationInNewProcess to get the policies directly from the given Navigation object.
Minor refactoring in receivedNavigationPolicyDecision to make the code doing process swap clearer.

Covered by API test.

  • UIProcess/API/APINavigation.h:

(API::Navigation::setWebsitePoliciesForProcessSwap):
(API::Navigation::takeWebsitePoliciesForProcessSwap):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedNavigationPolicyDecision):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::triggerBrowsingContextGroupSwitchForNavigation):

  • UIProcess/WebPageProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
12:21 AM Changeset in webkit [291605] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Adjust anchor/focus nodes after removal when LiveRangeSelection is enabled
​https://bugs.webkit.org/show_bug.cgi?id=238004

Patch by Frédéric Wang <​fwang@igalia.com> on 2022-03-22
Reviewed by Ryosuke Niwa.

This patch ensures that FrameSelection::nodeWillBeRemoved adjusts m_anchor and m_focus
when corresponding nodes are removed from the DOM tree. There are no behavior changes
when live range is disabled.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::nodeWillBeRemoved): When live range is enabled,
Ensure that anchor nodes are updated even when the selection is none and pass information
about whether anchor or focus are removed by the node removal.
(WebCore::FrameSelection::respondToNodeModification): Adjust anchor and focus if they
are removed, when live range is enabled.

  • editing/FrameSelection.h: Add arguments for anchor and focus.

Mar 21, 2022:

10:26 PM Changeset in webkit [291604] by Said Abou-Hallawa
  • 46 edits
    2 adds in trunk

[GPU Process] Make GraphicsContextState keep track of changes till they are applied
​https://bugs.webkit.org/show_bug.cgi?id=238066
rdar://90585183

Reviewed by Simon Fraser.

Source/WebCore:

A member of type GraphicsContextState::ChangeFlags will be added to
GraphicsContextState to keep track of what has changes since it was last
applied. So we can eliminate the struct GraphicsContextStateChange.

We will have to have a single member for every GraphicsContextState::Change.

  1. So we will combine the color, the pattern, the gradient and the gradient space transform in one class called 'SourceBrush'.
  1. We will combine the shadow offset, the shadow blurRadius, the shadow color and the radius mode in one struct called 'DropShadow'
  1. And we will combine the CompositeOperator and the BledMode in one struct called 'CompositeMode'.

GraphicsContextState will handle setting its members, its encoding and
decoding and its streaming to text.

Adding a transparency layer in CG sets the global alpha to 1. We need to
sync the member GraphicsContextState.alpha with the platform alpha when
we beginTransparencyLayer() and when we endTransparencyLayer().

DisplayList::Recorder will keep its stack of GraphicsContextState. The
difference between the state of GraphicsContext and the state of the
Recorder is we eagerly apply the former to the platform context but we
lazily record the changes of the later. Recorder::didUpdateState()
overrides the base class method to just merge the changes from the base
class GraphicsContext::m_state to Recorder::currentState().state.
Recorder::appendStateChangeItem() records the accumulated changes in the
currentState() since the last drawing.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/BifurcatedGraphicsContext.cpp:

(WebCore::BifurcatedGraphicsContext::beginTransparencyLayer):
(WebCore::BifurcatedGraphicsContext::endTransparencyLayer):
(WebCore::BifurcatedGraphicsContext::didUpdateState):

  • platform/graphics/BifurcatedGraphicsContext.h:
  • platform/graphics/DrawGlyphsRecorder.h:
  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::GraphicsContext):
(WebCore::GraphicsContext::updateState):
(WebCore::GraphicsContext::getShadow const):
(WebCore::GraphicsContext::setStrokeColor): Deleted.
(WebCore::GraphicsContext::setShadow): Deleted.
(WebCore::GraphicsContext::clearShadow): Deleted.
(WebCore::GraphicsContext::setFillColor): Deleted.
(WebCore::GraphicsContext::setStrokePattern): Deleted.
(WebCore::GraphicsContext::setFillPattern): Deleted.
(WebCore::GraphicsContext::setStrokeGradient): Deleted.
(WebCore::GraphicsContext::setFillGradient): Deleted.
(WebCore::GraphicsContext::setCompositeOperation): Deleted.

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::GraphicsContext):
(WebCore::GraphicsContext::fillColor const):
(WebCore::GraphicsContext::fillGradient const):
(WebCore::GraphicsContext::fillGradientSpaceTransform const):
(WebCore::GraphicsContext::fillPattern const):
(WebCore::GraphicsContext::setFillBrush):
(WebCore::GraphicsContext::setFillColor):
(WebCore::GraphicsContext::setFillGradient):
(WebCore::GraphicsContext::setFillPattern):
(WebCore::GraphicsContext::fillRule const):
(WebCore::GraphicsContext::setFillRule):
(WebCore::GraphicsContext::strokeColor const):
(WebCore::GraphicsContext::strokeGradient const):
(WebCore::GraphicsContext::strokeGradientSpaceTransform const):
(WebCore::GraphicsContext::strokePattern const):
(WebCore::GraphicsContext::setStrokeBrush):
(WebCore::GraphicsContext::setStrokeColor):
(WebCore::GraphicsContext::setStrokeGradient):
(WebCore::GraphicsContext::setStrokePattern):
(WebCore::GraphicsContext::strokeThickness const):
(WebCore::GraphicsContext::setStrokeThickness):
(WebCore::GraphicsContext::strokeStyle const):
(WebCore::GraphicsContext::setStrokeStyle):
(WebCore::GraphicsContext::dropShadow const):
(WebCore::GraphicsContext::shadowOffset const):
(WebCore::GraphicsContext::shadowBlur const):
(WebCore::GraphicsContext::shadowColor const):
(WebCore::GraphicsContext::setDropShadow):
(WebCore::GraphicsContext::setShadow):
(WebCore::GraphicsContext::clearShadow):
(WebCore::GraphicsContext::hasVisibleShadow const):
(WebCore::GraphicsContext::hasBlurredShadow const):
(WebCore::GraphicsContext::hasShadow const):
(WebCore::GraphicsContext::compositeMode const):
(WebCore::GraphicsContext::compositeOperation const):
(WebCore::GraphicsContext::blendMode const):
(WebCore::GraphicsContext::setCompositeMode):
(WebCore::GraphicsContext::setCompositeOperation):
(WebCore::GraphicsContext::alpha const):
(WebCore::GraphicsContext::setAlpha):
(WebCore::GraphicsContext::textDrawingMode const):
(WebCore::GraphicsContext::setTextDrawingMode):
(WebCore::GraphicsContext::imageInterpolationQuality const):
(WebCore::GraphicsContext::setImageInterpolationQuality):
(WebCore::GraphicsContext::setShouldAntialias):
(WebCore::GraphicsContext::setShouldSmoothFonts):
(WebCore::GraphicsContext::setShouldSubpixelQuantizeFonts):
(WebCore::GraphicsContext::shadowsIgnoreTransforms const):
(WebCore::GraphicsContext::setShadowsIgnoreTransforms):
(WebCore::GraphicsContext::setDrawLuminanceMask):
(WebCore::GraphicsContext::setUseDarkAppearance):
(WebCore::GraphicsContext::blendModeOperation const): Deleted.

  • platform/graphics/GraphicsContextState.cpp:

(WebCore::GraphicsContextState::GraphicsContextState):
(WebCore::GraphicsContextState::hasOnlyPrimitiveChanges const):
(WebCore::GraphicsContextState::mergeChanges):
(WebCore::GraphicsContextState::didBeginTransparencyLayer):
(WebCore::GraphicsContextState::didEndTransparencyLayer):
(WebCore::stateChangeName):
(WebCore::GraphicsContextState::dump const):
(WebCore::operator<<):
(WebCore::GraphicsContextStateChange::changesFromState const): Deleted.
(WebCore::GraphicsContextStateChange::accumulate): Deleted.
(WebCore::GraphicsContextStateChange::apply const): Deleted.
(WebCore::GraphicsContextStateChange::dump const): Deleted.

  • platform/graphics/GraphicsContextState.h:

(WebCore::GraphicsContextState::GraphicsContextState):
(WebCore::GraphicsContextState::changes const):
(WebCore::GraphicsContextState::didApplyChanges):
(WebCore::GraphicsContextState::setFillBrush):
(WebCore::GraphicsContextState::setFillColor):
(WebCore::GraphicsContextState::setFillGradient):
(WebCore::GraphicsContextState::setFillPattern):
(WebCore::GraphicsContextState::setFillRule):
(WebCore::GraphicsContextState::setStrokeBrush):
(WebCore::GraphicsContextState::setStrokeColor):
(WebCore::GraphicsContextState::setStrokeGradient):
(WebCore::GraphicsContextState::setStrokePattern):
(WebCore::GraphicsContextState::setStrokeThickness):
(WebCore::GraphicsContextState::setStrokeStyle):
(WebCore::GraphicsContextState::setCompositeMode):
(WebCore::GraphicsContextState::setDropShadow):
(WebCore::GraphicsContextState::setAlpha):
(WebCore::GraphicsContextState::setImageInterpolationQuality):
(WebCore::GraphicsContextState::setTextDrawingMode):
(WebCore::GraphicsContextState::setShouldAntialias):
(WebCore::GraphicsContextState::setShouldSmoothFonts):
(WebCore::GraphicsContextState::setShouldSubpixelQuantizeFonts):
(WebCore::GraphicsContextState::setShadowsIgnoreTransforms):
(WebCore::GraphicsContextState::setDrawLuminanceMask):
(WebCore::GraphicsContextState::setUseDarkAppearance):
(WebCore::GraphicsContextState::setProperty):
(WebCore::GraphicsContextState::encode const):
(WebCore::GraphicsContextState::decode):
(WebCore::GraphicsContextStateChange::GraphicsContextStateChange): Deleted.

  • platform/graphics/GraphicsTypes.cpp:

(WebCore::operator<<):

  • platform/graphics/GraphicsTypes.h:

(WebCore::CompositeMode::operator==):
(WebCore::CompositeMode::encode const):
(WebCore::CompositeMode::decode):
(WebCore::DropShadow::isVisible const):
(WebCore::DropShadow::isBlurred const):
(WebCore::DropShadow::hasOutsets const):
(WebCore::operator==):
(WebCore::DropShadow::encode const):
(WebCore::DropShadow::decode):

  • platform/graphics/NullGraphicsContext.h:
  • platform/graphics/ShadowBlur.cpp:

(WebCore::ShadowBlur::ShadowBlur):

  • platform/graphics/ShadowBlur.h:
  • platform/graphics/SourceBrush.cpp: Added.

(WebCore::SourceBrush::SourceBrush):
(WebCore::SourceBrush::gradientSpaceTransform const):
(WebCore::SourceBrush::gradient const):
(WebCore::SourceBrush::pattern const):
(WebCore::SourceBrush::setGradient):
(WebCore::SourceBrush::setPattern):
(WebCore::operator<<):

  • platform/graphics/SourceBrush.h: Added.

(WebCore::SourceBrush::color const):
(WebCore::SourceBrush::setColor):
(WebCore::SourceBrush::brush const):
(WebCore::SourceBrush::setGradient):
(WebCore::SourceBrush::isPrimitive const):
(WebCore::operator==):
(WebCore::SourceBrush::Brush::LogicalGradient::encode const):
(WebCore::SourceBrush::Brush::LogicalGradient::decode):
(WebCore::SourceBrush::Brush::encode const):
(WebCore::SourceBrush::Brush::decode):
(WebCore::SourceBrush::encode const):
(WebCore::SourceBrush::decode):

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::FillSource::FillSource):
(WebCore::Cairo::StrokeSource::StrokeSource):
(WebCore::Cairo::ShadowState::ShadowState):

  • platform/graphics/cairo/FontCairo.cpp:

(WebCore::FontCascade::drawGlyphs):

  • platform/graphics/cairo/GradientCairo.cpp:

(WebCore::Gradient::fill):

  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContextCairo::drawRect):
(WebCore::GraphicsContextCairo::drawLine):
(WebCore::GraphicsContextCairo::drawEllipse):
(WebCore::GraphicsContextCairo::fillRect):
(WebCore::GraphicsContextCairo::drawLinesForText):
(WebCore::GraphicsContextCairo::didUpdateState):
(WebCore::GraphicsContextCairo::drawGlyphs):

  • platform/graphics/cairo/GraphicsContextCairo.h:
  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContextCG::GraphicsContextCG):
(WebCore::GraphicsContextCG::drawNativeImage):
(WebCore::GraphicsContextCG::applyStrokePattern):
(WebCore::GraphicsContextCG::applyFillPattern):
(WebCore::calculateDrawingMode):
(WebCore::GraphicsContextCG::drawPath):
(WebCore::GraphicsContextCG::fillPath):
(WebCore::GraphicsContextCG::strokePath):
(WebCore::GraphicsContextCG::fillRect):
(WebCore::GraphicsContextCG::fillRoundedRectImpl):
(WebCore::GraphicsContextCG::fillRectWithRoundedHole):
(WebCore::GraphicsContextCG::beginTransparencyLayer):
(WebCore::applyShadowOffsetWorkaroundIfNeeded):
(WebCore::setCGShadow):
(WebCore::GraphicsContextCG::didUpdateState):
(WebCore::GraphicsContextCG::strokeRect):
(WebCore::GraphicsContextCG::fillEllipse):
(WebCore::GraphicsContextCG::strokeEllipse):

  • platform/graphics/cg/GraphicsContextCG.h:
  • platform/graphics/coretext/DrawGlyphsRecorderCoreText.cpp:

(WebCore::DrawGlyphsRecorder::populateInternalState):
(WebCore::DrawGlyphsRecorder::populateInternalContext):
(WebCore::DrawGlyphsRecorder::concludeInternalContext):
(WebCore::DrawGlyphsRecorder::updateFillBrush):
(WebCore::DrawGlyphsRecorder::updateStrokeBrush):
(WebCore::DrawGlyphsRecorder::updateCTM):
(WebCore::DrawGlyphsRecorder::updateShadow):
(WebCore::DrawGlyphsRecorder::recordDrawGlyphs):
(WebCore::DrawGlyphsRecorder::updateFillColor): Deleted.
(WebCore::DrawGlyphsRecorder::updateStrokeColor): Deleted.
(WebCore::shadowIsCleared): Deleted.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::shouldDumpForFlags):

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::SetState::SetState):
(WebCore::DisplayList::SetState::apply):
(WebCore::DisplayList::operator<<):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::SetState::state const):
(WebCore::DisplayList::SetState::encode const):
(WebCore::DisplayList::SetState::decode):
(WebCore::DisplayList::SetState::stateChange const): Deleted.
(WebCore::DisplayList::SetState::stateChange): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::appendStateChangeItem):
(WebCore::DisplayList::Recorder::appendStateChangeItemIfNecessary):
(WebCore::DisplayList::Recorder::state const):
(WebCore::DisplayList::Recorder::didUpdateState):
(WebCore::DisplayList::Recorder::save):
(WebCore::DisplayList::Recorder::restore):
(WebCore::DisplayList::Recorder::beginTransparencyLayer):
(WebCore::DisplayList::Recorder::endTransparencyLayer):
(WebCore::DisplayList::containsOnlyInlineStateChanges): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::ContextState::ContextState):
(WebCore::DisplayList::Recorder::ContextState::cloneForTransparencyLayer const):
(WebCore::DisplayList::Recorder::ContextState::cloneForSave const): Deleted.

  • platform/graphics/displaylists/DisplayListRecorderImpl.cpp:

(WebCore::DisplayList::RecorderImpl::recordSetState):

  • platform/graphics/displaylists/DisplayListRecorderImpl.h:
  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::applySetStateItem):

  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:

(Nicosia::CairoOperationRecorder::didUpdateState):
(Nicosia::CairoOperationRecorder::fillRect):
(Nicosia::CairoOperationRecorder::fillRoundedRect):
(Nicosia::CairoOperationRecorder::drawGlyphs):
(Nicosia::CairoOperationRecorder::drawRect):
(Nicosia::CairoOperationRecorder::drawLine):
(Nicosia::CairoOperationRecorder::drawLinesForText):
(Nicosia::CairoOperationRecorder::drawEllipse):

  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h:
  • rendering/svg/RenderSVGPath.cpp:

(WebCore::useStrokeStyleToFill):

Source/WebKit:

  • GPUProcess/graphics/RemoteDisplayListRecorder.cpp:

(WebKit::RemoteDisplayListRecorder::setState):

  • WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:

(WebKit::RemoteDisplayListRecorderProxy::recordSetState):

  • WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/cg/GraphicsContextTestsCG.cpp:

(TestWebKitAPI::TEST):

LayoutTests:

  • displaylists/extent-includes-shadow-expected.txt:
  • displaylists/extent-includes-transforms-expected.txt:
  • displaylists/layer-dispay-list-expected.txt:
  • gpu-process/TestExpectations:
9:26 PM Changeset in webkit [291603] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] Change Date.parse to stop returning numbers with fractional part
​https://bugs.webkit.org/show_bug.cgi?id=238050

Reviewed by Saam Barati.

JSTests:

  • stress/date-parse-timeclip.js: Added.

(shouldBe):

Source/JavaScriptCore:

Date.parse should return NaN or integer numbers[1,2]. This patch applies timeClip
to the result of Date.parse to ensure that the returned value is time value.

[1]: ​https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.parse
[2]: ​https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-time-values-and-time-range

  • runtime/DateConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

8:54 PM Changeset in webkit [291602] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix bug in Relationship::mergeImpl
​https://bugs.webkit.org/show_bug.cgi?id=238183
<rdar://89822922>

Reviewed by Yusuke Suzuki.

  • dfg/DFGIntegerRangeOptimizationPhase.cpp:
8:52 PM Changeset in webkit [291601] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

AirFixObviousSpills needs to consider a PreIndex and PostIndex as clobbering the Reg used for indexing
​https://bugs.webkit.org/show_bug.cgi?id=238178
<rdar://87345895>

Reviewed by Mark Lam.

Inside AirFixObviousSpills, we run a basic alias analysis for StackSlots and
registers. For example, when we overwrite a register, we clear anything
it's aliased with. However, the way we were doing this was by looking at
each Arg that was Defd. However, this iteration was missing that
PostIndex/PreIndex mutate the register that feeds into the address Arg.
This patch fixes the issue by walking the instruction in such a way that
we visit all the Defs we care about, both Regs and StackSlots.

  • b3/air/AirFixObviousSpills.cpp:
8:49 PM Changeset in webkit [291600] by Tyler Wilcock
  • 12 edits
    3 copies
    1 move
    8 adds
    2 deletes in trunk

AX: AccessibilityObject::visibleCharacterRange is extremely slow when called on objects with lots of text
​https://bugs.webkit.org/show_bug.cgi?id=237678

Reviewed by Andres Gonzalez.

Source/WebCore:

AccessibilityObject::visibleCharacterRange is extremely slow when
called on objects with lots of text. For example, trying to enter a
large contenteditable element with VoiceOver causes "Safari not
responding" because WebKit is so slow to return this data.

This patch fixes this in two ways. First, we optimize computation of
the end boundary point by grabbing previous line start positions in
batches and binary searching within each batch to find the correct
value.

I tried to apply this algorithm to the computation of the start
boundary, but that regressed performance for small and medium text
objects, and didn't yield any noticeable improvement for large text
objects. Keeping start boundary computation as-is while changing the
end boundary computation provided the best performance at all text
sizes.

Second, this patch caches visibleCharacterRange results, as the same
inputs to this function will always yield the same output. It's common
for this data to be requested multiple times without any change in
page state (e.g. scrolling), so caching further improves performance
by a lot.

Additional testcases added to accessibility/visible-character-range.html to
ensure behavior is correct.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::previousLineStartBoundaryPoints const): Added.
(WebCore::AccessibilityObject::lastBoundaryPointContainedInRect const): Added.
(WebCore::AccessibilityObject::boundaryPointsContainedInRect const): Added.
(WebCore::AccessibilityObject::visibleCharacterRange const):
Wraps visibleCharacterRangeInternal to handle caching.
(WebCore::AccessibilityObject::visibleCharacterRangeInternal const):
(WebCore::AccessibilityObject::previousLineStartPositionInternal const): Added.
(WebCore::AccessibilityObject::previousLineStartPosition const):
Wraps previousLineStartPositionInternal to return default
VisualPosition if it returns std::nullopt (existing callers expect this behavior)

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::lastBoundaryPointContainedInRect const): Added.

  • dom/BoundaryPoint.cpp:

(WebCore::operator<<):

  • dom/BoundaryPoint.h:

Added implementation of operator<< to make debugging boundary points easier.

LayoutTests:

Add many new visible character range testcases split across four new tests.

  • accessibility/visible-character-range-basic.html: Added.
  • accessibility/visible-character-range-height-changes.html: Added.
  • accessibility/visible-character-range-scrolling.html: Added.
  • accessibility/visible-character-range-width-changes.html: Added.
  • platform/glib/TestExpectations: Skip new tests.
  • platform/ios-simulator-wk2/TestExpectations:

Mark new tests as crashing since the old test was crashing in main.

  • platform/ios/TestExpectations: Enable new tests.
  • platform/ios/accessibility/visible-character-range-basic-expected.txt: Added.
  • platform/ios/accessibility/visible-character-range-expected.txt: Removed.
  • platform/ios/accessibility/visible-character-range-height-changes-expected.txt: Added.
  • platform/ios/accessibility/visible-character-range-scrolling-expected.txt: Added.
  • platform/ios/accessibility/visible-character-range-width-changes-expected.txt: Added.
  • platform/mac-wk1/TestExpectations: Skip new tests.
  • platform/mac/accessibility/visible-character-range-basic-expected.txt: Added.
  • platform/mac/accessibility/visible-character-range-expected.txt: Removed.
  • platform/mac/accessibility/visible-character-range-height-changes-expected.txt: Added.
  • platform/mac/accessibility/visible-character-range-scrolling-expected.txt: Added.
  • platform/mac/accessibility/visible-character-range-width-changes-expected.txt: Added.
  • platform/win/TestExpectations: Skip new tests.
  • resources/accessibility-helper.js:

(visibleRange): Added.

8:33 PM Changeset in webkit [291599] by Simon Fraser
  • 9 edits in trunk/Source/WebKit

Do all RemoteLayerBackingStore buffer swapping in one batch
​https://bugs.webkit.org/show_bug.cgi?id=238161

Reviewed by Tim Horton.

Previously, RemoteLayerBackingStore buffer swapping happened per-layer in
PlatformCALayerRemote::recursiveBuildTransaction().

To prepare for a single IPC for all buffer swapping, batch all the swapping under
prepareBackingStoresForDisplay() which is called from
RemoteLayerTreeContext::buildTransaction().

RemoteLayerBackingStoreCollection tracks m_backingStoresNeedingDisplay, and
RemoteLayerBackingStore implements needsDisplay() so we only add backing stores to this hash
set that need any buffer swapping.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::layerWillBeDisplayed):
(WebKit::RemoteLayerBackingStore::needsDisplay const):
(WebKit::RemoteLayerBackingStore::prepareToDisplay):
(WebKit::RemoteLayerBackingStore::paintContents):
(WebKit::RemoteLayerBackingStore::takePendingFlushers):

  • Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:

(WebKit::RemoteLayerBackingStoreCollection::backingStoreNeedsDisplay):
(WebKit::RemoteLayerBackingStoreCollection::prepareBackingStoresForDisplay):
(WebKit::RemoteLayerBackingStoreCollection::paintReachableBackingStoreContents):
(WebKit::RemoteLayerBackingStoreCollection::willFlushLayers):
(WebKit::RemoteLayerBackingStoreCollection::backingStoreWillBeDisplayed):

  • Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.h:
  • Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm:

(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::backingStoreNeedsDisplay):
(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::prepareBackingStoreBuffers):

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::recursiveBuildTransaction):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:

(WebKit::RemoteLayerTreeContext::buildTransaction):

8:28 PM Changeset in webkit [291598] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit

Adjust when _setPrivacyProxyFailClosedForUnreachableNonMainHosts is called
​https://bugs.webkit.org/show_bug.cgi?id=237735

Reviewed by Geoff Garen.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
(WebKit::NetworkSessionCocoa::createWebSocketTask):

8:22 PM Changeset in webkit [291597] by commit-queue@webkit.org
  • 28 edits
    1 delete in trunk

Implement CSSNumericValue.mul, div, add, sub, max, and min
​https://bugs.webkit.org/show_bug.cgi?id=238153

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-21
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/arithmetic.tentative-expected.txt:

Source/WebCore:

This implements all except the derived units of multiplication and the unit checking of the others.
They are an off-by-default experimental feature right now, part of css-typed-om which is being implemented.
They are covered by wpt tests.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSCSSStyleValueCustom.cpp:

(WebCore::toJSNewlyCreated):

  • css/typedom/CSSKeywordValue.h:

(WebCore::CSSKeywordValue::value const): Deleted.
(WebCore::CSSKeywordValue::CSSKeywordValue): Deleted.

  • css/typedom/CSSNumericValue.cpp:

(WebCore::negate):
(WebCore::invert):
(WebCore::operationOnValuesOfSameUnit):
(WebCore::CSSNumericValue::prependItemsOfTypeOrThis):
(WebCore::CSSNumericValue::addInternal):
(WebCore::CSSNumericValue::add):
(WebCore::CSSNumericValue::sub):
(WebCore::CSSNumericValue::multiplyInternal):
(WebCore::CSSNumericValue::mul):
(WebCore::CSSNumericValue::div):
(WebCore::CSSNumericValue::min):
(WebCore::CSSNumericValue::max):
(WebCore::CSSNumericValue::rectifyNumberish):
(WebCore::CSSNumericValue::toSum):

  • css/typedom/CSSNumericValue.h:

(isType):

  • css/typedom/CSSStyleValue.h:

(WebCore::isCSSNumericValue):
(WebCore::isCSSMathValue):

  • css/typedom/CSSUnitValue.h:

(isType):

  • css/typedom/numeric/CSSMathInvert.cpp:

(WebCore::CSSMathInvert::CSSMathInvert):

  • css/typedom/numeric/CSSMathInvert.h:

(isType):
(WebCore::CSSMathInvert::value const): Deleted.

  • css/typedom/numeric/CSSMathMax.cpp:

(WebCore::CSSMathMax::CSSMathMax):
(WebCore::CSSMathMax::create): Deleted.

  • css/typedom/numeric/CSSMathMax.h:

(isType):

  • css/typedom/numeric/CSSMathMin.cpp:

(WebCore::CSSMathMin::CSSMathMin):
(WebCore::CSSMathMin::create): Deleted.

  • css/typedom/numeric/CSSMathMin.h:

(isType):

  • css/typedom/numeric/CSSMathNegate.cpp:

(WebCore::CSSMathNegate::CSSMathNegate):
(WebCore::CSSMathNegate::create): Deleted.

  • css/typedom/numeric/CSSMathNegate.h:

(isType):
(WebCore::CSSMathNegate::value const): Deleted.

  • css/typedom/numeric/CSSMathProduct.cpp:

(WebCore::CSSMathProduct::CSSMathProduct):
(WebCore::CSSMathProduct::create): Deleted.

  • css/typedom/numeric/CSSMathProduct.h:

(isType):

  • css/typedom/numeric/CSSMathSum.cpp:

(WebCore::CSSMathSum::CSSMathSum):
(WebCore::CSSMathSum::create): Deleted.
(WebCore::CSSMathSum::values const): Deleted.

  • css/typedom/numeric/CSSMathSum.h:

(isType):

  • css/typedom/numeric/CSSMathValue.cpp: Removed.
  • css/typedom/numeric/CSSMathValue.h:

(WebCore::CSSMathValue::getOperator const): Deleted.
(): Deleted.
(isType): Deleted.

  • css/typedom/numeric/CSSNumericArray.cpp:

(WebCore::CSSNumericArray::create):
(WebCore::CSSNumericArray::CSSNumericArray):

  • css/typedom/numeric/CSSNumericArray.h:

(WebCore::CSSNumericArray::array const):

  • css/typedom/numeric/CSSNumericType.h:
  • css/typedom/transform/CSSTransformValue.h:

(WebCore::CSSTransformValue::length const): Deleted.

7:09 PM Changeset in webkit [291596] by Russell Epstein
  • 1 edit in branches/safari-614.1.6-branch/Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h

Unreviewed logging change. rdar://90517607

6:38 PM Changeset in webkit [291595] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[ iOS iPhone 12 ] fast/hidpi & fast/layers/hidpi tests are flaky text/image failing
​https://bugs.webkit.org/show_bug.cgi?id=232384

Unreviewed test gardening.

  • platform/ios/TestExpectations:
6:35 PM Changeset in webkit [291594] by Oriol Brufau
  • 6 edits
    2 adds in trunk

[css-cascade] Let revert-layer roll back to preshints
​https://bugs.webkit.org/show_bug.cgi?id=237532

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Add test.

  • web-platform-tests/css/css-cascade/presentational-hints-rollback-expected.txt: Added.
  • web-platform-tests/css/css-cascade/presentational-hints-rollback.html: Added.

Source/WebCore:

The patch makes presentational hints use a cascade layer priority of 0.
The priority of the lowest layer is then increased to 1.
This allows 'revert-layer' in author origin revert to the presentational
hints origin, which is between user origin and author origin.

Test: imported/w3c/web-platform-tests/css/css-cascade/presentational-hints-rollback.html

  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::addElementStyleProperties):
(WebCore::Style::ElementRuleCollector::matchAllRules):
(WebCore::Style::ElementRuleCollector::addElementInlineStyleProperties):

  • style/ElementRuleCollector.h:
  • style/RuleSetBuilder.cpp:

(WebCore::Style::RuleSetBuilder::updateCascadeLayerPriorities):

6:19 PM Changeset in webkit [291593] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebGPU

[WebGPU] maxAnisotropy > 16 is clamped, rather than illegal
​https://bugs.webkit.org/show_bug.cgi?id=238063

Reviewed by Kimmo Kinnunen.

See ​https://github.com/gpuweb/gpuweb/issues/696#issuecomment-644343897

Let's add a maxAnisotropy value to samplers, and a maxAnisotropy limit(? query?) (likely only
ever 16 or 1), but not to validate that the former is less than the latter.

Test: api/operation/sampling/anisotropy.spec.ts

  • WebGPU/Sampler.mm:

(WebGPU::validateCreateSampler):
(WebGPU::Device::createSampler):

5:43 PM Changeset in webkit [291592] by Robert Jenner
  • 2 edits in trunk/LayoutTests

REGRESSION: [ Monterey ] imported/w3c/web-platform-tests/html/canvas/element/line-styles/2d.line.width.scaledefault.html is a constant text failure
<rdar://problem/77527575?

Unreviewed test gardening.

  • platform/mac/TestExpectations: Removing no longer needed test expectation.
5:22 PM Changeset in webkit [291591] by Aditya Keerthi
  • 2 edits in trunk/Source/WebKit

Unreviewed, address post-landing feedback on r291445

  • UIProcess/ios/WKPDFView.mm:

(-[WKPDFView compareFoundRange:toRange:inDocument:]):

Subtraction to determine ordering is an anti-pattern, due to the
possibility of overflow. Use comparison operators.

5:17 PM Changeset in webkit [291590] by Russell Epstein
  • 9 edits in branches/safari-613-branch/Source

Versioning.

WebKit-7613.2.4

4:46 PM Changeset in webkit [291589] by Chris Dumez
  • 19 edits
    3 adds in trunk

LayoutTests/imported/w3c:
BroadcastChannel instances in distinct opaque origins can communicate
​https://bugs.webkit.org/show_bug.cgi?id=238090
<rdar://problem/90511155>

Reviewed by Alex Christensen.

Import web-platform-tests test coverage.

  • web-platform-tests/webmessaging/broadcastchannel/opaque-origin-expected.txt: Added.
  • web-platform-tests/webmessaging/broadcastchannel/opaque-origin.html: Added.
  • web-platform-tests/webmessaging/broadcastchannel/w3c-import.log:

Source/WebCore:
BroadcastChannel instances in distinct opaque origins can communicate
​https://bugs.webkit.org/show_bug.cgi?id=238090
<rdar://problem/90511155>

Reviewed by Alex Christensen.

The issue is that we would use a ClientOrigin to distinguish origins for BroadcastChannel,
which relies on SecurityOriginData internally. A unique/opaque SecurityOrigin becomes an empty
SecurityOriginData upon conversion. As a result, when comparing ClientOrigin objects from
unique SecurityOrigins, they would compare as equal.

To address the issue, I introduced a new PartitionedSecurityOrigin type which is similar
to ClientOrigin but stores SecurityOrigin objects internally, instead of SecurityOriginData
objects. PartitionedSecurityOrigin's operator==() is such that different SecurityOrigins
would not be equal but the same unique SecurityOrigin would be. I then used this new
PartitionedSecurityOrigin type as key in our HashMap on the WebProcess side instead of
ClientOrigin. This allows communication between several BroadcastChannels from the same
unique origin, while preventing communication between distinct opaque origins.

When the PartitionedSecurityOrigin contains an opaque security origin, we don't involve
the Network Process at all since the destination can only be in the same WebProcess.

Test: imported/w3c/web-platform-tests/webmessaging/broadcastchannel/opaque-origin.html

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/BroadcastChannel.cpp:

(WebCore::shouldPartitionOrigin):
(WebCore::BroadcastChannel::MainThreadBridge::registerChannel):
(WebCore::BroadcastChannel::MainThreadBridge::unregisterChannel):
(WebCore::BroadcastChannel::MainThreadBridge::postMessage):

  • dom/BroadcastChannelRegistry.h:
  • loader/EmptyClients.cpp:
  • page/PartitionedSecurityOrigin.h: Added.

(WebCore::PartitionedSecurityOrigin::PartitionedSecurityOrigin):
(WebCore::PartitionedSecurityOrigin::isHashTableDeletedValue const):
(WebCore::PartitionedSecurityOrigin::isHashTableEmptyValue const):
(WebCore::operator==):
(WTF::add):
(WTF::PartitionedSecurityOriginHash::hash):
(WTF::PartitionedSecurityOriginHash::equal):
(WTF::HashTraits<WebCore::PartitionedSecurityOrigin>::emptyValue):
(WTF::HashTraits<WebCore::PartitionedSecurityOrigin>::constructEmptyValue):
(WTF::HashTraits<WebCore::PartitionedSecurityOrigin>::isEmptyValue):
(WTF::HashTraits<WebCore::PartitionedSecurityOrigin>::peek):
(WTF::HashTraits<WebCore::PartitionedSecurityOrigin>::take):

Source/WebKit:
BroadcastChannel instances in distinct opaque origins can communicate
​https://bugs.webkit.org/show_bug.cgi?id=238090
<rdar://problem/90511155>

Reviewed by Alex Christensen.

The issue is that we would use a ClientOrigin to distinguish origins for BroadcastChannel,
which relies on SecurityOriginData internally. A unique/opaque SecurityOrigin becomes an empty
SecurityOriginData upon conversion. As a result, when comparing ClientOrigin objects from
unique SecurityOrigins, they would compare as equal.

To address the issue, I introduced a new PartitionedSecurityOrigin type which is similar
to ClientOrigin but stores SecurityOrigin objects internally, instead of SecurityOriginData
objects. PartitionedSecurityOrigin's operator==() is such that different SecurityOrigins
would not be equal but the same unique SecurityOrigin would be. I then used this new
PartitionedSecurityOrigin type as key in our HashMap on the WebProcess side instead of
ClientOrigin. This allows communication between several BroadcastChannels from the same
unique origin, while preventing communication between distinct opaque origins.

When the PartitionedSecurityOrigin contains an opaque security origin, we don't involve
the Network Process at all since the destination can only be in the same WebProcess.

  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.cpp:

(WebKit::toClientOrigin):
(WebKit::WebBroadcastChannelRegistry::registerChannel):
(WebKit::WebBroadcastChannelRegistry::unregisterChannel):
(WebKit::WebBroadcastChannelRegistry::postMessage):
(WebKit::WebBroadcastChannelRegistry::postMessageLocally):
(WebKit::WebBroadcastChannelRegistry::postMessageToRemote):
(WebKit::WebBroadcastChannelRegistry::networkProcessCrashed):

  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.h:

Source/WebKitLegacy:
Dust off Mac CMake build
​https://bugs.webkit.org/show_bug.cgi?id=238121

Reviewed by Yusuke Suzuki.

  • PlatformMac.cmake:
4:39 PM Changeset in webkit [291588] by Kate Cheney
  • 7 edits
    2 adds in trunk

nj.gov: Background color incorrect for 'State Vehicles' section
​https://bugs.webkit.org/show_bug.cgi?id=238035
<rdar://problem/84543795>

Reviewed by Aditya Keerthi.

Source/WebCore:

Test: fast/css/non-form-control-element-drop-appearance.html

Update RenderTheme::adjustStyle to drop appearance for non-form
control elements when they are styled by the author.

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::adjustAppearanceForElement const):
(WebCore::RenderTheme::adjustStyle):
(WebCore::RenderTheme::isControlStyled const):

  • rendering/RenderTheme.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::borderAndBackgroundEqual const):

  • rendering/style/RenderStyle.h:

LayoutTests:

  • fast/css/non-form-control-element-drop-appearance-expected.html: Added.
  • fast/css/non-form-control-element-drop-appearance.html: Added.
  • editing/deleting/insert-in-orphaned-selection-crash.html: Added.

Now that we drop native style for non-form control elements, we need to
add height to the style to make sure this table element is selectable and
successfully tests what it needs to test.

4:36 PM Changeset in webkit [291587] by commit-queue@webkit.org
  • 4 edits in trunk

Unreviewed, reverting r291055.
​https://bugs.webkit.org/show_bug.cgi?id=238145

Invalid test expectations

Reverted changeset:

"[iOS] Hard link AVPictureInPictureController"
​https://bugs.webkit.org/show_bug.cgi?id=237227
​https://commits.webkit.org/r291055

3:44 PM Changeset in webkit [291586] by Russell Epstein
  • 2 edits in branches/safari-614.1.7-branch/Source/WebKit

Cherry-pick r291563. rdar://problem/90448244

Sandbox: Remove telemetry in Network Process sandbox macOS
​https://bugs.webkit.org/show_bug.cgi?id=238041

Patch by Adam Mazander <​mazander@apple.com> on 2022-03-21
Reviewed by Brent Fulgham.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291563 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:14 PM Changeset in webkit [291585] by Matteo Flores
  • 1 edit in trunk/LayoutTests/ChangeLog

REGRESSION(r290797-r290793): [ iOS Debug ] 4 editing/selection/* tests are constant timeouts
​https://bugs.webkit.org/show_bug.cgi?id=238155

Unreviewed test gardening.

  • platform/ios/TestExpectations:
3:14 PM Changeset in webkit [291584] by Matteo Flores
  • 1 edit in trunk/LayoutTests/platform/ios/TestExpectations

Need a short description (OOPS!).
Need the bug URL (OOPS!).

Reviewed by NOBODY (OOPS!).

  • platform/ios/TestExpectations:
2:44 PM Changeset in webkit [291583] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.9.2

Tag Safari-614.1.5.9.2.

2:42 PM Changeset in webkit [291582] by Russell Epstein
  • 8 edits
    2 adds in branches/safari-614.1.7-branch/Source

Cherry-pick r291564. rdar://problem/90463946

Add an addition point for system background color
​https://bugs.webkit.org/show_bug.cgi?id=238108
<rdar://problem/90463946>

Reviewed by Aditya Keerthi.

Source/WebCore:

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/ios/WebCoreUIColorExtras.h: Added.
  • platform/ios/WebCoreUIColorExtras.mm: Added. (WebCore::systemBackgroundColor): Add an addition point.
  • rendering/RenderThemeIOS.mm: (WebCore::CSSValueSystemColorInformation::function): (WebCore::cssValueSystemColorInformationList): (WebCore::systemColorFromCSSValueSystemColorInformation): Adopt it for CSS use of system background color.

Source/WebKit:

  • UIProcess/API/ios/WKWebViewIOS.mm: (scrollViewBackgroundColor): Adopt systemBackgroundColor().
  • UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::contentViewBackgroundColor):
  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::platformUnderPageBackgroundColor const): Move the fallback to systemBackgroundColor into PageClientImpl so that it can realize the web view's trait collection.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291564 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:35 PM Changeset in webkit [291581] by Russell Epstein
  • 8 edits
    2 adds in branches/safari-614.1.5.9-branch/Source

Cherry-pick r291564. rdar://problem/90463946

Add an addition point for system background color
​https://bugs.webkit.org/show_bug.cgi?id=238108
<rdar://problem/90463946>

Reviewed by Aditya Keerthi.

Source/WebCore:

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/ios/WebCoreUIColorExtras.h: Added.
  • platform/ios/WebCoreUIColorExtras.mm: Added. (WebCore::systemBackgroundColor): Add an addition point.
  • rendering/RenderThemeIOS.mm: (WebCore::CSSValueSystemColorInformation::function): (WebCore::cssValueSystemColorInformationList): (WebCore::systemColorFromCSSValueSystemColorInformation): Adopt it for CSS use of system background color.

Source/WebKit:

  • UIProcess/API/ios/WKWebViewIOS.mm: (scrollViewBackgroundColor): Adopt systemBackgroundColor().
  • UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::contentViewBackgroundColor):
  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::platformUnderPageBackgroundColor const): Move the fallback to systemBackgroundColor into PageClientImpl so that it can realize the web view's trait collection.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291564 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:32 PM Changeset in webkit [291580] by Russell Epstein
  • 9 edits in branches/safari-614.1.5.9-branch/Source

Versioning.

WebKit-7614.1.5.9.2

2:23 PM Changeset in webkit [291579] by Brent Fulgham
  • 4 edits in trunk

Disable the <model> element in Captive Portal mode.
​https://bugs.webkit.org/show_bug.cgi?id=238148
<rdar://90562002>

Reviewed by Chris Dumez.

Source/WebKit:

When displaying content in a captive portal, we should make sure the experimental
<model> element is unavailable.

Tests: TestWebKitAPI

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::adjustSettingsForCaptivePortal): Added. Also turn off <model> support.
(WebKit::WebPage::updatePreferences): Call new helper function.

Tools:

Update tests to check <model> element.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
1:44 PM Changeset in webkit [291578] by mmaxfield@apple.com
  • 6 edits in trunk

[WebGPU] Set the WebGPU WKPreference to true in layout tests
​https://bugs.webkit.org/show_bug.cgi?id=238130

Reviewed by Sam Weinig.

Tools:

WebGPU isn't ready yet to show up in any Safari menus, so rather than just marking it as an experimental feature,
this patch just enables the preference in DumpRenderTree and WebKitTestRunner.

This doesn't require a linker change, because all of the WebGPU calls are already behind HAS(WEBGPU_IMPLEMENTATION).
Therefore, the immediate behavior change of this patch is that the IDL types are exposed in layout tests, but calling
WebGPU functions in layout tests will return undefined. When we finally link WebCore with WebGPU, then these
functions will automatically start working in layout tests. Outside of layout tests, the IDL types are still not
present, and so therefore the WebGPU functions cannot be called because they are not visible from script.

  • DumpRenderTree/TestOptions.cpp:

(WTR::TestOptions::defaults):

  • WebKitTestRunner/TestOptions.cpp:

(WTR::TestOptions::defaults):

LayoutTests:

  • platform/mac-wk1/fast/dom/navigator-detached-no-crash-expected.txt:
  • platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt:
12:57 PM Changeset in webkit [291577] by ysuzuki@apple.com
  • 4 edits
    1 add in trunk

[JSC] ReferenceError when using extra parens in class fields
​https://bugs.webkit.org/show_bug.cgi?id=236843

Reviewed by Saam Barati.

JSTests:

  • stress/class-field-initializer-should-have-variable-scope.js: Added.

(shouldBe):
(test1.const.a.x.B):
(test1):
(test2.const.a.x.B):
(test2):
(test3.B.prototype.b):
(test3.B):
(test3):

Source/JavaScriptCore:

class field initializer should create its own used-variables set
to capture used variables separately from the other variables since
it becomes independent CodeBlock internally later. The current code
was wrong since,

  1. Incorrectly using the current set of class-scope.
  2. Incorrectly marking only the last set while parseAssignmentExpression can create a new set inside it.
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseClass):

  • parser/Parser.h:

(JSC::Scope::markLastUsedVariablesSetAsCaptured):

12:42 PM Changeset in webkit [291576] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Unreviewed test gardening after 246673@main.

  • fast/viewport/watchos/viewport-adaptations-after-navigation-expected.txt:
  • fast/viewport/watchos/viewport-with-system-minimum-layout-margins.html:
12:21 PM Changeset in webkit [291575] by mmaxfield@apple.com
  • 2 edits
    1 copy
    1 add in trunk/Tools

[WebGPU] Add a build-webgpu script
​https://bugs.webkit.org/show_bug.cgi?id=238040

Reviewed by Saam Barati.

This patch adds a build-webgpu script by sharing code with the build-jsc script.
It moves almost all of the contents of the build-jsc script to a shared Perl module,
webkitperl/BuildSubproject.pm, and then has build-jsc and build-webgpu both call
into it to build the relevant projects.

  • Scripts/build-jsc:

(buildMyProject): Deleted.
(writeCongrats): Deleted.

  • Scripts/build-webgpu: Added.
  • Scripts/webkitperl/BuildSubproject.pm: Copied from Tools/Scripts/build-jsc.

(buildMyProject):
(writeCongrats):

12:16 PM Changeset in webkit [291574] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

[media-controls] scrubbing on iOS when inline does not work
​https://bugs.webkit.org/show_bug.cgi?id=238138
rdar://90046770

Reviewed by Dean Jackson.

This bug is simular to bug 238136. We cannot register pointer events on window on iOS.

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

(Slider.prototype._interactionEndTarget):

12:11 PM Changeset in webkit [291573] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[watchOS] Add required syscall
​https://bugs.webkit.org/show_bug.cgi?id=238117
<rdar://89964344>

Reviewed by Brent Fulgham.

Add rarely used syscall on watchOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
12:00 PM Changeset in webkit [291572] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

[media-controls] tap gesture recognizer sometimes fails to recognize on iOS
​https://bugs.webkit.org/show_bug.cgi?id=238136

Reviewed by Dean Jackson.

While on macOS it's fine to register pointer events handlers on the window object,
on iOS it may not be depending on the fullscreen state. However, it's always fine to
use the gesture recognizer's target on iOS, so let's default to that when touches
are supported.

  • Modules/modern-media-controls/gesture-recognizers/gesture-recognizer.js:

(GestureRecognizer.prototype.touchesBegan):
(GestureRecognizer.prototype.get _captureTarget):
(GestureRecognizer.prototype._removeTrackingListeners):

11:58 AM Changeset in webkit [291571] by mmaxfield@apple.com
  • 11 edits in trunk/Source/WebGPU

[WebGPU] Implement error reporting facilities
​https://bugs.webkit.org/show_bug.cgi?id=238131

Reviewed by Kimmo Kinnunen.

This patch implements the GPUDevice.pushErrorScope() and GPUDevice.popErrorScope() functions,
according to the spec.

Now that we can report errors, we should be just about able to pass our first CTS test.

  • CommandLinePlayground/main.swift:
  • WebGPU/Buffer.mm:

(WebGPU::Buffer::mapAsync):
(WebGPU::Buffer::unmap):

  • WebGPU/CommandEncoder.h:

(WebGPU::CommandEncoder::create):

  • WebGPU/CommandEncoder.mm:

(WebGPU::Device::createCommandEncoder):
(WebGPU::CommandEncoder::CommandEncoder):
(WebGPU::CommandEncoder::copyBufferToBuffer):
(WebGPU::CommandEncoder::clearBuffer):
(WebGPU::CommandEncoder::finish):

  • WebGPU/Device.h:
  • WebGPU/Device.mm:

(WebGPU::Device::currentErrorScope):
(WebGPU::Device::generateAValidationError):
(WebGPU::Device::validatePopErrorScope const):
(WebGPU::Device::popErrorScope):
(WebGPU::Device::pushErrorScope):
(WebGPU::Device::setUncapturedErrorCallback):

  • WebGPU/Queue.h:
  • WebGPU/Queue.mm:

(WebGPU::Queue::submit):

  • WebGPU/Sampler.h:

(WebGPU::Sampler::create):

  • WebGPU/Sampler.mm:

(WebGPU::Device::createSampler):
(WebGPU::Sampler::Sampler):

11:48 AM Changeset in webkit [291570] by Tyler Wilcock
  • 9 edits
    9 adds in trunk

AX: Include display: contents elements in the AX tree
​https://bugs.webkit.org/show_bug.cgi?id=237834

Reviewed by Chris Fleizach.

Source/WebCore:

Because display: contents intentionally prevents a render object from being
generated for the element it's applied to, we don't add it to the AX tree as
part of our normal render tree walk, making these elements inaccessible.

This patch includes these elements as part of the DOM walk that
addHiddenChildren (now renamed to addNodeOnlyChildren) already does.

Also, because display: contents moves the affected element's children up a
level in the render tree, this patch also special cases:

  1. AccessibilityRenderObject::parentObject and similar methods to return their display: contents parent instead of their render tree parent
  2. AccessibilityObject::insertChild to only insert display: contents children to their display: contents parent, rather than their render tree parent

Test: accessibility/display-contents-element-roles.html, accessibility/aria-hidden-display-contents-element.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::getOrCreate):
Allow creation of AX objects from display: contents Nodes.
Also, don't create an object for a renderer that is in the process of
being destroyed (prevents display-contents-element-roles.html from crashing in ITM)

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::displayContentsParent const):
(WebCore::AccessibilityObject::insertChild):
If an object has a display: contents parent, and that parent isn't
this, return early.

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::parentObjectIfExists const):
(WebCore::AccessibilityRenderObject::parentObject const):
(WebCore::AccessibilityRenderObject::parentObjectUnignored const):
If an object has a display: contents parent, return that instead of
its render tree parent.
(WebCore::AccessibilityRenderObject::addNodeOnlyChildren):
Renamed from addHiddenChildren.
(WebCore::AccessibilityRenderObject::addChildren):
Don't clear m_subtreeDirty until after all children have been added.
Necessary to make aria-hidden-display-contents-element.html pass, as
we were clearing this too early, causing display: contents subtrees to
not be updated after aria-hidden changes.
(WebCore::AccessibilityRenderObject::addHiddenChildren):
Renamed to addNodeOnlyChildren.

  • accessibility/AccessibilityRenderObject.h:

LayoutTests:

  • accessibility/aria-hidden-display-contents-element-expected.txt: Added.
  • accessibility/aria-hidden-display-contents-element.html: Added.
  • accessibility/display-contents-element-roles-expected.txt: Added.
  • accessibility/display-contents-element-roles.html: Added.
  • platform/glib/accessibility/aria-hidden-display-contents-element-expected.txt: Added.
  • platform/glib/accessibility/display-contents-element-roles-expected.txt: Added.
  • platform/ios/TestExpectations: Enable new tests.
  • platform/ios/accessibility/aria-hidden-display-contents-element-expected.txt: Added.
  • platform/ios/accessibility/display-contents-element-roles-expected.txt: Added.
  • platform/win/TestExpectations: Skip display-contents-element-roles.html.
  • platform/win/accessibility/aria-hidden-display-contents-element-expected.txt: Added.
11:01 AM Changeset in webkit [291569] by Russell Epstein
  • 2 edits in branches/safari-614.1.7-branch/Source/WebCore

Cherry-pick r291514. rdar://problem/90500863

[iOS] Fix more build breakage from r291361
​https://bugs.webkit.org/show_bug.cgi?id=238097
<rdar://problem/90505371>

Unreviewed build fix.

  • platform/ios/WebAVPlayerController.mm: Declare AVAssetTrack.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291514 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:00 AM Changeset in webkit [291568] by Oriol Brufau
  • 2 edits in trunk/Source/WebCore

[css-cascade] Don't defer applying text decoration properties
​https://bugs.webkit.org/show_bug.cgi?id=238126

Reviewed by Darin Adler.

shouldApplyPropertyInParseOrder() was returning true for these:

  • webkit-text-decoration
  • text-decoration-line
  • text-decoration-style
  • text-decoration-color
  • text-decoration-skip
  • text-decoration-skip-ink
  • text-underline-position
  • text-underline-offset
  • text-decoration-thickness
  • text-decoration

This was previously needed for text-decoration-line and text-decoration,
since they were implemented as longhands that shared a computed value.
But that's no longer the case, text-decoration became a shorthand in bug
237175.

AFAIK -webkit-text-decoration has always been a shorthand since it was
implemented in bug 92000, so having it in the list it's pointless,
only longhands matter. And text-decoration-skip became a shorthand in
bug 230244, so it's also pointless.

The other longhands seem unnecessary too, since they don't share a
computed style with other properties.

No test since there should be no observable change in behavior.

  • style/PropertyCascade.cpp:

(WebCore::Style::shouldApplyPropertyInParseOrder):

10:58 AM Changeset in webkit [291567] by youenn@apple.com
  • 4 edits in trunk/Source

Remove unneeded quotes in capture attribution string
​https://bugs.webkit.org/show_bug.cgi?id=238132
<rdar://88794701>

Reviewed by Eric Carlson.

Source/WebCore:

  • en.lproj/Localizable.strings:

Source/WebKit:

Quotes are unneeded and made it less clear to read.

  • GPUProcess/cocoa/GPUConnectionToWebProcessCocoa.mm:

(WebKit::GPUConnectionToWebProcess::setCaptureAttributionString):

10:53 AM Changeset in webkit [291566] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Accessing WebGL content crashes in macOS Recovery OS
​https://bugs.webkit.org/show_bug.cgi?id=238139

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-21
Reviewed by Antti Koivisto.

Add a quick fix trying to circumvent a Recovery OS crash.
Parts of this will be reverted once the true source is found.

  • platform/graphics/cocoa/GraphicsContextGLCocoa.mm:

(WebCore::platformSupportsMetal):

10:47 AM Changeset in webkit [291565] by Russell Epstein
  • 1 copy in branches/safari-614.1.7-branch

New branch.

10:44 AM Changeset in webkit [291564] by timothy_horton@apple.com
  • 8 edits
    2 adds in trunk/Source

Add an addition point for system background color
​https://bugs.webkit.org/show_bug.cgi?id=238108
<rdar://problem/90463946>

Reviewed by Aditya Keerthi.

Source/WebCore:

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/ios/WebCoreUIColorExtras.h: Added.
  • platform/ios/WebCoreUIColorExtras.mm: Added.

(WebCore::systemBackgroundColor):
Add an addition point.

  • rendering/RenderThemeIOS.mm:

(WebCore::CSSValueSystemColorInformation::function):
(WebCore::cssValueSystemColorInformationList):
(WebCore::systemColorFromCSSValueSystemColorInformation):
Adopt it for CSS use of system background color.

Source/WebKit:

  • UIProcess/API/ios/WKWebViewIOS.mm:

(scrollViewBackgroundColor):
Adopt systemBackgroundColor().

  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::contentViewBackgroundColor):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::platformUnderPageBackgroundColor const):
Move the fallback to systemBackgroundColor into PageClientImpl
so that it can realize the web view's trait collection.

10:37 AM Changeset in webkit [291563] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Sandbox: Remove telemetry in Network Process sandbox macOS
​https://bugs.webkit.org/show_bug.cgi?id=238041

Patch by Adam Mazander <​mazander@apple.com> on 2022-03-21
Reviewed by Brent Fulgham.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
10:20 AM Changeset in webkit [291562] by commit-queue@webkit.org
  • 18 edits in trunk/Source

Dust off Mac CMake build
​https://bugs.webkit.org/show_bug.cgi?id=238121

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-21
Reviewed by Yusuke Suzuki.

Source/bmalloc:

  • PlatformMac.cmake:

Source/ThirdParty/ANGLE:

  • GLESv2.cmake:
  • Metal.cmake:

Source/ThirdParty/libwebrtc:

  • CMakeLists.txt:
  • Source/third_party/libwebm/common/vp9_level_stats.h:

Source/WebCore:

  • CMakeLists.txt:
  • PlatformMac.cmake:
  • SourcesCocoa.txt:

Source/WebCore/PAL:

  • pal/PlatformMac.cmake:

Source/WebKit:

  • PlatformMac.cmake:

Source/WebKitLegacy:

  • PlatformMac.cmake:
10:15 AM Changeset in webkit [291561] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Null check style in Editor::applyParagraphStyle
​https://bugs.webkit.org/show_bug.cgi?id=238137

Patch by Rob Buis <​rbuis@igalia.com> on 2022-03-21
Reviewed by Wenson Hsieh.

Null check style in Editor::applyParagraphStyle.

  • editing/Editor.cpp:

(WebCore::Editor::applyParagraphStyle):

9:57 AM Changeset in webkit [291560] by Jonathan Bedard
  • 2 edits in trunk/Tools

[Merge-Queue] Support multiple reviewers names
​https://bugs.webkit.org/show_bug.cgi?id=238095
<rdar://problem/90503503>

Reviewed by Aakash Jain.

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

(ApplyPatch.start): Only apply the first reviewer name.
(ValidateCommiterAndReviewer.start): Support a list of reviewers.

Canonical link: ​https://commits.webkit.org/248662@main

9:29 AM Changeset in webkit [291559] by Jonathan Bedard
  • 9 edits
    3 deletes in trunk/Source

Unreviewed, reverting r291558.

Exceeded GitHub file size limit

Reverted changeset:

"Enable PGO when building for release and production"
​https://bugs.webkit.org/show_bug.cgi?id=238119
​https://commits.webkit.org/r291558

8:25 AM Changeset in webkit [291558] by Wenson Hsieh
  • 9 edits
    6 adds in trunk/Source

Enable PGO when building for release and production
​https://bugs.webkit.org/show_bug.cgi?id=238119
rdar://90182309

Reviewed by Saam Barati.

Source/JavaScriptCore:

See WebCore/ChangeLog for more details.

  • Configurations/Base.xcconfig:
  • Configurations/JavaScriptCore.xcconfig:
  • Profiling/JavaScriptCore.profdata: Added.

Source/WebCore:

Add LLVM profiles to the WebCore, JavaScriptCore and WebKit frameworks, collected by running certain benchmarks
on ARM macOS. We then use this data for release and production builds by specifying a -fprofile-instr-use in
OTHER_CPLUSPLUSFLAGS. Across various configurations of macOS and iOS, this is an ~8% speedup on Speedometer.


| subtest | ms | ms | b / a | pValue |


| Elm-TodoMVC |101.721667 |99.571667 |0.978864 | 0.000211 (significant) |
| VueJS-TodoMVC |18.643333 |17.196667 |0.922403 | 0.000000 (significant) |
| EmberJS-TodoMVC |108.763333 |103.306667 |0.949830 | 0.000000 (significant) |
| BackboneJS-TodoMVC |37.951667 |34.693333 |0.914145 | 0.000000 (significant) |
| Preact-TodoMVC |13.586667 |12.818333 |0.943449 | 0.053277 |
| AngularJS-TodoMVC |117.130000 |110.755000 |0.945573 | 0.000000 (significant) |
| Vanilla-ES2015-TodoMVC |58.950000 |52.716667 |0.894261 | 0.000000 (significant) |
| Inferno-TodoMVC |52.660000 |49.571667 |0.941353 | 0.000000 (significant) |
| Flight-TodoMVC |51.551667 |46.230000 |0.896770 | 0.000000 (significant) |
| Angular2-TypeScript-TodoMVC |35.753333 |33.698333 |0.942523 | 0.000000 (significant) |
| VanillaJS-TodoMVC |48.400000 |42.670000 |0.881612 | 0.000000 (significant) |
| jQuery-TodoMVC |218.346667 |200.051667 |0.916211 | 0.000000 (significant) |
| EmberJS-Debug-TodoMVC |304.171667 |291.903333 |0.959666 | 0.000000 (significant) |
| React-TodoMVC |75.475000 |72.761667 |0.964050 | 0.000008 (significant) |
| React-Redux-TodoMVC |126.448333 |120.458333 |0.952629 | 0.000000 (significant) |
| Vanilla-ES2015-Babel-Webpack-TodoMVC |55.643333 |49.665000 |0.892560 | 0.000000 (significant) |


a mean = 306.08529
b mean = 330.01548
pValue = 0.0000000000
(Bigger means are better.)
1.078 times better
Results ARE significant

  • Configurations/Base.xcconfig:

For now, we additionally ignore errors that arise if profiled symbols differ from built symbols; in the future,
we'll need to implement some kind of strategy to detect when enough symbols in the profile data no longer match
symbols that appear in the built binaries, such that it might begin to negate the performance benefit from PGO.

Note that while the profile data was collected on an ARM Mac, performance tests have shown the profile data to
largely generalize well to other architectures and platforms as well (i.e. macOS x86_64 and iOS arm64e). As
such, instead of limiting this profile to ARM macOS, we can just use it everywhere (and perhaps, add platform-
or architecture-specific profile data later, if needed).

  • Configurations/WebCore.xcconfig:
  • Profiling/WebCore.profdata: Added.

Source/WebKit:

See WebCore/ChangeLog for more details.

  • Configurations/Base.xcconfig:
  • Configurations/WebKit.xcconfig:
  • Profiling/WebKit.profdata: Added.
6:17 AM Changeset in webkit [291557] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.36.0

WebKitGTK 2.36.0

6:16 AM Changeset in webkit [291556] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.36

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.36.0 release

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.36.0.
2:27 AM Changeset in webkit [291555] by Ziran Sun
  • 7 edits in trunk

[selection] HTMLTextFormControlElement::subtreeHasChanged() shouldn't be called in setRangeText
​https://bugs.webkit.org/show_bug.cgi?id=237720

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Update test expectations as more sub-tests are now passing.

  • web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions-expected.txt:
  • web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText-expected.txt:

Source/WebCore:

We shouldn't call HTMLTextFormControlElement::subtreeHasChanged() in HTMLTextFormControlElement::setRangeText.
It has been removed in patch for bug 237641. This patch is to further remove unnecessary code.

This change refers and imports some of the changes in chromium CL at
​https://codereview.chromium.org/1577243002

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::setRangeText):

LayoutTests:

Update test expectation as the test is now passing.

  • fast/forms/setrangetext-expected.txt:
1:45 AM Changeset in webkit [291554] by Carlos Garcia Campos
  • 5 edits
    2 adds in releases/WebKitGTK/webkit-2.36

Merge r291552 - REGRESSION(r286955): Rendering Links during search: highlighting fails
​https://bugs.webkit.org/show_bug.cgi?id=237816

Reviewed by Simon Fraser.

Source/WebCore:

Since r286955 the same coalesced marked text loop is used for painting the foreground text in case of text with
decorations. StyledMarkedText::coalesceAdjacentWithEqualDecorations() doesn't take into account the text style,
so when selected foreground color is different we end up painting the whole decorated text with the same
foreground color for the selected and non-selected parts.

Test: fast/text/selection-with-text-decorations.html

  • rendering/StyledMarkedText.cpp:

(WebCore::StyledMarkedText::coalesceAdjacentWithEqualDecorations): Take into account the text styles too.

  • rendering/TextBoxPainter.cpp:

(WebCore::TextBoxPainter::paintForegroundAndDecorations): Do not call
StyledMarkedText::coalesceAdjacentWithEqualForeground() in case of text with decorations, since it's unused.

LayoutTests:

  • fast/text/selection-with-text-decorations-expected.html: Added.
  • fast/text/selection-with-text-decorations.html: Added.
  • platform/ios/TestExpectations:
1:45 AM Changeset in webkit [291553] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.36/Source/WebCore

Merge r291544 - REGRESSION(r289154) [GSTREAMER] webrtc/vp8-then-h264.html is crashing after SDK update to fdo 21.08 and Gstreamer 1.20
​https://bugs.webkit.org/show_bug.cgi?id=237872

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-20
Reviewed by Adrian Perez de Castro.

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoDecoderFactory.cpp:

(WebCore::VP8Decoder::Create): Fix typo in decoder factory test.

1:40 AM WebKitGTK/2.36.x edited by Carlos Garcia Campos
(diff)
1:35 AM Changeset in webkit [291552] by Carlos Garcia Campos
  • 5 edits
    2 adds in trunk

REGRESSION(r286955): Rendering Links during search: highlighting fails
​https://bugs.webkit.org/show_bug.cgi?id=237816

Reviewed by Simon Fraser.

Source/WebCore:

Since r286955 the same coalesced marked text loop is used for painting the foreground text in case of text with
decorations. StyledMarkedText::coalesceAdjacentWithEqualDecorations() doesn't take into account the text style,
so when selected foreground color is different we end up painting the whole decorated text with the same
foreground color for the selected and non-selected parts.

Test: fast/text/selection-with-text-decorations.html

  • rendering/StyledMarkedText.cpp:

(WebCore::StyledMarkedText::coalesceAdjacentWithEqualDecorations): Take into account the text styles too.

  • rendering/TextBoxPainter.cpp:

(WebCore::TextBoxPainter::paintForegroundAndDecorations): Do not call
StyledMarkedText::coalesceAdjacentWithEqualForeground() in case of text with decorations, since it's unused.

LayoutTests:

  • fast/text/selection-with-text-decorations-expected.html: Added.
  • fast/text/selection-with-text-decorations.html: Added.
  • platform/ios/TestExpectations:
12:41 AM Changeset in webkit [291551] by Diego Pino Garcia
  • 2 edits in trunk/Tools

Unreviewed, fix Debian Stable build after r291543

  • TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp:

(elementSize): Replace RELEASE_ASSERT_NOT_REACHED() for RELEASE_ASSERT_NOT_REACHED_UNDER_CONSTEXPR_CONTEXT().

12:14 AM Changeset in webkit [291550] by youenn@apple.com
  • 19 edits in trunk/Source

Remove use of MediaSampleAVFObjC from WebRTC pipelines
​https://bugs.webkit.org/show_bug.cgi?id=237706
<rdar://problem/90425391>

Reviewed by Eric Carlson.

Source/WebCore:

Replace MediaSampleAVFObjC by VideoFrameCV when handling CVPixelBuffers.

Covered by existing tests.

  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
  • platform/graphics/cv/ImageRotationSessionVT.mm:
  • platform/graphics/cv/ImageTransferSessionVT.h:
  • platform/graphics/cv/ImageTransferSessionVT.mm:
  • platform/graphics/cv/VideoFrameCV.h:
  • platform/graphics/cv/VideoFrameCV.mm:
  • platform/mediastream/RealtimeVideoSource.cpp:
  • platform/mediastream/RealtimeVideoSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:
  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.h:
  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:

Source/WebKit:

  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:
  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

Mar 20, 2022:

7:11 PM Changeset in webkit [291549] by Diego Pino Garcia
  • 3 edits in trunk/Source/WebCore

[WPE] Unreviewed, fix non-unified build after r291474 and r291508

  • css/CSSToLengthConversionData.h:
  • html/parser/AtomHTMLToken.h:
5:59 PM Changeset in webkit [291548] by Alan Bujtas
  • 31 edits
    3 moves in trunk/Source/WebCore

[IFC][Integration] Rename InlineIterator::Line to LineBox
​https://bugs.webkit.org/show_bug.cgi?id=238128

Reviewed by Antti Koivisto.

  • dom/Position.cpp:

(WebCore::Position::upstream const):
(WebCore::Position::downstream const):
(WebCore::Position::rendersInDifferentPosition const):

  • editing/RenderedPosition.h:

(WebCore::RenderedPosition::lineBox const):
(WebCore::RenderedPosition::line const): Deleted.

  • editing/VisiblePosition.cpp:

(WebCore::VisiblePosition::leftVisuallyDistinctCandidate const):
(WebCore::VisiblePosition::rightVisuallyDistinctCandidate const):
(WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):

  • editing/VisibleUnits.cpp:

(WebCore::startTextOrLineBreakBox):
(WebCore::endTextOrLineBreakBox):
(WebCore::logicallyPreviousBox):
(WebCore::logicallyNextBox):
(WebCore::startPositionForLine):
(WebCore::endPositionForLine):
(WebCore::absoluteLineDirectionPointToLocalPointInBlock):
(WebCore::previousLinePosition):
(WebCore::nextLinePosition):

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::valueWithHardLineBreaks const):

  • layout/integration/InlineIteratorBox.cpp:

(WebCore::InlineIterator::Box::lineBox const):
(WebCore::InlineIterator::Box::style const):
(WebCore::InlineIterator::Box::line const): Deleted.

  • layout/integration/InlineIteratorBox.h:
  • layout/integration/InlineIteratorLine.cpp:

(WebCore::InlineIterator::LineBoxIterator::LineBoxIterator):
(WebCore::InlineIterator::LineBoxIterator::atEnd const):
(WebCore::InlineIterator::LineBoxIterator::traverseNext):
(WebCore::InlineIterator::LineBoxIterator::traversePrevious):
(WebCore::InlineIterator::LineBoxIterator::operator== const):
(WebCore::InlineIterator::firstLineBoxFor):
(WebCore::InlineIterator::lastLineBoxFor):
(WebCore::InlineIterator::LineBox::next const):
(WebCore::InlineIterator::LineBox::previous const):
(WebCore::InlineIterator::LineBox::firstLeafBox const):
(WebCore::InlineIterator::LineBox::lastLeafBox const):
(WebCore::InlineIterator::closestBoxForHorizontalPosition):
(WebCore::InlineIterator::LineIterator::LineIterator): Deleted.
(WebCore::InlineIterator::LineIterator::atEnd const): Deleted.
(WebCore::InlineIterator::LineIterator::traverseNext): Deleted.
(WebCore::InlineIterator::LineIterator::traversePrevious): Deleted.
(WebCore::InlineIterator::LineIterator::operator== const): Deleted.
(WebCore::InlineIterator::firstLineFor): Deleted.
(WebCore::InlineIterator::lastLineFor): Deleted.
(WebCore::InlineIterator::Line::next const): Deleted.
(WebCore::InlineIterator::Line::previous const): Deleted.
(WebCore::InlineIterator::Line::firstLeafBox const): Deleted.
(WebCore::InlineIterator::Line::lastLeafBox const): Deleted.

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::LineBox::height const):
(WebCore::InlineIterator::LineBoxIterator::LineBoxIterator):
(WebCore::InlineIterator::LineBoxIterator::operator++):
(WebCore::InlineIterator::LineBoxIterator::operator!= const):
(WebCore::InlineIterator::LineBoxIterator::operator== const):
(WebCore::InlineIterator::LineBoxIterator::operator* const):
(WebCore::InlineIterator::LineBoxIterator::operator-> const):
(WebCore::InlineIterator::previousLineBoxContentBottomOrBorderAndPadding):
(WebCore::InlineIterator::contentStartInBlockDirection):
(WebCore::InlineIterator::LineBox::LineBox):
(WebCore::InlineIterator::LineBox::contentLogicalTop const):
(WebCore::InlineIterator::LineBox::contentLogicalBottom const):
(WebCore::InlineIterator::LineBox::contentLogicalTopAdjustedForPrecedingLineBox const):
(WebCore::InlineIterator::LineBox::contentLogicalBottomAdjustedForFollowingLineBox const):
(WebCore::InlineIterator::LineBox::top const):
(WebCore::InlineIterator::LineBox::bottom const):
(WebCore::InlineIterator::LineBox::contentLogicalLeft const):
(WebCore::InlineIterator::LineBox::contentLogicalRight const):
(WebCore::InlineIterator::LineBox::contentLogicalWidth const):
(WebCore::InlineIterator::LineBox::isHorizontal const):
(WebCore::InlineIterator::LineBox::baselineType const):
(WebCore::InlineIterator::LineBox::containingBlock const):
(WebCore::InlineIterator::LineBox::containingFragment const):
(WebCore::InlineIterator::LineBox::isFirstAfterPageBreak const):
(WebCore::InlineIterator::LineBox::isFirst const):
(WebCore::InlineIterator::Line::lineBoxHeight const): Deleted.
(WebCore::InlineIterator::LineIterator::LineIterator): Deleted.
(WebCore::InlineIterator::LineIterator::operator++): Deleted.
(WebCore::InlineIterator::LineIterator::operator bool const): Deleted.
(WebCore::InlineIterator::LineIterator::operator!= const): Deleted.
(WebCore::InlineIterator::LineIterator::operator== const): Deleted.
(WebCore::InlineIterator::LineIterator::operator* const): Deleted.
(WebCore::InlineIterator::LineIterator::operator-> const): Deleted.
(WebCore::InlineIterator::previousLineContentBottomOrBorderAndPadding): Deleted.
(WebCore::InlineIterator::Line::Line): Deleted.
(WebCore::InlineIterator::Line::contentLogicalTop const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalBottom const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalTopAdjustedForPrecedingLine const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalBottomAdjustedForFollowingLine const): Deleted.
(WebCore::InlineIterator::Line::lineBoxTop const): Deleted.
(WebCore::InlineIterator::Line::lineBoxBottom const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalLeft const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalRight const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalWidth const): Deleted.
(WebCore::InlineIterator::Line::isHorizontal const): Deleted.
(WebCore::InlineIterator::Line::baselineType const): Deleted.
(WebCore::InlineIterator::Line::containingBlock const): Deleted.
(WebCore::InlineIterator::Line::containingFragment const): Deleted.
(WebCore::InlineIterator::Line::isFirstAfterPageBreak const): Deleted.
(WebCore::InlineIterator::Line::isFirst const): Deleted.

  • layout/integration/InlineIteratorLineLegacyPath.h:

(WebCore::InlineIterator::LineBoxIteratorLegacyPath::LineBoxIteratorLegacyPath):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalTopAdjustedForPrecedingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalBottomAdjustedForFollowingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::top const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::bottom const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::operator== const):
(WebCore::InlineIterator::LineIteratorLegacyPath::LineIteratorLegacyPath): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTop const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalBottom const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTopAdjustedForPrecedingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalBottomAdjustedForFollowingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::lineBoxTop const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::lineBoxBottom const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalLeft const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalRight const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::isHorizontal const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::baselineType const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::containingBlock const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::containingFragment const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::isFirstAfterPageBreak const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::traverseNext): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::traversePrevious): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::operator== const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::atEnd const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::firstLeafBox const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::lastLeafBox const): Deleted.

  • layout/integration/InlineIteratorLineModernPath.h:

(WebCore::InlineIterator::LineBoxIteratorModernPath::LineBoxIteratorModernPath):
(WebCore::InlineIterator::LineBoxIteratorModernPath::top const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::bottom const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalTopAdjustedForPrecedingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalBottomAdjustedForFollowingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::operator== const):
(WebCore::InlineIterator::LineIteratorModernPath::LineIteratorModernPath): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTop const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalBottom const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::lineBoxTop const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::lineBoxBottom const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTopAdjustedForPrecedingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalBottomAdjustedForFollowingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalLeft const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalRight const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::isHorizontal const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::baselineType const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::containingBlock const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::containingFragment const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::isFirstAfterPageBreak const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::traverseNext): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::traversePrevious): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::operator== const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::atEnd const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::firstLeafBox const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::lastLeafBox const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::setAtEnd): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::lines const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::line const): Deleted.

  • layout/integration/InlineIteratorLogicalOrderTraversal.cpp:

(WebCore::InlineIterator::makeLineLogicalOrderCache):
(WebCore::InlineIterator::updateLineLogicalOrderCacheIfNeeded):
(WebCore::InlineIterator::firstLeafOnLineInLogicalOrder):
(WebCore::InlineIterator::lastLeafOnLineInLogicalOrder):
(WebCore::InlineIterator::firstLeafOnLineInLogicalOrderWithNode):
(WebCore::InlineIterator::lastLeafOnLineInLogicalOrderWithNode):

  • layout/integration/InlineIteratorLogicalOrderTraversal.h:

(WebCore::InlineIterator::leafBoxesInLogicalOrder):

  • layout/integration/InlineIteratorTextBox.cpp:

(WebCore::InlineIterator::TextBox::selectionRect const):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::firstLineBox const):
(WebCore::LayoutIntegration::LineLayout::lastLineBox const):
(WebCore::LayoutIntegration::LineLayout::firstLine const): Deleted.
(WebCore::LayoutIntegration::LineLayout::lastLine const): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/integration/LineSelection.h:

(WebCore::LineSelection::logicalTop):
(WebCore::LineSelection::logicalBottom):
(WebCore::LineSelection::logicalRect):
(WebCore::LineSelection::physicalRect):
(WebCore::LineSelection::logicalTopAdjustedForPrecedingBlock):
(WebCore::LineSelection::selectionState):

  • rendering/CaretRectComputation.cpp:

(WebCore::computeCaretRectForLinePosition):
(WebCore::computeCaretRectForText):
(WebCore::computeCaretRectForLineBreak):
(WebCore::computeCaretRectForBox):

  • rendering/InlineBoxPainter.cpp:

(WebCore::InlineBoxPainter::InlineBoxPainter):
(WebCore::InlineBoxPainter::paintMask):
(WebCore::InlineBoxPainter::paintDecorations):
(WebCore::InlineBoxPainter::style const):

  • rendering/InlineBoxPainter.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::adjustEnclosingTopForPrecedingBlock const):
(WebCore::RenderBlockFlow::inlineSelectionGaps):
(WebCore::RenderBlockFlow::containsNonZeroBidiLevel const):
(WebCore::RenderBlockFlow::findClosestTextAtAbsolutePoint):
(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):
(WebCore::RenderBlockFlow::addFocusRingRectsForInlineChildren):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::getLeadingCorner const):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::paintOutline):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::positionForPoint):

  • rendering/RenderText.cpp:

(WebCore::RenderText::positionForPoint):

  • rendering/TextBoxPainter.cpp:

(WebCore::TextBoxPainter::TextBoxPainter):
(WebCore::TextBoxPainter::paintBackground):
(WebCore::textPosition):
(WebCore::TextBoxPainter::computePaintRect):

  • rendering/svg/SVGRootInlineBox.cpp:

(WebCore::SVGRootInlineBox::reorderValueListsToLogicalOrder):

  • style/InlineTextBoxStyle.cpp:

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

9:48 AM Changeset in webkit [291547] by commit-queue@webkit.org
  • 9 edits
    4 adds
    1 delete in trunk/Tools/buildstream

[Flatpak SDK] Bump to meson 0.60
​https://bugs.webkit.org/show_bug.cgi?id=238112

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-20
Reviewed by Adrian Perez de Castro.

  • elements/freedesktop-sdk.bst: Update junction and include patches for Meson update and

follow-up recipe updates.

  • elements/sdk-platform.bst: Remove shared-mime-info, the same version is shipped by the upstream SDK already.
  • elements/sdk/glib.bst: Remove invalid meson options
  • elements/sdk/gst-plugins-bad.bst: Ditto.
  • elements/sdk/gst-plugins-base.bst: Ditto.
  • elements/sdk/gstreamer.bst: Ditto.
  • elements/sdk/gtk+-3.bst: Ditto.
  • elements/sdk/gtk.bst: Ditto.
  • elements/sdk/shared-mime-info.bst: Removed.
  • patches/fdo-0001-gdk-pixbuf-Remove-invalid-meson-options.patch: Added.
  • patches/fdo-0001-gst-plugins-bad-Remove-invalid-meson-option.patch: Added.
  • patches/fdo-0001-meson-Bump-to-0.60.3.patch: Added.
  • patches/fdo-0001-shared-mime-info-Backport-meson-0.60-build-fix.patch: Added.
9:37 AM Changeset in webkit [291546] by Oriol Brufau
  • 9 edits
    2 adds in trunk

Fix CSS cascade regarding logical properties
​https://bugs.webkit.org/show_bug.cgi?id=236199

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Expect animation-004.html to pass.
Add new test logicalprops-with-deferred-writing-mode.html

  • web-platform-tests/css/css-logical/animation-004-expected.txt:
  • web-platform-tests/css/css-logical/logicalprops-with-deferred-writing-mode-expected.txt: Added.
  • web-platform-tests/css/css-logical/logicalprops-with-deferred-writing-mode.html: Added.

Source/WebCore:

The CSS cascade was trying to resolve logical properties into physical
ones too early. This failed if we still didn't know the direction or
writing-mode, e.g. because they were set to a variable or to a CSS-wide
keyword.

This patch keeps logical properties as-is during the cascade. They are
only resolved when finally applied. Also, both logical properties and
their physical equivalents are now set to apply in parse order, since
'height: 0px; block-size: 1px' and 'block-size: 1px; height: 0px' can be
different, the order matters.

Tests: imported/w3c/web-platform-tests/css/css-logical/animation-004.html

imported/w3c/web-platform-tests/css/css-logical/logicalprops-with-deferred-writing-mode.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json:
  • css/parser/CSSParser.cpp:

(WebCore::CSSParser::parseValueWithVariableReferences):

  • style/PropertyCascade.cpp:

(WebCore::Style::shouldApplyPropertyInParseOrder):
(WebCore::Style::PropertyCascade::PropertyCascade):
(WebCore::Style::PropertyCascade::set):
(WebCore::Style::PropertyCascade::setDeferred):
(WebCore::Style::PropertyCascade::resolveDirectionAndWritingMode const): Deleted.
(WebCore::Style::PropertyCascade::direction const): Deleted.

  • style/PropertyCascade.h:

(WebCore::Style::PropertyCascade::areDeferredInOrder const):

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::Builder):
(WebCore::Style::Builder::applyProperty):
(WebCore::Style::directionFromStyle): Deleted.

8:52 AM WebKitGTK/2.36.x edited by Michael Catanzaro
(diff)
8:04 AM Changeset in webkit [291545] by Alan Bujtas
  • 9 edits in trunk/Source/WebCore

[IFC][Integration] Remove redundant InlineIterator::Line::contentLogicalTopAdjustedForHitTesting
​https://bugs.webkit.org/show_bug.cgi?id=238107

Reviewed by Antti Koivisto.

It looks like contentLogicalTopAdjustedForHitTesting is just the combination of

  • containingBlock's border and padding before
  • LineSelection::logicalTop (which is either the line's content top or the previous line's content bottom)
  • line's content top
  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::contentStartInBlockDirection):
(WebCore::InlineIterator::Line::contentLogicalTopAdjustedForHitTesting const): Deleted.

  • layout/integration/InlineIteratorLineModernPath.h:

(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTopAdjustedForPrecedingLine const):
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTopAdjustedForHitTesting const): Deleted.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::positionForPoint): This seems to be missing the contentLogicalTop check.

  • rendering/RenderText.cpp:

(WebCore::RenderText::positionForPoint):

7:18 AM Changeset in webkit [291544] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

REGRESSION(r289154) [GSTREAMER] webrtc/vp8-then-h264.html is crashing after SDK update to fdo 21.08 and Gstreamer 1.20
​https://bugs.webkit.org/show_bug.cgi?id=237872

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-20
Reviewed by Adrian Perez de Castro.

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoDecoderFactory.cpp:

(WebCore::VP8Decoder::Create): Fix typo in decoder factory test.

6:37 AM Changeset in webkit [291543] by Adrian Perez de Castro
  • 2 edits in trunk/Tools

Fix clang warning after r291229

Unreviewed build fix.

  • TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp:

(elementSize): Move RELEASE_ASSERT_NOT_REACHED() out of the switch to make clang happy.

4:46 AM Changeset in webkit [291542] by Adrian Perez de Castro
  • 2 edits
    3 adds in trunk/Tools/buildstream

[Flatpak SDK] Include gi-docgen and its dependencies
​https://bugs.webkit.org/show_bug.cgi?id=237681

Reviewed by Philippe Normand.

Import a build element for gi-docgen, which reuses most of the dependencies from the
Freedesktop SDK, except for the python-typogrify element, which is not available there
and this also adds an element for.

  • elements/sdk-platform.bst:
  • elements/sdk/gi-docgen.bst: Added.
  • elements/sdk/python3-smartypants.bst: Added.
  • elements/sdk/python3-typogrify.bst: Added.
4:40 AM Changeset in webkit [291541] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[WPE][GStreamer] media playback broken
​https://bugs.webkit.org/show_bug.cgi?id=238110

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-03-20
Reviewed by Philippe Normand.

  • platform/graphics/gbm/GBMBufferSwapchain.cpp:

(WebCore::GBMBufferSwapchain::GBMBufferSwapchain):
Fix the assert that's hit when using eight-buffers capacity value. Just
a matter of using the more proper <= operator.

Mar 19, 2022:

9:11 PM Changeset in webkit [291540] by Chris Dumez
  • 4 edits in trunk

Vector move constructor and move assignment operator are suboptimal when the vector has an inline buffer
​https://bugs.webkit.org/show_bug.cgi?id=238096

Reviewed by Darin Adler.

Source/WTF:

The move constructor (and move assignment operators) for Vector were implemented using Vector::swap(), which
is fine for vectors with out of line buffers because we're just swapping pointers. However, when the vector
has inline capacity, this is suboptimal because it is not cheap to move data from one inline buffer to another
and moving any data to the source buffer is unnecessary.

  • wtf/Vector.h:

(WTF::VectorBuffer::VectorBuffer):
(WTF::VectorBuffer::adopt):
(WTF::Malloc>::Vector):
(WTF::=):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WTF/Vector.cpp:

(TestWebKitAPI::TEST):

8:46 PM Changeset in webkit [291539] by Tyler Wilcock
  • 1 edit
    1 move in trunk/LayoutTests

Rebaseline accessibility/roles-exposed.html for Mac WK1 after ​https://commits.webkit.org/r291401
​https://bugs.webkit.org/show_bug.cgi?id=238099

Reviewed by Chris Fleizach.

  • platform/mac-wk1/accessibility/roles-exposed-expected.txt:
8:29 PM Changeset in webkit [291538] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Optimize EventTarget::visitJSEventListeners()
​https://bugs.webkit.org/show_bug.cgi?id=238116

Reviewed by Darin Adler.

This was confirmed by A/B bots to be a 1-1.5% progression on Speedometer on
iMac 20,1 (Intel).

  • dom/EventListenerMap.cpp:

(WebCore::EventListenerMap::clear):
(WebCore::EventListenerMap::replace):
(WebCore::EventListenerMap::add):
(WebCore::EventListenerMap::remove):
(WebCore::EventListenerMap::removeFirstEventListenerCreatedFromMarkup):
(WebCore::EventListenerMap::assertNoActiveIterators const): Deleted.
(WebCore::EventListenerMap::EventListenerMap): Deleted.
(WebCore::EventListenerIterator::EventListenerIterator): Deleted.
(WebCore::EventListenerIterator::~EventListenerIterator): Deleted.
(WebCore::EventListenerIterator::nextListener): Deleted.

  • dom/EventListenerMap.h:

(WebCore::EventListenerMap::visitJSEventListeners):
(): Deleted.
(WebCore::EventListenerMap::assertNoActiveIterators const): Deleted.

  • dom/EventTarget.cpp:

(WebCore::EventTarget::visitJSEventListeners): Deleted.

  • dom/EventTarget.h:

(WebCore::EventTarget::visitJSEventListeners):

8:18 PM Changeset in webkit [291537] by Oriol Brufau
  • 8 edits in trunk

[cssom] Implement border-image serialization
​https://bugs.webkit.org/show_bug.cgi?id=238102

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Let the test accept some equivalent serializations.
Expect it to pass.

  • web-platform-tests/css/css-backgrounds/parsing/border-image-valid-expected.txt:
  • web-platform-tests/css/css-backgrounds/parsing/border-image-valid.html:

Source/WebCore:

Add logic for serializing border-image at specified-value time.

Tests: fast/css/parse-border-image-repeat-null-crash.html

imported/w3c/web-platform-tests/css/css-backgrounds/parsing/border-image-valid.html

  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue const):
(WebCore::StyleProperties::borderImagePropertyValue const):
(WebCore::StyleProperties::asText const):

  • css/StyleProperties.h:

LayoutTests:

Expect cssText to serialize border-image instead of longhands.

  • fast/css/parse-border-image-repeat-null-crash-expected.txt:
7:18 PM Changeset in webkit [291536] by Oriol Brufau
  • 9 edits
    2 adds in trunk

Fix hasExplicitlySetBorderRadius flag
​https://bugs.webkit.org/show_bug.cgi?id=238062

Reviewed by Darin Adler.

Source/WebCore:

The four border-*-radius longhands were sharing the same flag, so the
behavior was broken when setting longhands individually.

This patch splits the flag into 4 different ones, one for each longhand.
Also makes sure to set it properly when a longhand is set to 'initial'.

It's ugly to have all this boilerplate code for the flags, but
​https://webkit.org/b/212506 will make it automatically generated.

Test: fast/css/appearance-apple-pay-button-border-radius-longhands.html

  • css/CSSProperties.json:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::RenderStyle):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::hasExplicitlySetBorderBottomLeftRadius const):
(WebCore::RenderStyle::hasExplicitlySetBorderBottomRightRadius const):
(WebCore::RenderStyle::hasExplicitlySetBorderTopLeftRadius const):
(WebCore::RenderStyle::hasExplicitlySetBorderTopRightRadius const):
(WebCore::RenderStyle::hasExplicitlySetBorderRadius const):
(WebCore::RenderStyle::setHasExplicitlySetBorderBottomLeftRadius):
(WebCore::RenderStyle::setHasExplicitlySetBorderBottomRightRadius):
(WebCore::RenderStyle::setHasExplicitlySetBorderTopLeftRadius):
(WebCore::RenderStyle::setHasExplicitlySetBorderTopRightRadius):
(WebCore::RenderStyle::NonInheritedFlags::operator== const):
(WebCore::RenderStyle::NonInheritedFlags::copyNonInheritedFrom):
(WebCore::RenderStyle::setHasExplicitlySetBorderRadius): Deleted.

  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyInitialBorderBottomLeftRadius):
(WebCore::Style::BuilderCustom::applyInheritBorderBottomLeftRadius):
(WebCore::Style::BuilderCustom::applyValueBorderBottomLeftRadius):
(WebCore::Style::BuilderCustom::applyInitialBorderBottomRightRadius):
(WebCore::Style::BuilderCustom::applyInheritBorderBottomRightRadius):
(WebCore::Style::BuilderCustom::applyValueBorderBottomRightRadius):
(WebCore::Style::BuilderCustom::applyInitialBorderTopLeftRadius):
(WebCore::Style::BuilderCustom::applyInheritBorderTopLeftRadius):
(WebCore::Style::BuilderCustom::applyValueBorderTopLeftRadius):
(WebCore::Style::BuilderCustom::applyInitialBorderTopRightRadius):
(WebCore::Style::BuilderCustom::applyInheritBorderTopRightRadius):
(WebCore::Style::BuilderCustom::applyValueBorderTopRightRadius):

LayoutTests:

Add test, skip it except in iOS and Mac.

  • TestExpectations:
  • fast/css/appearance-apple-pay-button-border-radius-longhands-expected.html: Added.
  • fast/css/appearance-apple-pay-button-border-radius-longhands.html: Added.
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
5:45 PM Changeset in webkit [291535] by Alan Bujtas
  • 10 edits in trunk/Source/WebCore

[IFC][Integration] InlineIterator::Line functions should all return float values
​https://bugs.webkit.org/show_bug.cgi?id=238106

Reviewed by Antti Koivisto.

Display structures are supposed to be all float based.

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::lineBoxHeight const):
(WebCore::InlineIterator::contentStartInBlockDirection):
(WebCore::InlineIterator::Line::contentLogicalTop const):
(WebCore::InlineIterator::Line::contentLogicalBottom const):
(WebCore::InlineIterator::Line::contentLogicalTopAdjustedForPrecedingLine const):
(WebCore::InlineIterator::Line::contentLogicalTopAdjustedForHitTesting const):
(WebCore::InlineIterator::Line::contentLogicalBottomAdjustedForFollowingLine const):
(WebCore::InlineIterator::Line::lineBoxTop const):
(WebCore::InlineIterator::Line::lineBoxBottom const):

  • layout/integration/InlineIteratorLineLegacyPath.h:

(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTop const):
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalBottom const):
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTopAdjustedForPrecedingLine const):
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTopAdjustedForHitTesting const):
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalBottomAdjustedForFollowingLine const):
(WebCore::InlineIterator::LineIteratorLegacyPath::lineBoxTop const):
(WebCore::InlineIterator::LineIteratorLegacyPath::lineBoxBottom const):

  • layout/integration/InlineIteratorLineModernPath.h:

(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTop const):
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalBottom const):
(WebCore::InlineIterator::LineIteratorModernPath::lineBoxTop const):
(WebCore::InlineIterator::LineIteratorModernPath::lineBoxBottom const):
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTopAdjustedForPrecedingLine const):
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTopAdjustedForHitTesting const):
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalBottomAdjustedForFollowingLine const):

  • layout/integration/LineSelection.h:

(WebCore::LineSelection::logicalTop):
(WebCore::LineSelection::logicalBottom):
(WebCore::LineSelection::logicalRect):
(WebCore::LineSelection::physicalRect):
(WebCore::LineSelection::logicalTopAdjustedForPrecedingBlock):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::adjustEnclosingTopForPrecedingBlock const):
(WebCore::RenderBlockFlow::inlineSelectionGaps):
(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):
(WebCore::RenderBlockFlow::addFocusRingRectsForInlineChildren):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::paintOutline):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::positionForPoint):

  • rendering/TextBoxPainter.cpp:

(WebCore::TextBoxPainter::paintBackground):

4:22 PM Changeset in webkit [291534] by mmaxfield@apple.com
  • 3 edits in trunk/LayoutTests

Make fast/text/emoji-num-glyphs.html more robust
​https://bugs.webkit.org/show_bug.cgi?id=238120
<rdar://problem/88842010>

Unreviewed test gardening.

  • fast/text/emoji-num-glyphs-expected.txt:
  • fast/text/emoji-num-glyphs.html:
1:30 PM Changeset in webkit [291533] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[IFC][Integration] Remove redundant InlineIterator::Line::closestBoxForPoint function
​https://bugs.webkit.org/show_bug.cgi?id=238103

Reviewed by Antti Koivisto.

  1. Rename closestBoxForLogicalLeftPosition to closestBoxForHorizontalPosition and move it off of the Line class.
  2. Replace InlineIterator::Line::closestBoxForPoint calls with closestBoxForHorizontalPosition.
  3. Tidy up Line class.
  • editing/VisibleUnits.cpp:

(WebCore::previousLinePosition):
(WebCore::nextLinePosition):

  • layout/integration/InlineIteratorLine.cpp:

(WebCore::InlineIterator::closestBoxForHorizontalPosition):
(WebCore::InlineIterator::Line::closestBoxForPoint const): Deleted.
(WebCore::InlineIterator::Line::closestBoxForLogicalLeftPosition const): Deleted.

  • layout/integration/InlineIteratorLine.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::findClosestTextAtAbsolutePoint):
(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):

1:24 PM Changeset in webkit [291532] by Alan Bujtas
  • 9 edits in trunk/Source/WebCore

[IFC][Integration] Rename InlineIterator::Line::blockDirectionPointInLine to contentStartInBlockDirection
​https://bugs.webkit.org/show_bug.cgi?id=238101

Reviewed by Antti Koivisto.

blockDirectionPointInLine returns the position (vertical or horizontal, depending on the writing mode) where the content
starts (which for flipped writing mode is the bottom of the line).
Let's also move this function out of the Line class and have it as a standalone helper function (and move/rename some private Line
functions to public).

  • editing/VisibleUnits.cpp:

(WebCore::absoluteLineDirectionPointToLocalPointInBlock):

  • layout/integration/InlineIteratorLine.cpp:

(WebCore::InlineIterator::Line::blockDirectionPointInLine const): Deleted.

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::contentStartInBlockDirection):
(WebCore::InlineIterator::Line::contentLogicalTopAdjustedForHitTesting const):
(WebCore::InlineIterator::Line::contentLogicalTopForHitTesting const): Deleted.

  • layout/integration/InlineIteratorLineLegacyPath.h:

(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTopAdjustedForHitTesting const):
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTopForHitTesting const): Deleted.

  • layout/integration/InlineIteratorLineModernPath.h:

(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTopAdjustedForHitTesting const):
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTopForHitTesting const): Deleted.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::positionForPoint):

  • rendering/RenderText.cpp:

(WebCore::RenderText::positionForPoint):

1:05 PM Changeset in webkit [291531] by Alan Bujtas
  • 9 edits in trunk/Source/WebCore

[IFC][Integration] Use a more descriptive name for InlineIterator::Line::enclosing* functions
​https://bugs.webkit.org/show_bug.cgi?id=238094

Reviewed by Antti Koivisto.

Enlcosing essentially means content logical top/bottom here.

  • layout/integration/InlineIteratorLine.cpp:

(WebCore::InlineIterator::Line::blockDirectionPointInLine const):

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::contentLogicalTopAdjustedForPrecedingLine const):
(WebCore::InlineIterator::Line::contentLogicalTopForHitTesting const):
(WebCore::InlineIterator::Line::contentLogicalBottomAdjustedForFollowingLine const):
(WebCore::InlineIterator::Line::enclosingTopAdjustedForPrecedingLine const): Deleted.
(WebCore::InlineIterator::Line::enclosingTopForHitTesting const): Deleted.
(WebCore::InlineIterator::Line::enclosingBottomAdjustedForFollowingLine const): Deleted.

  • layout/integration/InlineIteratorLineLegacyPath.h:

(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTopAdjustedForPrecedingLine const):
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTopForHitTesting const):
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalBottomAdjustedForFollowingLine const):
(WebCore::InlineIterator::LineIteratorLegacyPath::enclosingTopAdjustedForPrecedingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::enclosingTopForHitTesting const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::enclosingBottomAdjustedForFollowingLine const): Deleted.

  • layout/integration/InlineIteratorLineModernPath.h:

(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTopAdjustedForPrecedingLine const):
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTopForHitTesting const):
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalBottomAdjustedForFollowingLine const):
(WebCore::InlineIterator::LineIteratorModernPath::enclosingTopAdjustedForPrecedingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::enclosingTopForHitTesting const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::enclosingBottomAdjustedForFollowingLine const): Deleted.

  • layout/integration/LineSelection.h:

(WebCore::LineSelection::logicalTop):
(WebCore::LineSelection::logicalBottom):
(WebCore::LineSelection::logicalRect):
(WebCore::LineSelection::logicalTopAdjustedForPrecedingBlock):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::positionForPoint):

  • rendering/RenderText.cpp:

(WebCore::RenderText::positionForPoint):

12:17 PM Changeset in webkit [291530] by Alan Bujtas
  • 10 edits in trunk/Source/WebCore

[IFC][Integration] Rename InlineIterator::Line:top/bottom to contentLogicalTop/contentLogicalBottom
​https://bugs.webkit.org/show_bug.cgi?id=238085

Reviewed by Antti Koivisto.

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::contentLogicalTop const):
(WebCore::InlineIterator::Line::contentLogicalBottom const):
(WebCore::InlineIterator::Line::top const): Deleted.
(WebCore::InlineIterator::Line::bottom const): Deleted.

  • layout/integration/InlineIteratorLineLegacyPath.h:

(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTop const):
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalBottom const):
(WebCore::InlineIterator::LineIteratorLegacyPath::top const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::bottom const): Deleted.

  • layout/integration/InlineIteratorLineModernPath.h:

(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTop const):
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalBottom const):
(WebCore::InlineIterator::LineIteratorModernPath::enclosingTopAdjustedForPrecedingLine const):
(WebCore::InlineIterator::LineIteratorModernPath::enclosingBottomAdjustedForFollowingLine const):
(WebCore::InlineIterator::LineIteratorModernPath::top const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::bottom const): Deleted.

11:21 AM Changeset in webkit [291529] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[IFC][Integration] InlineIterator::Line::enclosingBottom should read enclosingBottomAdjustedForFollowingLine
​https://bugs.webkit.org/show_bug.cgi?id=238084

Reviewed by Antti Koivisto.

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::enclosingBottomAdjustedForFollowingLine const):
(WebCore::InlineIterator::Line::enclosingBottom const): Deleted.

  • layout/integration/InlineIteratorLineLegacyPath.h:

(WebCore::InlineIterator::LineIteratorLegacyPath::enclosingBottomAdjustedForFollowingLine const):
(WebCore::InlineIterator::LineIteratorLegacyPath::enclosingBottom const): Deleted.

  • layout/integration/InlineIteratorLineModernPath.h:

(WebCore::InlineIterator::LineIteratorModernPath::enclosingBottomAdjustedForFollowingLine const):
(WebCore::InlineIterator::LineIteratorModernPath::enclosingBottom const): Deleted.

8:39 AM Changeset in webkit [291528] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[IFC][Integration] Move selection specific code from InlineIterator::Line to LineSelection
​https://bugs.webkit.org/show_bug.cgi?id=238083

Reviewed by Antti Koivisto.

  • layout/integration/InlineIteratorLine.cpp:

(WebCore::InlineIterator::Line::enclosingTopAdjustedForPrecedingBlock const): Deleted.
(WebCore::InlineIterator::Line::selectionState const): Deleted.

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::enclosingLogicalRect const): Deleted.
(WebCore::InlineIterator::Line::enclosingPhysicalRect const): Deleted.

  • layout/integration/LineSelection.h:

(WebCore::LineSelection::logicalRect):
(WebCore::LineSelection::physicalRect):
(WebCore::LineSelection::logicalTopAdjustedForPrecedingBlock):
(WebCore::LineSelection::selectionState):

6:23 AM Changeset in webkit [291527] by graouts@webkit.org
  • 5 edits
    4 adds in trunk

Dialog element only animates once
​https://bugs.webkit.org/show_bug.cgi?id=236274
rdar://88857731

Reviewed by Dean Jackson, Tim Nguyen and Antti Koivisto.

LayoutTests/imported/w3c:

Import relevant WPT tests that had already been upstreamed in a previous, reverted
version of this patch.

  • web-platform-tests/css/css-animations/dialog-animation-expected.txt: Added.
  • web-platform-tests/css/css-animations/dialog-animation.html: Added.
  • web-platform-tests/css/css-animations/dialog-backdrop-animation-expected.txt: Added.
  • web-platform-tests/css/css-animations/dialog-backdrop-animation.html: Added.
  • web-platform-tests/css/css-animations/support/testcommon.js:

(addElement):
(addDiv):

Source/WebCore:

Two issues related to CSS Animation surfaced in this bug which animates both <dialog>
and its ::backdrop as the dialog is open and eventually re-opened.

The first issue was that we didn't clear all CSS Animations state when a <dialog> was
closed and its style was set to display: none. We now call setAnimationsCreatedByMarkup
to correctly clear such state both when we identify a Styleable is newly getting
display: none. We do the same when cancelDeclarativeAnimations() is called, but also
call setCSSAnimationList() on the associated effect stack since that wasn't done either.
Now both functions do similar cleanup.

This allows us to remove removeCSSAnimationCreatedByMarkup() which did a fair bit of work
to clear CSS Animation state per-animation when we only ever used that function for
_all_ animations.

The second issue was that we never called cancelDeclarativeAnimations() for ::backdrop.
We now do that inside of Element::removeFromTopLayer() at a point where the code in
Styleable::fromRenderer() will still work as the element will still be contained in
Document::topLayerElements().

Finally, we need to be sure that calling Element::setAnimationsCreatedByMarkup() with an
empty list doesn't end up creating an ElementAnimationRareData object if there was no
pre-existing object and the list of animations are empty.

Tests: imported/w3c/web-platform-tests/css/css-animations/dialog-animation.html

imported/w3c/web-platform-tests/css/css-animations/dialog-backdrop-animation.html

  • dom/Element.cpp:

(WebCore::Element::removeFromTopLayer):
(WebCore::Element::setAnimationsCreatedByMarkup):

  • style/Styleable.cpp:

(WebCore::Styleable::cancelDeclarativeAnimations const):
(WebCore::Styleable::updateCSSAnimations const):
(WebCore::removeCSSAnimationCreatedByMarkup): Deleted.

4:41 AM Changeset in webkit [291526] by graouts@webkit.org
  • 3 edits
    2 adds in trunk

REGRESSION (r285529): Flash of missing text when content on ​https://ahumanfuture.co animates
​https://bugs.webkit.org/show_bug.cgi?id=237972
rdar://90385586

Reviewed by Simon Fraser.

Source/WebCore:

Accelerated animations are added to a CALayer in two different ways.

Transform-related animations are added in a CAAnimationGroup so that we can have control of the
way they interact with each other. We added this system when we added support for individual CSS
transform properties on top of the existing "transform" property. All CAAnimationGroup animations
are timed to start at 1s and thus we subtract that same 1s value from all animations contained
within such groups.

All other animations, such as "opacity" animations, are added as simple leaf animations and their
begin time is not subject to that 1s subtraction.

In r285529, when we introduced leaf animations for transform properties other than transform-related
properties, we took an unfortunate approach to deal with that 1s subtraction. We would *always* subtract
1s for all animations, and for leaf animation add that 1s back when we added them in the
addLeafAnimation() lambda.

However, we *did not* check whether that animation was newly started or if we were merely adding it
again. This meant that every time GraphicsLayerCA::updateAnimations() was called, any leaf animation
would have 1s added to their begin time.

So, if for instance a page ran on a given element a "scale" animation for 1s and an "opacity" animation
for 2s, when the "scale" animation would complete, GraphicsLayerCA::updateAnimations() would be called
to remove that animation, and add 1s to the "opacity" animation begin time.

We now set the begin time, if not already set, in two places: in the addLeafAnimation() lambda for
leaf animations, and in the addAnimationsForProperty() lambda for animations added to groups. We
only ever set the begin time if not already set during a previous update and only subtract the
parent group begin time for animations contained within a group.

Additionally, this means we set the begin times when we iterate over remaining animations after culling
finished animations. As such, we no longer need to iterate over *all* known animations to set their
begin time if needed prior to adding them.

Test: webanimations/accelerated-animation-opacity-animation-begin-time-after-scale-animation-ends.html

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::updateAnimations):

LayoutTests:

Add a new test which would fail prior to the source change. In this test we start two animations: a "scale"
animation which lasts for 100ms, and an "opacity" animation which lasts much longer but only visually updates
for the duration of the "scale" animation. When the "scale" animation completes, we stop the test and ensure
that the reference test shows that the "opacity" animation is at the state it should be in at at that time,
and was not rewound due to the bug being fixed.

  • webanimations/accelerated-animation-opacity-animation-begin-time-after-scale-animation-ends-expected.html: Added.
  • webanimations/accelerated-animation-opacity-animation-begin-time-after-scale-animation-ends.html: Added.
3:36 AM Changeset in webkit [291525] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

Unreviewed, WPE clang build fix after r291343.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::pushDMABufToCompositor):

2:12 AM Changeset in webkit [291524] by Antti Koivisto
  • 6 edits in trunk

[CSS Container Queries] Add Typed OM support for container units
​https://bugs.webkit.org/show_bug.cgi?id=238078

Reviewed by Alan Bujtas.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-contain/container-queries/container-units-typed-om-expected.txt:

Source/WebCore:

For completeness, Typed OM is not enabled or fully implemented yet.

  • css/DOMCSSNamespace+CSSNumericFactory.idl:
  • css/typedom/CSSNumericFactory.h:
  • css/typedom/CSSStyleValueFactory.cpp:

(WebCore::CSSStyleValueFactory::reifyValue):

1:49 AM Changeset in webkit [291523] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[IFC][Integration] Move enclosingHeightAdjustedForPrecedingBlock off of InlineIterator::Line
​https://bugs.webkit.org/show_bug.cgi?id=238081

Reviewed by Antti Koivisto.

This function is way too specific to be on InlineIterator::Line (and has only one callsite).

  • layout/integration/InlineIteratorLine.cpp:

(WebCore::InlineIterator::Line::enclosingHeightAdjustedForPrecedingBlock const): Deleted.

  • layout/integration/LineSelection.h:

(WebCore::LineSelection::logicalTopAdjustedForPrecedingBlock):
(WebCore::LineSelection::logicalHeightAdjustedForPrecedingBlock): Deleted.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::inlineSelectionGaps):

1:14 AM Changeset in webkit [291522] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Fix the build (hopefully)

  • Shared/Cocoa/ArgumentCodersCocoa.mm:

Mar 18, 2022:

8:46 PM Changeset in webkit [291521] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Further reduce # of registers used in RegExpTestInline
​https://bugs.webkit.org/show_bug.cgi?id=238105

Reviewed by Saam Barati.

This patch further reduces # of registers used in RegExpTestInline.
After flushRegisters(), we can use baseGPR for any purpose.
We also remove x64 hack since we have enough registers for x64 even
if we use one callee-save register in unlinked DFG.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compileRegExpTestInline):

8:30 PM Changeset in webkit [291520] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Fix typo from r291295
​https://bugs.webkit.org/show_bug.cgi?id=238087

Patch by Joseph Griego <​jgriego@igalia.com> on 2022-03-18
Reviewed by Chris Dumez.

No new tests (changes only comments)

  • bindings/scripts/CodeGeneratorJS.pm:

(IsAlwaysExposedOnInterface):

8:25 PM Changeset in webkit [291519] by Patrick Angle
  • 2 edits in trunk/Source/WebCore

Web Inspector: console.screenshot has extra transparent pixels at bottom of screenshot on platforms with viewports that are obscured by browser chrome
​https://bugs.webkit.org/show_bug.cgi?id=238060

Reviewed by Devin Rousso.

ScrollView::sizeForVisibleRect includes partially-visible portions of the viewport, including in Safari's case
the part of the viewport under the semi-translucent title bar. Because we force an origin of zero, this meant
that we were overshooting the bottom of the viewport by the height of this area when taking a snapshot for
console.screenshot(). Instead, we should use unobscured viewport rectangle and provide coordinates in
document-space, not view-space to WebCore::snapshotFrameRect.

  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::screenshot):

7:00 PM Changeset in webkit [291518] by mmaxfield@apple.com
  • 7 edits in trunk

[Cocoa] Teach WebKit how to serialize CGColors
​https://bugs.webkit.org/show_bug.cgi?id=238069
<rdar://problem/90124325>

Reviewed by Dean Jackson and Tim Horton.

Source/WebKit:

We have 2 ways of serializing Cocoa objects: NS type handling in ArgumentCodersCocoa.mm,
and CF type handling in ArgumentCodersCF.mm. CGColors are CF types, so this patch adds
direct support in ArgumentCodersCF to serialize them, by round-tripping them through
WebCore::Colors. However, NS containers (like font descriptor attribute dictionaries)
can contain CGColors, so this patch also teaches ArgumentCodersCocoa that there may be
CF types inside NS containers. If one is present, ArgumentCodersCocoa has to call into
ArgumentCodersCF to serialize it.

This patch doesn't add support for the reverse path, where an NS object is contained
within a CF container. I intentionally omitted implementing this because I wasn't sure
if it would be a layering violation; ArgumentCodersCococa.mm already #includes
ArgumentCodersCF.h, but ArgumentCodersCF.mm doesn't #include ArgumentCodersCocoa.h.
This path isn't actually necessary to solve my problem at hand, so someone else can
add support if necessary in the future. I also added a comment at the site where the
code would fail, describing what the problem is and a potential workaround.

This patch also adds support for our NSSecureCoding implementation for CGColors. This
is necessary because sometimes we want to serialize things like NSAttributedStrings,
which we don't have direct support for, so we use NSSecureCoding to serialize them
instead. NSAttributedStrings can contain fonts whose descriptor dictionaries contain
CGColors, so this path needs to work with CGColors too. Support is implemented using
NSKeyedArchiverDelegate and NSKeyedUnarchiverDelegate.

Test: IPCTestingAPI.CGColorInNSSecureCoding

The non-NSSecureCoding parts of this patch are tested by our regular LayoutTests
when DOM GPU Process rendering is enabled.

  • Shared/Cocoa/ArgumentCodersCocoa.mm:

(-[WKSecureCodingArchivingDelegate archiver:willEncodeObject:]):
(-[WKSecureCodingArchivingDelegate unarchiver:didDecodeObject:]):
(-[WKSecureCodingCGColorWrapper wrappedColor]):
(+[WKSecureCodingCGColorWrapper supportsSecureCoding]):
(-[WKSecureCodingCGColorWrapper encodeWithCoder:]):
(-[WKSecureCodingCGColorWrapper initWithCoder:]):
(-[WKSecureCodingCGColorWrapper initWithCGColor:]):
(IPC::typeFromObject):
(IPC::decodeSecureCodingInternal):
(IPC::encodeCFInternal):
(IPC::decodeCFInternal):
(IPC::encodeObject):
(IPC::decodeObject):

  • Shared/cf/ArgumentCodersCF.cpp:

(IPC::typeFromCFTypeRef):
(IPC::ArgumentCoder<CFTypeRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CFTypeRef>>::decode):
(IPC::ArgumentCoder<CGColorRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CGColorRef>>::decode):

  • Shared/cf/ArgumentCodersCF.h:

Tools:

  • Scripts/webkitpy/style/checkers/cpp.py:
  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:
6:03 PM Changeset in webkit [291517] by Devin Rousso
  • 21 edits
    8 adds in trunk

Web Inspector: REGRESSION(?): Emulate User Gesture doesn't work
​https://bugs.webkit.org/show_bug.cgi?id=232584
<rdar://problem/84899576>

Reviewed by Patrick Angle.

Source/JavaScriptCore:

  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::evaluateOnCallFrame):

  • inspector/agents/InspectorRuntimeAgent.h:
  • inspector/agents/InspectorRuntimeAgent.cpp:

(Inspector::InspectorRuntimeAgent::evaluate):
(Inspector::InspectorRuntimeAgent::callFunctionOn):
Create overloads for these (protocol) methods so that we can avoid having to fetch the same
InjectedScript more than once (i.e. if the subclass fetches the InjectedScript and then
called into the baseclass, which also fetches the same InjectedScript).

  • debugger/Debugger.h:

(JSC::Debugger::Client::debuggerWillEvaluate):
(JSC::Debugger::Client::debuggerDidEvaluate):

  • debugger/Debugger.cpp:

(JSC::Debugger::evaluateBreakpointActions):
Pass along the current JSGlobalObject to eventually derive a relevant WebCore::Document.

Source/WebCore:

Recently some new web APIs have gone a step further by using a new way to detect one-time
user interaction called [transient activation](​https://html.spec.whatwg.org/multipage/interaction.html#transient-activation).
In order to support invoking these APIs from Web Inspector, UserGestureEmulationScope
needs to be adjusted to support marking the context as having recently been interacted with,
which turns out to just involve plumbing a Document through to the UserGestureIndicator,
as the rest has already been implemented.

Tests: inspector/debugger/breakpoint-action-emulateUserGesture-hasTransientActiviation.html

inspector/debugger/evaluateOnCallFrame-emulateUserGesture-hasTransientActivation.html
inspector/runtime/callFunctionOn-emulateUserGesture-hasTransientActivation.html
inspector/runtime/evaluate-emulateUserGesture-hasTransientActivation.html

  • inspector/agents/page/PageDebuggerAgent.h:
  • inspector/agents/page/PageDebuggerAgent.cpp:

(WebCore::PageDebuggerAgent::evaluateOnCallFrame):
(WebCore::PageDebuggerAgent::debuggerWillEvaluate):
(WebCore::PageDebuggerAgent::debuggerDidEvaluate):

  • inspector/agents/page/PageRuntimeAgent.cpp:

(WebCore::PageRuntimeAgent::evaluate):
(WebCore::PageRuntimeAgent::callFunctionOn):

  • inspector/agents/page/UserGestureEmulationScope.h:
  • inspector/agents/page/UserGestureEmulationScope.cpp:

(WebCore::UserGestureEmulationScope::UserGestureEmulationScope):
Derive a Document from the JSGlobalObject of the relevant InjectedScript.

  • inspector/InspectorFrontendClientLocal.cpp:

(WebCore::InspectorFrontendClientLocal::openURLExternally):

  • inspector/InspectorFrontendHost.cpp:

(WebCore::FrontendMenuProvider::contextMenuItemSelected):

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::navigate):
Drive-by: Pass the relevant Document to the UserGestureIndicator just in case the Web

Inspector frontend needs it.

  • page/DOMWindow.h:
  • testing/Internals.idl:
  • testing/Internals.h:
  • testing/Internals.cpp:

(WebCore::Internals::hasTransientActivation): Added.
Expose DOMWindow::hasTransientActivation to tests.

LayoutTests:

  • inspector/debugger/breakpoint-action-emulateUserGesture-hasTransientActiviation.html: Added.
  • inspector/debugger/breakpoint-action-emulateUserGesture-hasTransientActiviation-expected.txt: Added.
  • inspector/debugger/evaluateOnCallFrame-emulateUserGesture-hasTransientActivation.html: Added.
  • inspector/debugger/evaluateOnCallFrame-emulateUserGesture-hasTransientActivation-expected.txt: Added.
  • inspector/runtime/callFunctionOn-emulateUserGesture-hasTransientActivation.html: Added.
  • inspector/runtime/callFunctionOn-emulateUserGesture-hasTransientActivation-expected.txt: Added.
  • inspector/runtime/evaluate-emulateUserGesture-hasTransientActivation.html: Added.
  • inspector/runtime/evaluate-emulateUserGesture-hasTransientActivation-expected.txt: Added.
5:59 PM Changeset in webkit [291516] by Nikos Mouchtaris
  • 4 edits in trunk/Source/WebCore

Calc() cleanup
​https://bugs.webkit.org/show_bug.cgi?id=237982

Reviewed by Simon Fraser.

Small cleanup of CSSCalcExpressionNodeParser and CSSCalcOperationNode needed after
adding more math functions.

  • css/calc/CSSCalcExpressionNodeParser.cpp:

(WebCore::CSSCalcExpressionNodeParser::parseCalcFunction):

  • css/calc/CSSCalcOperationNode.cpp:

(WebCore::determineCategory):
(WebCore::CSSCalcOperationNode::simplifyNode):

  • css/calc/CSSCalcOperationNode.h:
5:55 PM Changeset in webkit [291515] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] Reduce # of registers used in RegExpTestInline to allow using unlinked DFG in x64
​https://bugs.webkit.org/show_bug.cgi?id=238092

Reviewed by Michael Saboff.

This patch reduces # of registers used in RegExpTestInline implementation to make it work
well for x64 unlinked DFG since it can reduce # of registers to use one callee-save register
for constants buffer.

We also add YarrJITRegisters::validate to ensure that used registers meet the invariants in YarrJIT.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compileRegExpTestInline):

  • yarr/YarrJIT.cpp:

(JSC::Yarr::jitCompileInlinedTest):

  • yarr/YarrJITRegisters.h:

(JSC::Yarr::YarrJITRegisters::validate):
(JSC::Yarr::YarrJITRegisters::YarrJITRegisters): Deleted.

5:46 PM Changeset in webkit [291514] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[iOS] Fix more build breakage from r291361
​https://bugs.webkit.org/show_bug.cgi?id=238097
<rdar://problem/90505371>

Unreviewed build fix.

  • platform/ios/WebAVPlayerController.mm: Declare AVAssetTrack.
5:43 PM Changeset in webkit [291513] by commit-queue@webkit.org
  • 4 edits
    5 deletes in trunk

Unreviewed, reverting r291476.
​https://bugs.webkit.org/show_bug.cgi?id=238098

Caused Gtk js/weakref-finalizationregistry.html failure

Reverted changeset:

"Remove the 1ms minimum for setTimeout"
​https://bugs.webkit.org/show_bug.cgi?id=221124
​https://commits.webkit.org/r291476

5:40 PM Changeset in webkit [291512] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[IFC][Integration] InlineIterator::Line::enclosingTop is really an enclosingTopAdjustedForPrecedingLine
​https://bugs.webkit.org/show_bug.cgi?id=238079

Reviewed by Antti Koivisto.

This is used for selection and hittesting.

  • layout/integration/InlineIteratorLine.cpp:

(WebCore::InlineIterator::Line::enclosingTopAdjustedForPrecedingBlock const):

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::enclosingTopAdjustedForPrecedingLine const):
(WebCore::InlineIterator::Line::enclosingLogicalRect const):
(WebCore::InlineIterator::Line::enclosingTop const): Deleted.

  • layout/integration/InlineIteratorLineLegacyPath.h:

(WebCore::InlineIterator::LineIteratorLegacyPath::enclosingTopAdjustedForPrecedingLine const):
(WebCore::InlineIterator::LineIteratorLegacyPath::enclosingTop const): Deleted.

  • layout/integration/InlineIteratorLineModernPath.h:

(WebCore::InlineIterator::LineIteratorModernPath::enclosingTopAdjustedForPrecedingLine const):
(WebCore::InlineIterator::LineIteratorModernPath::enclosingTopForHitTesting const):
(WebCore::InlineIterator::LineIteratorModernPath::enclosingTop const): Deleted.

  • layout/integration/LineSelection.h:

(WebCore::LineSelection::logicalTop):

5:31 PM Changeset in webkit [291511] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit

Update preference location used for CaptivePortal testing.
​https://bugs.webkit.org/show_bug.cgi?id=237970
<rdar://problem/88897735>

Patch by Gavin Phillips <​gavin.p@apple.com> on 2022-03-18
Reviewed by Brent Fulgham.

Update the location of the setting used to determine whether we should ignore CaptivePortal requests for testing
as well as group the various iterations of preference checking into a single location.

  • UIProcess/API/Cocoa/_WKSystemPreferences.mm:

(+[_WKSystemPreferences isCaptivePortalModeEnabled]):
(+[_WKSystemPreferences setCaptivePortalModeEnabled:]):
(+[_WKSystemPreferences isCaptivePortalModeIgnored:]):
(+[_WKSystemPreferences setCaptivePortalModeIgnored:ignore:]):

  • UIProcess/API/Cocoa/_WKSystemPreferencesInternal.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::isCaptivePortalModeEnabledBySystemIgnoringCaching):

5:30 PM Changeset in webkit [291510] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.15

Tag Safari-614.1.5.15.

5:26 PM Changeset in webkit [291509] by Cameron McCormack
  • 12 edits in trunk/LayoutTests/imported/w3c

Update Display P3 canvas drawImage(video) tests to avoid edge case bugs
​https://bugs.webkit.org/show_bug.cgi?id=237286

Reviewed by Jer Noble.

This test is intermittently failing, due to the odd single frame
videos causing issues and loadeddata not being guaranteed to mean the
video is ready for drawing. Update the tests to work around these.

  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html:
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html:

Use requestVideoFrameCallback if available, since that should be
better than loadeddata to guarantee the pixel data is available. Also
play the videos that are inserted, to avoid issues with the video
frame callback being called a bit late.

  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js:

Fix the command line in the comment that's used to generate the test
videos.

  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Rec2020-222000000.mp4:
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Rec2020-222000000.webm:
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Rec2020-3FF000000.mp4:
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Rec2020-3FF000000.webm:
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.mp4:
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.webm:
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0100.mp4:
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0100.webm:

Change these videos from being a single frame long to 10s long.

5:19 PM Changeset in webkit [291508] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Optimize AtomHTMLToken::initializeAttributes()
​https://bugs.webkit.org/show_bug.cgi?id=238074

Reviewed by Geoffrey Garen.

Use a HashSet to find duplicate attributes instead of doing a linear search.
This is a confirmed 1.2% progression on Speedometer on iMac20,1 via A/B bots.

  • html/parser/AtomHTMLToken.h:

(WebCore::AtomHTMLToken::initializeAttributes):

5:00 PM Changeset in webkit [291507] by Russell Epstein
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.15

4:51 PM Changeset in webkit [291506] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[macOS arm64] webrtc/vp9-profile2.html is consistently timing out
​https://bugs.webkit.org/show_bug.cgi?id=238104

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:20 PM Changeset in webkit [291505] by Alan Coon
  • 1 copy in tags/Safari-614.1.6.1

Tag Safari-614.1.6.1.

4:20 PM Changeset in webkit [291504] by Alan Coon
  • 1 delete in tags/Safari-614.1.6.1

Delete tag.

4:18 PM Changeset in webkit [291503] by Alan Coon
  • 9 edits in branches/safari-614.1.6-branch/Source

Versioning.

WebKit-7614.1.6.1

4:13 PM Changeset in webkit [291502] by Alan Coon
  • 1 copy in tags/Safari-614.1.6.1

Tag Safari-614.1.6.1.

4:11 PM Changeset in webkit [291501] by Jonathan Bedard
  • 11 edits in trunk/Source

[iOS 15.4] Fix unused variables
​https://bugs.webkit.org/show_bug.cgi?id=238089
<rdar://problem/90498642 >

Reviewed by Alexey Proskuryakov and Chris Dumez.

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

(WebKit::WebProcessPool::platformInitializeWebProcess): Declare isSafari as unused for Mac and Catalyst.

  • Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(-[WKScrollingNodeScrollViewDelegate scrollViewWillEndDragging:withVelocity:targetContentOffset:]):
Remove canPanX and canPanY, since they are unused.

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

(-[WKActionSheetAssistant _createSheetWithElementActions:defaultTitle:showLinkTitle:]): Remove titleIsURL.

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

(WebChromeClient::addMessageToConsole): Declare respondsToNewSelector as unused on iOS family.

  • Source/WebCore/accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::visiblePositionForPoint const): frameView is only used on Mac.

  • Source/WebCore/editing/cocoa/HTMLConverter.mm:

(HTMLConverter::_addAttachmentForElement): Declare ignoreOrientation as unused on iOS family.

  • Source/WebCore/platform/audio/ios/AudioOutputUnitAdaptorIOS.cpp:

(WebCore::AudioOutputUnitAdaptor::configure): Assert that result is unused.

  • Source/WebCore/platform/graphics/coretext/FontCascadeCoreText.cpp:

(WebCore::FontCascade::drawGlyphs): Declare shouldSmoothFonts as unused on iOS family.

Canonical link: ​https://commits.webkit.org/248613@main

3:47 PM Changeset in webkit [291500] by Antti Koivisto
  • 8 edits in trunk

[CSS Container Queries] Ensure container style changes are propagated to descendants
​https://bugs.webkit.org/show_bug.cgi?id=238072

Reviewed by Alan Bujtas.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-contain/container-queries/container-name-invalidation-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-type-invalidation-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-units-selection-expected.txt:

Source/WebCore:

  • style/StyleChange.cpp:

(WebCore::Style::determineChange):

Ensure we recompute the descendants when container properties change.

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveComposedTree):
(WebCore::Style::TreeResolver::updateQueryContainer):

We need to ensure layout is up-to-date also when a query container stops being one.
Remove the unused m_resolvedQueryContainers maps.

  • style/StyleTreeResolver.h:
3:12 PM Changeset in webkit [291499] by pvollan@apple.com
  • 30 edits
    5 copies in trunk

Fix test failures when enabling content filtering in the Network process
​https://bugs.webkit.org/show_bug.cgi?id=237217

Reviewed by Brent Fulgham.

Source/WebCore:

This patch addresses test failures when enabling content filtering in the Network process.
When content filtering is running in the Network process, we need to send the mock content
filter and settings to the Network process to support testing. The mock content filter is
moved from the WebCore test support library target to the WebCore framework, since WebKit
now also will reference the mock content filter when sending it to the Network process.
Previously a compile time guard was used to disable the content filtering code in the
document loader. However, we still need to support content filtering in the document
loader for WK1, so this patch changes that to use a runtime check instead. The rest of
this patch addresses test failures seen when running the layout and API tests. This patch
does not enable the feature.

No new tests, covered by existing tests.

  • WebCore.xcodeproj/project.pbxproj:
  • loader/ContentFilter.cpp:

(WebCore::ContentFilter::startFilteringMainResource):
(WebCore::ContentFilter::continueAfterDataReceived):
(WebCore::ContentFilter::continueAfterNotifyFinished):
(WebCore::ContentFilter::deliverResourceData):
(WebCore::ContentFilter::url):
(WebCore::ContentFilter::continueAfterSubstituteDataRequest):

  • loader/ContentFilter.h:

(WebCore::ContentFilter::setBlockedError):

  • loader/ContentFilterClient.h:
  • loader/DocumentLoader.cpp:

(WebCore::contentFilterInDocumentLoader):
(WebCore::DocumentLoader::notifyFinished):
(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::responseReceived):
(WebCore::DocumentLoader::dataReceived):
(WebCore::DocumentLoader::detachFromFrame):
(WebCore::DocumentLoader::startLoadingMainResource):
(WebCore::DocumentLoader::clearMainResource):
(WebCore::DocumentLoader::becomeMainResourceClient):
(WebCore::DocumentLoader::dataReceivedThroughContentFilter):
(WebCore::DocumentLoader::contentFilterWillHandleProvisionalLoadFailure):
(WebCore::DocumentLoader::contentFilterHandleProvisionalLoadFailure):

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::setBlockedPageURL):
(WebCore::DocumentLoader::setSubstituteDataFromContentFilter):

  • loader/PolicyChecker.cpp:

(WebCore::FrameLoader::PolicyChecker::checkNavigationPolicy):

  • platform/ContentFilterUnblockHandler.h:
  • platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:

(WebCore::ContentFilterUnblockHandler::encode const):
(WebCore::ContentFilterUnblockHandler::decode):
(WebCore::ContentFilterUnblockHandler::canHandleRequest const):
(WebCore::ContentFilterUnblockHandler::requestUnblockAsync const):
(WebCore::ContentFilterUnblockHandler::setUnblockedAfterRequest):

  • testing/MockContentFilterManager.cpp: Added.

(WebCore::MockContentFilterManager::singleton):
(WebCore::MockContentFilterManager::setClient):
(WebCore::MockContentFilterManager::notifySettingsChanged const):

  • testing/MockContentFilterManager.h: Added.
  • testing/MockContentFilterSettings.cpp:

(WebCore::MockContentFilterSettings::reset):
(WebCore::MockContentFilterSettings::setEnabled):
(WebCore::MockContentFilterSettings::setBlockedString):
(WebCore::MockContentFilterSettings::setDecisionPoint):
(WebCore::MockContentFilterSettings::setDecision):
(WebCore::MockContentFilterSettings::setUnblockRequestDecision):
(WebCore::MockContentFilterSettings::setModifiedRequestURL):

  • testing/MockContentFilterSettings.h:

(WebCore::MockContentFilterSettings::encode const):
(WebCore::MockContentFilterSettings::decode):
(WebCore::MockContentFilterSettings::setBlockedString): Deleted.
(WebCore::MockContentFilterSettings::setDecisionPoint): Deleted.
(WebCore::MockContentFilterSettings::setDecision): Deleted.
(WebCore::MockContentFilterSettings::setUnblockRequestDecision): Deleted.
(WebCore::MockContentFilterSettings::setModifiedRequestURL): Deleted.

  • testing/MockContentFilterSettingsClient.h: Added.

(WebCore::MockContentFilterSettingsClient::~MockContentFilterSettingsClient):

Source/WebKit:

Add a WebMockContentFilterManager in the WebContent process, which will be notified
when mock content filter settings are changed from JavaScript, and then send the new
settings to the Network process and install the mock content filter. The other
changes are addressing layout and API test failures.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::installMockContentFilter):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::start):
(WebKit::NetworkResourceLoader::startContentFiltering):
(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::willSendRedirectedRequestInternal):
(WebKit::NetworkResourceLoader::contentFilterDidBlock):
(WebKit::NetworkResourceLoader::cancelMainResourceLoadForContentFilter):
(WebKit::NetworkResourceLoader::handleProvisionalLoadFailureFromContentFilter):

  • NetworkProcess/NetworkResourceLoader.h:
  • Shared/WebCoreArgumentCoders.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Network/WebMockContentFilterManager.cpp: Added.

(WebKit::WebMockContentFilterManager::singleton):
(WebKit::WebMockContentFilterManager::startObservingSettings):
(WebKit::WebMockContentFilterManager::mockContentFilterSettingsChanged):

  • WebProcess/Network/WebMockContentFilterManager.h: Added.
  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::contentFilterDidBlockLoad):
(WebKit::WebResourceLoader::cancelMainResourceLoadForContentFilter):
(WebKit::WebResourceLoader::handleProvisionalLoadFailureFromContentFilter): Deleted.

  • WebProcess/Network/WebResourceLoader.h:
  • WebProcess/Network/WebResourceLoader.messages.in:
  • WebProcess/WebProcess.cpp:

Tools:

TestWebKitAPI needs to link with WebCore now that the mock content filter is compiled into WebCore.
Adjust test expectations, since the content filters are not expected to be loaded in the WebContent
process anymore.

  • TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
  • TestWebKitAPI/Configurations/WebProcessPlugIn.xcconfig:
  • TestWebKitAPI/Tests/WebKitCocoa/ContentFiltering.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ContentFilteringPlugIn.mm:
  • TestWebKitAPI/Tests/mac/ContentFiltering.mm:
3:09 PM Changeset in webkit [291498] by mmaxfield@apple.com
  • 47 edits in trunk/Source/WebGPU

[WebGPU] Add #pragma marks to strategic places
​https://bugs.webkit.org/show_bug.cgi?id=238065

Reviewed by Alexey Proskuryakov.

They help a little bit with Xcode navigation.

  • WebGPU/Adapter.h:
  • WebGPU/Adapter.mm:
  • WebGPU/BindGroup.h:
  • WebGPU/BindGroup.mm:
  • WebGPU/BindGroupLayout.h:
  • WebGPU/BindGroupLayout.mm:
  • WebGPU/Buffer.h:
  • WebGPU/Buffer.mm:
  • WebGPU/CommandBuffer.h:
  • WebGPU/CommandBuffer.mm:
  • WebGPU/CommandEncoder.h:
  • WebGPU/CommandEncoder.mm:
  • WebGPU/ComputePassEncoder.h:
  • WebGPU/ComputePassEncoder.mm:
  • WebGPU/ComputePipeline.h:
  • WebGPU/ComputePipeline.mm:
  • WebGPU/Device.h:
  • WebGPU/Device.mm:
  • WebGPU/Instance.h:
  • WebGPU/Instance.mm:
  • WebGPU/PipelineLayout.h:
  • WebGPU/PipelineLayout.mm:
  • WebGPU/QuerySet.h:
  • WebGPU/QuerySet.mm:
  • WebGPU/Queue.h:
  • WebGPU/Queue.mm:
  • WebGPU/RenderBundle.h:
  • WebGPU/RenderBundle.mm:
  • WebGPU/RenderBundleEncoder.h:
  • WebGPU/RenderBundleEncoder.mm:
  • WebGPU/RenderPassEncoder.h:
  • WebGPU/RenderPassEncoder.mm:
  • WebGPU/RenderPipeline.h:
  • WebGPU/RenderPipeline.mm:
  • WebGPU/Sampler.h:
  • WebGPU/Sampler.mm:
  • WebGPU/ShaderModule.h:
  • WebGPU/ShaderModule.mm:
  • WebGPU/Surface.h:
  • WebGPU/Surface.mm:
  • WebGPU/SwapChain.h:
  • WebGPU/SwapChain.mm:
  • WebGPU/Texture.h:
  • WebGPU/Texture.mm:
  • WebGPU/TextureView.h:
  • WebGPU/TextureView.mm:
2:59 PM Changeset in webkit [291497] by Nikos Mouchtaris
  • 5 edits
    2 adds in trunk

Allow history swipe in scroller with overscroll-behavior
​https://bugs.webkit.org/show_bug.cgi?id=235851

Reviewed by Simon Fraser.

Source/WebCore:

Re-add code to allow history swipe. Does so by returning unhandled if a horizontal
swipe is used. Also add test to make sure history swipes are allowed in scrolling nodes
with overscroll-behavior.

Test: scrollingcoordinator/mac/latching/horizontal-overflow-back-swipe-overscroll-behavior.html

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::handleWheelEventWithNode):

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::shouldRubberBand const):
(WebCore::ScrollingTreeScrollingNode::computeScrollPropagation const):
(WebCore::ScrollingTreeScrollingNode::shouldBlockScrollPropagation const): Deleted.

  • page/scrolling/ScrollingTreeScrollingNode.h:

LayoutTests:

  • scrollingcoordinator/mac/latching/horizontal-overflow-back-swipe-overscroll-behavior-expected.txt: Added.
  • scrollingcoordinator/mac/latching/horizontal-overflow-back-swipe-overscroll-behavior.html: Added.
2:53 PM Changeset in webkit [291496] by Chris Dumez
  • 5 edits in trunk/Source

Avoid calls to [CLLocationManager authorizationStatus] & [CLLocationManager locationServicesEnabled]
​https://bugs.webkit.org/show_bug.cgi?id=237933
<rdar://89931043>

Reviewed by Geoffrey Garen.

Source/WebCore:

Avoid calls to [CLLocationManager authorizationStatus] & [CLLocationManager locationServicesEnabled]
for performance reasons since those are synchronous, potentially slow and called on the UIProcess
main thread.

Instead, rely on the fact that the locationManagerDidChangeAuthorization always gets called
asynchronously right after constructing the CLLocationManager with the actual authorization.
This simplifies our logic a bit too.

We now only call [CLLocationManager requestWhenInUseAuthorization] when locationManagerDidChangeAuthorization
gets called with kCLAuthorizationStatusNotDetermined asynchronously after construction.
If locationManagerDidChangeAuthorization gets called with an authorized enum value, we
call [CLLocationManager startUpdatingLocation] then (if the client is interested in locations, and not
merely in the authorization).

  • platform/cocoa/CoreLocationGeolocationProvider.h:
  • platform/cocoa/CoreLocationGeolocationProvider.mm:

(-[WebCLLocationManager initWithWebsiteIdentifier:client:mode:]):
(-[WebCLLocationManager locationManagerDidChangeAuthorization:]):
(WebCore::CoreLocationGeolocationProvider::CoreLocationGeolocationProvider):
(isAuthorizationGranted): Deleted.
(-[WebCLLocationManager initWithWebsiteIdentifier:client:]): Deleted.
(-[WebCLLocationManager start]): Deleted.
(-[WebCLLocationManager requestGeolocationAuthorization]): Deleted.
(WebCore::CoreLocationGeolocationProvider::start): Deleted.
(WebCore::CoreLocationGeolocationProvider::stop): Deleted.

Source/WebKit:

Minor changes to reflect API changes for our CoreLocation location manager.

  • UIProcess/WebGeolocationManagerProxy.cpp:

(WebKit::WebGeolocationManagerProxy::providerStartUpdating):
(WebKit::WebGeolocationManagerProxy::providerStopUpdating):

1:09 PM Changeset in webkit [291495] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Avoid extra pointer dereference in EventListenerMap::m_entries
​https://bugs.webkit.org/show_bug.cgi?id=238075

Reviewed by Geoffrey Garen.

This is a confirmed 0.5-0.8% progression on Speedometer according to A/B
bots.

  • dom/EventListenerMap.cpp:

(WebCore::EventListenerMap::clear):
(WebCore::EventListenerMap::add):
(WebCore::EventListenerMap::remove):
(WebCore::EventListenerMap::find):
(WebCore::EventListenerMap::removeFirstEventListenerCreatedFromMarkup):
(WebCore::EventListenerMap::copyEventListenersNotCreatedFromMarkupToTarget):
(WebCore::EventListenerIterator::nextListener):
(WebCore::EventListenerMap::find const): Deleted.

  • dom/EventListenerMap.h:

(WebCore::EventListenerMap::find const):

12:42 PM Changeset in webkit [291494] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Keep a strong reference to session in [WebCoreNSURLSessionDataTask _restart]
​https://bugs.webkit.org/show_bug.cgi?id=238061
<rdar://88242622>

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-18
Reviewed by Eric Carlson.

_session is a WeakObjCPtr<WebCoreNSURLSession> and since we're not using ARC self.session
returns a raw pointer to an object that may be deallocated and null out its loader on a different thread.
To prevent null crashes, keep a strong reference to the session when using it.

  • platform/network/cocoa/WebCoreNSURLSession.mm:

(-[WebCoreNSURLSession dealloc]):
(-[WebCoreNSURLSessionDataTask _restart]):

12:36 PM Changeset in webkit [291493] by Simon Fraser
  • 3 edits
    3 adds in trunk

REGRESSION (r290628): Scrubber makes a visual trail when scrubbing on tv.youtube.com
​https://bugs.webkit.org/show_bug.cgi?id=238047
<rdar://problem/90451319>

Reviewed by Alan Bujtas.

Source/WebCore:

In r290628 I added a call to clearRepaintRects() when changing the backing sharing
target layer for a RenderLayer. However, for a layer using backing sharing, this
gets called twice during a normal compositing update, which has the effect of
clearing the cached repaint rects so that a layer repaint always computes new rects.
Thus, if a layer moved, we'd fail to repaint the old rect.

RenderLayerBacking::setBackingSharingLayers() already has logic to update repaint
rects when state changes, so we don't need this clearing.

Test: compositing/repaint/move-backing-sharing-layer.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::setBackingProviderLayer):

LayoutTests:

  • compositing/repaint/move-backing-sharing-layer-expected.txt: Added.
  • compositing/repaint/move-backing-sharing-layer.html: Added.
12:19 PM Changeset in webkit [291492] by Ben Nham
  • 18 edits in trunk

Remove push subscriptions when associated service worker registrations are removed
​https://bugs.webkit.org/show_bug.cgi?id=237983

Reviewed by Youenn Fablet.

Source/WebKit:

When a ServiceWorkerRegistration is removed, we also need to remove its associated
PushSubscription. This can occur when:

  1. The application calls ServiceWorkerRegistration.unregister. This is implemented by having resolveUnregistrationJobInClient call unsubscribeFromPushService in webpushd. The identifier passed to unsubscribeFromPushService is now optional; if the identifier is not present, then we delete whatever PushSubscription is associated with the given scope URL.
  1. The user clears website data for a particular origin. This is implemented by having deleteWebsiteDataForOrigins invoke removePushSubscriptionsForOrigin in webpushd.
  1. The user clears all website data. This is implemented by having deleteWebsiteData invoke removeAllPushSubscriptions in webpushd.

Covered by new API tests.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains):
(WebKit::NetworkProcess::hasPushSubscriptionForTesting):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/Notifications/NetworkNotificationManager.cpp:

(WebKit::NetworkNotificationManager::unsubscribeFromPushService):
(WebKit::NetworkNotificationManager::removeAllPushSubscriptions):
(WebKit::NetworkNotificationManager::removePushSubscriptionsForOrigin):

  • NetworkProcess/Notifications/NetworkNotificationManager.h:
  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):

  • Shared/WebPushDaemonConstants.h:

(WebKit::WebPushD::messageTypeSendsReply):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _scopeURL:hasPushSubscriptionForTesting:]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::hasPushSubscriptionForTesting):

  • UIProcess/Network/NetworkProcessProxy.h:
  • webpushd/PushService.h:
  • webpushd/PushService.mm:

(WebPushD::UnsubscribeRequest::UnsubscribeRequest):
(WebPushD::UnsubscribeRequest::startInternal):
(WebPushD::PushService::unsubscribe):
(WebPushD::PushService::incrementSilentPushCount):
(WebPushD::PushService::removeRecordsForBundleIdentifier):
(WebPushD::PushService::removeRecordsForBundleIdentifierAndOrigin):
(WebPushD::PushService::removeRecordsImpl):

  • webpushd/WebPushDaemon.h:
  • webpushd/WebPushDaemon.mm:

(WebPushD::MessageInfo::removeAllPushSubscriptions::encodeReply):
(WebPushD::MessageInfo::removePushSubscriptionsForOrigin::encodeReply):
(WebPushD::Daemon::decodeAndHandleMessage):
(WebPushD::Daemon::unsubscribeFromPushService):
(WebPushD::Daemon::removeAllPushSubscriptions):
(WebPushD::Daemon::removePushSubscriptionsForOrigin):

Tools:

Add new tests to make sure that we delete push subscriptions when unregistering a service
worker or deleting website data.

  • TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:
12:11 PM Changeset in webkit [291491] by J Pascoe
  • 4 edits in trunk

Trigger PDF download in captive portal mode instead of using PDF viewer
​https://bugs.webkit.org/show_bug.cgi?id=237245
rdar://problem/89525531

Reviewed by Chris Dumez.

Source/WebKit:

This is a stopgap solution since PDF.js needs more cycles to polish.

Added API test WKDownload.CaptivePortalPDF.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::decidePolicyForResponseShared):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

Add API test for captive portal pdf behavior.

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(tempPDFThatDoesNotExist):

11:48 AM Changeset in webkit [291490] by Jonathan Bedard
  • 7 edits in trunk/Tools

[git-webkit] Make radar conditional on authentication
​https://bugs.webkit.org/show_bug.cgi?id=238051
<rdar://problem/90384655>

Reviewed by Aakash Jain.

  • Tools/Scripts/libraries/webkitbugspy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/radar.py:

(Tracker.init): Only instantiate client with valid authentication.
(Tracker.authentication): Catch exceptions from failed authentication.

  • Tools/Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/scm.py:

(Scm.init): Only instantiate Radar as a tracker with valid authentication.

Canonical link: ​https://commits.webkit.org/248602@main

11:06 AM Changeset in webkit [291489] by Russell Epstein
  • 3 edits in branches/safari-614.1.6-branch/Source/WebKit

Cherry-pick r291437. rdar://problem/90445115

Unreviewed, reverting r290835.
​https://bugs.webkit.org/show_bug.cgi?id=238044

Disruptive change

Reverted changeset:

"[iOS] Hard link AVPictureInPictureController"
​https://bugs.webkit.org/show_bug.cgi?id=237227
​https://commits.webkit.org/r290835

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291437 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:06 AM Changeset in webkit [291488] by Russell Epstein
  • 3 edits in branches/safari-614.1.6-branch/Source/WebKit

Cherry-pick r291429. rdar://problem/90445115

Unreviewed, reverting r291352.
​https://bugs.webkit.org/show_bug.cgi?id=238039

Disruptive change

Reverted changeset:

"Incorrect header name used in has_include"
​https://bugs.webkit.org/show_bug.cgi?id=237914
​https://commits.webkit.org/r291352

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291429 268f45cc-cd09-0410-ab3c-d52691b4dbfc

9:45 AM Changeset in webkit [291487] by eocanha@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Add stop position to the range request
​https://bugs.webkit.org/show_bug.cgi?id=238028

Reviewed by Philippe Normand.

Currently, the range requests performed by WebKitWebSourceGStreamer indicate a range
start position but not a range stop one, even though it's set in the internal
members->stopPosition attribute.

This may not be a problem when WebKitWebSrc is used as a source for the whole video,
but certainly is when it's used as an embedded source inside adaptive demux
(replacing SoupHttpSrc). It causes decoding errors in some MPEG-DASH streams.
See: ​https://github.com/WebPlatformForEmbedded/WPEWebKit/issues/813

This patch is authored by Eugene Mutavchi <​Ievgen_Mutavchi@comcast.com>
See: ​https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/814

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: Apply stopPosition to the range request when it's valid.
8:39 AM Changeset in webkit [291486] by Patrick Griffis
  • 2 edits in trunk/Tools

[Flatpak] Pass extra webkit-flatpak args to sub-command
​https://bugs.webkit.org/show_bug.cgi?id=238027

Reviewed by Carlos Garcia Campos.

This adds the abillity to run something like:

webkit-flatpak --command=echo -- --help

Where our script doesn't parse anything after -- and it gets passed to the subcommand.

  • flatpak/flatpakutils.py:

(extract_extra_command_args):
(WebkitFlatpak.load_from_args):
(WebkitFlatpak.setup_dev_env):

8:08 AM Changeset in webkit [291485] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r290356-r290351?): [ iOS EWS ] 3 imported/w3c/web-platform-tests/service-workers/service-worker/* tests are constant text failures.
​https://bugs.webkit.org/show_bug.cgi?id=237160
<rdar://problem/89440067>

Reviewed by Chris Dumez.

When we try reusing a resource in the MemoryCache that was provided by a service worker, we might need to revalidate it.
In that case, we might add revalidation headers that will show up in service workers fetch event request.
To prevent this, we reload instead of revalidating at document level.
The service worker will then be able to revalidate itself the resource since it is probably in its memory cache.

Covered by test that is no longer flaky.

  • loader/cache/CachedResourceLoader.cpp:
7:31 AM Changeset in webkit [291484] by commit-queue@webkit.org
  • 4 edits in trunk

[GStreamer] Migrate gst-full support to 1.20
​https://bugs.webkit.org/show_bug.cgi?id=237772

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-18
Reviewed by Xabier Rodriguez-Calvar.

.:

  • Source/cmake/GStreamerChecks.cmake:

Source/WebCore:

  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::registerWebKitGStreamerElements): GStreamer 1.20 no longer requires manual
initialization of gst-full. It is done during the gst_init().

7:27 AM Changeset in webkit [291483] by commit-queue@webkit.org
  • 34 edits
    50 adds in trunk

[GStreamer] Initial import of the GstWebRTC backend
​https://bugs.webkit.org/show_bug.cgi?id=236540

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-18
Reviewed by Carlos Garcia Campos and Xabier Rodriguez-Calvar.

.:

Enable GstWebRTC by default if a recent-enough (>= 1.20) version is available.

  • Source/cmake/FindGStreamer.cmake:
  • Source/cmake/GStreamerChecks.cmake:
  • Source/cmake/GStreamerDefinitions.cmake:
  • Source/cmake/GStreamerDependencies.cmake:

Source/WebCore:

Initial GstWebRTC backend. A lot of features unimplemented still, but we will incrementally
improve the layout test coverage in follow-up patches. Most notable short-comings currently:

  • DataChannel support is incomplete (bug 235879)
  • Network traffic not routed through Network process yet
  • Stats support incomplete
  • DTMF support unimplemented
  • ICE restarts not supported yet
  • Re-negotiation unlikely to work
  • Simulcast not handled yet
  • Balanced bundle not supported
  • RTX and FEC un-tested, but shouldn't be hard to fix
  • Modules/mediastream/MediaDevices.cpp:
  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::generateCertificate):

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::create):

  • Modules/mediastream/gstreamer/GStreamerDataChannelHandler.cpp: Added.

(WebCore::GStreamerDataChannelHandler::fromRTCDataChannelInit):
(WebCore::GStreamerDataChannelHandler::channelEvent):
(WebCore::GStreamerDataChannelHandler::GStreamerDataChannelHandler):
(WebCore::GStreamerDataChannelHandler::~GStreamerDataChannelHandler):
(WebCore::GStreamerDataChannelHandler::setClient):
(WebCore::GStreamerDataChannelHandler::sendStringData):
(WebCore::GStreamerDataChannelHandler::sendRawData):
(WebCore::GStreamerDataChannelHandler::close):
(WebCore::GStreamerDataChannelHandler::checkState):
(WebCore::GStreamerDataChannelHandler::readyStateChanged):
(WebCore::GStreamerDataChannelHandler::onMessageData):
(WebCore::GStreamerDataChannelHandler::onMessageString):
(WebCore::GStreamerDataChannelHandler::onError):
(WebCore::GStreamerDataChannelHandler::onBufferedAmountLow):
(WebCore::GStreamerDataChannelHandler::postTask):

  • Modules/mediastream/gstreamer/GStreamerDataChannelHandler.h: Added.
  • Modules/mediastream/gstreamer/GStreamerDtlsTransportBackend.cpp: Added.

(WebCore::GStreamerDtlsTransportBackend::GStreamerDtlsTransportBackend):
(WebCore::GStreamerDtlsTransportBackend::~GStreamerDtlsTransportBackend):
(WebCore::GStreamerDtlsTransportBackend::iceTransportBackend):
(WebCore::GStreamerDtlsTransportBackend::registerClient):
(WebCore::GStreamerDtlsTransportBackend::unregisterClient):
(WebCore::GStreamerDtlsTransportBackend::stateChanged):

  • Modules/mediastream/gstreamer/GStreamerDtlsTransportBackend.h: Added.
  • Modules/mediastream/gstreamer/GStreamerIceTransportBackend.cpp: Added.

(WebCore::GStreamerIceTransportBackend::GStreamerIceTransportBackend):
(WebCore::GStreamerIceTransportBackend::~GStreamerIceTransportBackend):
(WebCore::GStreamerIceTransportBackend::iceTransportChanged):
(WebCore::GStreamerIceTransportBackend::registerClient):
(WebCore::GStreamerIceTransportBackend::unregisterClient):
(WebCore::GStreamerIceTransportBackend::stateChanged):
(WebCore::GStreamerIceTransportBackend::gatheringStateChanged):

  • Modules/mediastream/gstreamer/GStreamerIceTransportBackend.h: Added.
  • Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp: Added.

(WebCore::GStreamerMediaEndpoint::GStreamerMediaEndpoint):
(WebCore::GStreamerMediaEndpoint::initializePipeline):
(WebCore::GStreamerMediaEndpoint::~GStreamerMediaEndpoint):
(WebCore::GStreamerMediaEndpoint::teardownPipeline):
(WebCore::GStreamerMediaEndpoint::handleMessage):
(WebCore::GStreamerMediaEndpoint::disposeElementChain):
(WebCore::GStreamerMediaEndpoint::setConfiguration):
(WebCore::GStreamerMediaEndpoint::restartIce):
(WebCore::fetchDescription):
(WebCore::fetchSignalingState):
(WebCore::descriptionsFromWebRTCBin):
(WebCore::GStreamerMediaEndpoint::doSetLocalDescription):
(WebCore::GStreamerMediaEndpoint::setRemoteDescriptionSucceeded):
(WebCore::GStreamerMediaEndpoint::doSetRemoteDescription):
(WebCore::SetDescriptionCallData::SetDescriptionCallData):
(WebCore::GStreamerMediaEndpoint::setDescription):
(WebCore::GStreamerMediaEndpoint::storeRemoteMLineInfo):
(WebCore::GStreamerMediaEndpoint::configureAndLinkSource):
(WebCore::GStreamerMediaEndpoint::requestPad):
(WebCore::GStreamerMediaEndpoint::addTrack):
(WebCore::GStreamerMediaEndpoint::removeTrack):
(WebCore::GStreamerMediaEndpoint::doCreateOffer):
(WebCore::GStreamerMediaEndpoint::doCreateAnswer):
(WebCore::GStreamerMediaEndpoint::initiate):
(WebCore::GStreamerMediaEndpoint::getStats):
(WebCore::GStreamerMediaEndpoint::mediaStreamFromRTCStream):
(WebCore::GStreamerMediaEndpoint::addRemoteStream):
(WebCore::GStreamerMediaEndpoint::removeRemoteStream):
(WebCore::GStreamerMediaEndpoint::createTransceiverBackends):
(WebCore::GStreamerMediaEndpoint::addTransceiver):
(WebCore::GStreamerMediaEndpoint::createSourceForTrack):
(WebCore::GStreamerMediaEndpoint::setSenderSourceFromTrack):
(WebCore::GStreamerMediaEndpoint::transceiverBackendFromSender):
(WebCore::GStreamerMediaEndpoint::addIceCandidate):
(WebCore::GStreamerMediaEndpoint::createDataChannel):
(WebCore::GStreamerMediaEndpoint::onDataChannel):
(WebCore::GStreamerMediaEndpoint::close):
(WebCore::GStreamerMediaEndpoint::stop):
(WebCore::GStreamerMediaEndpoint::suspend):
(WebCore::GStreamerMediaEndpoint::resume):
(WebCore::GStreamerMediaEndpoint::onNegotiationNeeded):
(WebCore::GStreamerMediaEndpoint::onIceConnectionChange):
(WebCore::GStreamerMediaEndpoint::onIceGatheringChange):
(WebCore::GStreamerMediaEndpoint::onIceCandidate):
(WebCore::GStreamerMediaEndpoint::createSessionDescriptionSucceeded):
(WebCore::GStreamerMediaEndpoint::createSessionDescriptionFailed):
(WebCore::GStreamerMediaEndpoint::collectTransceivers):
(WebCore::GStreamerMediaEndpoint::gatherStatsForLogging):
(WebCore::RTCStatsLogger::RTCStatsLogger):
(WebCore::RTCStatsLogger::toJSONString const):
(WebCore::GStreamerMediaEndpoint::processStats):
(WebCore::GStreamerMediaEndpoint::onStatsDelivered):
(WebCore::GStreamerMediaEndpoint::startLoggingStats):
(WebCore::GStreamerMediaEndpoint::stopLoggingStats):
(WebCore::GStreamerMediaEndpoint::logChannel const):
(WebCore::GStreamerMediaEndpoint::statsLogInterval const):
(WebCore::GStreamerMediaEndpoint::gatherDecoderImplementationName):
(WTF::LogArgument<WebCore::RTCStatsLogger>::toString):

  • Modules/mediastream/gstreamer/GStreamerMediaEndpoint.h: Added.

(WebCore::GStreamerMediaEndpoint::create):
(WebCore::GStreamerMediaEndpoint::isStopped const):
(WebCore::GStreamerMediaEndpoint::isNegotiationNeeded const):
(WebCore::GStreamerMediaEndpoint::pipeline const):

  • Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp: Added.

(WebCore::createGStreamerPeerConnectionBackend):
(WebCore::PeerConnectionBackend::receiverCapabilities):
(WebCore::PeerConnectionBackend::senderCapabilities):
(WebCore::GStreamerPeerConnectionBackend::GStreamerPeerConnectionBackend):
(WebCore::GStreamerPeerConnectionBackend::suspend):
(WebCore::GStreamerPeerConnectionBackend::resume):
(WebCore::GStreamerPeerConnectionBackend::restartIce):
(WebCore::GStreamerPeerConnectionBackend::setConfiguration):
(WebCore::GStreamerPeerConnectionBackend::getStats):
(WebCore::backendFromRTPSender):
(WebCore::GStreamerPeerConnectionBackend::doSetLocalDescription):
(WebCore::GStreamerPeerConnectionBackend::doSetRemoteDescription):
(WebCore::GStreamerPeerConnectionBackend::doCreateOffer):
(WebCore::GStreamerPeerConnectionBackend::doCreateAnswer):
(WebCore::GStreamerPeerConnectionBackend::close):
(WebCore::GStreamerPeerConnectionBackend::doStop):
(WebCore::GStreamerPeerConnectionBackend::doAddIceCandidate):
(WebCore::GStreamerPeerConnectionBackend::createReceiver):
(WebCore::GStreamerPeerConnectionBackend::createDataChannelHandler):
(WebCore::findExistingSender):
(WebCore::GStreamerPeerConnectionBackend::addTrack):
(WebCore::GStreamerPeerConnectionBackend::addTransceiverFromTrackOrKind):
(WebCore::GStreamerPeerConnectionBackend::addTransceiver):
(WebCore::GStreamerPeerConnectionBackend::setSenderSourceFromTrack):
(WebCore::backendFromRTPTransceiver):
(WebCore::GStreamerPeerConnectionBackend::existingTransceiver):
(WebCore::GStreamerPeerConnectionBackend::newRemoteTransceiver):
(WebCore::GStreamerPeerConnectionBackend::collectTransceivers):
(WebCore::GStreamerPeerConnectionBackend::removeTrack):
(WebCore::GStreamerPeerConnectionBackend::applyRotationForOutgoingVideoSources):
(WebCore::GStreamerPeerConnectionBackend::gatherDecoderImplementationName):
(WebCore::GStreamerPeerConnectionBackend::isNegotiationNeeded const):

  • Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h: Added.
  • Modules/mediastream/gstreamer/GStreamerRtpReceiverBackend.cpp: Added.

(WebCore::GStreamerRtpReceiverBackend::getParameters):
(WebCore::GStreamerRtpReceiverBackend::getContributingSources const):
(WebCore::GStreamerRtpReceiverBackend::getSynchronizationSources const):
(WebCore::GStreamerRtpReceiverBackend::createSource):
(WebCore::GStreamerRtpReceiverBackend::rtcRtpTransformBackend):
(WebCore::GStreamerRtpReceiverBackend::dtlsTransportBackend):

  • Modules/mediastream/gstreamer/GStreamerRtpReceiverBackend.h: Added.
  • Modules/mediastream/gstreamer/GStreamerRtpReceiverTransformBackend.cpp: Added.

(WebCore::mediaTypeFromReceiver):
(WebCore::GStreamerRtpReceiverTransformBackend::GStreamerRtpReceiverTransformBackend):
(WebCore::GStreamerRtpReceiverTransformBackend::~GStreamerRtpReceiverTransformBackend):
(WebCore::GStreamerRtpReceiverTransformBackend::setTransformableFrameCallback):
(WebCore::GStreamerRtpReceiverTransformBackend::requestKeyFrame):

  • Modules/mediastream/gstreamer/GStreamerRtpReceiverTransformBackend.h: Added.
  • Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.cpp: Added.

(WebCore::updateTrackSource):
(WebCore::GStreamerRtpSenderBackend::startSource):
(WebCore::GStreamerRtpSenderBackend::stopSource):
(WebCore::GStreamerRtpSenderBackend::replaceTrack):
(WebCore::GStreamerRtpSenderBackend::getParameters const):
(WebCore::GStreamerRtpSenderBackend::setParameters):
(WebCore::GStreamerRtpSenderBackend::createDTMFBackend):
(WebCore::GStreamerRtpSenderBackend::rtcRtpTransformBackend):
(WebCore::GStreamerRtpSenderBackend::setMediaStreamIds):
(WebCore::GStreamerRtpSenderBackend::dtlsTransportBackend):

  • Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.h: Added.
  • Modules/mediastream/gstreamer/GStreamerRtpSenderTransformBackend.cpp: Added.

(WebCore::mediaTypeFromSender):
(WebCore::GStreamerRtpSenderTransformBackend::GStreamerRtpSenderTransformBackend):
(WebCore::GStreamerRtpSenderTransformBackend::~GStreamerRtpSenderTransformBackend):
(WebCore::GStreamerRtpSenderTransformBackend::setTransformableFrameCallback):
(WebCore::GStreamerRtpSenderTransformBackend::requestKeyFrame):

  • Modules/mediastream/gstreamer/GStreamerRtpSenderTransformBackend.h: Added.
  • Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.cpp: Added.

(WebCore::GStreamerRtpTransceiverBackend::GStreamerRtpTransceiverBackend):
(WebCore::GStreamerRtpTransceiverBackend::createReceiverBackend):
(WebCore::GStreamerRtpTransceiverBackend::createSenderBackend):
(WebCore::GStreamerRtpTransceiverBackend::direction const):
(WebCore::GStreamerRtpTransceiverBackend::currentDirection const):
(WebCore::GStreamerRtpTransceiverBackend::setDirection):
(WebCore::GStreamerRtpTransceiverBackend::mid):
(WebCore::GStreamerRtpTransceiverBackend::stop):
(WebCore::GStreamerRtpTransceiverBackend::stopped const):
(WebCore::GStreamerRtpTransceiverBackend::setCodecPreferences):

  • Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.h: Added.
  • Modules/mediastream/gstreamer/GStreamerRtpTransformBackend.cpp: Added.

(WebCore::GStreamerRtpTransformBackend::setInputCallback):
(WebCore::GStreamerRtpTransformBackend::clearTransformableFrameCallback):
(WebCore::GStreamerRtpTransformBackend::processTransformedFrame):

  • Modules/mediastream/gstreamer/GStreamerRtpTransformBackend.h: Added.

(WebCore::GStreamerRtpTransformBackend::GStreamerRtpTransformBackend):

  • Modules/mediastream/gstreamer/GStreamerSctpTransportBackend.cpp: Added.

(WebCore::toRTCSctpTransportState):
(WebCore::GStreamerSctpTransportBackend::GStreamerSctpTransportBackend):
(WebCore::GStreamerSctpTransportBackend::~GStreamerSctpTransportBackend):
(WebCore::GStreamerSctpTransportBackend::dtlsTransportBackend):
(WebCore::GStreamerSctpTransportBackend::registerClient):
(WebCore::GStreamerSctpTransportBackend::unregisterClient):
(WebCore::GStreamerSctpTransportBackend::stateChanged):

  • Modules/mediastream/gstreamer/GStreamerSctpTransportBackend.h: Added.
  • Modules/mediastream/gstreamer/GStreamerStatsCollector.cpp: Added.

(WebCore::fillRTCStats):
(WebCore::fillRTCRTPStreamStats):
(WebCore::fillRTCCodecStats):
(WebCore::fillInboundRTPStreamStats):
(WebCore::fillOutboundRTPStreamStats):
(WebCore::fillRTCPeerConnectionStats):
(WebCore::fillRTCTransportStats):
(WebCore::fillReportCallback):
(WebCore::CallbackHolder::CallbackHolder):
(WebCore::GStreamerStatsCollector::getStats):

  • Modules/mediastream/gstreamer/GStreamerStatsCollector.h: Added.

(WebCore::GStreamerStatsCollector::create):
(WebCore::GStreamerStatsCollector::setElement):

  • Modules/mediastream/gstreamer/GStreamerWebRTCUtils.cpp: Added.

(WebCore::toRTCIceComponent):
(WebCore::toRTCIceProtocol):
(WebCore::toRTCIceTcpCandidateType):
(WebCore::toRTCIceCandidateType):
(WebCore::toRTCError):
(WebCore::toWebRTCBitRatePriority):
(WebCore::fromRTCEncodingParameters):
(WebCore::fromWebRTCBitRatePriority):
(WebCore::toRTCEncodingParameters):
(WebCore::toRTCRtpSendParameters):
(WebCore::ensureDebugCategoryInitialized):
(WebCore::parseIceCandidateSDP):
(WebCore::x509Serialize):
(WebCore::privateKeySerialize):
(WebCore::generateCertificate):
(WebCore::sdpMediaHasAttributeKey):

  • Modules/mediastream/gstreamer/GStreamerWebRTCUtils.h: Added.

(WebCore::toRTCRtpTransceiverDirection):
(WebCore::fromRTCRtpTransceiverDirection):
(WebCore::toSessionDescriptionType):
(WebCore::fromSessionDescriptionType):
(WebCore::toSignalingState):
(WebCore::toRTCIceConnectionState):
(WebCore::toRTCDtlsTransportState):
(WebCore::toRTCIceTransportState):
(WebCore::toRTCIceGatheringState):
(WebCore::bundlePolicyFromConfiguration):
(WebCore::iceTransportPolicyFromConfiguration):
(WebCore::toRTCErrorDetailType):

  • platform/GStreamer.cmake:
  • platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:

(WebCore::AudioSourceProviderGStreamer::AudioSourceProviderGStreamer):
(WebCore::AudioSourceProviderGStreamer::~AudioSourceProviderGStreamer):
(WebCore::AudioSourceProviderGStreamer::handleNewDeinterleavePad):

  • platform/audio/gstreamer/GStreamerAudioStreamDescription.h:
  • platform/graphics/gstreamer/GRefPtrGStreamer.cpp:

(WTF::adoptGRef):
(WTF::refGPtr<GstWebRTCRTPReceiver>):
(WTF::derefGPtr<GstWebRTCRTPReceiver>):
(WTF::refGPtr<GstWebRTCRTPSender>):
(WTF::derefGPtr<GstWebRTCRTPSender>):
(WTF::refGPtr<GstWebRTCRTPTransceiver>):
(WTF::derefGPtr<GstWebRTCRTPTransceiver>):
(WTF::refGPtr<GstWebRTCDataChannel>):
(WTF::derefGPtr<GstWebRTCDataChannel>):
(WTF::refGPtr<GstWebRTCDTLSTransport>):
(WTF::derefGPtr<GstWebRTCDTLSTransport>):
(WTF::refGPtr<GstWebRTCICETransport>):
(WTF::derefGPtr<GstWebRTCICETransport>):

  • platform/graphics/gstreamer/GRefPtrGStreamer.h:
  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::capsMediaType):

  • platform/graphics/gstreamer/GUniquePtrGStreamer.h:
  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::createAudioSourceProvider):

  • platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:

(WebCore::GStreamerAudioCapturer::GStreamerAudioCapturer):
(WebCore::GStreamerAudioCapturer::createConverter):

  • platform/mediastream/gstreamer/GStreamerCapturer.cpp:

(WebCore::GStreamerCapturer::createSource):

  • platform/mediastream/gstreamer/GStreamerDTMFSenderBackend.cpp: Added.

(WebCore::GStreamerDTMFSenderBackend::GStreamerDTMFSenderBackend):
(WebCore::GStreamerDTMFSenderBackend::~GStreamerDTMFSenderBackend):
(WebCore::GStreamerDTMFSenderBackend::canInsertDTMF):
(WebCore::GStreamerDTMFSenderBackend::playTone):
(WebCore::GStreamerDTMFSenderBackend::tones const):
(WebCore::GStreamerDTMFSenderBackend::duration const):
(WebCore::GStreamerDTMFSenderBackend::interToneGap const):
(WebCore::GStreamerDTMFSenderBackend::onTonePlayed):

  • platform/mediastream/gstreamer/GStreamerDTMFSenderBackend.h: Added.
  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:

(webkitMediaStreamSrcAddTrack):

  • platform/mediastream/gstreamer/GStreamerVideoEncoder.cpp:

(webkit_webrtc_video_encoder_class_init):

  • platform/mediastream/gstreamer/RealtimeIncomingAudioSourceGStreamer.cpp: Added.

(WebCore::RealtimeIncomingAudioSourceGStreamer::RealtimeIncomingAudioSourceGStreamer):
(WebCore::RealtimeIncomingAudioSourceGStreamer::~RealtimeIncomingAudioSourceGStreamer):
(WebCore::RealtimeIncomingAudioSourceGStreamer::startProducingData):
(WebCore::RealtimeIncomingAudioSourceGStreamer::stopProducingData):
(WebCore::RealtimeIncomingAudioSourceGStreamer::capabilities):
(WebCore::RealtimeIncomingAudioSourceGStreamer::settings):
(WebCore::RealtimeIncomingAudioSourceGStreamer::dispatchSample):

  • platform/mediastream/gstreamer/RealtimeIncomingAudioSourceGStreamer.h: Added.

(WebCore::RealtimeIncomingAudioSourceGStreamer::create):
(isType):

  • platform/mediastream/gstreamer/RealtimeIncomingSourceGStreamer.cpp: Added.

(WebCore::RealtimeIncomingSourceGStreamer::RealtimeIncomingSourceGStreamer):
(WebCore::RealtimeIncomingSourceGStreamer::lockValve const):
(WebCore::RealtimeIncomingSourceGStreamer::releaseValve const):
(WebCore::RealtimeIncomingSourceGStreamer::registerClient):

  • platform/mediastream/gstreamer/RealtimeIncomingSourceGStreamer.h: Added.

(WebCore::RealtimeIncomingSourceGStreamer::bin):
(WebCore::RealtimeIncomingSourceGStreamer::dispatchSample):

  • platform/mediastream/gstreamer/RealtimeIncomingVideoSourceGStreamer.cpp: Added.

(WebCore::RealtimeIncomingVideoSourceGStreamer::RealtimeIncomingVideoSourceGStreamer):
(WebCore::RealtimeIncomingVideoSourceGStreamer::startProducingData):
(WebCore::RealtimeIncomingVideoSourceGStreamer::stopProducingData):
(WebCore::RealtimeIncomingVideoSourceGStreamer::capabilities):
(WebCore::RealtimeIncomingVideoSourceGStreamer::settings):
(WebCore::RealtimeIncomingVideoSourceGStreamer::settingsDidChange):
(WebCore::RealtimeIncomingVideoSourceGStreamer::dispatchSample):

  • platform/mediastream/gstreamer/RealtimeIncomingVideoSourceGStreamer.h: Added.

(WebCore::RealtimeIncomingVideoSourceGStreamer::create):
(isType):

  • platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.cpp: Added.

(WebCore::RealtimeOutgoingAudioSourceGStreamer::RealtimeOutgoingAudioSourceGStreamer):
(WebCore::RealtimeOutgoingAudioSourceGStreamer::setPayloadType):

  • platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.h: Added.
  • platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp: Added.

(WebCore::RealtimeOutgoingMediaSourceGStreamer::RealtimeOutgoingMediaSourceGStreamer):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::~RealtimeOutgoingMediaSourceGStreamer):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::setSource):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::start):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::stop):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::sourceMutedChanged):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::sourceEnabledChanged):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::initializeFromTrack):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::link):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::setSinkPad):

  • platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.h: Added.

(WebCore::RealtimeOutgoingMediaSourceGStreamer::source const):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::allowedCaps const):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::pad const):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::sender const):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::bin const):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::setPayloadType):

  • platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.cpp: Added.

(WebCore::RealtimeOutgoingVideoSourceGStreamer::RealtimeOutgoingVideoSourceGStreamer):
(WebCore::RealtimeOutgoingVideoSourceGStreamer::setPayloadType):

  • platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.h: Added.
  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setWebRTCH265Support):
(WebCore::Internals::setWebRTCVP9Support):
(WebCore::Internals::setWebRTCVP9VTBSupport):
(WebCore::Internals::setEnableWebRTCEncryption):
(WebCore::Internals::setUseDTLS10):

Source/WTF:

  • Scripts/Preferences/WebPreferences.yaml: Unconditionally enable WebRTC when GstWebRTC is

enabled. We don't have a runtime Provider yet.

  • Scripts/Preferences/WebPreferencesExperimental.yaml: Disable encoded transforms unless libwebrtc is enabled.
  • wtf/glib/GRefPtr.cpp: Add GArray handling.

(WTF::refGPtr):
(WTF::derefGPtr):

  • wtf/glib/GRefPtr.h:

Tools:

  • flatpak/flatpakutils.py:

(WebkitFlatpak.run_in_sandbox): Allow libnice debug log environment variable in runtime sandbox.

LayoutTests:

  • platform/glib/TestExpectations: Flag most WebRTC as failing. During this first development

cycle I focused mostly on fixing crashes and only fixed a few failures. The remaining ones
will be adressed in follow-up patches.

  • platform/glib/fast/mediastream/RTCPeerConnection-localDescription-expected.txt: Added.
  • platform/glib/fast/mediastream/RTCPeerConnection-remoteDescription-expected.txt: Added.
  • platform/glib/fast/mediastream/RTCPeerConnection-setRemoteDescription-offer-expected.txt: Added.
  • platform/glib/fast/mediastream/RTCPeerConnection-stable-expected.txt: Added.
7:19 AM Changeset in webkit [291482] by Carlos Garcia Campos
  • 5 edits
    1 add in trunk

[GLIB] Make it possible to call GRefPtr::outPtr() multiple times wihtout an explicit clear
​https://bugs.webkit.org/show_bug.cgi?id=238070

Reviewed by Adrian Perez de Castro.

Source/WTF:

Clear the GRefPtr before returning the value in outPtr(), similar to what GUniqueOutPtr does, since it's easy to
forget to explicitly call clear from the callers.

  • wtf/glib/GRefPtr.h:

(WTF::GRefPtr::outPtr):

Tools:

Add a unit tests for GRefPtr.

  • TestWebKitAPI/PlatformGTK.cmake:
  • TestWebKitAPI/PlatformWPE.cmake:
  • TestWebKitAPI/Tests/WTF/glib/GRefPtr.cpp: Added.

(TestWebKitAPI::GWeakPtr::GWeakPtr):
(TestWebKitAPI::GWeakPtr::~GWeakPtr):
(TestWebKitAPI::GWeakPtr::set):
(TestWebKitAPI::TEST):

6:49 AM Changeset in webkit [291481] by Alan Bujtas
  • 17 edits in trunk/Source/WebCore

[IFC][Integration] Rename InlineIterator::Line::closestRun* to closestBoxFor*
​https://bugs.webkit.org/show_bug.cgi?id=238064

Reviewed by Antti Koivisto.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::localCaretRectForCharacterOffset):

  • dom/Position.cpp:

(WebCore::Position::upstream const):
(WebCore::Position::downstream const):
(WebCore::Position::rendersInDifferentPosition const):
(WebCore::Position::inlineBoxAndOffset const):
(WebCore::searchAheadForBetterMatch):
(WebCore::Position::inlineRunAndOffset const): Deleted.

  • dom/Position.h:
  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::directionOfSelection):

  • editing/InlineRunAndOffset.h:
  • editing/RenderedPosition.cpp:

(WebCore::RenderedPosition::RenderedPosition):
(WebCore::RenderedPosition::previousLeafOnLine const):
(WebCore::RenderedPosition::nextLeafOnLine const):
(WebCore::RenderedPosition::isEquivalent const):
(WebCore::RenderedPosition::bidiLevelOnLeft const):
(WebCore::RenderedPosition::bidiLevelOnRight const):
(WebCore::RenderedPosition::leftBoundaryOfBidiRun):
(WebCore::RenderedPosition::rightBoundaryOfBidiRun):
(WebCore::RenderedPosition::atLeftBoundaryOfBidiRun const):
(WebCore::RenderedPosition::atRightBoundaryOfBidiRun const):
(WebCore::RenderedPosition::absoluteRect const):

  • editing/RenderedPosition.h:

(WebCore::RenderedPosition::line const):
(WebCore::RenderedPosition::atLeftmostOffsetInBox const):
(WebCore::RenderedPosition::atRightmostOffsetInBox const):

  • editing/VisiblePosition.cpp:

(WebCore::VisiblePosition::leftVisuallyDistinctCandidate const):
(WebCore::VisiblePosition::rightVisuallyDistinctCandidate const):
(WebCore::VisiblePosition::inlineBoxAndOffset const):
(WebCore::VisiblePosition::localCaretRect const):
(WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):
(WebCore::VisiblePosition::inlineRunAndOffset const): Deleted.

  • editing/VisiblePosition.h:
  • editing/VisibleUnits.cpp:

(WebCore::isTextOrLineBreakBox):
(WebCore::previousTextOrLineBreakBox):
(WebCore::nextTextOrLineBreakBox):
(WebCore::startTextOrLineBreakBox):
(WebCore::endTextOrLineBreakBox):
(WebCore::logicallyPreviousBox):
(WebCore::logicallyNextBox):
(WebCore::wordBreakIteratorForMinOffsetBoundary):
(WebCore::wordBreakIteratorForMaxOffsetBoundary):
(WebCore::visualWordPosition):
(WebCore::startPositionForLine):
(WebCore::endPositionForLine):
(WebCore::previousLinePosition):
(WebCore::nextLinePosition):
(WebCore::isTextOrLineBreakRun): Deleted.
(WebCore::previousTextOrLineBreakRun): Deleted.
(WebCore::nextTextOrLineBreakRun): Deleted.
(WebCore::startTextOrLineBreakRun): Deleted.
(WebCore::endTextOrLineBreakRun): Deleted.
(WebCore::logicallyPreviousRun): Deleted.
(WebCore::logicallyNextRun): Deleted.

  • layout/integration/InlineIteratorLine.cpp:

(WebCore::InlineIterator::Line::closestBoxForPoint const):
(WebCore::InlineIterator::Line::closestBoxForLogicalLeftPosition const):
(WebCore::InlineIterator::Line::closestRunForPoint const): Deleted.
(WebCore::InlineIterator::Line::closestRunForLogicalLeftPosition const): Deleted.

  • layout/integration/InlineIteratorLine.h:
  • rendering/CaretRectComputation.cpp:

(WebCore::computeCaretRectForText):
(WebCore::computeCaretRectForLineBreak):
(WebCore::computeCaretRectForSVGInlineText):
(WebCore::computeCaretRectForBox):
(WebCore::computeCaretRectForBlock):
(WebCore::computeLocalCaretRect):

  • rendering/CaretRectComputation.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::positionForRun):
(WebCore::RenderBlockFlow::findClosestTextAtAbsolutePoint):
(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):

  • rendering/RenderObject.h:
6:30 AM Changeset in webkit [291480] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

[Linux] GBMDevice as a thread-specific object is problematic
​https://bugs.webkit.org/show_bug.cgi?id=237758
<rdar://problem/90476889>

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-03-18
Reviewed by Alejandro G. Castro.

Per-thread GBMDevice instances (and the internal gbm_device objects) can
end up causing trouble if the gbm_bo objects spawned from it are moved
across threads and used after the originating thread (and that thread's
GBMDevice instance) is destroyed. This can happen with a GStreamer
pipeline where repeated playback is possibly moved across different
threads.

The original intention was to preemptively avoid any thread-safety
issues in the libgbm implementations but we haven't seen any yet. That
might change down the line once we adapt against implementations from
different vendors, at which point the most sensible solution would be
to deploy a specific thread on which all libgbm operations would be
handled.

  • platform/graphics/gbm/GBMBufferSwapchain.cpp:

(WebCore::GBMBufferSwapchain::getBuffer):

  • platform/graphics/gbm/GBMDevice.cpp:

(WebCore::GBMDevice::singleton):
(WebCore::GBMDevice::GBMDevice):
(WebCore::GBMDevice::~GBMDevice):
(WebCore::threadSpecificDevice): Deleted.
(WebCore::GBMDevice::get): Deleted.

  • platform/graphics/gbm/GBMDevice.h:
  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:

(WebCore::GraphicsContextGLTextureMapper::platformInitialize):
(WebCore::GraphicsContextGLANGLE::EGLImageBacking::reset):

5:59 AM Changeset in webkit [291479] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.36/Source/WebKit

Merge r291475 - [WPE][GTK] Fix a crash after r290360
​https://bugs.webkit.org/show_bug.cgi?id=237917

Reviewed by Youenn Fablet.

When AuxiliaryProcess::shutDown is called for the WebProcess there might be pages not closed yet, for example
when swapping process on navigation, the close message is sent to the page after the shutdown. In the case of
GTK and WPE ports the pages are closed before stopping the run loop to ensure associated resources (like GPU
resources) are released. Closing the last page makes the process termination allowed, which ends up calling
AuxiliaryProcess::terminate again. Also, when the shutdown message is received we don't want to ask again the UI
process whether the process can be terminated, since the UI process asked it.

  • Shared/AuxiliaryProcess.cpp:

(WebKit::AuxiliaryProcess::enableTermination): Return early if m_isInShutDown is true.
(WebKit::AuxiliaryProcess::shutDown): Set m_isInShutDown for the scope.

  • Shared/AuxiliaryProcess.h:
5:59 AM Changeset in webkit [291478] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.36/Source/WebKit

Merge r291472 - Remove AuxiliaryProcess termination timeout
​https://bugs.webkit.org/show_bug.cgi?id=238012

Reviewed by Chris Dumez.

It was only used by the plugin process, now it's always set to 0 for all processes, so it's useless.

  • Shared/AuxiliaryProcess.cpp:

(WebKit::AuxiliaryProcess::AuxiliaryProcess):
(WebKit::AuxiliaryProcess::disableTermination):
(WebKit::AuxiliaryProcess::enableTermination):
(WebKit::AuxiliaryProcess::terminationTimerFired): Deleted.

  • Shared/AuxiliaryProcess.h:

(WebKit::AuxiliaryProcess::setTerminationTimeout): Deleted.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

5:18 AM Changeset in webkit [291477] by commit-queue@webkit.org
  • 21 edits in trunk

Recycling a webgl context when it has been lost and restored causes a crash
​https://bugs.webkit.org/show_bug.cgi?id=238024

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-18
Reviewed by Geoffrey Garen.

Source/WebCore:

Simulated context lost makes WebGLRenderingContextBase::m_context = nullptr
Real context lost preserves WebGLRenderingContextBase::m_context.

WebGLRenderingContextBase::maybeRestoreContext() used m_context.

The intention was that simulated context lost never invokes maybeRestoreContext()
as the timer to run maybeRestoreContext() is started only on real context lost.

However, it is possible to invoke simulated context lost after a real context lost,
but before the timer triggers maybeRestoreContext().

The sequence would be:

  1. Lose the context somehow
  2. Wait for webglcontextlost, use event.preventDefault() to request a restore.
  3. Before restore happens, lose the context via simulated context lost. This can be done by creating many contexts or via the WEBGL_lose_context.loseContext().
  4. maybeRestoreContext() would query m_context->getGraphicsResetStatusARB() for console log reasons, trying to explain to the developer why the context was lost. In case simulated context lost set the m_context == nullptr, this would crash.

getGraphicsResetStatusARB() has likely not been accurate for any platform ever.
For ANGLE, it is unimplemented and cannot pinpoint which context caused the context lost.
Just remove getGraphicsResetStatusARB() use from maybeRestoreContext(), this prevents
the crash. Remove it also from WebKit use altogether, it is never used for anything.

Adds the case to webgl/max-active-contexts-webglcontextlost-prevent-default.html

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::loseContextImpl):
(WebCore::WebGLRenderingContextBase::maybeRestoreContext):

  • loader/FrameLoaderClient.h:
  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:
  • platform/graphics/angle/GraphicsContextGLANGLE.h:
  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp:
  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.h:
  • platform/graphics/opengl/ExtensionsGLOpenGLES.cpp:
  • platform/graphics/opengl/ExtensionsGLOpenGLES.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:

Source/WebKit:

Remove GraphicsContextGL::getGraphicsResetStatusARB(), it's unused now.

  • GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
  • GPUProcess/graphics/RemoteGraphicsContextGLFunctionsGenerated.h:

(getActiveUniformBlockiv):

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::paintRenderingResultsToCanvas):
(WebKit::RemoteGraphicsContextGLProxy::paintCompositedResultsToCanvas):
(WebKit::RemoteGraphicsContextGLProxy::markContextLost):

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.cpp:

LayoutTests:

Creating excessive amount of contexts will lose the oldest context via
"simulated context lost" logic, making the contexts non-restorable.

Previously the test tried to test that requesting a restore on a context that
had simulated context lost would not restore. However, the test was invalid,
as it asserted that the context is still lost immediately after preventDefault():

event.preventDefault();
if (!contexts[0].isContextLost())

document.getElementById("result").textContent = "FAIL";

This is not correct, as the preventDefault() only informs the browser
that the context should be restored. The restore happens asynchronously.

Fix the test logic and add extra cases. Make the logic as such:

  1. Lose the context in some way
  2. Wait for context lost event, request restore
  3. Optionally do something that would trigger another way of losing the context
  4. Run assertions about context being still expectedly lost

The failures in the test expectation:
FAIL getError expected: INVALID_OPERATION. Was NO_ERROR :
FAIL getError expected: CONTEXT_LOST_WEBGL. Was NO_ERROR :
bug 236965

FAIL Expected restore be ignored, but it was not.
bug 238034

  • webgl/max-active-contexts-webglcontextlost-prevent-default.html:
4:58 AM Changeset in webkit [291476] by Cameron McCormack
  • 3 edits
    5 adds in trunk

Remove the 1ms minimum for setTimeout
​https://bugs.webkit.org/show_bug.cgi?id=221124
<rdar://problem/73852354>

Reviewed by Sam Weinig.

The HTML spec makes no mention of a 1ms minimum for timers. Removing
the 1ms minimum for setTimeout results in a 0.7-2.1% improvement on
Speedometer, depending on platform and hardware.

The WPT added here demonstrates how this change can affect pages: if a
page schedules a 1ms and then a 0ms timeout in the same turn of the
event loop, then with this patch they will now be fired in the reverse
order. Firefox and Chrome do not impose a 1ms minimum, which reduces
the risk of this being a problem.

Not addressing the setTimeout 1ms minimum here, which should likely also
be removed.

While we're here, settle on "one shot" rather rather than "single
shot" as the term for timers that fire once.

Tests: imported/w3c/web-platform-tests/html/webappapis/timers/zero-settimeout.any.html

imported/w3c/web-platform-tests/html/webappapis/timers/zero-settimeout.any.worker.html

  • page/DOMTimer.h:
  • page/DOMTimer.cpp:

(WebCore::DOMTimer::DOMTimer): We must pass oneShot into
intervalClampedToMinimum, since the way isOneShot determines whether
we are a one shot timer is by checking repeatInterval, which is only
set once startRepeating is called.
(WebCore::DOMTimer::install):
(WebCore::DOMTimer::fired):
(WebCore::DOMTimer::updateTimerIntervalIfNecessary):
(WebCore::DOMTimer::isOneShot const):
(WebCore::DOMTimer::intervalClampedToMinimum const):

2:51 AM Changeset in webkit [291475] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit

[WPE][GTK] Fix a crash after r290360
​https://bugs.webkit.org/show_bug.cgi?id=237917

Reviewed by Youenn Fablet.

When AuxiliaryProcess::shutDown is called for the WebProcess there might be pages not closed yet, for example
when swapping process on navigation, the close message is sent to the page after the shutdown. In the case of
GTK and WPE ports the pages are closed before stopping the run loop to ensure associated resources (like GPU
resources) are released. Closing the last page makes the process termination allowed, which ends up calling
AuxiliaryProcess::terminate again. Also, when the shutdown message is received we don't want to ask again the UI
process whether the process can be terminated, since the UI process asked it.

  • Shared/AuxiliaryProcess.cpp:

(WebKit::AuxiliaryProcess::enableTermination): Return early if m_isInShutDown is true.
(WebKit::AuxiliaryProcess::shutDown): Set m_isInShutDown for the scope.

  • Shared/AuxiliaryProcess.h:
2:01 AM Changeset in webkit [291474] by Antti Koivisto
  • 22 edits in trunk

[CSS Container Queries] Basic support for container units
​https://bugs.webkit.org/show_bug.cgi?id=238021

Reviewed by Antoine Quint.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-contain/container-queries/container-units-animation-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-units-basic-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-units-computational-independence-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-units-invalidation-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-units-selection-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-units-small-viewport-fallback-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-units-typed-om-expected.txt:

Source/WebCore:

Container Relative Lengths: the cqw, cqh, cqi, cqb, cqmin, cqmax units
​https://drafts.csswg.org/css-contain-3/#container-lengths

  • css/CSSPrimitiveValue.cpp:

(WebCore::isValidCSSUnitTypeForDoubleConversion):
(WebCore::isStringType):
(WebCore::CSSPrimitiveValue::cleanup):
(WebCore::CSSPrimitiveValue::computeNonCalcLengthDouble):

Resolve container units by resolving the query container and computing the value against it.

(WebCore::CSSPrimitiveValue::unitTypeString):
(WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText const):
(WebCore::CSSPrimitiveValue::equals const):

  • css/CSSPrimitiveValue.h:

(WebCore::CSSPrimitiveValue::isLength):

  • css/CSSToLengthConversionData.cpp:

(WebCore::CSSToLengthConversionData::CSSToLengthConversionData):

  • css/CSSToLengthConversionData.h:

(WebCore::CSSToLengthConversionData::element const):

  • css/CSSUnits.cpp:

(WebCore::unitCategory):
(WebCore::operator<<):

  • css/CSSUnits.h:
  • css/ContainerQuery.h:
  • css/calc/CSSCalcCategoryMapping.cpp:

(WebCore::calcUnitCategory):
(WebCore::calculationCategoryForCombination):
(WebCore::hasDoubleValue):

  • css/parser/CSSParserToken.cpp:

(WebCore::cssPrimitiveValueUnitFromTrie):

Parsing support.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::LengthRawKnownTokenTypeDimensionConsumer::consume):

  • style/ContainerQueryEvaluator.cpp:

(WebCore::Style::ContainerQueryEvaluator::selectContainer const):
(WebCore::Style::ContainerQueryEvaluator::selectContainer):

Factor container selection into static function that can be used from the unit resolution code.

  • style/ContainerQueryEvaluator.h:
  • style/SelectorMatchingState.h:
1:35 AM Changeset in webkit [291473] by Carlos Garcia Campos
  • 22 edits in trunk

Add a public build option for PDF.js
​https://bugs.webkit.org/show_bug.cgi?id=238023

Reviewed by Michael Catanzaro.

.:

PDF.js increases the binary size of the library quite a bit, so embedders might want to disable it if they know
they don't need PDF support at all.

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/WebCore:

  • dom/DOMImplementation.cpp:

(WebCore::DOMImplementation::createDocument):

  • html/PDFDocument.cpp:
  • html/PDFDocument.h:
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::isPDFJSResourceLoad const):

  • page/SecurityOrigin.cpp:

(WebCore::shouldTreatAsUniqueOrigin):

  • platform/LegacySchemeRegistry.cpp:

(WebCore::builtinSecureSchemes):

Source/WebKit:

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoad):

  • WebProcess/Network/WebLoaderStrategy.h:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::objectContentType):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):
(WebKit::WebPage::canShowMIMEType const):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::shouldUsePDFPlugin const):

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:
  • wtf/PlatformEnable.h:
1:32 AM Changeset in webkit [291472] by Carlos Garcia Campos
  • 7 edits in trunk/Source/WebKit

Remove AuxiliaryProcess termination timeout
​https://bugs.webkit.org/show_bug.cgi?id=238012

Reviewed by Chris Dumez.

It was only used by the plugin process, now it's always set to 0 for all processes, so it's useless.

  • Shared/AuxiliaryProcess.cpp:

(WebKit::AuxiliaryProcess::AuxiliaryProcess):
(WebKit::AuxiliaryProcess::disableTermination):
(WebKit::AuxiliaryProcess::enableTermination):
(WebKit::AuxiliaryProcess::terminationTimerFired): Deleted.

  • Shared/AuxiliaryProcess.h:

(WebKit::AuxiliaryProcess::setTerminationTimeout): Deleted.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

1:30 AM Changeset in webkit [291471] by Carlos Garcia Campos
  • 4 edits in trunk

[ATSPI] accessibility/dropdown-value.html is timing out since added in 248145@main
​https://bugs.webkit.org/show_bug.cgi?id=237803
<rdar://problem/90193311>

Reviewed by Andres Gonzalez.

Tools:

The test expects the combo box to expose the selected element name as the string value.

  • WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:

(WTR::AccessibilityUIElement::stringValue): Handle combo boxes as special case and return the selected element
name.

LayoutTests:

  • platform/gtk/TestExpectations: Unskip the test.
1:10 AM Changeset in webkit [291470] by Diego Pino Garcia
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix non-unified build after r291467

  • workers/service/context/ServiceWorkerInspectorProxy.cpp:
12:52 AM Changeset in webkit [291469] by graouts@webkit.org
  • 2 edits
    6 adds in trunk/LayoutTests

REGRESSION(r291129-r291128): [WK1 EWS] 3 imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/* tests are a constant text failure
​https://bugs.webkit.org/show_bug.cgi?id=238054
<rdar://problem/90458721>

Unreviewed test gardening.

The scroll-behavior property is not enabled on WK1 so we must have specific test expectations for these tests.

  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk1/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt: Added.
  • platform/mac-wk1/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt: Added.
  • platform/mac-wk1/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt: Added.
12:35 AM Changeset in webkit [291468] by youenn@apple.com
  • 20 edits in trunk/Source

Remove MediaSample usage from canvas capture code
​https://bugs.webkit.org/show_bug.cgi?id=238015

Reviewed by Eric Carlson.

Source/WebCore:

Refactoring to use VideoFrame as interface/wrapper around video frames instead of the more generic MediaSample.
Coverd by existing tests.

  • Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:

(WebCore::CanvasCaptureMediaStreamTrack::Source::captureCanvas):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::toVideoFrame):
(WebCore::HTMLCanvasElement::toMediaSample): Deleted.

  • html/HTMLCanvasElement.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::paintCompositedResultsToVideoFrame):
(WebCore::WebGLRenderingContextBase::paintCompositedResultsToMediaSample): Deleted.

  • html/canvas/WebGLRenderingContextBase.h:
  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/cocoa/GraphicsContextGLCocoa.h:
  • platform/graphics/cocoa/GraphicsContextGLCocoa.mm:

(WebCore::GraphicsContextGLCocoa::paintCompositedResultsToVideoFrame):
(WebCore::GraphicsContextGLCocoa::paintCompositedResultsToMediaSample): Deleted.

  • platform/graphics/cv/VideoFrameCV.h:
  • platform/graphics/cv/VideoFrameCV.mm:

(WebCore::VideoFrameCV::createFromPixelBuffer):

Source/WebKit:

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::RemoteGraphicsContextGL::paintCompositedResultsToVideoFrame):
(WebKit::RemoteGraphicsContextGL::paintCompositedResultsToMediaSample): Deleted.

  • GPUProcess/graphics/RemoteGraphicsContextGL.h:
  • GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::paintCompositedResultsToVideoFrame):
(WebKit::RemoteGraphicsContextGLProxy::paintCompositedResultsToMediaSample): Deleted.

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
12:33 AM Changeset in webkit [291467] by youenn@apple.com
  • 19 edits in trunk

Keep service workers alive when they are inspected even though they should be terminated
​https://bugs.webkit.org/show_bug.cgi?id=237827
<rdar://88313935>

Reviewed by Alex Christensen.

Source/WebCore:

Store in SWServerWorker whether a worker is inspected or is processing push events.
In that case, we delay termination of workers until it is no longer inspected or no longer processing push events.
Two code paths are happening:

  1. A service worker was triggered with service worker clients, and all service worker clients are removed. At that point, we were previously terminating service workers after a delay. Instead, we now only terminate workers that are no longer inspected or no longer processing push events. We reschedule the timer to continue trying removing the context connection.
  2. A service worker is not stopped by removal of service worker clients. In that case, we need to terminate the service workers when inspected and/or push counter gets back to regular (not inspected, no push counter). When terminating such a service worker, we try removing the context connection as well.

To make sure SWServerWorker knows whether inspectable or not, we add connection support to transmit whether inspected from WebProcess.
ServiceWorkerInspectorProxy is responsible to update the inspectable value.
Introduce internals API to set inspected state of a service worker.

Covered by new API tests.

  • testing/ServiceWorkerInternals.cpp:
  • testing/ServiceWorkerInternals.h:
  • testing/ServiceWorkerInternals.idl:
  • workers/service/context/SWContextManager.cpp:
  • workers/service/context/SWContextManager.h:
  • workers/service/context/ServiceWorkerInspectorProxy.cpp:
  • workers/service/server/SWServer.cpp:
  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerToContextConnection.cpp:
  • workers/service/server/SWServerToContextConnection.h:
  • workers/service/server/SWServerWorker.cpp:
  • workers/service/server/SWServerWorker.h:

Source/WebKit:

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp:
  • WebProcess/Storage/WebSWContextManagerConnection.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/PushAPI.mm:

Mar 17, 2022:

9:23 PM Changeset in webkit [291466] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r287753): Settings: checkboxes are smaller and no longer vertically align with related text
​https://bugs.webkit.org/show_bug.cgi?id=237745
<rdar://problem/90129658>

Reviewed by Devin Rousso.

After r287753, font-size no longer affects the size of the checkboxes.
Use width and height to make the checkbox the expected size.

  • UserInterface/Views/SettingsTabContentView.css:

(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor input[type="checkbox"]):

8:17 PM Changeset in webkit [291465] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Call doDailyActivityInManager on main thread in adattributiond
​https://bugs.webkit.org/show_bug.cgi?id=238059
<rdar://90335028>

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-17
Reviewed by Tim Horton.

It turns out that xpc activities don't happen on the main thread.
Everything else in adattributiond happens on the main thread (except database operations)
and to be thread safe this also needs to happen on the main thread.

  • Shared/EntryPointUtilities/Cocoa/Daemon/PCMDaemonEntryPoint.mm:

(WebKit::registerScheduledActivityHandler):

7:33 PM Changeset in webkit [291464] by Matt Woodrow
  • 5 edits
    2 adds in trunk

Subgrid items should always be stretched.
​https://bugs.webkit.org/show_bug.cgi?id=237628

Reviewed by Alan Bujtas.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-grid/subgrid/subgrid-stretch-expected.html: Added.
  • web-platform-tests/css/css-grid/subgrid/subgrid-stretch.html: Added.

Added new WPT test covering various width/height and alignement contraints that should be
ignored since subgrids are always stretched.

Source/WebCore:

Fixes ​https://drafts.csswg.org/css-grid-2/#subgrid-box-alignment

Test: imported/w3c/web-platform-tests/css/css-grid/subgrid/subgrid-stretch.html

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeLogicalWidthInFragment const):
(WebCore::RenderBox::hasStretchedLogicalHeight const):
(WebCore::RenderBox::hasStretchedLogicalWidth const):

  • rendering/RenderBox.h:

Makes computeLogicalWidthInFragment use the override logical width for grid items
if it's been set, as we already do for height. We don't early return, so that margins
still get computed relative to this width.

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::layoutGridItems):
(WebCore::RenderGrid::availableAlignmentSpaceForChildBeforeStretching const):
(WebCore::RenderGrid::alignSelfForChild const):
(WebCore::RenderGrid::justifySelfForChild const):
(WebCore::RenderGrid::applyStretchAlignmentToChildIfNeeded):
(WebCore::RenderGrid::applySubgridStretchAlignmentToChildIfNeeded):

  • rendering/RenderGrid.h:

Sets the required override width/height size on subgrid items so that they get
stretched.

7:30 PM Changeset in webkit [291463] by Alan Bujtas
  • 12 edits
    1 add in trunk/Source/WebCore

[IFC][Integration] Introduce LineSelection
​https://bugs.webkit.org/show_bug.cgi?id=237997

Reviewed by Antti Koivisto.

Use LineSelection to retrieve line based selection information.
This is in preparation for removing selection/hittesting related functions from InlineIterator::Line.

  • WebCore.xcodeproj/project.pbxproj:
  • editing/VisiblePosition.cpp:

(WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):

  • layout/integration/InlineIteratorLine.h:
  • layout/integration/InlineIteratorTextBox.cpp:

(WebCore::InlineIterator::TextBox::selectionRect const):

  • layout/integration/LineSelection.h: Added.

(WebCore::LineSelection::logicalTop):
(WebCore::LineSelection::logicalBottom):
(WebCore::LineSelection::logicalRect):
(WebCore::LineSelection::physicalRect):
(WebCore::LineSelection::logicalTopAdjustedForPrecedingBlock):
(WebCore::LineSelection::logicalHeightAdjustedForPrecedingBlock):
(WebCore::LineSelection::selectionState):

  • rendering/CaretRectComputation.cpp:

(WebCore::computeCaretRectForLinePosition):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::adjustEnclosingTopForPrecedingBlock const):
(WebCore::RenderBlockFlow::inlineSelectionGaps):
(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::collectSelectionGeometries):

  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::collectSelectionGeometries):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::positionForPoint):

  • rendering/RenderText.cpp:

(WebCore::RenderText::positionForPoint):

  • rendering/TextBoxPainter.cpp:

(WebCore::TextBoxPainter::paintBackground):

6:39 PM Changeset in webkit [291462] by Kocsen Chung
  • 1 copy in tags/Safari-614.1.6

Tag Safari-614.1.6.

6:39 PM Changeset in webkit [291461] by Kocsen Chung
  • 1 delete in tags/Safari-614.1.6

Delete tag.

6:26 PM Changeset in webkit [291460] by Russell Epstein
  • 6 edits in branches/safari-614.1.6-branch/Source

Cherry-pick r291455. rdar://problem/90449608

libANGLE-shared.dylib, libwebrtc.dylib & WebGPU install names are prefixed with the system content path
​https://bugs.webkit.org/show_bug.cgi?id=238058

Reviewed by Mark Lam.

Source/ThirdParty/ANGLE:

We need to create a default value for DYLIB_INSTALL_NAME_BASE for iOS builds.
We want to allow executables to use the framework via the symlink from the old location.

  • Configurations/ANGLE-dynamic.xcconfig:

Source/ThirdParty/libwebrtc:

We need to create a default value for DYLIB_INSTALL_NAME_BASE for iOS builds.
We want to allow executables to use the framework via the symlink from the old location.

  • Configurations/libwebrtc.xcconfig:

Source/WebGPU:

We need to set DYLIB_INSTALL_NAME_BASE for WK_USE_ALTERNATE_FRAMEWORKS_DIR installs without the
system content path prefix.
We want to allow executables to use the framework via the symlink from the old location.

  • Configurations/WebGPU.xcconfig:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291455 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:19 PM Changeset in webkit [291459] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.14

Tag Safari-614.1.5.14.

6:18 PM Changeset in webkit [291458] by Russell Epstein
  • 6 edits in branches/safari-614.1.5-branch/Source

Cherry-pick r291455. rdar://problem/90449608

libANGLE-shared.dylib, libwebrtc.dylib & WebGPU install names are prefixed with the system content path
​https://bugs.webkit.org/show_bug.cgi?id=238058

Reviewed by Mark Lam.

Source/ThirdParty/ANGLE:

We need to create a default value for DYLIB_INSTALL_NAME_BASE for iOS builds.
We want to allow executables to use the framework via the symlink from the old location.

  • Configurations/ANGLE-dynamic.xcconfig:

Source/ThirdParty/libwebrtc:

We need to create a default value for DYLIB_INSTALL_NAME_BASE for iOS builds.
We want to allow executables to use the framework via the symlink from the old location.

  • Configurations/libwebrtc.xcconfig:

Source/WebGPU:

We need to set DYLIB_INSTALL_NAME_BASE for WK_USE_ALTERNATE_FRAMEWORKS_DIR installs without the
system content path prefix.
We want to allow executables to use the framework via the symlink from the old location.

  • Configurations/WebGPU.xcconfig:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291455 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:15 PM Changeset in webkit [291457] by Russell Epstein
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.14

5:48 PM Changeset in webkit [291456] by keith_miller@apple.com
  • 2 edits in trunk/Source/WTF

tryReserveUncommittedAligned should round up to alignment not bytes requested
​https://bugs.webkit.org/show_bug.cgi?id=238052

Reviewed by Yusuke Suzuki.

  • wtf/posix/OSAllocatorPOSIX.cpp:

(WTF::OSAllocator::tryReserveUncommittedAligned):

5:46 PM Changeset in webkit [291455] by msaboff@apple.com
  • 6 edits in trunk/Source

libANGLE-shared.dylib, libwebrtc.dylib & WebGPU install names are prefixed with the system content path
​https://bugs.webkit.org/show_bug.cgi?id=238058

Reviewed by Mark Lam.

Source/ThirdParty/ANGLE:

We need to create a default value for DYLIB_INSTALL_NAME_BASE for iOS builds.
We want to allow executables to use the framework via the symlink from the old location.

  • Configurations/ANGLE-dynamic.xcconfig:

Source/ThirdParty/libwebrtc:

We need to create a default value for DYLIB_INSTALL_NAME_BASE for iOS builds.
We want to allow executables to use the framework via the symlink from the old location.

  • Configurations/libwebrtc.xcconfig:

Source/WebGPU:

We need to set DYLIB_INSTALL_NAME_BASE for WK_USE_ALTERNATE_FRAMEWORKS_DIR installs without the
system content path prefix.
We want to allow executables to use the framework via the symlink from the old location.

  • Configurations/WebGPU.xcconfig:
5:18 PM Changeset in webkit [291454] by Jonathan Bedard
  • 2 edits in trunk/Tools

configure-xcode-for-embedded-development fails with Xcode 13.3
​https://bugs.webkit.org/show_bug.cgi?id=237994
<rdar://problem/90455614>

Reviewed by Ryan Haddad.

  • Tools/Scripts/configure-xcode-for-embedded-development: Handle different xcspec locations in XCode 13.3.

Canonical link: ​https://commits.webkit.org/248576@main

5:14 PM Changeset in webkit [291453] by Kocsen Chung
  • 1 copy in tags/Safari-614.1.6

Tag Safari-614.1.6.

5:10 PM Changeset in webkit [291452] by Matteo Flores
  • 2 edits in trunk/LayoutTests

REGRESSION(r291129-r291128): [WK1 EWS] 3 imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/* tests are a constant text failure
​https://bugs.webkit.org/show_bug.cgi?id=238054

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
5:08 PM Changeset in webkit [291451] by Devin Rousso
  • 2 edits in trunk/Source/WebCore

[Apple Pay] REGRESSION(r283431): HAVE_PASSKIT_PAYMENT_METHOD_BILLING_ADDRESS was removed without also removing where it was used
​https://bugs.webkit.org/show_bug.cgi?id=238056
<rdar://problem/89940620>

Reviewed by Tim Horton.

  • Modules/applepay/cocoa/PaymentMethodCocoa.mm:

(WebCore::convert):

4:48 PM Changeset in webkit [291450] by mmaxfield@apple.com
  • 5 edits in trunk/LayoutTests

Make Emoji gender tests more robust
​https://bugs.webkit.org/show_bug.cgi?id=238057
<rdar://problem/88842010>

Unreviewed.

U+26F9 PERSON WITH BALL might have a non-emoji glyph, so we can't expect it to
always render in its emoji form without a variation selector.

  • fast/text/emoji-gender-2-3-expected.html:
  • fast/text/emoji-gender-2-3.html:
  • fast/text/emoji-gender-fe0f-3-expected.html:
  • fast/text/emoji-gender-fe0f-3.html:
4:41 PM Changeset in webkit [291449] by mmaxfield@apple.com
  • 2 edits in trunk/LayoutTests

Make fast/text/emoji-num-glyphs.html more robust
​https://bugs.webkit.org/show_bug.cgi?id=238055
<rdar://problem/88842010>

Unreviewed.

U+26F9 PERSON WITH BALL might have a non-emoji glyph. If it has one, and the OS prefers it over the
emoji glyph, then this test will fail. The solution is to use the emoji-style variation selector
to specifically request the emoji form.

  • fast/text/emoji-num-glyphs.html:
4:34 PM Changeset in webkit [291448] by keith_miller@apple.com
  • 4 edits in trunk/Source

Fix crash in Bleacher Report due to bad JSObjectRef passed to API
​https://bugs.webkit.org/show_bug.cgi?id=238048
<rdar://88766464>

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

Prior to the StructureID overhaul the JSObjectGetArrayBufferByteLength would
automatically check if the JSObjectRef passed to that function was null before
short circuiting to the non-typed array return value, 0. While technically valid
since derefencing null is UB, this meant the Clang was covering up this crash.
To fix this I'm adding an app specific workaround for the time being so Bleacher
Report can fix their code to no longer pass this nullptr.

  • API/JSTypedArray.cpp:

(isBleecherReport):
(JSObjectGetArrayBufferByteLength):

Source/WTF:

  • wtf/cocoa/RuntimeApplicationChecksCocoa.h:
3:55 PM Changeset in webkit [291447] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebGPU

[WebGPU] Fix the 32-bit build
​https://bugs.webkit.org/show_bug.cgi?id=238053

Unreviewed.

  • WebGPU/Buffer.mm:

(WebGPU::Buffer::getMappedRange):
(WebGPU::Buffer::mapAsync):

3:07 PM Changeset in webkit [291446] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Microsoft Teams fails to launch from Safari
​https://bugs.webkit.org/show_bug.cgi?id=238045
<rdar://90434296>

Reviewed by Geoffrey Garen.

Extend MS Teams quirk to teams.microsoft.com, not just teams.live.com.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldAllowNavigationToCustomProtocolWithoutUserGesture):

2:57 PM Changeset in webkit [291445] by Aditya Keerthi
  • 4 edits in trunk/Source/WebKit

[iOS] Support PDF search when using a find interaction
​https://bugs.webkit.org/show_bug.cgi?id=237408
rdar://89437334

Reviewed by Wenson Hsieh.

Ensure that PDFs can be searched when using a _UIFindInteraction by
making WKPDFView conform to _UITextSearching.

The implementation is a thin wrapper around existing find SPI on
PDFHostViewController. Found ranges in PDFs are uniquely identified
by an index, as more detailed range information is not exposed. Unlike
web content, there is currently no requirement to support restorable
found ranges for PDFs, making indexes safe to use.

  • UIProcess/API/ios/WKWebViewIOS.h:
  • UIProcess/API/ios/WKWebViewIOS.mm:

Use WKPDFView or WKContentView as the searchable object, depending on
the loaded content.

(-[WKWebView _didCommitLoadForMainFrame]):
(-[WKWebView _searchableObject]):
(-[WKWebView _setFindInteractionEnabled:]):

  • UIProcess/ios/WKPDFView.mm:

(+[WKPDFFoundTextRange foundTextRangeWithIndex:]):
(-[WKPDFFoundTextRange start]):
(-[WKPDFFoundTextRange end]):
(-[WKPDFFoundTextRange isEmpty]):
(+[WKPDFFoundTextPosition textPositionWithIndex:]):
(-[WKPDFView dealloc]):
(-[WKPDFView pdfHostViewController:findStringUpdate:done:]):
(-[WKPDFView selectedTextRange]):
(-[WKPDFView compareFoundRange:toRange:inDocument:]):
(-[WKPDFView performTextSearchWithQueryString:usingOptions:resultAggregator:]):
(-[WKPDFView decorateFoundTextRange:inDocument:usingStyle:]):
(-[WKPDFView clearAllDecoratedFoundText]):

2:41 PM Changeset in webkit [291444] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.13

Tag Safari-614.1.5.13.

2:28 PM Changeset in webkit [291443] by Brent Fulgham
  • 4 edits in trunk

Disable push features in CaptivePortal mode
​https://bugs.webkit.org/show_bug.cgi?id=237981
<rdar://88897228>

Reviewed by Chris Dumez.

We should not support push features when running in a Captive Portal.

Source/WebKit:

Tests: TestWebKitAPI

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
2:21 PM Changeset in webkit [291442] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

[GTK][WPE] m_compositorThread ASSERT in TextureMapper classes can just be used in debug mode
​https://bugs.webkit.org/show_bug.cgi?id=238020

Patch by Alejandro G. Castro <​alex@igalia.com> on 2022-03-17
Reviewed by Michael Catanzaro.

This is a build fix for the case where someone compiles release
with asserts activated.

  • platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.cpp:

(WebCore::TextureMapperPlatformLayerProxyDMABuf::activateOnCompositingThread):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::invalidate):

  • platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.h:
  • platform/graphics/texmap/TextureMapperPlatformLayerProxyGL.cpp:

(WebCore::TextureMapperPlatformLayerProxyGL::activateOnCompositingThread):
(WebCore::TextureMapperPlatformLayerProxyGL::invalidate):

  • platform/graphics/texmap/TextureMapperPlatformLayerProxyGL.h:
2:19 PM Changeset in webkit [291441] by commit-queue@webkit.org
  • 7 edits
    4 adds in trunk

PerformanceNavigationTiming Response Start unavailable when using Service Worker Cache
​https://bugs.webkit.org/show_bug.cgi?id=237317

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-17
Reviewed by Youenn Fablet.

Source/WebCore:

  • Modules/cache/DOMCache.cpp:

(WebCore::createResponse):

  • page/PerformanceNavigationTiming.cpp:

(WebCore::PerformanceNavigationTiming::navigationFinished):

  • platform/network/NetworkLoadMetrics.cpp:

(WebCore::NetworkLoadMetrics::updateFrom):
(WebCore::NetworkLoadMetrics::NetworkLoadMetrics): Deleted.

  • platform/network/NetworkLoadMetrics.h:

LayoutTests:

Test that these values are reasonable after loading the main resource from a service worker's cache.

  • http/wpt/service-workers/navigation-timing.https-expected.txt: Added.
  • http/wpt/service-workers/navigation-timing.https.html: Added.
  • http/wpt/service-workers/navigation-timing.js: Added.

(event.event.waitUntil.caches.open.string_appeared_here.then):
(event.event.respondWith.caches.open.string_appeared_here.then):

  • http/wpt/service-workers/resources/navigation-timing-part-2.html: Added.
2:12 PM Changeset in webkit [291440] by Jonathan Bedard
  • 2 edits in trunk/Tools

[Merge-Queue] Remove merge-queue labels when blocking PR
​https://bugs.webkit.org/show_bug.cgi?id=237964
<rdar://problem/90372805>

Reviewed by Aakash Jain.

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

(GitHubMixin.add_label): Renamed from modify_label, only handle add case
because removal case requires 'get' request first.
(GitHubMixin.remove_labels): Remove list of labels from PR.
(BlockPullRequest.start): Remove merge-queue labels.
(BlockPullRequest.getResultSummary): Add label name in results summary.
(GitHubMixin.modify_label): Renamed add_label.

Canonical link: ​https://commits.webkit.org/248564@main

1:56 PM Changeset in webkit [291439] by mmaxfield@apple.com
  • 4 edits in trunk/Source/WebGPU

[WebGPU] Fix 32-bit build
​https://bugs.webkit.org/show_bug.cgi?id=238046

Unreviewed.

  • WebGPU/Buffer.h:

(WebGPU::Buffer::size const):

  • WebGPU/Buffer.mm:

(WebGPU::Buffer::getMappedRange):
(WebGPU::Buffer::validateMapAsync const):
(WebGPU::Buffer::mapAsync):

  • WebGPU/CommandEncoder.mm:

(WebGPU::CommandEncoder::clearBuffer):

1:34 PM Changeset in webkit [291438] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[iOS] Fix build breakage from r291361
​https://bugs.webkit.org/show_bug.cgi?id=238043
rdar://90447279

Unreviewed build fix.

  • platform/ios/WebAVPlayerController.mm: Declare AVMetadataItem.
1:25 PM Changeset in webkit [291437] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r290835.
​https://bugs.webkit.org/show_bug.cgi?id=238044

Disruptive change

Reverted changeset:

"[iOS] Hard link AVPictureInPictureController"
​https://bugs.webkit.org/show_bug.cgi?id=237227
​https://commits.webkit.org/r290835

1:22 PM Changeset in webkit [291436] by sbarati@apple.com
  • 2 edits in trunk/Tools

compare-results should break down sync vs async time in Speedometer2
​https://bugs.webkit.org/show_bug.cgi?id=237993

Reviewed by Alexey Shvayka.

  • Scripts/compare-results:

(speedometer2Breakdown):
(speedometer2BreakdownSyncAsync):
(dumpBreakdowns):
(getOptions):
(main):

1:19 PM Changeset in webkit [291435] by Cameron McCormack
  • 7 edits in trunk

Avoid calling connectionClosedFromServer on a connection twice when a version change is active
​https://bugs.webkit.org/show_bug.cgi?id=215271

Reviewed by Sihui Liu.

Source/WebCore:

Since bug 203690, all IDB work is done on a single background thread.
A consequence of this change is that there are states when
UniqueIDBDatabase::m_versionChangeDatabaseConnection is also in
m_openDatabaseConnections. We should avoid calling
connectionClosedFromServer on the same connection twice, since that
can result in a spurious second error event being sent to the
IDBDatabase JS object if connections are closed while a version chnge
is in progress.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::immediateClose):

LayoutTests:

  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
  • platform/wincairo/TestExpectations:

Remove test flakiness annotations.

1:18 PM Changeset in webkit [291434] by Russell Epstein
  • 2 edits in branches/safari-614.1.6-branch/Source/WebKit

Cherry-pick r291433. rdar://problem/90431433

Removed telemetry from Networking.sb
​https://bugs.webkit.org/show_bug.cgi?id=238026

Patch by Adam Mazander <​mazander@apple.com> on 2022-03-17
Reviewed by Per Arne Vollan.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291433 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:14 PM Changeset in webkit [291433] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Removed telemetry from Networking.sb
​https://bugs.webkit.org/show_bug.cgi?id=238026

Patch by Adam Mazander <​mazander@apple.com> on 2022-03-17
Reviewed by Per Arne Vollan.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
1:12 PM Changeset in webkit [291432] by mmaxfield@apple.com
  • 2 edits
    1 delete in trunk/Tools

Delete Tools/jsc-cli in favor of the jsc target in JavaScriptCore itself
​https://bugs.webkit.org/show_bug.cgi?id=238042

Rubber-stamped by Saam Barati.

The last time jsc-cli was substantively modified was 8 years ago. On the other
hand, the jsc target in JavaScriptCore serves the same purpose, and is actively
maintained.

  • Scripts/build-jsc:
  • jsc-cli/jsc-cli.xcodeproj/project.pbxproj: Removed.
  • jsc-cli/jsc-cli/CLIInstance.h: Removed.
  • jsc-cli/jsc-cli/CLIInstance.m: Removed.
  • jsc-cli/jsc-cli/JSModule.h: Removed.
  • jsc-cli/jsc-cli/JSModule.m: Removed.
  • jsc-cli/jsc-cli/JSRunLoopThread.h: Removed.
  • jsc-cli/jsc-cli/JSRunLoopThread.m: Removed.
  • jsc-cli/jsc-cli/ReadEvalPrintLoop.h: Removed.
  • jsc-cli/jsc-cli/ReadEvalPrintLoop.m: Removed.
  • jsc-cli/jsc-cli/RunLoopThread.h: Removed.
  • jsc-cli/jsc-cli/RunLoopThread.m: Removed.
  • jsc-cli/jsc-cli/ScriptInputSource.h: Removed.
  • jsc-cli/jsc-cli/ScriptInputSource.m: Removed.
  • jsc-cli/jsc-cli/main.m: Removed.
1:09 PM Changeset in webkit [291431] by graouts@webkit.org
  • 2 edits in trunk/Source/WebKit

[model] loading spinner doesn't show on iOS
​https://bugs.webkit.org/show_bug.cgi?id=238029
rdar://89698998

Reviewed by Dean Jackson.

We must wait until a WKModelView has non-zero bounds to create the backing ASVInlinePreview
so that the ARQL views are all sized to display the loading spinner correctly.

  • UIProcess/ios/WKModelView.mm:

(-[WKModelView initWithModel:]):
(-[WKModelView createPreview]):
(-[WKModelView layoutSubviews]):
(-[WKModelView updateBounds]):

1:08 PM Changeset in webkit [291430] by Alan Coon
  • 1 copy in tags/Safari-613.2.3

Tag Safari-613.2.3.

1:00 PM Changeset in webkit [291429] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r291352.
​https://bugs.webkit.org/show_bug.cgi?id=238039

Disruptive change

Reverted changeset:

"Incorrect header name used in has_include"
​https://bugs.webkit.org/show_bug.cgi?id=237914
​https://commits.webkit.org/r291352

12:56 PM Changeset in webkit [291428] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk

Source/WebKit:
Add read and write methods to JSIPCStreamConnectionBuffer
​https://bugs.webkit.org/show_bug.cgi?id=237730
rdar://problem/89676460

Patch by Simon Lewis <​simon.lewis@apple.com> on 2022-03-17
Reviewed by Kimmo Kinnunen.

When using IPCTestingAPI, this change enables the underlying bytes
of a StreamClientConnection buffer to be modified.

Test: ipc/stream-buffer-read-write.html

  • Platform/IPC/StreamClientConnection.cpp:

(IPC::StreamClientConnection::bufferForTesting):

  • Platform/IPC/StreamClientConnection.h:
  • Platform/IPC/StreamConnectionBuffer.cpp:

(IPC::StreamConnectionBuffer::headerForTesting):
(IPC::StreamConnectionBuffer::dataForTesting):

  • Platform/IPC/StreamConnectionBuffer.h:
  • WebProcess/WebPage/IPCTestingAPI.cpp:

(WebKit::IPCTestingAPI::JSIPCStreamConnectionBuffer::staticFunctions):
(WebKit::IPCTestingAPI::JSIPCStreamConnectionBuffer::readHeaderBytes):
(WebKit::IPCTestingAPI::JSIPCStreamConnectionBuffer::readDataBytes):
(WebKit::IPCTestingAPI::JSIPCStreamConnectionBuffer::readBytes):
(WebKit::IPCTestingAPI::JSIPCStreamConnectionBuffer::writeHeaderBytes):
(WebKit::IPCTestingAPI::JSIPCStreamConnectionBuffer::writeDataBytes):
(WebKit::IPCTestingAPI::JSIPCStreamConnectionBuffer::writeBytes):

LayoutTests:
Functional tests for read and write methods of JSIPCStreamConnectionBuffer
​https://bugs.webkit.org/show_bug.cgi?id=237730
rdar://problem/89676460

Patch by Simon Lewis <​simon.lewis@apple.com> on 2022-03-17
Reviewed by Kimmo Kinnunen.

  • ipc/stream-buffer-read-write-expected.txt: Added.
  • ipc/stream-buffer-read-write.html: Added.
12:04 PM Changeset in webkit [291427] by Ben Nham
  • 2 edits in trunk/Tools

Only show notification permission prompt on user gesture
​https://bugs.webkit.org/show_bug.cgi?id=237946

Unreviewed build fix for r291414.

  • TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:
12:02 PM Changeset in webkit [291426] by commit-queue@webkit.org
  • 3 edits
    6 adds in trunk

When a “autofilled and obscured” field becomes empty, turn “autofilled and obscured” off
​https://bugs.webkit.org/show_bug.cgi?id=235256

Patch by Ellie Epskamp-Hunt <​eepskamphunt@apple.com> on 2022-03-17
Reviewed by Devin Rousso.

Source/WebCore:

Tests: fast/forms/input-autofilled-and-obscured-clear-field-programatically.html

fast/forms/input-autofilled-and-obscured-clear-form-programatically.html
fast/forms/input-autofilled-and-obscured.html

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::setValue):
Turn off the property if the page's JavaScript deletes all the text in the field.
(WebCore::HTMLInputElement::setValueFromRenderer):
Turn off the property if the user deletes all the text in the field.

LayoutTests:

Add tests to verify that when a text field becomes empty, the autofilled-and-obscured
property is removed from that field.

  • fast/forms/input-autofilled-and-obscured-clear-field-programatically-expected.txt: Added.
  • fast/forms/input-autofilled-and-obscured-clear-field-programatically.html: Added.

Delete the text by setting the input's value to an empty string.

  • fast/forms/input-autofilled-and-obscured-clear-form-programatically-expected.txt: Added.
  • fast/forms/input-autofilled-and-obscured-clear-form-programatically.html: Added.

Delete the text by calling reset on the form.

  • fast/forms/input-autofilled-and-obscured-expected.txt: Added.
  • fast/forms/input-autofilled-and-obscured.html: Added.

Delete the text as a user would.

11:55 AM Changeset in webkit [291425] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Fix the build when LOG_DISABLED is 0 in release builds
​https://bugs.webkit.org/show_bug.cgi?id=237999

Reviewed by Tim Horton.

  • WebProcess/Plugins/PDF/PDFPlugin.h:
11:48 AM Changeset in webkit [291424] by Russell Epstein
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.13

11:28 AM Changeset in webkit [291423] by J Pascoe
  • 13 edits
    3 copies
    2 adds in trunk/Source

[WebAuthn] Support makeCredential for virtual HID authenticators
​https://bugs.webkit.org/show_bug.cgi?id=237984
rdar://problem/90393676

Reviewed by Brent Fulgham.

Virtual authenticators for WebAuthn supports different transports: nfc,usb,internal,ble.
Currently, we support the internal transport, but the default transport used in web platform
tests is usb. This patch implements makeCredential for hid-based virtual authenticators. Virtual
credential information is stored in the VirtualCredential struct as suggested by the spec.

Source/WebCore:

  • Modules/webauthn/WebAuthenticationUtils.cpp:

(WebCore::buildAttestationMap):
(WebCore::buildAttestationObject):

  • Modules/webauthn/WebAuthenticationUtils.h:
  • Modules/webauthn/fido/FidoConstants.h:

Source/WebKit:

Tested manually via creating virtual authenticator and performing create and via wpt tests.

  • UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:

(WebKit::MockHidConnection::parseRequest):
(WebKit::MockHidConnection::feedReports):

  • UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.cpp:

(WebKit::VirtualAuthenticatorManager::createAuthenticator):
(WebKit::VirtualAuthenticatorManager::addCredential):
(WebKit::VirtualAuthenticatorManager::createService const):

  • UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.h:
  • UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorUtils.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualService.h.
  • UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorUtils.mm: Added.

(WebKit::flagsForConfig):
(WebKit::createPrivateKey):
(WebKit::credentialIdAndCosePubKeyForPrivateKey):
(WebKit::base64PrivateKey):

  • UIProcess/WebAuthentication/Virtual/VirtualCredential.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualService.h.
  • UIProcess/WebAuthentication/Virtual/VirtualHidConnection.cpp: Added.

(WebKit::VirtualHidConnection::VirtualHidConnection):
(WebKit::VirtualHidConnection::initialize):
(WebKit::VirtualHidConnection::terminate):
(WebKit::VirtualHidConnection::sendSync):
(WebKit::VirtualHidConnection::send):
(WebKit::VirtualHidConnection::assembleRequest):
(WebKit::VirtualHidConnection::receiveHidMessage):
(WebKit::VirtualHidConnection::recieveResponseCode):
(WebKit::VirtualHidConnection::parseRequest):

  • UIProcess/WebAuthentication/Virtual/VirtualHidConnection.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.h.
  • UIProcess/WebAuthentication/Virtual/VirtualService.h:
  • UIProcess/WebAuthentication/Virtual/VirtualService.mm:

(WebKit::VirtualService::VirtualService):
(WebKit::VirtualService::createVirtual):
(WebKit::authenticatorInfoForConfig):
(WebKit::VirtualService::startDiscoveryInternal):

  • WebKit.xcodeproj/project.pbxproj:
11:15 AM Changeset in webkit [291422] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebGPU

[WebGPU] Fix the 32-bit build
​https://bugs.webkit.org/show_bug.cgi?id=238031

Unreviewed.

  • WebGPU/Buffer.mm:

(WebGPU::validateCreateBuffer):
(WebGPU::Device::createBuffer):

  • WebGPU/CommandEncoder.mm:

(WebGPU::CommandEncoder::copyBufferToBuffer):

11:08 AM Changeset in webkit [291421] by youenn@apple.com
  • 14 edits in trunk/Source

Make SharedVideoFrameReader use VideoFrameCV instead of MediaSample
​https://bugs.webkit.org/show_bug.cgi?id=237596

Reviewed by Eric Carlson.

Source/WebCore:

Update media recorder and display layer to use pixel buffers instead of MediaSample.
This allows migrating to VideoFrameCV.
No change of behavior.

  • platform/cocoa/MediaUtilities.cpp:
  • platform/cocoa/MediaUtilities.h:
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.h:
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

Source/WebKit:

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp:
  • WebProcess/GPU/webrtc/SharedVideoFrame.cpp:
  • WebProcess/GPU/webrtc/SharedVideoFrame.h:
10:44 AM Changeset in webkit [291420] by graouts@webkit.org
  • 9 edits in trunk

REGRESSION (iOS 15.4 / r287669): Mobile app stopped working due to CSS / angular animation
​https://bugs.webkit.org/show_bug.cgi?id=237920
LayoutTests/imported/w3c:

<rdar://problem/90335275>

Reviewed by Antti Koivisto.

Add a test that looks at the default computed style for the "transition" and "animation"
shorthands.

  • web-platform-tests/css/css-animations/parsing/animation-computed-expected.txt:
  • web-platform-tests/css/css-animations/parsing/animation-computed.html:
  • web-platform-tests/css/css-pseudo/first-letter-allowed-properties-expected.txt:
  • web-platform-tests/css/css-pseudo/first-line-allowed-properties-expected.txt:
  • web-platform-tests/css/css-transitions/parsing/transition-computed-expected.txt:
  • web-platform-tests/css/css-transitions/parsing/transition-computed.html:

Source/WebCore:

Reviewed by Antti Koivisto.

We refactored the computed style output for the "transition" and "animation" shorthand
properties in r287669 and always returned a CSSValueList, even when the list of transitions
or animations was empty. This meant that for an element without any transition or animation
properties, we'd return the empty string for those properties.

Now we return the computed style for a default animation instead.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::animationShorthandValue):

10:21 AM Changeset in webkit [291419] by mmaxfield@apple.com
  • 6 edits
    4 deletes in trunk/Source/WebGPU

[WebGPU] Delete unnecessary C files from CommandLinePlayground
​https://bugs.webkit.org/show_bug.cgi?id=238005

Reviewed by Kimmo Kinnunen.

The reason the C files existed was because Swift wouldn't import a block within
a struct if the block didn't have the unsafe_unretained attribute. This patch
adds the attribute and moves the C code to be in the same file as the rest of the
playground.

  • CommandLinePlayground/CommandLinePlayground-Bridging-Header.h: Removed.
  • CommandLinePlayground/Utilities.c: Removed.
  • CommandLinePlayground/Utilities.h: Removed.
  • CommandLinePlayground/config.h: Removed.
  • CommandLinePlayground/main.swift:

(dispatchWork(_:)):

  • WebGPU.xcodeproj/project.pbxproj:
  • WebGPU/Buffer.mm:
  • WebGPU/CommandEncoder.mm:
  • WebGPU/WebGPUExt.h:
10:19 AM Changeset in webkit [291418] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

PiP on Vimeo freezes when toggled
​https://bugs.webkit.org/show_bug.cgi?id=237985

Patch by Peng Liu <​peng.liu6@icloud.com> on 2022-03-17
Reviewed by Jer Noble.

Add a quirk for vimeo.com to disable the "webkitendfullscreen" event when a video enters
picture-in-picture from fullscreen.

Tested manually.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldDisableEndFullscreenEventWhenEnteringPictureInPictureFromFullscreenQuirk const):

10:07 AM EnvironmentVariables edited by eocanha@igalia.com
Documented the MSE_MAX_BUFFER_SIZE, WPE_SHELL_DISABLE_MEDIA_DISK_CACHE … (diff)
10:01 AM Changeset in webkit [291417] by Mikhail R. Gadelha
  • 8 edits in trunk/Source/JavaScriptCore

Unreviewed, non-unified build fix
​https://bugs.webkit.org/show_bug.cgi?id=237929

  • dfg/DFGCapabilities.cpp:
  • jit/JITDisassembler.cpp:
  • jit/JITPlan.cpp:
  • llint/LLIntEntrypoint.cpp:
  • runtime/FileBasedFuzzerAgentBase.cpp:
  • runtime/ShadowRealmObject.cpp:
  • runtime/ShadowRealmPrototype.cpp:
9:54 AM Changeset in webkit [291416] by Chris Dumez
  • 8 edits in trunk/Source/WebCore

Stop returning NodeVector from functions
​https://bugs.webkit.org/show_bug.cgi?id=237988

Reviewed by Darin Adler.

Stop returning NodeVector from functions and use a out-parameter instead. While this doesn't look
as modern, this is actually more efficient. This is because NodeVector has a fairly large inline
buffer and is thus not that cheap to "move".

This was causing functions like ContainerNode::parserAppendChild(Node&) to spend unnecessary
time under:
VectorBuffer<Ref<Node, RawPtrTraits<Node>>, 11, FastMalloc>::swap(VectorBuffer<Ref<Node, RawPtrTraits<Node>>, 11, FastMalloc>&, unsigned long, unsigned long)

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::removeAllChildrenWithScriptAssertion):
(WebCore::executeNodeInsertionWithScriptAssertion):
(WebCore::ContainerNode::removeSelfOrChildNodesForInsertion):
(WebCore::ContainerNode::takeAllChildrenFrom):
(WebCore::ContainerNode::replaceAll):
(WebCore::ContainerNode::removeChildren):
(WebCore::ContainerNode::replaceChildren):

  • dom/ContainerNode.h:

(WebCore::collectChildNodes):

  • dom/ContainerNodeAlgorithms.cpp:

(WebCore::notifyChildNodeInserted):

  • dom/ContainerNodeAlgorithms.h:
  • dom/Element.cpp:

(WebCore::Element::addShadowRoot):
(WebCore::Element::insertAdjacentHTML):

  • editing/ApplyStyleCommand.cpp:

(WebCore::ApplyStyleCommand::pushDownInlineStyleAroundNode):

  • editing/ReplaceNodeWithSpanCommand.cpp:

(WebCore::swapInNodePreservingAttributesAndChildren):

9:52 AM Changeset in webkit [291415] by Russell Epstein
  • 4 edits
    6 deletes in branches/safari-614.1.6-branch

Revert r290628. rdar://problem/90310316

9:52 AM Changeset in webkit [291414] by Ben Nham
  • 24 edits in trunk

Only show notification permission prompt on user gesture
​https://bugs.webkit.org/show_bug.cgi?id=237946

Reviewed by Geoffrey Garen.

Source/WebCore:

We want to make Notification.requestPermission and PushManager.subscribe only prompt the
user for permission in response to a user gesture. This matches existing behavior in other
browsers.

We use the error string "Push notification prompting can only be done from a user gesture"
since that string was already used by safari.pushNotification.requestPermission.

  • Modules/notifications/Notification.cpp:

(WebCore::Notification::requestPermission):

  • Modules/push-api/PushManager.cpp:

(WebCore::PushManager::subscribe):

Tools:

Change existing permission tests to use evaluateJavaScript since that executes in the
context of a user gesture.

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:

LayoutTests:

Add test cases to make sure that prompting for notification permissions fails when not
handling a user gesture and succeeds when handling a user gesture.

  • http/tests/notifications/notification-request-permission-no-callback.html:
  • http/tests/notifications/notification-request-permission.html:
  • http/tests/notifications/request-expected.txt:
  • http/tests/notifications/request-with-promise-expected.txt:
  • http/tests/notifications/request-with-promise.html:
  • http/tests/notifications/request.html:
  • http/tests/push-api/resources/subscribe-iframe-cross-origin.html:
  • http/tests/push-api/resources/subscribe-iframe-same-origin.html:
  • http/tests/push-api/resources/subscribe-tests.js:

(async testDocumentSubscribeWithUserGesture): Added.
(async testDocumentSubscribeWithoutUserGesture): Added.
(async testDocumentSubscribeImpl): Added.
(async testDocumentSubscribe): Deleted.

  • http/tests/push-api/subscribe-default-permissions-expected.txt:
  • http/tests/push-api/subscribe-default-permissions-iframe-cross-origin-expected.txt:
  • http/tests/push-api/subscribe-default-permissions-iframe-same-origin-expected.txt:
  • http/tests/push-api/subscribe-default-permissions.html:
  • http/tests/push-api/subscribe-deny-permissions-expected.txt:
  • http/tests/push-api/subscribe-deny-permissions.html:
  • http/tests/push-api/subscribe-grant-permissions-expected.txt:
  • http/tests/push-api/subscribe-grant-permissions.html:
9:45 AM Changeset in webkit [291413] by Ben Nham
  • 5 edits in trunk

Allow push preference to be set programatically
​https://bugs.webkit.org/show_bug.cgi?id=238003

Reviewed by Geoffrey Garen.

Source/WebKit:

This exposes the PushAPIEnabled experimental preference through WKPreferences so it can be
enabled programatically by API clients.

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _pushAPIEnabled]):
(-[WKPreferences _setPushAPIEnabled:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Tools:

Make webpushd tests enable the push API via WKPreferences.

  • TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:
9:38 AM Changeset in webkit [291412] by Kate Cheney
  • 10 edits
    1 add in trunk

Calls to print can result in unresponsive print modal
​https://bugs.webkit.org/show_bug.cgi?id=237940
<rdar://problem/88257828>

Reviewed by Chris Dumez.

Source/WebKit:

Calls to print were hanging in the case of the client asynchronously
handling the completion handler passed to the delegate. To fix this
we can adjust all printing IPC to have the option
DispatchMessageEvenWhenWaitingForUnboundedSyncReply which allows IPC
messages when waiting for a sync reply in the case where the receiver
of the message is not guranteed to call the completion handler at the
end of the runloop.

  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _computePagesForPrinting:completionHandler:]):

  • UIProcess/WebPageProxy.cpp:

(WebKit::printingSendOptions):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::print):

Tools:

Add API test. Adjust delegate naming in the PDF case to be more
specific so we can use the generic PrintUIDelegate name in the general
case.

  • TestWebKitAPI/SourcesCocoa.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm:

(TEST):
(-[PrintUIDelegate _webView:printFrame:pdfFirstPageSize:completionHandler:]): Deleted.
(-[PrintUIDelegate waitForPageSize]): Deleted.
(-[PrintUIDelegate lastPrintedFrame]): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/WKPrinting.mm: Added.

(-[PrintUIDelegate callBlockAsync:]):
(-[PrintUIDelegate _webView:printFrame:pdfFirstPageSize:completionHandler:]):
(-[PrintUIDelegate waitForPagination]):
(TEST):

9:01 AM Changeset in webkit [291411] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebKit

Revert r290967. rdar://problem/90331977

8:45 AM Changeset in webkit [291410] by Russell Epstein
  • 2 edits in branches/safari-614.1.6-branch/Source/WebKit

Cherry-pick r291314. rdar://problem/90245766

RemoteGraphicsContextGLProxy omits context lost checks for back and front buffer access functions
​https://bugs.webkit.org/show_bug.cgi?id=237891

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-15
Reviewed by Myles Maxfield.

Add missing isContextLost() checks to RemoteGraphicsContextGLProxy functions.
WebGLRenderingContextBase would call as follows:
void WebGLRenderingContextBase::paintRenderingResultsToCanvas()
{

if (isContextLostOrPending())

return;

...
m_context->prepareForDisplay();
...
m_context->paintCompositedResultsToCanvas();

}

The context may be ok during the first check but then fail later,
and so all the context functions need to check for validity.

No new tests, testing hooks need non-trivial implementation.
This is tracked in bug 237891.

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp: (WebKit::RemoteGraphicsContextGLProxy::paintRenderingResultsToCanvas): (WebKit::RemoteGraphicsContextGLProxy::paintCompositedResultsToCanvas): (WebKit::RemoteGraphicsContextGLProxy::copyTextureFromMedia):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291314 268f45cc-cd09-0410-ab3c-d52691b4dbfc

8:24 AM Changeset in webkit [291409] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[IFC][Integration] Replace enclosingTop/Bottom/height calls with Line::enclosingLogicalRect when applicable
​https://bugs.webkit.org/show_bug.cgi?id=237996

Reviewed by Antti Koivisto.

This is in preparation for removing selection/hittesting related functions from InlineIterator::Line.

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::enclosingHeight const): Deleted.

  • layout/integration/InlineIteratorTextBox.cpp:

(WebCore::InlineIterator::TextBox::selectionRect const):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::inlineSelectionGaps):
(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::collectSelectionGeometries):

  • rendering/TextBoxPainter.cpp:

(WebCore::TextBoxPainter::paintBackground):

8:19 AM Changeset in webkit [291408] by Diego Pino Garcia
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix non-unified build after r291396

  • html/HTMLTextFormControlElement.cpp:
8:13 AM Changeset in webkit [291407] by Oriol Brufau
  • 7 edits
    1 add in trunk

Clarify code for logical-to-physical mappings, and add physical-to-logical mappings
​https://bugs.webkit.org/show_bug.cgi?id=237967

Reviewed by Darin Adler.

Source/WebCore:

The code for logical-to-physical mappings wasn't easy to understand, e.g.
mapLogicalSideToPhysicalSide used to cast a LogicalBoxSide enum into a
BoxSide enum, and then maybe casting it into an int and back to BoxSide.
So the code relied on the arbitrary order of the enum values, and it was
hard to grasp what was going on.

This patch makes these mappings much clearer, and also adds the inverse
physical-to-logical mappings. Being able to convert a physical property
into its logical equivalent will be needed for bug 236199.

No new tests because there is no change in behavior.

Tests in imported/w3c/web-platform-tests/css/css-logical/ ensure that
this patch doesn't break logical-to-physical mappings.
Some new API tests ensure that the physical-to-logical mappings
are the correct inverse.

Tests: WritingMode.LogicalBoxSide

WritingMode.BoxSide
WritingMode.LogicalBoxCorner
WritingMode.BoxCorner
WritingMode.LogicalBoxAxis
WritingMode.BoxAxis

  • css/CSSProperty.h:
  • css/makeprop.pl:
  • platform/text/WritingMode.h:

(WebCore::mapLogicalSideToPhysicalSide):
(WebCore::mapPhysicalSideToLogicalSide):
(WebCore::mapLogicalCornerToPhysicalCorner):
(WebCore::mapPhysicalCornerToLogicalCorner):
(WebCore::mapLogicalAxisToPhysicalAxis):
(WebCore::mapPhysicalAxisToLogicalAxis):
(WebCore::isHorizontalPhysicalSide): Deleted.
(WebCore::mirrorPhysicalSide): Deleted.
(WebCore::rotatePhysicalSide): Deleted.

Tools:

Add tests.

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/WritingModeTests.cpp: Added.

(TestWebKitAPI::TEST):

7:46 AM Changeset in webkit [291406] by commit-queue@webkit.org
  • 3 edits in trunk

[GTK][WPE] Also enable USE_TEXTURE_MAPPER_DMABUF alongside other DMABuf-related defines
​https://bugs.webkit.org/show_bug.cgi?id=238017

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-03-17
Reviewed by Alejandro G. Castro.

For the GTK port, define USE_TEXTURE_MAPPER_DMABUF alongside the
dependencies and defines for DMABuf-backed ANGLE integration. This will
enable usage of the DMABuf-based video sink in any GStreamer pipeline
and subsequently display of the provided DMABuf objects. A comment is
added to explain this should be covered by a separate configuration
option on which USE_ANGLE_WEBGL should then depend.

For the WPE port the define is also added but without conditions, just
like it's done for the dependencies and the USE_LIBGBM define.

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:
7:42 AM Changeset in webkit [291405] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

XSS in EWS App
​https://bugs.webkit.org/show_bug.cgi?id=236633

Reported by Iman Sharafaldin - Forward Security.

Reviewed by Darin Adler.

  • CISupport/ews-app/ews/views/submittoews.py:

(SubmitToEWS.post):

7:27 AM Changeset in webkit [291404] by Jonathan Bedard
  • 5 edits in trunk/Tools

[reporelaypy] Support credentialed https repositories
​https://bugs.webkit.org/show_bug.cgi?id=237853
<rdar://90252426>

Reviewed by Ryan Haddad, Dewei Zhu and Stephanie Lewis.

  • Tools/Scripts/libraries/reporelaypy/reporelaypy/init.py: Bump version.
  • Tools/Scripts/libraries/reporelaypy/reporelaypy/checkout.py:

(Checkout.Encoder.default): Pass credentials.
(Checkout.clone): Add credentials to local configuration.
(Checkout.add_credentials): Add username to .git/config and populate
.git-credentials file appropriately.
(Checkout.init): Re-add credentials.

  • Tools/Scripts/libraries/reporelaypy/reporelaypy/tests/checkout_unittest.py:

(CheckoutUnittest.test_json):

  • Tools/Scripts/libraries/reporelaypy/setup.py: Bump version.

Canonical link: ​https://commits.webkit.org/248534@main

6:02 AM Changeset in webkit [291403] by Nikolas Zimmermann
  • 11 edits in trunk

Build broken on macOS Monterey 12.3 - PassKitSPI related error
​https://bugs.webkit.org/show_bug.cgi?id=238010
<rdar://problem/90417687>

Reviewed by Antoine Quint.

Unbreak the macOS 12.3 build: assure that 'PKShippingMethod' is declared before used
in the 'PKShippingMethods' interface. Fix various unused variable warnings.

No new tests. No change in functionality.

Source/WebCore:

  • platform/audio/mac/AudioOutputUnitAdaptorMac.cpp:

(WebCore::AudioOutputUnitAdaptor::configure):

  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:

(WebCore::MediaSampleAVFObjC::getRGBAImageData const):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::appendToUncommittedAnimations):

Source/WebCore/PAL:

  • pal/spi/cocoa/PassKitSPI.h: Swap PKShippingMethod/PKShippingMethods declarations

Source/WebKit:

  • Shared/cf/ArgumentCodersCF.cpp:

(IPC::ArgumentCoder<CFStringRef>::encode):

  • Shared/mac/AuxiliaryProcessMac.mm:

(WebKit::compileAndCacheSandboxProfile):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewCloseAllMediaPresentations.mm:

(loadPictureInPicture):

5:54 AM Changeset in webkit [291402] by Andres Gonzalez
  • 9 edits in trunk/LayoutTests

Fix for accessibility/aria-tab-xxx.html tests in isolated tree mode.
​https://bugs.webkit.org/show_bug.cgi?id=237980
<rdar://problem/90392451>

Reviewed by Chris Fleizach.

these tests are flaky in isolated tree mode due to setting the focus to
the body is async.

  • accessibility/aria-tab-role-on-buttons-expected.txt:
  • accessibility/aria-tab-role-on-buttons.html:
  • accessibility/aria-tab-roles.html:
  • platform/glib/accessibility/aria-tab-roles-expected.txt:
  • platform/mac/accessibility/aria-tab-role-on-buttons-expected.txt:
  • platform/mac/accessibility/aria-tab-roles-expected.txt:
  • platform/win/accessibility/aria-tab-role-on-buttons-expected.txt:
  • platform/win/accessibility/aria-tab-roles-expected.txt:
5:22 AM Changeset in webkit [291401] by Andres Gonzalez
  • 3 edits in trunk/LayoutTests

Make accessibility/roles-exposed.html faster.
​https://bugs.webkit.org/show_bug.cgi?id=237960
<rdar://problem/90371580>

Reviewed by Chris Fleizach.

Make this test to run faster by storing the output in memory and
modifying the DOM once as opposed to doing it in each iteration. This is
particularly important in isolated tree mode, since the test is failing
because it takes too long to execute.
Also modify the test and expectations to explicitly output when the AX
object cannot be retrieved, i.e., it is not exposed for some reason.

  • accessibility/roles-exposed.html:
  • platform/mac-wk2/accessibility/roles-exposed-expected.txt:
5:01 AM Changeset in webkit [291400] by Andres Gonzalez
  • 5 edits in trunk/LayoutTests

Fix for accessibility/aria-option-role.html in isolated tree mode.
​https://bugs.webkit.org/show_bug.cgi?id=237975
<rdar://problem/90386629>

Reviewed by Chris Fleizach.

This test was flaky in isolated tree mode due to setting the focus to
the body is async. Solved by retrieving the AX element of the listbox
directly.

  • accessibility/aria-option-role.html:
  • platform/glib/accessibility/aria-option-role-expected.txt:
  • platform/mac/accessibility/aria-option-role-expected.txt:
  • platform/win/accessibility/aria-option-role-expected.txt:
3:07 AM Changeset in webkit [291399] by commit-queue@webkit.org
  • 17 edits
    2 adds in trunk

WebGL context lost event is not sent again for contexts that are lost and restored
​https://bugs.webkit.org/show_bug.cgi?id=237952

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-17
Reviewed by Antti Koivisto.

Source/WebCore:

WebGLRenderingContextBase did not register the GraphicsContextGL::Client
for new contexts after a context lost.
Move the client registration to WebGLRenderingContextBase::setGraphicsContextGL()
which is called always when setting a new context.
Rename the GraphicsContextGL::addClient as GraphicsContextGL::setClient(),
move the shared implementation to the base class GraphicsContextGL.
Remove GraphicsContextGL::Client::recycleContext(), the use was removed in
r290816 "WebGL context count is not limited for GPU process.".

Test: webgl/multiple-context-losses.html

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::setGraphicsContextGL):
(WebCore::WebGLRenderingContextBase::destroyGraphicsContextGL):

  • html/canvas/WebGLRenderingContextBase.h:
  • platform/graphics/GraphicsContextGL.cpp:

(WebCore::GraphicsContextGL::markLayerComposited):
(WebCore::GraphicsContextGL::forceContextLost):
(WebCore::GraphicsContextGL::dispatchContextChangedNotification):

  • platform/graphics/GraphicsContextGL.h:

(WebCore::GraphicsContextGL::setClient):

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:
  • platform/graphics/angle/GraphicsContextGLANGLE.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:

Source/WebKit:

Adjust after GraphicsContextGL::addClient() was renamed setClient().

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::RemoteGraphicsContextGL::workQueueInitialize):
(WebKit::RemoteGraphicsContextGL::workQueueUninitialize):

  • GPUProcess/graphics/RemoteGraphicsContextGL.h:
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::wasLost):
(WebKit::RemoteGraphicsContextGLProxy::wasChanged):
(WebKit::RemoteGraphicsContextGLProxy::markContextLost):

LayoutTests:

  • platform/glib/TestExpectations:
  • webgl/lose-context-after-context-lost-expected.txt:
  • webgl/lose-context-after-context-lost.html:

Enable the test for GPUP, it works now after
r290816 "WebGL context count is not limited for GPU process.".
Adjust the order of waiting for webglcontextlost and checking
isContextLost(), so that it works when context loss is reported
asynchronously by GPUP.

  • webgl/multiple-context-losses-expected.txt: Added.
  • webgl/multiple-context-losses.html: Added.

Add a test testing the bug fix.

2:41 AM Changeset in webkit [291398] by Antti Koivisto
  • 13 edits in trunk/Source/WebCore

Pass style builder context to CSSToLengthConversionData
​https://bugs.webkit.org/show_bug.cgi?id=237963

Reviewed by Antoine Quint.

This is preparation for resolving container units.

Also general cleanups to CSSToLengthConversionData.

  • css/CSSGradientValue.cpp:

(WebCore::CSSLinearGradientValue::createGradient):
(WebCore::CSSRadialGradientValue::createGradient):
(WebCore::CSSConicGradientValue::createGradient):

  • css/CSSToLengthConversionData.cpp:

(WebCore::CSSToLengthConversionData::CSSToLengthConversionData):
(WebCore::CSSToLengthConversionData::zoom const): Deleted.

  • css/CSSToLengthConversionData.h:

(WebCore::CSSToLengthConversionData::zoom const):
(WebCore::CSSToLengthConversionData::copyForFontSizeWithParentStyle const):
(WebCore::CSSToLengthConversionData::copyWithAdjustedZoom const):
(WebCore::CSSToLengthConversionData::copyForLineHeight const):
(WebCore::CSSToLengthConversionData::CSSToLengthConversionData): Deleted.
(WebCore::CSSToLengthConversionData::copyWithAdjustedZoomAndPropertyToCompute const): Deleted.

  • css/DOMMatrixReadOnly.cpp:

(WebCore::DOMMatrixReadOnly::parseStringIntoAbstractMatrix):

  • css/MediaQueryEvaluator.cpp:

(WebCore::MediaQueryEvaluator::evaluate const):

  • css/parser/SizesAttributeParser.cpp:

(WebCore::SizesAttributeParser::computeLength):
(WebCore::SizesAttributeParser::effectiveSizeDefaultValue):

  • html/shadow/TextControlInnerElements.cpp:

(WebCore::TextControlInnerElement::resolveCustomStyle):

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::popupInternalPaddingBox const):
(WebCore::applyCommonButtonPaddingToStyle):

Setting the zoom to a weird value here does nothing, ems unit resolution ignores it.
Just don't do it.

(WebCore::RenderThemeIOS::adjustButtonStyle const):
(WebCore::RenderThemeIOS::paintMenuListButtonDecorationsWithFormControlRefresh):
(WebCore::RenderThemeIOS::adjustSearchFieldDecorationPartStyle const):

  • style/ContainerQueryEvaluator.cpp:

(WebCore::Style::ContainerQueryEvaluator::selectContainer const):

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertLineHeight):

  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::mmLength):
(WebCore::Style::BuilderCustom::inchLength):
(WebCore::Style::BuilderCustom::applyValueFontSize):

  • style/StyleBuilderState.cpp:

(WebCore::Style::BuilderState::BuilderState):

2:21 AM Changeset in webkit [291397] by Diego Pino Garcia
  • 2 edits in trunk/Source/WebCore

Unreviewed, non-unified build fix after r291390

  • Modules/webaudio/DefaultAudioDestinationNode.cpp:
2:19 AM Changeset in webkit [291396] by Ziran Sun
  • 36 edits
    3 adds in trunk

[Selection] Fixes selection range settings for TEXTAREA
​https://bugs.webkit.org/show_bug.cgi?id=237641

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Updating test expectations as some sub-tests are now passing.

  • web-platform-tests/html/semantics/forms/textfieldselection/defaultSelection-expected.txt:
  • web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-expected.txt:
  • web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-extra-expected.txt:
  • web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions-expected.txt:
  • web-platform-tests/html/semantics/forms/textfieldselection/textarea-selection-while-parsing-expected.txt:

Source/WebCore:

This CL is to fix the settings of SelectionStart/SelectionEnd for TEXTAREA for non-focused Element. It sets the
caret to the end of the text value except for initializing in most cases. For the case of updating defaultValue
for a non-dirty TEXTAREA, we should following the clamping steps as per spec and it will be addressed in a
follow-up patch.

This CL refers and imports part of the changes in chromium CL at
​https://codereview.chromium.org/392573002

TextArea only calls setSelectionRange() for focused element. While for non-focused element, we need to update the caret
except for initializing. Since we are not change text selection for text area in this case, we only cache the selections.
It would be ideal to have a unified function call for both focused and non-focused cases. However, the selectionRange()
function changes focus of the element and the approach we are having here is to avoid the impacts on a good number of
exisiting tests.

This CL also introduces a unified setValue() API in HTMLFormControlElement for HTMLTextAreaElement and HTMLInputElement.

  • html/BaseButtonInputType.cpp:

(WebCore::BaseButtonInputType::setValue):

  • html/BaseButtonInputType.h:
  • html/BaseCheckableInputType.cpp:

(WebCore::BaseCheckableInputType::setValue):

  • html/BaseCheckableInputType.h:
  • html/BaseDateAndTimeInputType.cpp:

(WebCore::BaseDateAndTimeInputType::setValue):
(WebCore::BaseDateAndTimeInputType::didChangeValueFromControl):

  • html/BaseDateAndTimeInputType.h:
  • html/ColorInputType.cpp:

(WebCore::ColorInputType::setValue):

  • html/ColorInputType.h:
  • html/FileInputType.cpp:

(WebCore::FileInputType::setValue):

  • html/FileInputType.h:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::setValue):

  • html/HTMLInputElement.h:
  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::childrenChanged):
(WebCore::HTMLTextAreaElement::reset):
(WebCore::HTMLTextAreaElement::setValue):
(WebCore::HTMLTextAreaElement::setNonDirtyValue):
(WebCore::HTMLTextAreaElement::setValueCommon):
(WebCore::HTMLTextAreaElement::copyNonAttributePropertiesFromElement):

  • html/HTMLTextAreaElement.h:
  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::setRangeText):

  • html/HTMLTextFormControlElement.h:
  • html/HiddenInputType.cpp:

(WebCore::HiddenInputType::setValue):

  • html/HiddenInputType.h:
  • html/InputType.cpp:

(WebCore::InputType::setValue):

  • html/InputType.h:
  • html/NumberInputType.cpp:

(WebCore::NumberInputType::setValue):

  • html/NumberInputType.h:
  • html/RangeInputType.cpp:

(WebCore::RangeInputType::setValue):

  • html/RangeInputType.h:
  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::setValue):

  • html/TextFieldInputType.h:

LayoutTests:

Updated two tests that expect resetting value of textarea to change selection to 0.
These changes are in line with changes made in Chromium.

  • editing/pasteboard/paste-into-textarea-with-new-line.html:
  • fast/spatial-navigation/snav-textarea.html:
2:01 AM Changeset in webkit [291395] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

[model] some tests under model-element crash on Big Sur bots
​https://bugs.webkit.org/show_bug.cgi?id=238011

Reviewed by Cameron McCormack.

The fix for bug 237894 added another place where we might reject the ready
failure, but we didn't check whether it had already been rejected before,
which would cause an assertion failure leading to a crash on debug builds.

We now consistently check whether the ready promise had already been
fulfilled before rejecting it.

  • Modules/model-element/HTMLModelElement.cpp:

(WebCore::HTMLModelElement::setSourceURL):
(WebCore::HTMLModelElement::notifyFinished):
(WebCore::HTMLModelElement::modelDidChange):
(WebCore::HTMLModelElement::createModelPlayer):
(WebCore::HTMLModelElement::didFailLoading):

1:29 AM Changeset in webkit [291394] by Nikolas Zimmermann
  • 2 edits in trunk/Source/WebCore

[Xcode] Build broken after r289139
​https://bugs.webkit.org/show_bug.cgi?id=238010

Unreviewed build fix: Remove duplicate entry from Xcode project file.

No change of behavior.

  • WebCore.xcodeproj/project.pbxproj:
12:53 AM Changeset in webkit [291393] by graouts@webkit.org
  • 8 edits in trunk/Source/WebKit

[model] -[ASVInlinePreview setRemoteContext:] should be called inside the -[ASVInlinePreview setupRemoteConnectionWithCompletionHandler:] callback
​https://bugs.webkit.org/show_bug.cgi?id=237959
rdar://87832635

Reviewed by Dean Jackson.

We need to split the code that creates a remote ASVInlinePreview on macOS in two. The first step is to create the remote ASVInlinePreview
and obtain its remote context id from the UIProcess, setting it on the WebProcess ASVInlinePreview in the callback.

The second step is to load the file in the remote ASVInlinePreview.

For these two steps, we now have two separate WebProxy messages: ModelElementCreateRemotePreview and ModelElementLoadRemotePreview.

  • UIProcess/Cocoa/ModelElementControllerCocoa.mm:

(WebKit::ModelElementController::modelElementCreateRemotePreview):
(WebKit::ModelElementController::modelElementLoadRemotePreview):
(WebKit::ModelElementController::modelElementDidCreatePreview): Deleted.

  • UIProcess/ModelElementController.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::modelElementCreateRemotePreview):
(WebKit::WebPageProxy::modelElementLoadRemotePreview):
(WebKit::WebPageProxy::modelElementDidCreatePreview): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.h:
  • WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.mm:

(WebKit::ARKitInlinePreviewModelPlayerMac::load):
(WebKit::ARKitInlinePreviewModelPlayerMac::createPreviewsForModelWithURL):
(WebKit::ARKitInlinePreviewModelPlayerMac::didCreateRemotePreviewForModelWithURL):

12:41 AM Changeset in webkit [291392] by commit-queue@webkit.org
  • 10 edits in trunk

[GTK][WPE] Guard libgbm and libdrm code, make them conditional dependencies for GTK
​https://bugs.webkit.org/show_bug.cgi?id=237974

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-03-17
Reviewed by Alejandro G. Castro.

.:

Guard usage of libgbm and libdrm dependencies with the USE_LIBGBM
define. This should be required until we can switch to a possibly more
dynamic implementation that doesn't require build-time dependencies.

For the GTK port, the desire is to keep these dependencies fully
optional. At the moment they are required when enabling ANGLE-backed
WebGL, with the USE_LIBGBM also defined in that case. This is needed
because ANGLE integration for Linux ports already depends on these
libraries.

For the WPE port only USE_LIBGBM is defined and the two dependencies
remain required.

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:

Source/WebCore:

Add USE(LIBGBM) guards around GBMDevice and GBMBufferSwapchain code,
and compile against the libgbm and libdrm dependencies only when
USE_LIBGBM is defined. This makes the two dependencies optional if
desired.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • platform/graphics/gbm/GBMBufferSwapchain.cpp:
  • platform/graphics/gbm/GBMBufferSwapchain.h:
  • platform/graphics/gbm/GBMDevice.cpp:
  • platform/graphics/gbm/GBMDevice.h:
12:31 AM Changeset in webkit [291391] by youenn@apple.com
  • 4 edits
    4 deletes in trunk/Source/ThirdParty/libwebrtc

Remove no longer used third party webrtc modules
​https://bugs.webkit.org/show_bug.cgi?id=237945

Reviewed by Eric Carlson.

Remove folders that have not been used for a long time.

  • CMakeLists.txt: Removed jsoncpp compilation.
  • Configurations/libwebrtc.xcconfig:
  • Source/third_party/gflags: Removed.
  • Source/third_party/googletest: Removed.
  • Source/third_party/gtest-parallel: Removed.
  • Source/third_party/jsoncpp: Removed.
  • libwebrtc.xcodeproj/project.pbxproj:
12:21 AM Changeset in webkit [291390] by youenn@apple.com
  • 16 edits
    2 adds in trunk

AudioContext is suspended on iOS when page is backgrounded
​https://bugs.webkit.org/show_bug.cgi?id=237878

Reviewed by Eric Carlson.

Source/WebCore:

On iOS, when the application goes in the background, AudioContext gets suspended.
This is problematic when AudioContext is used to generate audio samples but not play audio samples.
To allow those silent AudioContexts to run even in background, the following is done:

  • Override background interruptions in case the audio context default destination is not connected.
  • Monitor whether the default destination is connected or not.
  • If the default destination gets connected while application is in the background, trigger an interruption to prevent playing audio.

To prevent potential audio burst, we interrupt just before the destination gets connected and not just after.
For that reason, we add m_canOverrideBackgroundPlaybackRestriction to enforce interruption when we now the connection will be connected.

This approach keeps the existing iOS behavior in terms of rendered audio while allowing for not-playing audio contexts to continue in the background.

Tests: webaudio/suspend-context-while-backgrounded.html and API test.

  • Modules/webaudio/AudioContext.cpp:
  • Modules/webaudio/AudioContext.h:
  • Modules/webaudio/AudioNode.cpp:
  • Modules/webaudio/AudioSummingJunction.h:
  • Modules/webaudio/DefaultAudioDestinationNode.cpp:
  • Modules/webaudio/DefaultAudioDestinationNode.h:
  • platform/audio/PlatformMediaSessionManager.h:

Source/WebKit:

Expose private SPI for testing purposes.

  • UIProcess/API/Cocoa/WKProcessPool.mm:
  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/WebProcessPool.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/GPUProcess.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/audio-context-playing.html:

LayoutTests:

  • webaudio/suspend-context-while-backgrounded-expected.txt: Added.
  • webaudio/suspend-context-while-backgrounded.html: Added.
12:17 AM Changeset in webkit [291389] by mmaxfield@apple.com
  • 19 edits in trunk/Source/WebGPU

[WebGPU] Mark unchanging class members as const
​https://bugs.webkit.org/show_bug.cgi?id=237998

Reviewed by Kimmo Kinnunen.

Let's use the C++ type system to our advantage.

  • WebGPU/Adapter.h:
  • WebGPU/BindGroup.h:
  • WebGPU/BindGroupLayout.h:
  • WebGPU/CommandBuffer.h:
  • WebGPU/ComputePassEncoder.h:
  • WebGPU/ComputePipeline.h:
  • WebGPU/Device.h:

(WebGPU::Device::instance const):
(WebGPU::Device::instance): Deleted.

  • WebGPU/Instance.h:
  • WebGPU/QuerySet.h:
  • WebGPU/Queue.h:
  • WebGPU/RenderBundle.h:
  • WebGPU/RenderBundleEncoder.h:
  • WebGPU/RenderPassEncoder.h:
  • WebGPU/RenderPipeline.h:
  • WebGPU/Sampler.h:
  • WebGPU/ShaderModule.h:
  • WebGPU/Texture.h:
  • WebGPU/TextureView.h:

Mar 16, 2022:

10:25 PM Changeset in webkit [291388] by Alan Coon
  • 9 edits in branches/safari-613-branch/Source

Versioning.

WebKit-7613.2.3

8:56 PM Changeset in webkit [291387] by mmaxfield@apple.com
  • 5 edits in trunk/Source/WebGPU

[WebGPU] Implement sampler creation according to the spec
​https://bugs.webkit.org/show_bug.cgi?id=237882

Reviewed by Kimmo Kinnunen.

Implement Device::createSampler() according to the algorithm in the spec. There
are a few things which the spec lists which we can't do yet (like making objects
invalid), so those things are left with FIXMEs. Every step is listed with links
to the spec where appropriate, and with quotes to the spec describing what is
being implemented.

  • WebGPU/Buffer.mm:

(WebGPU::Buffer::mapAsync):

  • WebGPU/ComputePipeline.mm:

(WebGPU::createConstantValues):

  • WebGPU/Sampler.h:

(WebGPU::Sampler::create):
(WebGPU::Sampler::descriptor const):
(WebGPU::Sampler::isComparison const):
(WebGPU::Sampler::isFiltering const):

  • WebGPU/Sampler.mm:

(WebGPU::validateCreateSampler):
(WebGPU::Device::createSampler):
(WebGPU::Sampler::Sampler):

8:37 PM Changeset in webkit [291386] by mmaxfield@apple.com
  • 9 edits in trunk/Source/WebGPU

[WebGPU] Implement first draft of debug commands according to the spec
​https://bugs.webkit.org/show_bug.cgi?id=237879

Reviewed by Kimmo Kinnunen.

Implement insertDebugMarker(), pushDebugGroup(), and popDebugGroup() according to
the algorithms in the spec. There are a few things which the spec lists which we
can't do yet (like making objects invalid), so those things are left with FIXMEs.
Every step is listed with links to the spec where appropriate, and with quotes to
the spec describing what is being implemented. Also, because each class handles
these debug commands slightly differently (CommandEncoders support debug groups
but not debug markers; RenderBundles don't support any of them, and
ComputeEncoders support all of them) I opted to not try to do any code sharing.

  • WebGPU/CommandEncoder.h:
  • WebGPU/CommandEncoder.mm:

(WebGPU::CommandEncoder::insertDebugMarker):
(WebGPU::CommandEncoder::validatePopDebugGroup const):
(WebGPU::CommandEncoder::popDebugGroup):
(WebGPU::CommandEncoder::pushDebugGroup):

  • WebGPU/ComputePassEncoder.h:
  • WebGPU/ComputePassEncoder.mm:

(WebGPU::ComputePassEncoder::insertDebugMarker):
(WebGPU::ComputePassEncoder::validatePopDebugGroup const):
(WebGPU::ComputePassEncoder::popDebugGroup):
(WebGPU::ComputePassEncoder::pushDebugGroup):

  • WebGPU/RenderBundleEncoder.h:
  • WebGPU/RenderBundleEncoder.mm:

(WebGPU::RenderBundleEncoder::insertDebugMarker):
(WebGPU::RenderBundleEncoder::validatePopDebugGroup const):
(WebGPU::RenderBundleEncoder::popDebugGroup):
(WebGPU::RenderBundleEncoder::pushDebugGroup):

  • WebGPU/RenderPassEncoder.h:
  • WebGPU/RenderPassEncoder.mm:

(WebGPU::RenderPassEncoder::insertDebugMarker):
(WebGPU::RenderPassEncoder::validatePopDebugGroup const):
(WebGPU::RenderPassEncoder::popDebugGroup):
(WebGPU::RenderPassEncoder::pushDebugGroup):

8:06 PM Changeset in webkit [291385] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebGPU

[WebGPU] Implement first draft of CommandEncoder::clearBuffer() according to the spec
​https://bugs.webkit.org/show_bug.cgi?id=237877

Reviewed by Kimmo Kinnunen.

Implement CommandEncoder::clearBuffer() according to the algorithms in the spec.
There are a few things which the spec lists which we can't do yet (like reporting
validation errors), so those things are left with FIXMEs. Every step is listed
with links to the spec where appropriate, and with quotes to the spec describing
what is being implemented.

  • WebGPU/CommandEncoder.mm:

(WebGPU::validateClearBuffer):
(WebGPU::CommandEncoder::clearBuffer):

8:02 PM Changeset in webkit [291384] by mmaxfield@apple.com
  • 19 edits in trunk/Source

[WebGPU] Use block-based WebGPU API instead of function pointer & userdata API
​https://bugs.webkit.org/show_bug.cgi?id=237932

Reviewed by Kimmo Kinnunen.

Source/WebCore/PAL:

Thanks to the magic of makeBlockPtr(), we can use lambdas to pass asynchronous callbacks
to WebGPU methods, instead of having to save callbacks in a queue manually. This is much
safer because A) it's significantly less code, which means fewer bugs, and B) the
callbacks are allowed to fire out-of-order now.

  • pal/graphics/WebGPU/Impl/WebGPUAdapterImpl.cpp:

(PAL::WebGPU::AdapterImpl::requestDevice):
(PAL::WebGPU::requestDeviceCallback): Deleted.
(PAL::WebGPU::AdapterImpl::requestDeviceCallback): Deleted.

  • pal/graphics/WebGPU/Impl/WebGPUAdapterImpl.h:
  • pal/graphics/WebGPU/Impl/WebGPUBufferImpl.cpp:

(PAL::WebGPU::BufferImpl::mapAsync):
(PAL::WebGPU::mapCallback): Deleted.
(PAL::WebGPU::BufferImpl::mapCallback): Deleted.

  • pal/graphics/WebGPU/Impl/WebGPUBufferImpl.h:
  • pal/graphics/WebGPU/Impl/WebGPUDeviceImpl.cpp:

(PAL::WebGPU::DeviceImpl::createComputePipelineAsync):
(PAL::WebGPU::DeviceImpl::createRenderPipelineAsync):
(PAL::WebGPU::DeviceImpl::popErrorScope):
(PAL::WebGPU::createComputePipelineAsyncCallback): Deleted.
(PAL::WebGPU::DeviceImpl::createComputePipelineAsyncCallback): Deleted.
(PAL::WebGPU::createRenderPipelineAsyncCallback): Deleted.
(PAL::WebGPU::DeviceImpl::createRenderPipelineAsyncCallback): Deleted.
(PAL::WebGPU::popErrorScopeCallback): Deleted.
(PAL::WebGPU::DeviceImpl::popErrorScopeCallback): Deleted.

  • pal/graphics/WebGPU/Impl/WebGPUDeviceImpl.h:
  • pal/graphics/WebGPU/Impl/WebGPUImpl.cpp:

(PAL::WebGPU::GPUImpl::requestAdapter):
(PAL::WebGPU::requestAdapterCallback): Deleted.
(PAL::WebGPU::GPUImpl::requestAdapterCallback): Deleted.

  • pal/graphics/WebGPU/Impl/WebGPUImpl.h:
  • pal/graphics/WebGPU/Impl/WebGPUQueueImpl.cpp:

(PAL::WebGPU::QueueImpl::onSubmittedWorkDone):
(PAL::WebGPU::onSubmittedWorkDoneCallback): Deleted.
(PAL::WebGPU::QueueImpl::onSubmittedWorkDoneCallback): Deleted.

  • pal/graphics/WebGPU/Impl/WebGPUQueueImpl.h:
  • pal/graphics/WebGPU/Impl/WebGPUShaderModuleImpl.cpp:

(PAL::WebGPU::ShaderModuleImpl::compilationInfo):

Source/WebGPU:

Move callbacks instead of copying them. Also, update according to the style guide.

  • WebGPU/Adapter.mm:

(wgpuAdapterRequestDevice):
(wgpuAdapterRequestDeviceWithBlock):

  • WebGPU/Buffer.mm:

(wgpuBufferMapAsync):
(wgpuBufferMapAsyncWithBlock):

  • WebGPU/Device.mm:

(wgpuDeviceCreateComputePipelineAsync):
(wgpuDeviceCreateComputePipelineAsyncWithBlock):
(wgpuDeviceCreateRenderPipelineAsync):
(wgpuDeviceCreateRenderPipelineAsyncWithBlock):
(wgpuDevicePopErrorScope):
(wgpuDevicePopErrorScopeWithBlock):
(wgpuDeviceSetDeviceLostCallback):
(wgpuDeviceSetDeviceLostCallbackWithBlock):
(wgpuDeviceSetUncapturedErrorCallback):
(wgpuDeviceSetUncapturedErrorCallbackWithBlock):

  • WebGPU/Instance.mm:

(wgpuInstanceRequestAdapter):
(wgpuInstanceRequestAdapterWithBlock):

  • WebGPU/Queue.mm:

(wgpuQueueOnSubmittedWorkDone):
(wgpuQueueOnSubmittedWorkDoneWithBlock):

  • WebGPU/ShaderModule.mm:

(wgpuShaderModuleGetCompilationInfo):
(wgpuShaderModuleGetCompilationInfoWithBlock):

7:51 PM Changeset in webkit [291383] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Always update assertion state for existing default network process
​https://bugs.webkit.org/show_bug.cgi?id=237965

Reviewed by Chris Dumez.

In our current implementation, we only update process assertion state for network process if it's being used by
some WebsiteDataStore. An problematic case with this impelmentation found by Tim: when a network process is
created for some WebsiteDataStore, and the WebsiteDataStore is gone (WebView gets destroyed), then network
process will get suspended. At this time, if a new WebsiteDataStore is created, some activities happen and we
update assertion state, we don't resume the network process, since it's not actively being used (the new
WebsiteDataStore has not invoked networkProcess() yet). Later on if the WebsiteDataStore starts to use network
process (it reuses existing process as network process is a singleton on Cocoa platforms), the network process
will be numb and not respond any message because it is suspended.

To fix this issue, let's always update assertion state for existing network process.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::updateProcessAssertions):

7:30 PM Changeset in webkit [291382] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebGPU

[WebGPU] Implement queue submission methods according to the spec
​https://bugs.webkit.org/show_bug.cgi?id=237869

Reviewed by Kimmo Kinnunen.

Addressing post-review comments.

  • WebGPU/Queue.mm:

(WebGPU::Queue::submit):

5:55 PM Changeset in webkit [291381] by Chris Dumez
  • 5 edits in trunk/Source/WebKit

Don't build WebPageProxy::writePromisedAttachmentToPasteboard() and its IPC on macOS
​https://bugs.webkit.org/show_bug.cgi?id=237986

Reviewed by Brent Fulgham.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::writePromisedAttachmentToPasteboard):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
5:39 PM Changeset in webkit [291380] by Devin Rousso
  • 2 edits in trunk/Source/JavaScriptCore

Web Inspector: REGRESSION(r290720): Debugger: Step next should not behave the same as Step into
​https://bugs.webkit.org/show_bug.cgi?id=237936

Reviewed by Joseph Pecoraro.

Covered by existing tests (not sure why they don't fail on EWS, but they fail locally).

  • debugger/Debugger.cpp:

(JSC::Debugger::pauseIfNeeded):
Checking that the desired CallFrame matches the current CallFrame is enough to determine
whether the Debugger should pause for Step next and Step out, as both of those actions set
a desired CallFrame. We explicitly do not want to check for the bool flags that indicate
those actions because they have different behaviors regarding the current CallFrame (the
former desires the same CallFrame and the latter desires the parent CallFrame). This
patch partially reverts r290720.

5:36 PM Changeset in webkit [291379] by Russell Epstein
  • 3 edits in branches/safari-614.1.6-branch/Source/WebKit

Cherry-pick r291352. rdar://problem/90271228

Incorrect header name used in has_include
​https://bugs.webkit.org/show_bug.cgi?id=237914
<rdar://90271228>

Reviewed by Geoffrey Garen.

  • Configurations/WebKit.xcconfig:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeWebProcess):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291352 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5:23 PM Changeset in webkit [291378] by Devin Rousso
  • 2 edits in trunk/Source/WebCore

[Apple Pay] version values are incorrect, causing incorrect feature detection
​https://bugs.webkit.org/show_bug.cgi?id=237989
<rdar://problem/90399356>

Reviewed by Tim Horton.

Version 13 should also be enabled for ENABLE_APPLE_PAY_SELECTED_SHIPPING_METHOD, and
ENABLE_APPLE_PAY_PAYMENT_DETAILS_DATA really corresponds to Version 14.

  • Modules/applepay/cocoa/PaymentAPIVersionCocoa.mm:

(WebCore::PaymentAPIVersion::current):

5:05 PM Changeset in webkit [291377] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebGPU

[WebGPU] Put nontrivial code in WebGPU's command line playground
​https://bugs.webkit.org/show_bug.cgi?id=237876

Reviewed by Kimmo Kinnunen.

This is a simple mempcy() example. It uses asynchronous mapping and a queue submit.

  • CommandLinePlayground/main.swift:

(device):

5:02 PM Changeset in webkit [291376] by mmaxfield@apple.com
  • 46 edits
    1 add in trunk/Source/WebGPU

[WebGPU] Use the fromAPI() pattern
​https://bugs.webkit.org/show_bug.cgi?id=237942

Reviewed by Kimmo Kinnunen.

Inside API functions, use an overloaded fromAPI() function to convert
API types to their backing types.

  • WebGPU.xcodeproj/project.pbxproj:
  • WebGPU/APIConversions.h: Added.

(WebGPU::fromAPI):

  • WebGPU/Adapter.h:
  • WebGPU/Adapter.mm:

(WebGPU::Adapter::requestDevice):
(wgpuAdapterEnumerateFeatures):
(wgpuAdapterGetLimits):
(wgpuAdapterGetProperties):
(wgpuAdapterHasFeature):
(wgpuAdapterRequestDevice):
(wgpuAdapterRequestDeviceWithBlock):

  • WebGPU/BindGroup.h:
  • WebGPU/BindGroup.mm:

(WebGPU::Device::createBindGroup):
(WebGPU::BindGroup::setLabel):
(wgpuBindGroupSetLabel):

  • WebGPU/BindGroupLayout.h:
  • WebGPU/BindGroupLayout.mm:

(WebGPU::BindGroupLayout::setLabel):
(wgpuBindGroupLayoutSetLabel):

  • WebGPU/Buffer.h:
  • WebGPU/Buffer.mm:

(WebGPU::Buffer::setLabel):
(wgpuBufferDestroy):
(wgpuBufferGetConstMappedRange):
(wgpuBufferGetMappedRange):
(wgpuBufferMapAsync):
(wgpuBufferMapAsyncWithBlock):
(wgpuBufferUnmap):
(wgpuBufferSetLabel):

  • WebGPU/CommandBuffer.h:
  • WebGPU/CommandBuffer.mm:

(WebGPU::CommandBuffer::setLabel):
(wgpuCommandBufferSetLabel):

  • WebGPU/CommandEncoder.h:
  • WebGPU/CommandEncoder.mm:

(WebGPU::CommandEncoder::insertDebugMarker):
(WebGPU::CommandEncoder::pushDebugGroup):
(WebGPU::CommandEncoder::setLabel):
(wgpuCommandEncoderBeginComputePass):
(wgpuCommandEncoderBeginRenderPass):
(wgpuCommandEncoderCopyBufferToBuffer):
(wgpuCommandEncoderCopyBufferToTexture):
(wgpuCommandEncoderCopyTextureToBuffer):
(wgpuCommandEncoderCopyTextureToTexture):
(wgpuCommandEncoderClearBuffer):
(wgpuCommandEncoderFinish):
(wgpuCommandEncoderInsertDebugMarker):
(wgpuCommandEncoderPopDebugGroup):
(wgpuCommandEncoderPushDebugGroup):
(wgpuCommandEncoderResolveQuerySet):
(wgpuCommandEncoderWriteTimestamp):
(wgpuCommandEncoderSetLabel):

  • WebGPU/ComputePassEncoder.h:
  • WebGPU/ComputePassEncoder.mm:

(WebGPU::ComputePassEncoder::insertDebugMarker):
(WebGPU::ComputePassEncoder::pushDebugGroup):
(WebGPU::ComputePassEncoder::setLabel):
(wgpuComputePassEncoderBeginPipelineStatisticsQuery):
(wgpuComputePassEncoderDispatch):
(wgpuComputePassEncoderDispatchIndirect):
(wgpuComputePassEncoderEndPass):
(wgpuComputePassEncoderEndPipelineStatisticsQuery):
(wgpuComputePassEncoderInsertDebugMarker):
(wgpuComputePassEncoderPopDebugGroup):
(wgpuComputePassEncoderPushDebugGroup):
(wgpuComputePassEncoderSetBindGroup):
(wgpuComputePassEncoderSetPipeline):
(wgpuComputePassEncoderSetLabel):

  • WebGPU/ComputePipeline.h:
  • WebGPU/ComputePipeline.mm:

(WebGPU::Device::createComputePipeline):
(WebGPU::Device::createComputePipelineAsync):
(WebGPU::ComputePipeline::setLabel):
(wgpuComputePipelineGetBindGroupLayout):
(wgpuComputePipelineSetLabel):

  • WebGPU/Device.h:
  • WebGPU/Device.mm:

(WebGPU::Device::create):
(WebGPU::Device::popErrorScope):
(WebGPU::Device::setDeviceLostCallback):
(WebGPU::Device::setUncapturedErrorCallback):
(WebGPU::Device::setLabel):
(wgpuDeviceCreateBindGroup):
(wgpuDeviceCreateBindGroupLayout):
(wgpuDeviceCreateBuffer):
(wgpuDeviceCreateCommandEncoder):
(wgpuDeviceCreateComputePipeline):
(wgpuDeviceCreateComputePipelineAsync):
(wgpuDeviceCreateComputePipelineAsyncWithBlock):
(wgpuDeviceCreatePipelineLayout):
(wgpuDeviceCreateQuerySet):
(wgpuDeviceCreateRenderBundleEncoder):
(wgpuDeviceCreateRenderPipeline):
(wgpuDeviceCreateRenderPipelineAsync):
(wgpuDeviceCreateRenderPipelineAsyncWithBlock):
(wgpuDeviceCreateSampler):
(wgpuDeviceCreateShaderModule):
(wgpuDeviceCreateSwapChain):
(wgpuDeviceCreateTexture):
(wgpuDeviceDestroy):
(wgpuDeviceEnumerateFeatures):
(wgpuDeviceGetLimits):
(wgpuDeviceHasFeature):
(wgpuDevicePopErrorScope):
(wgpuDevicePopErrorScopeWithBlock):
(wgpuDevicePushErrorScope):
(wgpuDeviceSetDeviceLostCallback):
(wgpuDeviceSetDeviceLostCallbackWithBlock):
(wgpuDeviceSetUncapturedErrorCallback):
(wgpuDeviceSetUncapturedErrorCallbackWithBlock):
(wgpuDeviceSetLabel):

  • WebGPU/Instance.h:
  • WebGPU/Instance.mm:

(WebGPU::Instance::requestAdapter):
(wgpuInstanceCreateSurface):
(wgpuInstanceProcessEvents):
(wgpuInstanceRequestAdapter):
(wgpuInstanceRequestAdapterWithBlock):

  • WebGPU/PipelineLayout.h:
  • WebGPU/PipelineLayout.mm:

(WebGPU::Device::createPipelineLayout):
(WebGPU::PipelineLayout::setLabel):
(wgpuPipelineLayoutSetLabel):

  • WebGPU/QuerySet.h:
  • WebGPU/QuerySet.mm:

(WebGPU::QuerySet::setLabel):
(wgpuQuerySetDestroy):
(wgpuQuerySetSetLabel):

  • WebGPU/Queue.h:
  • WebGPU/Queue.mm:

(WebGPU::Queue::setLabel):
(wgpuQueueOnSubmittedWorkDone):
(wgpuQueueOnSubmittedWorkDoneWithBlock):
(wgpuQueueSubmit):
(wgpuQueueWriteBuffer):
(wgpuQueueWriteTexture):
(wgpuQueueSetLabel):

  • WebGPU/RenderBundle.h:
  • WebGPU/RenderBundle.mm:

(WebGPU::RenderBundle::setLabel):
(wgpuRenderBundleSetLabel):

  • WebGPU/RenderBundleEncoder.h:
  • WebGPU/RenderBundleEncoder.mm:

(WebGPU::RenderBundleEncoder::insertDebugMarker):
(WebGPU::RenderBundleEncoder::pushDebugGroup):
(WebGPU::RenderBundleEncoder::setLabel):
(wgpuRenderBundleEncoderDraw):
(wgpuRenderBundleEncoderDrawIndexed):
(wgpuRenderBundleEncoderDrawIndexedIndirect):
(wgpuRenderBundleEncoderDrawIndirect):
(wgpuRenderBundleEncoderFinish):
(wgpuRenderBundleEncoderInsertDebugMarker):
(wgpuRenderBundleEncoderPopDebugGroup):
(wgpuRenderBundleEncoderPushDebugGroup):
(wgpuRenderBundleEncoderSetBindGroup):
(wgpuRenderBundleEncoderSetIndexBuffer):
(wgpuRenderBundleEncoderSetPipeline):
(wgpuRenderBundleEncoderSetVertexBuffer):
(wgpuRenderBundleEncoderSetLabel):

  • WebGPU/RenderPassEncoder.h:
  • WebGPU/RenderPassEncoder.mm:

(WebGPU::RenderPassEncoder::insertDebugMarker):
(WebGPU::RenderPassEncoder::pushDebugGroup):
(WebGPU::RenderPassEncoder::setLabel):
(wgpuRenderPassEncoderBeginOcclusionQuery):
(wgpuRenderPassEncoderBeginPipelineStatisticsQuery):
(wgpuRenderPassEncoderDraw):
(wgpuRenderPassEncoderDrawIndexed):
(wgpuRenderPassEncoderDrawIndexedIndirect):
(wgpuRenderPassEncoderDrawIndirect):
(wgpuRenderPassEncoderEndOcclusionQuery):
(wgpuRenderPassEncoderEndPass):
(wgpuRenderPassEncoderEndPipelineStatisticsQuery):
(wgpuRenderPassEncoderExecuteBundles):
(wgpuRenderPassEncoderInsertDebugMarker):
(wgpuRenderPassEncoderPopDebugGroup):
(wgpuRenderPassEncoderPushDebugGroup):
(wgpuRenderPassEncoderSetBindGroup):
(wgpuRenderPassEncoderSetBlendConstant):
(wgpuRenderPassEncoderSetIndexBuffer):
(wgpuRenderPassEncoderSetPipeline):
(wgpuRenderPassEncoderSetScissorRect):
(wgpuRenderPassEncoderSetStencilReference):
(wgpuRenderPassEncoderSetVertexBuffer):
(wgpuRenderPassEncoderSetViewport):
(wgpuRenderPassEncoderSetLabel):

  • WebGPU/RenderPipeline.h:
  • WebGPU/RenderPipeline.mm:

(WebGPU::Device::createRenderPipelineAsync):
(WebGPU::RenderPipeline::setLabel):
(wgpuRenderPipelineGetBindGroupLayout):
(wgpuRenderPipelineSetLabel):

  • WebGPU/Sampler.h:
  • WebGPU/Sampler.mm:

(WebGPU::Sampler::setLabel):
(wgpuSamplerSetLabel):

  • WebGPU/ShaderModule.h:
  • WebGPU/ShaderModule.mm:

(WebGPU::ShaderModule::setLabel):
(wgpuShaderModuleGetCompilationInfo):
(wgpuShaderModuleGetCompilationInfoWithBlock):
(wgpuShaderModuleSetLabel):

  • WebGPU/Surface.mm:

(wgpuSurfaceGetPreferredFormat):

  • WebGPU/SwapChain.mm:

(wgpuSwapChainGetCurrentTextureView):
(wgpuSwapChainPresent):

  • WebGPU/Texture.h:
  • WebGPU/Texture.mm:

(WebGPU::Texture::setLabel):
(wgpuTextureCreateView):
(wgpuTextureDestroy):
(wgpuTextureSetLabel):

  • WebGPU/TextureView.h:
  • WebGPU/TextureView.mm:

(WebGPU::TextureView::setLabel):
(wgpuTextureViewSetLabel):

5:02 PM Changeset in webkit [291375] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[ iOS EWS ] imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea.html is a flaky text failure
​https://bugs.webkit.org/show_bug.cgi?id=237987

Unreviewed test gardening.

  • platform/ios/TestExpectations:
4:01 PM Changeset in webkit [291374] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] Minor AVVideoCaptureSource cleanup
​https://bugs.webkit.org/show_bug.cgi?id=237978
<rdar://problem/90388332>

Reviewed by Jer Noble.

No new tests, no behavior change.

  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::setupSession): Use instancesRespondToSelector:
instead of respondsToSelector: so we don't have to allocate an AVCaptureSession
just to find out how to initialize it.

3:55 PM Changeset in webkit [291373] by Jonathan Bedard
  • 2 edits in trunk/Tools

[Merge-Queue] Add step to make comment on pull requests
​https://bugs.webkit.org/show_bug.cgi?id=237962
<rdar://problem/90371727>

Reviewed by Aakash Jain.

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

(GitHubMixin.comment_on_pr): Make a comment on pull request for in repository.
(ApplyPatch.evaluateCommand): Rename CommentOnBug to LeaveComment.
(ValidateCommiterAndReviewer.fail_build): Ditto.
(ValidateChangeLogAndReviewer.evaluateCommand): Ditto.
(LeaveComment): Renamed from CommentOnBug, support pull request
(LeaveComment.start):
(LeaveComment.getResultSummary):
(AnalyzeCompileWebKitResults.analyzeResults): Rename CommentOnBug to LeaveComment.
(AnalyzeLayoutTestsResults.report_failure): Ditto.
(FindModifiedChangeLogs.evaluateCommand): Ditto.
(CreateLocalGITCommit.evaluateCommand): Ditto.
(PushCommitToWebKitRepo.evaluateCommand): Ditto.
(CommentOnBug): Renamed to LeaveComment.

Canonical link: ​https://commits.webkit.org/248505@main

3:13 PM Changeset in webkit [291372] by mmaxfield@apple.com
  • 4 edits
    2 adds in trunk/Source/WebGPU

[WebGPU] Implement first draft of buffer copying according to the spec
​https://bugs.webkit.org/show_bug.cgi?id=237871

Reviewed by Kimmo Kinnunen.

Implement CommandEncoder::copyBufferToBuffer() and CommandEncoder::finish(),
according to the algorithms in the spec. There are a few things which the spec
lists which we can't do yet (like reporting validation errors), so those things
are left with FIXMEs. Every step is listed with links to the spec where
appropriate, and with quotes to the spec describing what is being implemented.

  • WebGPU.xcodeproj/project.pbxproj:
  • WebGPU/CommandEncoder.h:
  • WebGPU/CommandEncoder.mm:

(WebGPU::Device::createCommandEncoder):
(WebGPU::CommandEncoder::ensureBlitCommandEncoder):
(WebGPU::CommandEncoder::finalizeBlitCommandEncoder):
(WebGPU::validateCopyBufferToBuffer):
(WebGPU::CommandEncoder::copyBufferToBuffer):
(WebGPU::CommandEncoder::validateFinish const):
(WebGPU::CommandEncoder::finish):

  • WebGPU/CommandsMixin.h: Added.
  • WebGPU/CommandsMixin.mm: Added.

(WebGPU::CommandsMixin::prepareTheEncoderState const):

2:58 PM Changeset in webkit [291371] by Brent Fulgham
  • 8 edits in trunk/Source/WebKit

CoreIPC Hardening: Add user gesture check when saving images
​https://bugs.webkit.org/show_bug.cgi?id=237839
<rdar://72058321>

Reviewed by Chris Dumez.

Add check to confirm that attempts to store images in the user's Photo
Library and attempts to store data in the pasteboard were triggered by
a user gesture.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::writePromisedAttachmentToPasteboard): Message check the authorization token before
performing the write.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::isValidPerformActionOnElementAuthorizationToken const): Added.
(WebKit::WebPageProxy::performActionOnElement): Added.
(WebKit::WebPageProxy::saveImageToLibrary): Message check the authorization token before
performing the save.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::performActionOnElement):

2:55 PM Changeset in webkit [291370] by Fujii Hironori
  • 11 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo/TestExpectations:
  • platform/wincairo/css1/box_properties/margin_right-expected.txt:
  • platform/wincairo/css1/box_properties/padding_right-expected.txt:
  • platform/wincairo/css2.1/t0505-c16-descendant-01-e-expected.txt:
  • platform/wincairo/fast/dom/HTMLMeterElement/meter-boundary-values-expected.txt:
  • platform/wincairo/fast/dom/HTMLMeterElement/meter-optimums-expected.txt:
  • platform/wincairo/fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element-expected.txt:
  • platform/wincairo/fast/dom/scroll-reveal-top-overflow-expected.txt:
  • platform/wincairo/fast/html/details-writing-mode-expected.txt:
  • platform/wincairo/fast/text/international/synthesized-italic-vertical-latin-expected.txt:
2:49 PM Changeset in webkit [291369] by mmaxfield@apple.com
  • 6 edits in trunk/Source

[WebGPU] Implement first draft of buffer mapping according to the spec
​https://bugs.webkit.org/show_bug.cgi?id=237870

Reviewed by Kimmo Kinnunen.

Source/WebGPU:

Implement the various GPUBuffer methods, according to the algorithms in the spec.
There are a few things which the spec lists which we can't do yet (like reporting
validation errors), so those things are left with FIXMEs. Every step is listed with
links to the spec where appropriate, and with quotes to the spec describing what
is being implemented.

  • WebGPU.xcodeproj/project.pbxproj:
  • WebGPU/Buffer.h:

(WebGPU::Buffer::create):
(WebGPU::Buffer::size const):
(WebGPU::Buffer::usage const):

  • WebGPU/Buffer.mm:

(WebGPU::validateDescriptor):
(WebGPU::validateCreateBuffer):
(WebGPU::storageMode):
(WebGPU::Device::createBuffer):
(WebGPU::Buffer::Buffer):
(WebGPU::Buffer::destroy):
(WebGPU::Buffer::getConstMappedRange):
(WebGPU::Buffer::validateGetMappedRange const):
(WebGPU::Buffer::getMappedRange):
(WebGPU::Buffer::validateMapAsync const):
(WebGPU::Buffer::mapAsync):
(WebGPU::Buffer::validateUnmap const):
(WebGPU::Buffer::unmap):

  • WebGPU/Device.h:
  • WebGPU/Device.mm:

(WebGPU::Device::Device):

Source/WTF:

WTF classes usually have 'using' statements so users don't have to qualify all uses.

  • wtf/Range.h:
2:35 PM Changeset in webkit [291368] by basuke.suzuki@sony.com
  • 2 edits in trunk/Source/WebCore

[PlayStation] Fix build break after r291341
​https://bugs.webkit.org/show_bug.cgi?id=237971

Unreviewed build fix.

  • platform/playstation/MIMETypeRegistryPlayStation.cpp:

(WebCore::MIMETypeRegistry::mimeTypeForExtension):

2:32 PM Changeset in webkit [291367] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Do not suspend NetworkStorageManager if it is used for ephemeral session
​https://bugs.webkit.org/show_bug.cgi?id=237943

Reviewed by Chris Dumez.

The reason we need to suspend NetworkStorageManager when process is suspended, is that it might hold file lock
during its operations. NetworkStorageManager of ephemeral sessions will not hold file lock; suspending its
WorkQueue will only delay storage operations.

  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::suspend):
(WebKit::NetworkStorageManager::resume):

2:20 PM Changeset in webkit [291366] by mmaxfield@apple.com
  • 4 edits in trunk/Source/WebGPU

[WebGPU] Implement queue submission methods according to the spec
​https://bugs.webkit.org/show_bug.cgi?id=237869

Reviewed by Kimmo Kinnunen.

Now that we can enqueue tasks to the main thread (​https://bugs.webkit.org/show_bug.cgi?id=237852)
we can now implement Queue::onSubmittedWorkDone() and Queue::submit(). The way it works is pretty
simple - there's a count of the number of submitted command buffers (m_submittedCommandBufferCount)
and the number of completed command buffers (m_completedCommandBufferCount). When the two values
are equal, the queue is idle, and the onSubmittedWorkDone() work should happen the next time the
runloop turns. Otherwise, we stick the work in a HashMap, keyed by the value that
m_completedCommandBufferCount will have to become at the point this callback should run.

  • WebGPU/Queue.h:

(WebGPU::Queue::commandQueue const):

  • WebGPU/Queue.mm:

(WebGPU::Queue::onSubmittedWorkDone):
(WebGPU::Queue::validateSubmit const):
(WebGPU::Queue::submit):

  • WebGPU/TextureView.mm:
2:06 PM Changeset in webkit [291365] by mmaxfield@apple.com
  • 8 edits in trunk/Source/WebGPU

[WebGPU] Create a path of Ref<>s between Instance and Queue
​https://bugs.webkit.org/show_bug.cgi?id=237864

Reviewed by Kimmo Kinnunen.

The ownership model of WebGPU is that there is a tree of objects, and Javascript has references
to the leaves of the tree. The leaves are therefore allowed to reference their parents, all the
way up the tree. Therefore, Buffer can have a Ref to Device, which can have a Ref to Instance.
Device has to be in the chain eventually, because of the "valid to use with" check:
​https://gpuweb.github.io/gpuweb/#abstract-opdef-valid-to-use-with, so we might as well add it in
to the chain now.

The one exception from this ownership model is Queue, which needs to be owned by Device, so
Device::getQueue() can return the same object when called multiple times (see
​https://bugs.webkit.org/show_bug.cgi?id=237861). So, Queue has a raw C++ reference to its owning
Device.

Queue needs to be able to run asynchronous work, becuase Queue will need to add completedHandlers
to all command buffers committed, in order to perform its own internal bookkeeping. So, Queue
uses its C++ reference to its owning Device, which uses its Ref to its Instance, in order to use
Instance's facilities for running asynchronous work. This patch adds the necessesary Ref<>s to
make that happen.

  • WebGPU/Adapter.h:

(WebGPU::Adapter::create):

  • WebGPU/Adapter.mm:

(WebGPU::Adapter::Adapter):
(WebGPU::Adapter::requestDevice):
(WebGPU::Adapter::scheduleWork):

  • WebGPU/Device.h:

(WebGPU::Device::create):

  • WebGPU/Device.mm:

(WebGPU::createDefaultQueue):
(WebGPU::Device::Device):
(WebGPU::Device::scheduleWork):
(WebGPU::Device::create): Deleted.

  • WebGPU/Instance.mm:

(WebGPU::Instance::requestAdapter):

  • WebGPU/Queue.h:

(WebGPU::Queue::create):

  • WebGPU/Queue.mm:

(WebGPU::Queue::Queue):
(WebGPU::Queue::scheduleWork):

1:52 PM Changeset in webkit [291364] by Said Abou-Hallawa
  • 10 edits
    6 adds in trunk/Source/WebCore

[GPU Process] Move other classes out of GraphicsContext.h
​https://bugs.webkit.org/show_bug.cgi?id=237944

Reviewed by Simon Fraser.

This is a step towards making GraphicsContextState a class and move
more functionalities to it.

  • Headers.cmake:
  • PlatformAppleWin.cmake:
  • PlatformMac.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/GraphicsContext.cpp:

(WebCore::TextBoxIterator::TextBoxIterator): Deleted.
(WebCore::TextBoxIterator::offset const): Deleted.
(WebCore::TextBoxIterator::increment): Deleted.
(WebCore::TextBoxIterator::atEnd const): Deleted.
(WebCore::TextBoxIterator::current const): Deleted.
(WebCore::TextBoxIterator::direction const): Deleted.
(WebCore::TextBoxIterator::operator== const): Deleted.
(WebCore::TextBoxIterator::operator!= const): Deleted.
(WebCore::GraphicsContextState::GraphicsContextState): Deleted.
(WebCore::GraphicsContextState::mergeChanges): Deleted.
(WebCore::GraphicsContextStateChange::changesFromState const): Deleted.
(WebCore::GraphicsContextStateChange::accumulate): Deleted.
(WebCore::GraphicsContextStateChange::apply const): Deleted.
(WebCore::GraphicsContextStateChange::dump const): Deleted.
(WebCore::operator<<): Deleted.

  • platform/graphics/GraphicsContext.h:

(WebCore::DocumentMarkerLineStyle::encode const): Deleted.
(WebCore::DocumentMarkerLineStyle::decode): Deleted.
(WebCore::GraphicsContextStateChange::GraphicsContextStateChange): Deleted.
(WebCore::GraphicsContextStateSaver::GraphicsContextStateSaver): Deleted.
(WebCore::GraphicsContextStateSaver::~GraphicsContextStateSaver): Deleted.
(WebCore::GraphicsContextStateSaver::save): Deleted.
(WebCore::GraphicsContextStateSaver::restore): Deleted.
(WebCore::GraphicsContextStateSaver::context const): Deleted.
(WebCore::TransparencyLayerScope::TransparencyLayerScope): Deleted.
(WebCore::TransparencyLayerScope::beginLayer): Deleted.
(WebCore::TransparencyLayerScope::~TransparencyLayerScope): Deleted.
(WebCore::GraphicsContextStateStackChecker::GraphicsContextStateStackChecker): Deleted.
(WebCore::GraphicsContextStateStackChecker::~GraphicsContextStateStackChecker): Deleted.
(WebCore::InterpolationQualityMaintainer::InterpolationQualityMaintainer): Deleted.
(WebCore::InterpolationQualityMaintainer::~InterpolationQualityMaintainer): Deleted.

  • platform/graphics/GraphicsContextState.cpp: Added.

(WebCore::GraphicsContextState::GraphicsContextState):
(WebCore::GraphicsContextState::mergeChanges):
(WebCore::GraphicsContextStateChange::changesFromState const):
(WebCore::GraphicsContextStateChange::accumulate):
(WebCore::GraphicsContextStateChange::apply const):
(WebCore::GraphicsContextStateChange::dump const):
(WebCore::operator<<):

  • platform/graphics/GraphicsContextState.h: Added.

(WebCore::GraphicsContextStateChange::GraphicsContextStateChange):

  • platform/graphics/GraphicsContextStateSaver.h: Added.

(WebCore::GraphicsContextStateSaver::GraphicsContextStateSaver):
(WebCore::GraphicsContextStateSaver::~GraphicsContextStateSaver):
(WebCore::GraphicsContextStateSaver::save):
(WebCore::GraphicsContextStateSaver::restore):
(WebCore::GraphicsContextStateSaver::context const):
(WebCore::TransparencyLayerScope::TransparencyLayerScope):
(WebCore::TransparencyLayerScope::beginLayer):
(WebCore::TransparencyLayerScope::~TransparencyLayerScope):
(WebCore::GraphicsContextStateStackChecker::GraphicsContextStateStackChecker):
(WebCore::GraphicsContextStateStackChecker::~GraphicsContextStateStackChecker):
(WebCore::InterpolationQualityMaintainer::InterpolationQualityMaintainer):
(WebCore::InterpolationQualityMaintainer::~InterpolationQualityMaintainer):

  • platform/graphics/GraphicsTypes.h:

(WebCore::DocumentMarkerLineStyle::encode const):
(WebCore::DocumentMarkerLineStyle::decode):

  • platform/graphics/PlatformGraphicsContext.h: Added.
  • platform/graphics/TextBoxIterator.h: Added.

(WebCore::TextBoxIterator::TextBoxIterator):
(WebCore::TextBoxIterator::offset const):
(WebCore::TextBoxIterator::increment):
(WebCore::TextBoxIterator::atEnd const):
(WebCore::TextBoxIterator::current const):
(WebCore::TextBoxIterator::direction const):
(WebCore::TextBoxIterator::operator== const):
(WebCore::TextBoxIterator::operator!= const):

  • platform/graphics/cg/CGContextStateSaver.h: Added.

(WebCore::CGContextStateSaver::CGContextStateSaver):
(WebCore::CGContextStateSaver::~CGContextStateSaver):
(WebCore::CGContextStateSaver::save):
(WebCore::CGContextStateSaver::restore):
(WebCore::CGContextStateSaver::didSave const):

  • platform/graphics/cg/GraphicsContextCG.h:

(WebCore::CGContextStateSaver::CGContextStateSaver): Deleted.
(WebCore::CGContextStateSaver::~CGContextStateSaver): Deleted.
(WebCore::CGContextStateSaver::save): Deleted.
(WebCore::CGContextStateSaver::restore): Deleted.
(WebCore::CGContextStateSaver::didSave const): Deleted.

1:50 PM Changeset in webkit [291363] by basuke.suzuki@sony.com
  • 2 edits in trunk/Tools

Suppress warnings for implicit conversion from unsigned long to double
​https://bugs.webkit.org/show_bug.cgi?id=237899
<rdar://problem/90364907>

Reviewed by Darin Adler.

Add static_cast for approx casting to double.

  • TestWebKitAPI/Tests/WTF/Int128.cpp:

(TestWebKitAPI::TEST):

1:45 PM Changeset in webkit [291362] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[WinCairo][WebGL] Crash in WebKit::WCContentBuffer::platformLayerWillBeDestroyed()
​https://bugs.webkit.org/show_bug.cgi?id=237819

Reviewed by Don Olmstead.

WinCairo WTR was randomly crashing in
WCContentBuffer::platformLayerWillBeDestroyed(). It accessed a
stale pointer of WCScene::Layer.

  • GPUProcess/graphics/wc/WCScene.cpp:

(WebKit::WCScene::Layer::~Layer): Clear the client of
WCContentBuffer.
(WebKit::WCScene::update):

1:29 PM Changeset in webkit [291361] by eric.carlson@apple.com
  • 10 edits in trunk/Source

[iOS] WebAVMediaSelectionOption should implement -mediaType
​https://bugs.webkit.org/show_bug.cgi?id=237966
rdar://89934589

Reviewed by Jer Noble.

Source/WebCore:

WebKit uses AVKit to implement "video fullscreen" on iOS. AVKit can only be used
in the UI process, but WebKit's AVFoundation objects are in the GPU process, so we
create "proxy" objects in the UI process and pass state from them between the two
processes. One such object is WebAVMediaSelectionOption, which proxies for an
AVMediaSelectionOption. This proxy originally only implemented -localizedDisplayName
but AVKit now sometimes uses -mediaType, which causes an assert when it messages the
non-existent selector. Add -mediaType to fix the assert, and add log-only stubs
for every other AVMediaSelectionOption selector to catch future changes.

  • page/CaptionUserPreferences.cpp:

(WebCore::CaptionUserPreferences::mediaSelectionOptionForTrack const):

  • platform/MediaSelectionOption.h:

(WebCore::MediaSelectionOption::MediaSelectionOption):
(WebCore::MediaSelectionOption::isolatedCopy const):
(WebCore::MediaSelectionOption::isolatedCopy):
(WebCore::MediaSelectionOption::encode const):
(WebCore::MediaSelectionOption::decode):

  • platform/ios/PlaybackSessionInterfaceAVKit.mm:

(WebCore::toAVMediaType):
(WebCore::mediaSelectionOptions):

  • platform/ios/WebAVPlayerController.h:
  • platform/ios/WebAVPlayerController.mm:

(-[WebAVMediaSelectionOption initWithMediaType:displayName:]):
(-[WebAVMediaSelectionOption mediaSubTypes]):
(-[WebAVMediaSelectionOption hasMediaCharacteristic:]):
(-[WebAVMediaSelectionOption isPlayable]):
(-[WebAVMediaSelectionOption extendedLanguageTag]):
(-[WebAVMediaSelectionOption locale]):
(-[WebAVMediaSelectionOption commonMetadata]):
(-[WebAVMediaSelectionOption availableMetadataFormats]):
(-[WebAVMediaSelectionOption metadataForFormat:]):
(-[WebAVMediaSelectionOption associatedMediaSelectionOptionInMediaSelectionGroup:]):
(-[WebAVMediaSelectionOption propertyList]):
(-[WebAVMediaSelectionOption displayNameWithLocale:]):
(-[WebAVMediaSelectionOption mediaCharacteristics]):
(-[WebAVMediaSelectionOption outOfBandSource]):
(-[WebAVMediaSelectionOption outOfBandIdentifier]):
(-[WebAVMediaSelectionOption _isDesignatedDefault]):
(-[WebAVMediaSelectionOption languageCode]):
(-[WebAVMediaSelectionOption track]):

  • platform/mac/WebPlaybackControlsManager.mm:

(toAVTouchBarMediaSelectionOptionType):
(mediaSelectionOptions):

Source/WebKit:

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<MediaSelectionOption>::encode): Deleted.
(IPC::ArgumentCoder<MediaSelectionOption>::decode): Deleted.

  • Shared/WebCoreArgumentCoders.h:
12:35 PM Changeset in webkit [291360] by commit-queue@webkit.org
  • 13 edits
    1 add in trunk/LayoutTests

Sync css/css-contain from WPT
​https://bugs.webkit.org/show_bug.cgi?id=237705

Patch by Rob Buis <​rbuis@igalia.com> on 2022-03-16
Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

Sync css/css-contain from WPT.

  • resources/resource-files.json:
  • web-platform-tests/css/css-contain/contain-layout-ink-overflow-013-expected.html:
  • web-platform-tests/css/css-contain/contain-layout-ink-overflow-013.html:
  • web-platform-tests/css/css-contain/contain-layout-ink-overflow-014.html:
  • web-platform-tests/css/css-contain/contain-layout-ink-overflow-017.html:
  • web-platform-tests/css/css-contain/content-visibility/content-visibility-044-expected.txt:
  • web-platform-tests/css/css-contain/content-visibility/content-visibility-044.html:
  • web-platform-tests/css/css-contain/content-visibility/resources/text-fragment-target-auto.html:
  • web-platform-tests/css/css-contain/content-visibility/w3c-import.log:
  • web-platform-tests/css/css-contain/w3c-import.log:

LayoutTests:

Mark as failing for now.

  • platform/ios/TestExpectations:
11:42 AM Changeset in webkit [291359] by Kate Cheney
  • 4 edits in trunk/LayoutTests

[ MacOS ] http/tests/security/content SecurityPolicy/frame-src-cross-origin-load.html is a flakey failure (230428)
​https://bugs.webkit.org/show_bug.cgi?id=230428
<rdar://problem/83254559>

Reviewed by Brent Fulgham.

The flakiness was caused by relying on ordered output from iframe
loads that are not guaranteed to load in order. This change loads
iframes in script to make sure they load only after the previous
iframe has loaded.

  • http/tests/security/contentSecurityPolicy/frame-src-cross-origin-load-expected.txt:
  • http/tests/security/contentSecurityPolicy/frame-src-cross-origin-load.html:
  • platform/mac/TestExpectations:
10:42 AM Changeset in webkit [291358] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.9.1

Tag Safari-614.1.5.9.1.

10:33 AM Changeset in webkit [291357] by commit-queue@webkit.org
  • 12 edits
    2 adds in trunk/Source/WebCore

Migrate use of MediaSampleGStreamer to VideoFrame in WebRTC pipelines
​https://bugs.webkit.org/show_bug.cgi?id=237885

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-16
Reviewed by Youenn Fablet.

Introducing VideoFrameGStreamer, meant to be used from mediastream producers and consumers.
The VideoFrame internally manages a GstSample storing the actual video frame data that can
be passed around between RealtimeMediaSources and the mediastream GStreamer source element.

Covered by existing layout tests.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::toMediaSample):

  • platform/GStreamer.cmake:
  • platform/graphics/gstreamer/MediaSampleGStreamer.cpp:

(WebCore::MediaSampleGStreamer::MediaSampleGStreamer):
(WebCore::MediaSampleGStreamer::createFakeSample):
(WebCore::MediaSampleGStreamer::createImageSample): Deleted.
(WebCore::MediaSampleGStreamer::initializeFromBuffer): Deleted.
(WebCore::MediaSampleGStreamer::getRGBAImageData const): Deleted.

  • platform/graphics/gstreamer/MediaSampleGStreamer.h:

(WebCore::MediaSampleGStreamer::create):
(WebCore::MediaSampleGStreamer::createWrappedSample): Deleted.
(WebCore::MediaSampleGStreamer::createImageSample): Deleted.

  • platform/graphics/gstreamer/VideoFrameGStreamer.cpp: Added.

(WebCore::VideoFrameGStreamer::createFromPixelBuffer):
(WebCore::VideoFrameGStreamer::VideoFrameGStreamer):
(WebCore::VideoFrameGStreamer::getRGBAImageData const):

  • platform/graphics/gstreamer/VideoFrameGStreamer.h: Added.
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:

(WebCore::GraphicsContextGLTextureMapper::paintCompositedResultsToMediaSample):

  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:

(WebCore::GStreamerVideoCaptureSource::processNewFrame):
(WebCore::GStreamerVideoCaptureSource::newSampleCallback):

  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:

(WebCore::MockRealtimeVideoSourceGStreamer::updateSampleBuffer):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.cpp:

(WebCore::RealtimeIncomingVideoSourceLibWebRTC::OnFrame):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.cpp:

(WebCore::RealtimeOutgoingVideoSourceLibWebRTC::videoSampleAvailable):

10:10 AM Changeset in webkit [291356] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.12

Tag Safari-614.1.5.12.

10:08 AM Changeset in webkit [291355] by Russell Epstein
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.12

9:56 AM Changeset in webkit [291354] by Jonathan Bedard
  • 3 edits in trunk/Tools

[Merge-Queue] Rename patch_reviewer
​https://bugs.webkit.org/show_bug.cgi?id=237916
<rdar://problem/90324765>

Reviewed by Aakash Jain.

Rename patch_reviewer to reviewer for compatibility with
pull requests.

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

(ApplyPatch.start):
(BugzillaMixin._does_patch_have_acceptable_review_flag):
(ValidateCommiterAndReviewer.start):

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

Canonical link: ​https://commits.webkit.org/248489@main

8:25 AM Changeset in webkit [291353] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GStreamer][1.20] media/video-src-blob-perf.html failing
​https://bugs.webkit.org/show_bug.cgi?id=237256
<rdar://problem/89530009>

Unreviewed, unflag test passing after Flatpak SDK update.

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-16

  • platform/glib/TestExpectations:
8:20 AM Changeset in webkit [291352] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

Incorrect header name used in has_include
​https://bugs.webkit.org/show_bug.cgi?id=237914
<rdar://90271228>

Reviewed by Geoffrey Garen.

  • Configurations/WebKit.xcconfig:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

8:17 AM Changeset in webkit [291351] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.36/Source/WebKit

Merge r291335 - [GTK][WPE] Crash during the WebPage::close() related to GL resources destruction
​https://bugs.webkit.org/show_bug.cgi?id=237588

Reviewed by Carlos Garcia Campos.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::invalidate):
(WebKit::ThreadedCompositor::updateSceneWithoutRendering):

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
8:10 AM Changeset in webkit [291350] by Carlos Garcia Campos
  • 26 edits
    5 adds in releases/WebKitGTK/webkit-2.36

Merge r290639 - Make input element UA shadow tree creation lazy
​https://bugs.webkit.org/show_bug.cgi?id=236747

Reviewed by Aditya Keerthi.

Source/WebCore:

We currently delay InputType creation for parser inserted elements until
just after the attributes have been set, so that we don't wastefully
create an InputType and the UA shadow tree creation if a non-text
type="" was specified on the tag. We don't do anything similar for
script inserted input elements. We could make the InputType creation
lazy, but most of the wasted time is due to the shadow tree creation.

This patch makes InputType shadow tree creation lazy by delaying it
until one of the following happens:

  1. the element is inserted into the document
  2. the type="" or value="" attributes are changed before the element is inserted into the document
  3. any DOM methods that need access to the innerTextElement() are called on the element before the element is inserted into the document

Not all places where we call innerTextElement() on the
HTMLInputElement are safe to lazily create the shadow trees, so we
have two accessors:

  • innerTextElement() returns the inner text element if it's been created already
  • innerTextElementCreatingShadowSubtreeIfNeeded will perform the lazy shadow tree construction if it hasn't already been done

Since the existing
createShadowSubtreeAndUpdateInnerTextElementEditability function has
more responsibility than just creating the subtree and ensuring the
editability is set appropriately, it's renamed to a more manageable
createShadowSubtree.

This change is a 0.5% progression on Speedometer 2.

Test: fast/forms/lazy-shadow-tree-creation.html

  • html/BaseDateAndTimeInputType.h:
  • html/BaseDateAndTimeInputType.cpp:

(WebCore::BaseDateAndTimeInputType::createShadowSubtree):
(WebCore::BaseDateAndTimeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):

  • html/ColorInputType.h:
  • html/ColorInputType.cpp:

(WebCore::ColorInputType::createShadowSubtree):
(WebCore::ColorInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):

  • html/FileInputType.h:
  • html/FileInputType.cpp:

(WebCore::FileInputType::createShadowSubtree):
(WebCore::FileInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):

  • html/InputType.cpp:

(WebCore::InputType::createShadowSubtree):
(WebCore::InputType::createShadowSubtreeAndUpdateInnerTextElementEditability):

  • html/RangeInputType.h:
  • html/RangeInputType.cpp:

(WebCore::RangeInputType::createShadowSubtree):
(WebCore::RangeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):

  • html/SearchInputType.h:
  • html/SearchInputType.cpp:

(WebCore::SearchInputType::createShadowSubtree):
(WebCore::SearchInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):
Renamed createShadowSubtreeAndUpdateInnerTextElementEditability to
createShadowSubtree and remove the "isInnerTextElementEditable"
argument, since we can ask the element() for its value if needed.
createShadowSubtree is now also responsible for creating the shadow
root.

  • html/TextFieldInputType.h:
  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::createShadowSubtree):
(WebCore::TextFieldInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):
Renamed. Ensure all shadow tree state is up to date now that it can be
created later.

  • html/InputType.h:
  • html/InputType.cpp:

(WebCore::InputType::createShadowSubtree):
(WebCore::InputType::hasCreatedShadowSubtree const):
New functions to create the shadow subtree if it hasn't been done
already, and to query whether it's been done.

  • html/HTMLInputElement.h:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::innerTextElementCreatingShadowSubtreeIfNeeded):

  • html/HTMLTextAreaElement.h:
  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::innerTextElementCreatingShadowSubtreeIfNeeded):

  • html/HTMLTextFormControlElement.h:
  • html/InputType.h:
  • html/InputType.cpp:

(WebCore::InputType::innerTextElementCreatingShadowSubtreeIfNeeded):
New functions to first create the shadow subtree before returning
innerTextElement(). HTMLTextAreaElement never lazily creates its
shadow subtree and so just returns innerTextElement().

  • html/HTMLInputElement.h:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::createShadowSubtreeAndUpdateInnerTextElementEditability):
Deleted. Just call through to m_inputType->createShadowTree()
directly.

(WebCore::HTMLInputElement::HTMLInputElement):
(WebCore::HTMLInputElement::create):
(WebCore::HTMLInputElement::initializeInputType):
(WebCore::HTMLInputElement::updateType):
Don't immediately create the shadow tree.

(WebCore::HTMLInputElement::didFinishInsertingNode):
Create the shadow subtree now that the element's been inserted. No
need to call dataListMayHaveChanged since
TextFieldInputType::createShadowSubtree will now do this.

  • html/BaseDateAndTimeInputType.cpp:

(WebCore::BaseDateAndTimeInputType::updateInnerTextValue):
Ensure the shadow subtree is created since we need to poke at it.

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::forwardEvent):
Don't forward the event if the shadow tree hasn't been created yet.

(WebCore::HTMLTextFormControlElement::setSelectionRange):
Ensure the shadow tree has been created. This is needed if the
selection APIs are called on the input element before it's inserted
into the document.

(WebCore::HTMLTextFormControlElement::visiblePositionForIndex const):
Assert that the shadow tree has been created, since editing
functionality should only be needed if the element's been inserted
into the document.

(WebCore::HTMLTextFormControlElement::setInnerTextValue):
Ensure the shadow tree has been created.

  • html/RangeInputType.cpp:

(WebCore::RangeInputType::handleMouseDownEvent):
(WebCore::RangeInputType::handleTouchEvent):
Ensure the shadow tree has been created in case the event will change
the value.

(WebCore::RangeInputType::sliderTrackElement const):
Only return the element if it's been created.

(WebCore::RangeInputType::typedSliderThumbElement const):
Assert that the element has been created.

(WebCore::RangeInputType::dataListMayHaveChanged):
Only try to re-layout if the shadow tree has been created.

  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::isEmptyValue const):
Avoid creating the shadow subtree.

(WebCore::TextFieldInputType::forwardEvent):
Move the element assertion up to be consistent with other functions.

(WebCore::TextFieldInputType::innerTextElement const):
Don't assert, since this now can legitimately return null.

  • html/FileInputType.cpp:

(WebCore::FileInputType::disabledStateChanged):
(WebCore::FileInputType::attributeChanged):

  • html/RangeInputType.cpp:

(WebCore::RangeInputType::disabledStateChanged):
(WebCore::RangeInputType::attributeChanged):
(WebCore::RangeInputType::setValue):

  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::disabledStateChanged):
(WebCore::TextFieldInputType::readOnlyStateChanged):
(WebCore::TextFieldInputType::updatePlaceholderText):
(WebCore::TextFieldInputType::updateAutoFillButton):
(WebCore::TextFieldInputType::dataListMayHaveChanged):
Don't update the shadow tree contents if it hasn't been created yet.
createShadowTree is responsible for ensuring it creates the shadow
tree contents reflecting the current state.

LayoutTests:

  • fast/forms/lazy-shadow-tree-creation-expected.html: Added.
  • fast/forms/lazy-shadow-tree-creation.html: Added.
  • fast/forms/lazy-shadow-tree-creation.js: Added.

(supportsType):
(makeAndAppendInput):

  • LayoutTests/fast/forms/lazy-shadow-tree-creation-crash.html:
  • LayoutTests/fast/forms/lazy-shadow-tree-creation-crash-expected.html:

Crashtest.

  • fast/shadow-dom/style-resolver-sharing-expected.txt:

Update to account for the lazy shadow tree being created later.

8:10 AM Changeset in webkit [291349] by Carlos Garcia Campos
  • 8 edits in releases/WebKitGTK/webkit-2.36/Source/WebCore

Merge r290574 - Add a mechanism to request a UA shadow tree update before style
​https://bugs.webkit.org/show_bug.cgi?id=237224

Reviewed by Antti Koivisto.

SVG <use> elements register themselves with the document when their
shadow tree contents need updating, and this updating is done in
Document::resolveStyle. For lazy HTML <input> element UA shadow trees
(in bug 236747) we need something similar.

  • dom/Document.cpp:

(WebCore::Document::resolveStyle):
(WebCore::Document::addElementWithPendingUserAgentShadowTreeUpdate):
(WebCore::Document::removeElementWithPendingUserAgentShadowTreeUpdate):

  • dom/Document.h:
  • dom/Element.h:

(WebCore::Element::updateUserAgentShadowTree):

  • svg/SVGDocumentExtensions.cpp:

(WebCore::SVGDocumentExtensions::~SVGDocumentExtensions): Deleted.
(WebCore::SVGDocumentExtensions::addUseElementWithPendingShadowTreeUpdate): Deleted.
(WebCore::SVGDocumentExtensions::removeUseElementWithPendingShadowTreeUpdate): Deleted.

  • svg/SVGDocumentExtensions.h:

(WebCore::SVGDocumentExtensions::useElementsWithPendingShadowTreeUpdate const): Deleted.

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::insertedIntoAncestor):
(WebCore::SVGUseElement::removedFromAncestor):
(WebCore::SVGUseElement::updateUserAgentShadowTree):
(WebCore::SVGUseElement::invalidateShadowTree):
(WebCore::SVGUseElement::updateShadowTree): Deleted.

  • svg/SVGUseElement.h:
8:10 AM Changeset in webkit [291348] by Carlos Garcia Campos
  • 22 edits
    3 deletes in releases/WebKitGTK/webkit-2.36

Merge r290414 - Unreviewed, reverting r290284.
​https://bugs.webkit.org/show_bug.cgi?id=237131

It is preventing the fuzzer from finding other bugs

Reverted changeset:

"Make input element UA shadow tree creation lazy"
​https://bugs.webkit.org/show_bug.cgi?id=236747
​https://commits.webkit.org/r290284

8:06 AM Changeset in webkit [291347] by Wenson Hsieh
  • 3 edits
    2 adds in trunk

[iOS] Refactor some position information hit-testing logic related to data detectors in Live Text
​https://bugs.webkit.org/show_bug.cgi?id=237927

Reviewed by Tim Horton.

Source/WebKit:

Pull the call to dataDetectorImageOverlayPositionInformation() out from elementPositionInformation(), and
into the top level in WebPage::positionInformation(). Since dataDetectorImageOverlayPositionInformation only
depends on the hit-tested inner node (rather than the element responding to click events), it doesn't make sense
to only populate the data detector results array only when we find an element that responds to clicks.

Test: fast/images/text-recognition/ios/show-data-detector-context-menu.html

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::elementPositionInformation):
(WebKit::WebPage::positionInformation):

LayoutTests:

Add a simple layout test that exercises context menu presentation when long pressing a data detector result
inside Live Text in an image. While this behavior isn't new, it's currently untested before this patch.

  • fast/images/text-recognition/ios/show-data-detector-context-menu-expected.txt: Added.
  • fast/images/text-recognition/ios/show-data-detector-context-menu.html:

Also add -webkit-user-select: none; to test that disabling text selection does not also disable the ability to
present the context menu over data detectors by long pressing on iOS.

7:41 AM Changeset in webkit [291346] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[IFC][Integration] Move firstSelectedBox/lastSelectedBox out of InlineIterator::Line
​https://bugs.webkit.org/show_bug.cgi?id=237941

Reviewed by Simon Fraser.

These functions don't belong in InlineIterator::Line (they are standalone functions with only one callsite).

  • layout/integration/InlineIteratorLine.cpp:

(WebCore::InlineIterator::Line::firstSelectedBox const): Deleted.
(WebCore::InlineIterator::Line::lastSelectedBox const): Deleted.

  • layout/integration/InlineIteratorLine.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::inlineSelectionGaps):

7:28 AM Changeset in webkit [291345] by commit-queue@webkit.org
  • 7 edits
    2 adds
    1 delete in trunk/Tools/buildstream

[Flatpak SDK] Update to GStreamer 1.20.1
​https://bugs.webkit.org/show_bug.cgi?id=237954

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-16
Reviewed by Adrian Perez de Castro.

  • elements/sdk/gst-libav.bst:
  • elements/sdk/gst-plugins-bad.bst:
  • elements/sdk/gst-plugins-base.bst:
  • elements/sdk/gst-plugins-good.bst:
  • elements/sdk/gst-plugins-ugly.bst:
  • elements/sdk/gstreamer.bst:
  • patches/gstreamer-0001-dtlstransport-Notify-ICE-transport-property-changes.patch: Removed.
  • patches/gstreamer-0001-typefind-Skip-parsing-of-data-URIs.patch: Added.
  • patches/gstreamer-0002-uri-Build-doubly-linked-list-by-prepending-items.patch: Added.
6:14 AM Changeset in webkit [291344] by Chris Fleizach
  • 3 edits in trunk/Source/WebCore

AX: imported/w3c/web-platform-tests/speech-api/SpeechSynthesis (layout-tests) are constant text failures
​https://bugs.webkit.org/show_bug.cgi?id=237881
<rdar://problem/90293806>

Reviewed by Andres Gonzalez.

Keep track of the platform utterances so that we can verify the callbacks are for the ones we are interested in.
This test failure was due to a previous speech job that was canceled (before a new one started). When the callback for
the last one came back, it wiped out the stored new one.

Fixed test: imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-events.html.

  • platform/PlatformSpeechSynthesisUtterance.h:

(WebCore::PlatformSpeechSynthesisUtterance::platformSpeechUtteranceWrapper const):
(WebCore::PlatformSpeechSynthesisUtterance::setPlatformSpeechUtteranceWrapper):

  • platform/cocoa/PlatformSpeechSynthesizerCocoa.mm:

(-[WebSpeechSynthesisWrapper speakUtterance:]):
(-[WebSpeechSynthesisWrapper speechSynthesizer:didStartSpeechUtterance:]):
(-[WebSpeechSynthesisWrapper speechSynthesizer:didFinishSpeechUtterance:]):
(-[WebSpeechSynthesisWrapper speechSynthesizer:didPauseSpeechUtterance:]):
(-[WebSpeechSynthesisWrapper speechSynthesizer:didContinueSpeechUtterance:]):
(-[WebSpeechSynthesisWrapper speechSynthesizer:didCancelSpeechUtterance:]):
(-[WebSpeechSynthesisWrapper speechSynthesizer:willSpeakRangeOfSpeechString:utterance:]):

6:12 AM Changeset in webkit [291343] by commit-queue@webkit.org
  • 10 edits
    7 adds in trunk/Source/WebCore

[GTK][WPE] Provide DMABuf-based composition layers, DMABufVideoSink integration
​https://bugs.webkit.org/show_bug.cgi?id=237328
<rdar://problem/90295492>

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-03-16
Reviewed by Alejandro G. Castro.

Introduce TextureMapperPlatformLayerProxyDMABuf, a TextureMapper proxy
implementation that handles platform layers backed by dmabuf objects.
This will be used to handle display of dmabuf producers like GStreamer
pipelines or ANGLE-backed WebGL contexts. The DMABufLayer class is the
platform layer object, handling display of the actual dmabuf. The proxy
itself is tasked with creating and caching such layers for any dmabuf
object that originates from the producer.

For each dmabuf object pushed into the proxy, the according DMABufLayer
object is spawned and cached for future reuse, expecting the producer
to be able to provide dmabufs from a pool or swapchain of these objects.
The cache is emptied whenever dmabufs go unused for a certain amount of
swaps, or if the size of the provided dmabufs changes.

DMABufFormat provides information for different DRM formats, for
instance how different planes for specific formats are formatted and
sized.

DMABufObject is a class that handles a given grouping of dmabufs
according to the specified format. It has an associated handle value,
size, and per-plane dmabuf file descriptors, offsets, strides and
modifiers, along with a DMABufReleaseFlag instance.

DMABufReleaseFlag objects are used as an eventfd-based release mechanism
that indicates to the producer that the given DMABufObject has been
presented and subsequently released and is thus available for reuse.

GBMBufferSwapchain provides a custom swapchain implementation that's
based on libgbm functionality. Each such swapchain has a capacity
specified during construction, with the capacities of four or eight
currently supported. getBuffer() is called by the producer to obtain a
buffer object that's then used for backing of specific content like
ANGLE execution or media's software-decoded video frames. Buffers
obtained this way are moved over to the end of the buffer array, with
the expectation of reusing them once they are released by the
composition engine.

MediaPlayerPrivateGStreamer implementation is enhanced to use the
recently-added WebKitDMABufVideoSink element if its use is enabled
through the development-purpose environment variable and if the
necessary GStreamer facilities are present on the system. When these
conditions are met, the Nicosia::ContentLayer instance is also
constructed with a TextureMapperPlatformLayerProxyDMABuf instance, since
we expect to present the dmabufs through that functionality.

With the WebKitDMABufVideoSink, the incoming samples are either based
on dmabufs (in case of dmabuf-capable hardware decoder) or are just raw
data (most likely coming from a software-based decoder). In case of
dmabufs we can use the GstMemory pointer as the handle through which
the relevant data is cached in TextureMapperPlatformLayerProxyDMABuf,
and upon the first occurrence we retrieve all the relevant dmabuf data
so that it can be used by that proxy implementation to construct a
renderable EGLImage.

In case of software-decoded raw data, we have to use the swapchain
object and copy the data on a per-plane basis for each such sample,
finally pushing the dmabuf data of that swapchain buffer into the
TextureMapperPlatformLayerProxyDMABuf instance.

Changes around TextureMapperPlatformLayerProxyDMABuf and GStreamer
integration are guarded with USE(TEXTURE_MAPPER_DMABUF). No port yet
enables this build guard, but this will be handled later. Similarly,
the code specific to libgbm will also be guarded in a separate set of
changes.

  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • platform/TextureMapper.cmake:
  • platform/graphics/gbm/DMABufFormat.h: Added.

(WebCore::DMABufFormatImpl::createFourCC):
(WebCore::DMABufFormat::planeWidth const):
(WebCore::DMABufFormat::planeHeight const):
(WebCore::DMABufFormat::Plane::Plane):
(WebCore::DMABufFormatImpl::createSinglePlaneRGBA):
(WebCore::DMABufFormatImpl::definePlane):
(WebCore::DMABufFormat::instantiate):
(WebCore::DMABufFormat::create):

  • platform/graphics/gbm/DMABufObject.h: Added.

(WebCore::DMABufObject::DMABufObject):
(WebCore::DMABufObject::~DMABufObject):
(WebCore::DMABufObject::operator=):

  • platform/graphics/gbm/DMABufReleaseFlag.h: Added.

(WebCore::DMABufReleaseFlag::DMABufReleaseFlag):
(WebCore::DMABufReleaseFlag::~DMABufReleaseFlag):
(WebCore::DMABufReleaseFlag::operator=):
(WebCore::DMABufReleaseFlag::dup const):
(WebCore::DMABufReleaseFlag::released const):
(WebCore::DMABufReleaseFlag::release):

  • platform/graphics/gbm/GBMBufferSwapchain.cpp: Added.

(WebCore::GBMBufferSwapchain::GBMBufferSwapchain):
(WebCore::GBMBufferSwapchain::getBuffer):
(WebCore::GBMBufferSwapchain::Buffer::Buffer):
(WebCore::GBMBufferSwapchain::Buffer::createDMABufObject const):
(WebCore::GBMBufferSwapchain::Buffer::PlaneData::~PlaneData):

  • platform/graphics/gbm/GBMBufferSwapchain.h: Added.

(WebCore::GBMBufferSwapchain::Buffer::handle const):
(WebCore::GBMBufferSwapchain::Buffer::numPlanes const):
(WebCore::GBMBufferSwapchain::Buffer::planeData const):

  • platform/graphics/gstreamer/DMABufVideoSinkGStreamer.cpp:

(webKitDMABufVideoSinkIsEnabled):
(webKitDMABufVideoSinkSetMediaPlayerPrivate):

  • platform/graphics/gstreamer/DMABufVideoSinkGStreamer.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::platformLayer const):
(WebCore::fourccValue):
(WebCore::MediaPlayerPrivateGStreamer::pushDMABufToCompositor):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSinkDMABuf):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSink):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp:

(Nicosia::ContentLayerTextureMapperImpl::createFactory):

  • platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.h:
  • platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.cpp: Added.

(WebCore::createImageKHR):
(WebCore::destroyImageKHR):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::DMABufLayer::EGLImageData::~EGLImageData):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::activateOnCompositingThread):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::invalidate):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::swapBuffer):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::pushDMABuf):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::DMABufLayer::DMABufLayer):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::DMABufLayer::paintToTextureMapper):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::DMABufLayer::createEGLImageData):

  • platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.h: Added.
6:03 AM Changeset in webkit [291342] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GTK][WPE] Debug build assertion, TextureMapperPlatformLayerProxyGL asserts when going back in the minibrowser
​https://bugs.webkit.org/show_bug.cgi?id=237948

We are not initializing m_compositorThread properly with the
invalidation and the ThreadedCompositor is destroyed after a
navigation, and when going back the browser asserts because the
ThreadedCompositor is a different one. This is just for debug
builds.

Patch by Alejandro G. Castro <​alex@igalia.com> on 2022-03-16
Reviewed by Carlos Garcia Campos.

Not clear how to reproduce this situation with tests because we
need to navigate back with different origins. I'm opening a bug
connected to this one to check how to do it.

  • platform/graphics/texmap/TextureMapperPlatformLayerProxyGL.cpp:

(WebCore::TextureMapperPlatformLayerProxyGL::invalidate):

5:54 AM Changeset in webkit [291341] by youenn@apple.com
  • 17 edits in trunk

Make MIMETypeRegistry::mimeTypeForPath take a StringView
​https://bugs.webkit.org/show_bug.cgi?id=236441
<rdar://problem/89084526>

Reviewed by Chris Dumez.

Source/WebCore:

Passing a StringView is more efficient for some code paths.
Covered by existing tests.

  • editing/cocoa/WebArchiveResourceFromNSAttributedString.mm:

(WebCore::if):

  • fileapi/File.cpp:

(WebCore::File::computeNameAndContentType):

  • loader/cocoa/BundleResourceLoader.mm:

(WebCore::BundleResourceLoader::loadResourceFromBundle):

  • platform/MIMETypeRegistry.cpp:

(WebCore::commonMimeTypesMap):

  • platform/MIMETypeRegistry.h:
  • platform/cocoa/MIMETypeRegistryCocoa.mm:

(WebCore::MIMETypeRegistry::mimeTypeForExtension):

  • platform/win/MIMETypeRegistryWin.cpp:

(WebCore::MIMETypeRegistry::mimeTypeForExtension):

  • platform/xdg/MIMETypeRegistryXdg.cpp:

(WebCore::MIMETypeRegistry::mimeTypeForExtension):

Source/WebKit:

  • UIProcess/API/Cocoa/APIAttachmentCocoa.mm:

(API::mimeTypeInferredFromFileExtension):
(API::Attachment::setFileWrapperAndUpdateContentType):

  • UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:

(-[WKInspectorResourceURLSchemeHandler webView:startURLSchemeTask:]):

  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[WKFileUploadPanel presentWithParameters:resultListener:]):

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebMIMETypeRegistry.mm:

(+[WebMIMETypeRegistry mimeTypeForExtension:]):

Tools:

  • TestWebKitAPI/cocoa/TestInspectorURLSchemeHandler.mm:

(-[TestInspectorURLSchemeHandler webView:startURLSchemeTask:]):

5:52 AM Changeset in webkit [291340] by youenn@apple.com
  • 13 edits in trunk

redirectCount returns 0 when using a Service Worker
​https://bugs.webkit.org/show_bug.cgi?id=235710
<rdar://problem/88432190>

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/navigation-preload/resource-timing.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/redirected-response.https-expected.txt:

Source/WebKit:

Pass an optional NetworkLoadMetrics when sending the response to web process.
Include the redirectCount value computed by NetworkResourceLoader.
Make service worker redirections go through NetworkResourceLoader to set the redirectCount value and for correctness.

Covered by updated test.

  • NetworkProcess/NetworkResourceLoader.cpp:
  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:

(WebKit::ServiceWorkerFetchTask::processRedirectResponse):

  • WebProcess/Network/WebResourceLoader.cpp:
  • WebProcess/Network/WebResourceLoader.h:
  • WebProcess/Network/WebResourceLoader.messages.in:

LayoutTests:

  • http/wpt/service-workers/navigation-redirect-main-frame.https.html:
5:05 AM Changeset in webkit [291339] by Angelos Oikonomopoulos
  • 4 edits in trunk/Source/JavaScriptCore

MacroAssemblerARMv7: Be friendlier to DisallowMacroScratchRegisterUsage
​https://bugs.webkit.org/show_bug.cgi?id=237888

Reviewed by Žan Doberšek.

Only check that we're allowed to use the scratch register at sites
where we're using it implicitly. When it's explicitly passed in by the
caller, use invalidateCachedAddressTempRegister to invalidate it
without asserting anything about m_allowScratchRegister.

Since helpers can explictly make use of addressTempRegister, an
argument can be made that this is still fragile (i.e. future changes
could run into this). The alternative would be to have the topmost caller
do fine-grained management of DisallowMacroScratchRegisterUsage,
allowing it around explicit calls to MacroAssemblerARMv7 with
scratchRegister() in the arguments and disallowing it for helpers.

As there are currently no helpers that would trip this, this patch opts
for the former approach, to make DisallowMacroScratchRegisterUsage
easier to work with (there'll be more usage of the API in an upcoming
wasm32 patch).

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::scratchRegister):
(JSC::MacroAssemblerARMv7::load32):
(JSC::MacroAssemblerARMv7::load16):
(JSC::MacroAssemblerARMv7::load16SignedExtendTo32):
(JSC::MacroAssemblerARMv7::load8):
(JSC::MacroAssemblerARMv7::load8SignedExtendTo32):
(JSC::MacroAssemblerARMv7::loadPair32):
(JSC::MacroAssemblerARMv7::move):
(JSC::MacroAssemblerARMv7::farJump):
(JSC::MacroAssemblerARMv7::setupArmAddress):
(JSC::MacroAssemblerARMv7::invalidateCachedAddressTempRegister):

  • bytecode/CallLinkInfo.cpp:

(JSC::CallLinkInfo::emitFastPathImpl):

  • jit/BaselineJITRegisters.h:
3:19 AM Changeset in webkit [291338] by Nikolas Zimmermann
  • 3 edits in trunk/Source/WebCore

Extract transform-origin handling out of RenderStyle::applyTransform()
​https://bugs.webkit.org/show_bug.cgi?id=237590

Reviewed by Simon Fraser.

RenderStyle::applyTransform() implements the algorithm given in
CSS Transforms Module Level 2 (​https://www.w3.org/TR/css-transforms-2/#ctm)
that yields the "current transformation matrix". It is used e.g. in
RenderLayer::updateTransform() to compute the layer transformation
matrix, that's used for rendering.

LBSE wants to re-use the same algorithm, interchanging the individual
CSS transform properties / the CSS transform property with an external
AffineTransform, representing the SVG 2D transform.

Therefore split RenderStyle::applyTransform() into three main methods:
applyTransformOrigin / applyCSSTransform / unapplyTransformOrigin.

LBSE can call applyTransformOrigin(), multiply the TransformationMatrix
with the given SVG 2D AffineTransform and call unapplyTransformOrigin():

auto originTranslate = style.applyTransformOrigin(transform, boundingBox);
transform.multiplyAffineTransform(svgTransform.value());
style.unapplyTransformOrigin(transform, originTranslate);

The LBSE transform changes will follow in a separated patch, this only contains
the general changes. The non-SVG code paths remain unchained, since the applyTransform()
is kept as-is, just refactored to make use of the new (un)applyTransformOrigin() methods.

Covered by existing tests, no change in behaviour.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::affectedByTransformOrigin const):
(WebCore::RenderStyle::applyTransformOrigin const):
(WebCore::RenderStyle::unapplyTransformOrigin const):
(WebCore::RenderStyle::applyTransform const):
(WebCore::RenderStyle::applyCSSTransform const):

  • rendering/style/RenderStyle.h:
3:16 AM Changeset in webkit [291337] by eocanha@igalia.com
  • 3 edits in trunk/Source/WebCore

[GStreamer] Avoid auto-selection of hole punching player
​https://bugs.webkit.org/show_bug.cgi?id=237828

Reviewed by Xabier Rodriguez-Calvar.

The hole punch player private shouldn't be automatically selected when
the mime type is empty or unsupported by that specific player
("video/holepunch" in practice). This patch returns a FormatError
networkState in those cases, forcing the selection algorithm to
discard the hole punch player private.

This patch is authored by Eugene Mutavchi <​Ievgen_Mutavchi@comcast.com>
See: ​https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/797

  • platform/graphics/holepunch/MediaPlayerPrivateHolePunch.cpp: Implement networkState setter. Set FormatError networkState on load when the mime type is empty or unknown.
  • platform/graphics/holepunch/MediaPlayerPrivateHolePunch.h: Refactor networkState management. Move load() implementation to cpp file.
3:14 AM Changeset in webkit [291336] by youenn@apple.com
  • 2 edits
    1 delete in trunk/LayoutTests

LayoutTests/webaudio tests are skipped in iOS
​https://bugs.webkit.org/show_bug.cgi?id=237889

Unreviewed.

Unskip tests and removed obsolete iOS specific expected.txt files.

  • platform/ios/TestExpectations:
  • platform/ios/webaudio/analyser-exception-expected.txt: Removed.
  • platform/ios/webaudio/audiobuffer-expected.txt: Removed.
  • platform/ios/webaudio/audiobuffer-neuter-expected.txt: Removed.
  • platform/ios/webaudio/audiobuffersource-channels-expected.txt: Removed.
  • platform/ios/webaudio/audiobuffersource-ended-expected.txt: Removed.
  • platform/ios/webaudio/audiobuffersource-exception-expected.txt: Removed.
  • platform/ios/webaudio/audiobuffersource-loop-comprehensive-expected.txt: Removed.
  • platform/ios/webaudio/audiobuffersource-loop-points-expected.wav: Removed.
  • platform/ios/webaudio/audiobuffersource-playbackState-expected.txt: Removed.
  • platform/ios/webaudio/audiobuffersource-playbackrate-expected.wav: Removed.
  • platform/ios/webaudio/audiobuffersource-start-expected.txt: Removed.
  • platform/ios/webaudio/audiochannelmerger-basic-expected.txt: Removed.
  • platform/ios/webaudio/audiochannelsplitter-expected.txt: Removed.
  • platform/ios/webaudio/audionode-expected.txt: Removed.
  • platform/ios/webaudio/biquadfilternode-basic-expected.txt: Removed.
  • platform/ios/webaudio/codec-tests/aac/vbr-128kbps-44khz-expected.wav: Removed.
  • platform/ios/webaudio/codec-tests/mp3/128kbps-44khz-expected.wav: Removed.
  • platform/ios/webaudio/codec-tests/vorbis/vbr-128kbps-44khz-expected.txt: Removed.
  • platform/ios/webaudio/codec-tests/vorbis/vbr-96kbps-44khz-expected.txt: Removed.
  • platform/ios/webaudio/codec-tests/wav/24bit-22khz-resample-expected.wav: Removed.
  • platform/ios/webaudio/convolver-setBuffer-null-expected.txt: Removed.
  • platform/ios/webaudio/decode-audio-data-basic-expected.txt: Removed.
  • platform/ios/webaudio/delaynode-maxdelaylimit-expected.txt: Removed.
  • platform/ios/webaudio/distance-exponential-expected.txt: Removed.
  • platform/ios/webaudio/distance-inverse-expected.txt: Removed.
  • platform/ios/webaudio/distance-linear-expected.txt: Removed.
  • platform/ios/webaudio/javascriptaudionode-expected.txt: Removed.
  • platform/ios/webaudio/mediaelementaudiosourcenode-expected.txt: Removed.
  • platform/ios/webaudio/note-grain-on-play-expected.txt: Removed.
  • platform/ios/webaudio/note-grain-on-timing-expected.txt: Removed.
  • platform/ios/webaudio/oscillator-basic-expected.txt: Removed.
  • platform/ios/webaudio/oscillator-custom-expected.wav: Removed.
  • platform/ios/webaudio/oscillator-ended-expected.txt: Removed.
  • platform/ios/webaudio/oscillator-sawtooth-expected.wav: Removed.
  • platform/ios/webaudio/oscillator-square-expected.wav: Removed.
  • platform/ios/webaudio/oscillator-triangle-expected.wav: Removed.
  • platform/ios/webaudio/pannernode-basic-expected.txt: Removed.
  • platform/ios/webaudio/realtimeanalyser-fft-sizing-expected.txt: Removed.
3:01 AM Changeset in webkit [291335] by Pablo Saavedra
  • 4 edits in trunk/Source/WebKit

[GTK][WPE] Crash during the WebPage::close() related to GL resources destruction
​https://bugs.webkit.org/show_bug.cgi?id=237588

Reviewed by Carlos Garcia Campos.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::invalidate):
(WebKit::ThreadedCompositor::updateSceneWithoutRendering):

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
12:20 AM Changeset in webkit [291334] by sihui_liu@apple.com
  • 3 edits in trunk/Source/WebKit

Suspend newly created NetworkStorageManager if network process is or will be suspended
​https://bugs.webkit.org/show_bug.cgi?id=237915

Reviewed by Chris Dumez.

When network process receives prepareToSuspend message, we suspend existing NetworkStorageManagers (so no more
database operation can be performed). We should do the same thing for new NetworkStorageManager created between
prepareToSuspend and processDidResume messages.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::addWebsiteDataStore):
(WebKit::NetworkProcess::prepareToSuspend):
(WebKit::NetworkProcess::processDidResume):
(WebKit::NetworkProcess::resume): Deleted.

  • NetworkProcess/NetworkProcess.h:

Mar 15, 2022:

11:07 PM Changeset in webkit [291333] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

REGRESSION (r291191): [iOS] ASSERTION FAILED: m_contentsBufferHandle in WebKit::RemoteLayerBackingStore::paintContents()
​https://bugs.webkit.org/show_bug.cgi?id=237922

Reviewed by Geoffrey Garen.

The assertion added in r291191 is incorrect. With that change, we end up calling
RemoteLayerBackingStore::paintContents() on WebGL layers (which use delegated display)
when we used to just early return from display(). So it's OK for m_frontBuffer.imageBuffer
to be null on these layers.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::paintContents):

10:35 PM Changeset in webkit [291332] by ysuzuki@apple.com
  • 12 edits in trunk/Source/JavaScriptCore

[JSC] Add UnlinkedDFG compilation mode enum
​https://bugs.webkit.org/show_bug.cgi?id=237934

Reviewed by Mark Lam.

This patch adds UnlinkedDFG compilation mode to prepare new unlinked DFG.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::inliningCost):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::watchCondition):
(JSC::DFG::Graph::watchConditions):
(JSC::DFG::Graph::watchGlobalProperty):
(JSC::DFG::Graph::tryGetConstantProperty):
(JSC::DFG::Graph::tryGetConstantClosureVar):
(JSC::DFG::Graph::tryGetFoldableView):
(JSC::DFG::Graph::getRegExpPrototypeProperty):
(JSC::DFG::Graph::canOptimizeStringObjectAccess):
(JSC::DFG::Graph::canDoFastSpread):

  • dfg/DFGGraph.h:
  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):

  • dfg/DFGTierUpCheckInjectionPhase.cpp:

(JSC::DFG::TierUpCheckInjectionPhase::run):

  • jit/JITCompilationMode.cpp:

(WTF::printInternal):

  • jit/JITCompilationMode.h:

(JSC::isDFG):
(JSC::isUnlinked):

  • jit/JITPlan.cpp:

(JSC::JITPlan::tier const):
(JSC::JITPlan::reportCompileTimes const):

  • jit/JITPlan.h:

(JSC::JITPlan::isDFG const):
(JSC::JITPlan::isUnlinked const):

  • profiler/ProfilerCompilationKind.cpp:

(WTF::printInternal):

  • profiler/ProfilerCompilationKind.h:
10:19 PM Changeset in webkit [291331] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Concurrent byteOffsetImpl should not assume non-detached array-buffer
​https://bugs.webkit.org/show_bug.cgi?id=237935

Reviewed by Saam Barati.

r279707 is not enough to fix the issue since underlying ArrayBuffer can be also detached concurrently to
the compiler thread too. This patch fixes it by using dataWithoutPACValidation in the concurrent compiler
thread.

  • runtime/ArrayBuffer.h:

(JSC::ArrayBufferContents::dataWithoutPACValidation const):
(JSC::ArrayBuffer::dataWithoutPACValidation):
(JSC::ArrayBuffer::dataWithoutPACValidation const):

  • runtime/JSArrayBufferViewInlines.h:

(JSC::JSArrayBufferView::byteOffsetImpl):

9:11 PM Changeset in webkit [291330] by Alan Bujtas
  • 4 edits
    2 adds in trunk

REGRESSION (r282737): text-shadow is clipped
​https://bugs.webkit.org/show_bug.cgi?id=237898
<rdar://problem/90320701>

Reviewed by Darin Adler.

Source/WebCore:

Inflate the ink overflow rect with the text shadow values (note that here, in the display builder we work with physical coordinates).

Test: fast/text/text-shadow-ink-overflow-missing.html

  • layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::appendTextDisplayBox):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::getTextShadowHorizontalExtent const):
(WebCore::RenderStyle::getTextShadowVerticalExtent const):

LayoutTests:

  • fast/text/text-shadow-ink-overflow-missing-expected.html: Added.
  • fast/text/text-shadow-ink-overflow-missing.html: Added.
9:06 PM Changeset in webkit [291329] by Diego Pino Garcia
  • 2 edits in trunk/Source/WebCore

[GLIB] REGRESSION(r291257): Unreviewed, fix build when using ATK
​https://bugs.webkit.org/show_bug.cgi?id=237939

r291257 renamed RenderStyle::textDecoration() to
RenderStyle::textDecorationLine() in the ATSPI module, but it missed
to do the same for the ATK module.

ATK is still in use when building with flag -DUSE_ATSPI=OFF, which is
used by Ubuntu 18.04 and Debian Stable bots.

  • accessibility/atk/WebKitAccessibleInterfaceText.cpp:

(getAttributeSetForAccessibilityObject):

8:51 PM Changeset in webkit [291328] by mark.lam@apple.com
  • 2 edits in trunk/Source/bmalloc

Remove unused directory local variable in pas_enumerate_segregated_heaps.
​https://bugs.webkit.org/show_bug.cgi?id=237931

Reviewed by Geoffrey Garen.

Also remove the call to pas_unwrap_local_view_cache_node(). It doesn't add any
value. The only thing of substance that it does is a PAS_ASSERT that turns out to
be redundant because pas_enumerate_segregated_heaps() already asserts the same
thing before calling pas_unwrap_local_view_cache_node().

  • libpas/src/libpas/pas_enumerate_segregated_heaps.c:

(pas_enumerate_segregated_heaps):

8:25 PM Changeset in webkit [291327] by Diego Pino Garcia
  • 2 edits in trunk/Tools

[GLIB] Unreviewed, fix build for Ubuntu 18.04 and Debian Stable after r291229
​https://bugs.webkit.org/show_bug.cgi?id=237938

  • TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp:

(elementSize):

8:21 PM Changeset in webkit [291326] by eric.carlson@apple.com
  • 13 edits in trunk/Source

Video poster disappears prematurely on play, leaving transparent video element.
​https://bugs.webkit.org/show_bug.cgi?id=226960
<rdar://problem/79315114>

Reviewed by Jer Noble.

Source/WebCore:

If a media file has an enabled video track, don't advance readyState to
HAVE_ENOUGH_DATA until we have the first frame so we won't hide the poster image
until AVFoundation has something to render.

Tested manually.

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::mediaPlayerFirstVideoFrameAvailable): Always log.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::updateStates): Move the test for the
first video frame above the player item status check. If a file has a video track,
don't advance to HAVE_ENOUGH_DATA unless we have the first video frame.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad): Clear m_cachedHasEnabledVideo.
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer): Remove unneeded
local variable.
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformSetVisible): Minro cleanup.
(WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): Set hasVideo if
AVPlayerItem.hasEnabledVideo is true, because it remains stable while AVAssetTracks
sometimes disappear and reappear.
(WebCore::MediaPlayerPrivateAVFoundationObjC::firstFrameAvailableDidChange): Add logging.
(WebCore::MediaPlayerPrivateAVFoundationObjC::hasEnabledAudioDidChange): Ditto
(WebCore::MediaPlayerPrivateAVFoundationObjC::hasEnabledVideoDidChange): New, cache
AVPlayerItem.hasEnabledVideo.
(WebCore::itemKVOProperties):
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]): Respond
to @"hasEnabledVideo".

  • platform/graphics/avfoundation/objc/VideoLayerManagerObjC.h:

Source/WebKit:

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote): Always log.
(WebKit::MediaPlayerPrivateRemote::~MediaPlayerPrivateRemote): Ditto.
(WebKit::MediaPlayerPrivateRemote::prepareForPlayback): Pass the player's content
rect box to createVideoLayerRemote so it can be sized correctly even before it
becomes visible.
(WebKit::MediaPlayerPrivateRemote::firstVideoFrameAvailable): Always log.
(WebKit::MediaPlayerPrivateRemote::renderingModeChanged): Ditto.

  • WebProcess/GPU/media/VideoLayerRemote.h:
  • WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.mm:

(WebKit::createVideoLayerRemote): Set the new layer's frame so its children will
be positioned correctly when the are made visible.

7:35 PM Changeset in webkit [291325] by sbarati@apple.com
  • 2 edits in trunk/Tools

Add support for chrome-beta and chrome-dev to run-benchmark
​https://bugs.webkit.org/show_bug.cgi?id=237937

Reviewed by Stephanie Lewis.

  • Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py:

(set_binary_location_impl):
(OSXChromeDriver._set_chrome_binary_location):
(OSXChromeCanaryDriver):
(OSXChromeCanaryDriver._set_chrome_binary_location):
(OSXChromeBetaDriver):
(OSXChromeBetaDriver._set_chrome_binary_location):
(OSXChromeDevDriver):
(OSXChromeDevDriver._set_chrome_binary_location):

5:51 PM Changeset in webkit [291324] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

Crash under HTMLDocumentParser::didBeginYieldingParser()
​https://bugs.webkit.org/show_bug.cgi?id=237930
<rdar://45607220>

Reviewed by Geoffrey Garen.

Add null pointer check.

No new tests, unable to reproduce.

  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::didBeginYieldingParser):
(WebCore::HTMLDocumentParser::didEndYieldingParser):

4:44 PM Changeset in webkit [291323] by mmaxfield@apple.com
  • 60 edits in trunk/Source

[WebGPU] Migrate from WTF::Function to WTF::CompletionHandler
​https://bugs.webkit.org/show_bug.cgi?id=237925

Reviewed by Geoffrey Garen.

Source/WebCore/PAL:

CompletionHandlers make sure they are called exactly 1 time, and eagerly free up resources.

There are still 2 places which continue to use Functions, becuase they are expected to be
called multiple times:

  • Device::setDeviceLostCallback()
  • Device::setUncapturedErrorCallback()
  • pal/graphics/WebGPU/Impl/WebGPUAdapterImpl.cpp:

(PAL::WebGPU::AdapterImpl::requestDevice):

  • pal/graphics/WebGPU/Impl/WebGPUAdapterImpl.h:
  • pal/graphics/WebGPU/Impl/WebGPUBufferImpl.cpp:

(PAL::WebGPU::BufferImpl::mapAsync):

  • pal/graphics/WebGPU/Impl/WebGPUBufferImpl.h:
  • pal/graphics/WebGPU/Impl/WebGPUDeviceImpl.cpp:

(PAL::WebGPU::DeviceImpl::createComputePipelineAsync):
(PAL::WebGPU::DeviceImpl::createRenderPipelineAsync):
(PAL::WebGPU::DeviceImpl::popErrorScope):

  • pal/graphics/WebGPU/Impl/WebGPUDeviceImpl.h:
  • pal/graphics/WebGPU/Impl/WebGPUImpl.cpp:

(PAL::WebGPU::GPUImpl::requestAdapter):

  • pal/graphics/WebGPU/Impl/WebGPUImpl.h:
  • pal/graphics/WebGPU/Impl/WebGPUQueueImpl.cpp:

(PAL::WebGPU::QueueImpl::onSubmittedWorkDone):

  • pal/graphics/WebGPU/Impl/WebGPUQueueImpl.h:
  • pal/graphics/WebGPU/Impl/WebGPUShaderModuleImpl.cpp:

(PAL::WebGPU::ShaderModuleImpl::compilationInfo):

  • pal/graphics/WebGPU/Impl/WebGPUShaderModuleImpl.h:
  • pal/graphics/WebGPU/WebGPU.h:
  • pal/graphics/WebGPU/WebGPUAdapter.h:
  • pal/graphics/WebGPU/WebGPUBuffer.h:
  • pal/graphics/WebGPU/WebGPUDevice.h:
  • pal/graphics/WebGPU/WebGPUQueue.h:
  • pal/graphics/WebGPU/WebGPUShaderModule.h:

Source/WebGPU:

  • WebGPU/Adapter.h:
  • WebGPU/Adapter.mm:

(WebGPU::Adapter::requestDevice):

  • WebGPU/Buffer.h:
  • WebGPU/Buffer.mm:

(WebGPU::Buffer::mapAsync):

  • WebGPU/ComputePipeline.mm:

(WebGPU::Device::createComputePipelineAsync):

  • WebGPU/Device.h:
  • WebGPU/Device.mm:

(WebGPU::Device::popErrorScope):
(WebGPU::Device::setDeviceLostCallback):
(WebGPU::Device::setUncapturedErrorCallback):

  • WebGPU/Instance.h:
  • WebGPU/Instance.mm:

(WebGPU::Instance::requestAdapter):

  • WebGPU/Queue.h:
  • WebGPU/Queue.mm:

(WebGPU::Queue::onSubmittedWorkDone):

  • WebGPU/RenderPassEncoder.h:
  • WebGPU/RenderPipeline.mm:

(WebGPU::Device::createRenderPipelineAsync):

  • WebGPU/ShaderModule.h:
  • WebGPU/ShaderModule.mm:

(WebGPU::ShaderModule::getCompilationInfo):

Source/WebKit:

  • GPUProcess/graphics/WebGPU/RemoteAdapter.cpp:

(WebKit::RemoteAdapter::requestDevice):

  • GPUProcess/graphics/WebGPU/RemoteAdapter.h:
  • GPUProcess/graphics/WebGPU/RemoteBuffer.cpp:

(WebKit::RemoteBuffer::mapAsync):

  • GPUProcess/graphics/WebGPU/RemoteBuffer.h:
  • GPUProcess/graphics/WebGPU/RemoteDevice.cpp:

(WebKit::RemoteDevice::createComputePipelineAsync):
(WebKit::RemoteDevice::createRenderPipelineAsync):
(WebKit::RemoteDevice::popErrorScope):

  • GPUProcess/graphics/WebGPU/RemoteDevice.h:
  • GPUProcess/graphics/WebGPU/RemoteGPU.cpp:

(WebKit::RemoteGPU::requestAdapter):

  • GPUProcess/graphics/WebGPU/RemoteGPU.h:
  • GPUProcess/graphics/WebGPU/RemoteQueue.cpp:

(WebKit::RemoteQueue::onSubmittedWorkDone):

  • GPUProcess/graphics/WebGPU/RemoteQueue.h:
  • GPUProcess/graphics/WebGPU/RemoteShaderModule.cpp:

(WebKit::RemoteShaderModule::compilationInfo):

  • GPUProcess/graphics/WebGPU/RemoteShaderModule.h:
  • WebProcess/GPU/graphics/WebGPU/RemoteAdapterProxy.cpp:

(WebKit::WebGPU::RemoteAdapterProxy::requestDevice):

  • WebProcess/GPU/graphics/WebGPU/RemoteAdapterProxy.h:
  • WebProcess/GPU/graphics/WebGPU/RemoteBufferProxy.cpp:

(WebKit::WebGPU::RemoteBufferProxy::mapAsync):

  • WebProcess/GPU/graphics/WebGPU/RemoteBufferProxy.h:
  • WebProcess/GPU/graphics/WebGPU/RemoteDeviceProxy.cpp:

(WebKit::WebGPU::RemoteDeviceProxy::createComputePipelineAsync):
(WebKit::WebGPU::RemoteDeviceProxy::createRenderPipelineAsync):
(WebKit::WebGPU::RemoteDeviceProxy::popErrorScope):

  • WebProcess/GPU/graphics/WebGPU/RemoteDeviceProxy.h:
  • WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.cpp:

(WebKit::RemoteGPUProxy::requestAdapter):

  • WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.h:
  • WebProcess/GPU/graphics/WebGPU/RemoteQueueProxy.cpp:

(WebKit::WebGPU::RemoteQueueProxy::onSubmittedWorkDone):

  • WebProcess/GPU/graphics/WebGPU/RemoteQueueProxy.h:
  • WebProcess/GPU/graphics/WebGPU/RemoteShaderModuleProxy.cpp:

(WebKit::WebGPU::RemoteShaderModuleProxy::compilationInfo):

  • WebProcess/GPU/graphics/WebGPU/RemoteShaderModuleProxy.h:
4:40 PM Changeset in webkit [291322] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebCore

Add RELEASE_LOG_FAULT to ApplicationCache entry function
​https://bugs.webkit.org/show_bug.cgi?id=237866

Reviewed by Alex Christensen.

To help learn remaining ApplicationCache usage.

  • html/HTMLHtmlElement.cpp:

(WebCore::HTMLHtmlElement::insertedByParser):

4:23 PM Changeset in webkit [291321] by J Pascoe
  • 4 edits in trunk/Source/WebKit

[WebAuthn] Mock UI interactions whenever virtual authenticators are in use.
​https://bugs.webkit.org/show_bug.cgi?id=237856
rdar://problem/90274854

Reviewed by Brent Fulgham.

Tested by wpt's webauthn tests.

  • UIProcess/WebAuthentication/AuthenticatorManager.h:
  • UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.cpp:

(WebKit::VirtualAuthenticatorManager::runPanel):
(WebKit::VirtualAuthenticatorManager::selectAssertionResponse):
(WebKit::VirtualAuthenticatorManager::decidePolicyForLocalAuthenticator):

  • UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.h:
4:16 PM Changeset in webkit [291320] by Chris Dumez
  • 7 edits in trunk/Source

Make it clearer in the loading logging when it is for the main frame or not
​https://bugs.webkit.org/show_bug.cgi?id=237913

Reviewed by Alex Christensen.

Source/WebCore:

  • dom/Document.cpp:
  • loader/DocumentLoader.cpp:
  • loader/FrameLoader.cpp:
  • page/FrameView.cpp:

Source/WebKit:

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedNavigationPolicyDecision):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::willPerformClientRedirectForFrame):
(WebKit::WebPageProxy::didCancelClientRedirectForFrame):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::didPerformClientRedirectShared):

3:34 PM WebKitGTK/2.36.x edited by Michael Catanzaro
(diff)
3:22 PM Changeset in webkit [291319] by Jean-Yves Avenard
  • 4 edits in trunk/LayoutTests

REGRESSION(r287249): [ Monterey wk2 ] media/media-source/media-webm-vorbis-partial.html is a constant text failure
​https://bugs.webkit.org/show_bug.cgi?id=236656
rdar://88978504

Reviewed by Eric Carlson.

Update test expectations, they didn't get committed after the test got
modified in bug 236211

  • media/media-source/media-webm-vorbis-partial-expected.txt:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
3:09 PM Changeset in webkit [291318] by commit-queue@webkit.org
  • 5 edits
    4 deletes in trunk

Unreviewed, reverting r291282.
​https://bugs.webkit.org/show_bug.cgi?id=237924

Speedometer2 1-2% regression

Reverted changeset:

"Dialog element only animates once"
​https://bugs.webkit.org/show_bug.cgi?id=236274
​https://commits.webkit.org/r291282

2:52 PM Changeset in webkit [291317] by mmaxfield@apple.com
  • 5 edits
    4 copies in trunk/Source/WebGPU

[WebGPU] Update WebGPU CommandLinePlayground to execute asynchronous tasks
​https://bugs.webkit.org/show_bug.cgi?id=237852

Reviewed by Kimmo Kinnunen.

This patch hooks up dispatch_async(dispatch_get_main_queue()) to WebGPU's CommandLinePlayground,
so asynchronous tasks get run.

  • CommandLinePlayground/CommandLinePlayground-Bridging-Header.h: Copied from Source/WebGPU/CommandLinePlayground/main.swift.
  • CommandLinePlayground/Utilities.c: Copied from Source/WebGPU/CommandLinePlayground/main.swift.

(createDefaultInstance):

  • CommandLinePlayground/Utilities.h: Copied from Source/WebGPU/CommandLinePlayground/main.swift.
  • CommandLinePlayground/config.h: Copied from Source/WebGPU/CommandLinePlayground/main.swift.
  • CommandLinePlayground/main.swift:

(adapter):

  • Configurations/CommandLinePlayground.xcconfig:
  • WebGPU.xcodeproj/project.pbxproj:
  • WebGPU/TextureView.mm:
2:39 PM Changeset in webkit [291316] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebCore

Add RELEASE_LOG_FAULT to WebSQL entry functions
​https://bugs.webkit.org/show_bug.cgi?id=237865

Reviewed by Geoffrey Garen.

To help learn remaining WebSQL usage.

  • Modules/webdatabase/Database.cpp:

(WebCore::Database::transaction):
(WebCore::Database::readTransaction):

2:30 PM Changeset in webkit [291315] by mmaxfield@apple.com
  • 4 edits in trunk/Source/WebGPU

[WebGPU] Repeated calls to wgpuDeviceGetQueue() are supposed to return the same pointer
​https://bugs.webkit.org/show_bug.cgi?id=237861

Reviewed by Kimmo Kinnunen.

Previously, wgpuDeviceGetQueue() had "new WGPUQueueImpl { ... }" but this is wrong because
the default queue doesn't change from one call to the next.

  • WebGPU/Adapter.mm:

(WebGPU::Adapter::requestDevice):
(wgpuAdapterRequestDevice):
(wgpuAdapterRequestDeviceWithBlock):

  • WebGPU/Device.h:
  • WebGPU/Device.mm:

(WebGPU::Device::create):
(WebGPU::Device::getQueue):
(wgpuDeviceGetQueue):

2:30 PM Changeset in webkit [291314] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

RemoteGraphicsContextGLProxy omits context lost checks for back and front buffer access functions
​https://bugs.webkit.org/show_bug.cgi?id=237891

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-15
Reviewed by Myles Maxfield.

Add missing isContextLost() checks to RemoteGraphicsContextGLProxy functions.
WebGLRenderingContextBase would call as follows:
void WebGLRenderingContextBase::paintRenderingResultsToCanvas()
{

if (isContextLostOrPending())

return;

...
m_context->prepareForDisplay();
...
m_context->paintCompositedResultsToCanvas();

}

The context may be ok during the first check but then fail later,
and so all the context functions need to check for validity.

No new tests, testing hooks need non-trivial implementation.
This is tracked in bug 237891.

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::paintRenderingResultsToCanvas):
(WebKit::RemoteGraphicsContextGLProxy::paintCompositedResultsToCanvas):
(WebKit::RemoteGraphicsContextGLProxy::copyTextureFromMedia):

2:22 PM Changeset in webkit [291313] by mmaxfield@apple.com
  • 12 edits in trunk/Source

[WebGPU] Allow for scheduling asynchronous work
​https://bugs.webkit.org/show_bug.cgi?id=237755

Reviewed by Kimmo Kinnunen.

Source/WebCore/PAL:

WebGPU doesn't know how to schedule asynchronous work, so that will have to be handled
by dependency injection from the caller. The way it works is Instance creation takes
a block, which is retained. Whenever asynchronous work needs to be scheduled on the
relevant thread, this block is called, and is passed another block for the work to be
performed.

The API contract is: callers of WebGPU must call its functions in a non-racey way. The
schedule function will execute on a background thread, and it must schedule the block
it's passed to be run in a non-racey way with regards to all the other WebGPU calls.
The schedule function can be NULL, in which case the asynchronous tasks will just be
internally queued up inside WebGPU, and then users will have to call
wgpuInstanceProcessEvents() periodically to synchronously call the queued callbacks.

  • pal/graphics/WebGPU/Impl/WebGPUImpl.cpp:

(PAL::WebGPU::GPUImpl::create):

  • pal/graphics/WebGPU/Impl/WebGPUImpl.h:

Source/WebGPU:

  • WebGPU/Instance.h:

(WebGPU::Instance::runLoop const): Deleted.

  • WebGPU/Instance.mm:

(WebGPU::Instance::create):
(WebGPU::Instance::Instance):
(WebGPU::Instance::scheduleWork):
(WebGPU::Instance::defaultScheduleWork):
(WebGPU::Instance::processEvents):

  • WebGPU/WebGPUExt.h:

Source/WebKit:

  • GPUProcess/graphics/WebGPU/RemoteGPU.cpp:

(WebKit::RemoteGPU::workQueueInitialize):
(WebKit::RemoteGPU::workQueueUninitialize):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createGPUForWebGPU const):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::createGPUForWebGPU const):

2:17 PM Changeset in webkit [291312] by Alan Bujtas
  • 16 edits in trunk/Source/WebCore

[IFC][Integration] Rename selection* to enclosing* in InlineIterator::Line
​https://bugs.webkit.org/show_bug.cgi?id=237909

Reviewed by Antti Koivisto.

These functions return enclosing (line box and content) geometries which we happen to use to compute selection boundaries (among other things).

  • editing/VisiblePosition.cpp:

(WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):

  • layout/integration/InlineIteratorLine.cpp:

(WebCore::InlineIterator::Line::blockDirectionPointInLine const):
(WebCore::InlineIterator::Line::enclosingTopAdjustedForPrecedingBlock const):
(WebCore::InlineIterator::Line::enclosingHeightAdjustedForPrecedingBlock const):
(WebCore::InlineIterator::Line::selectionTopAdjustedForPrecedingBlock const): Deleted.
(WebCore::InlineIterator::Line::selectionHeightAdjustedForPrecedingBlock const): Deleted.

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::enclosingTop const):
(WebCore::InlineIterator::Line::enclosingTopForHitTesting const):
(WebCore::InlineIterator::Line::enclosingBottom const):
(WebCore::InlineIterator::Line::enclosingHeight const):
(WebCore::InlineIterator::Line::enclosingLogicalRect const):
(WebCore::InlineIterator::Line::enclosingPhysicalRect const):
(WebCore::InlineIterator::Line::selectionTop const): Deleted.
(WebCore::InlineIterator::Line::selectionTopForHitTesting const): Deleted.
(WebCore::InlineIterator::Line::selectionBottom const): Deleted.
(WebCore::InlineIterator::Line::selectionHeight const): Deleted.
(WebCore::InlineIterator::Line::selectionLogicalRect const): Deleted.
(WebCore::InlineIterator::Line::selectionPhysicalRect const): Deleted.

  • layout/integration/InlineIteratorTextBox.cpp:

(WebCore::InlineIterator::TextBox::selectionRect const):

  • rendering/CaretRectComputation.cpp:

(WebCore::computeCaretRectForLinePosition):

  • rendering/LegacyRootInlineBox.cpp:

(WebCore::LegacyRootInlineBox::selectionTopAdjustedForPrecedingBlock const):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::adjustEnclosingTopForPrecedingBlock const):
(WebCore::RenderBlockFlow::inlineSelectionGaps):
(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):
(WebCore::RenderBlockFlow::adjustSelectionTopForPrecedingBlock const): Deleted.

  • rendering/RenderBlockFlow.h:
  • rendering/RenderImage.cpp:

(WebCore::RenderImage::collectSelectionGeometries):

  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::collectSelectionGeometries):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::positionForPoint):

  • rendering/RenderText.cpp:

(WebCore::RenderText::positionForPoint):

  • rendering/TextBoxPainter.cpp:

(WebCore::TextBoxPainter::paintBackground):

1:45 PM Changeset in webkit [291311] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Fix logging in GPUProcessProxy::didCreateContextForVisibilityPropagation()
​https://bugs.webkit.org/show_bug.cgi?id=237907

Reviewed by Simon Fraser.

LayerHostingContextID is a uint32_t. The current printing ends up logging negative values:
GPUProcessProxy::didCreateContextForVisibilityPropagation: webPageProxyID: 7, pagePID: 79, contextID: -2041854761

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::didCreateContextForVisibilityPropagation):

1:30 PM Changeset in webkit [291310] by Patrick Griffis
  • 29 edits
    1 copy
    12 adds in trunk

Add initial implementation of Fetch Metadata
​https://bugs.webkit.org/show_bug.cgi?id=204744

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Update expectations for Fetch Metadata.

  • web-platform-tests/fetch/metadata/download.https.sub-expected.txt:
  • web-platform-tests/fetch/metadata/download.https.sub.html:
  • web-platform-tests/fetch/metadata/fetch-preflight.https.sub.any-expected.txt: Added.
  • web-platform-tests/fetch/metadata/fetch-preflight.https.sub.any.worker-expected.txt: Added.
  • web-platform-tests/fetch/metadata/fetch-via-serviceworker--fallback.https.sub-expected.txt:
  • web-platform-tests/fetch/metadata/fetch-via-serviceworker--respondWith.https.sub-expected.txt:
  • web-platform-tests/fetch/metadata/fetch.https.sub.any-expected.txt: Added.
  • web-platform-tests/fetch/metadata/fetch.https.sub.any.worker-expected.txt: Added.
  • web-platform-tests/fetch/metadata/fetch.sub-expected.txt:
  • web-platform-tests/fetch/metadata/font.https.sub-expected.txt:
  • web-platform-tests/fetch/metadata/img.https.sub-expected.txt:
  • web-platform-tests/fetch/metadata/redirect/cross-site-redirect.https.sub-expected.txt:
  • web-platform-tests/fetch/metadata/redirect/multiple-redirect-cross-site.https.sub-expected.txt:
  • web-platform-tests/fetch/metadata/script.https.sub-expected.txt:
  • web-platform-tests/fetch/metadata/script.sub-expected.txt:
  • web-platform-tests/fetch/metadata/serviceworker-accessors.https.sub-expected.txt: Added.
  • web-platform-tests/fetch/metadata/serviceworker.https.sub-expected.txt:
  • web-platform-tests/fetch/metadata/sharedworker.https.sub-expected.txt:
  • web-platform-tests/fetch/metadata/trailing-dot.https.sub.any-expected.txt: Added.
  • web-platform-tests/fetch/metadata/trailing-dot.https.sub.any.worker-expected.txt: Added.
  • web-platform-tests/fetch/metadata/unload.https.sub-expected.txt:
  • web-platform-tests/fetch/metadata/worker.https.sub-expected.txt:
  • web-platform-tests/fetch/metadata/xslt.https.sub-expected.txt:
  • web-platform-tests/service-workers/service-worker/update-module-request-mode.https-expected.txt:

Source/WebCore:

Add initial implementation of Fetch Metadata as specified here:
​https://w3c.github.io/webappsec-fetch-metadata/

Currently only Fetch-Sec-Mode and Fetch-Sec-Dest are implemented with more
to come in later patches.

Test: http/wpt/fetch/fetch-metadata-same-origin-redirect.html

  • loader/CrossOriginAccessControl.cpp:

(WebCore::cleanHTTPRequestHeadersForAccessControl):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::updateHTTPRequestHeaders):

  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::updateFetchMetadataHeaders):

  • loader/cache/CachedResourceRequest.h:
  • platform/network/HTTPHeaderNames.in:

Source/WTF:

Add new experimental preference for Fetch Metadata, disabled by default.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

Skip fewer of the Fetch Metadata tests. Many still timeout and are still
being worked on.

  • TestExpectations:
  • http/wpt/fetch/fetch-metadata-same-origin-redirect-expected.txt: Added.
  • http/wpt/fetch/fetch-metadata-same-origin-redirect.html: Added.
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk1/imported/w3c/web-platform-tests/fetch/metadata/fetch-preflight.https.sub.any-expected.txt: Added.
1:09 PM Changeset in webkit [291309] by commit-queue@webkit.org
  • 10 edits
    7 deletes in trunk/Source/WebCore

REGRESSION(r291270): Changes need better build-time guards
​https://bugs.webkit.org/show_bug.cgi?id=237908

Unreviewed, rolling out r291270 and r291294 until proper build guards
and relevant configuration options are introduced.

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-03-15

  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • platform/TextureMapper.cmake:
  • platform/graphics/gbm/DMABufFormat.h: Removed.
  • platform/graphics/gbm/DMABufObject.h: Removed.
  • platform/graphics/gbm/DMABufReleaseFlag.h: Removed.
  • platform/graphics/gbm/GBMBufferSwapchain.cpp: Removed.
  • platform/graphics/gbm/GBMBufferSwapchain.h: Removed.
  • platform/graphics/gstreamer/DMABufVideoSinkGStreamer.cpp:

(webKitDMABufVideoSinkProbePlatform):
(webKitDMABufVideoSinkIsEnabled): Deleted.

  • platform/graphics/gstreamer/DMABufVideoSinkGStreamer.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::platformLayer const):
(WebCore::MediaPlayerPrivateGStreamer::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSink):
(WebCore::fourccValue): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::pushDMABufToCompositor): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::createVideoSinkDMABuf): Deleted.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp:

(Nicosia::ContentLayerTextureMapperImpl::createFactory):

  • platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.h:
  • platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.cpp: Removed.
  • platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.h: Removed.
12:34 PM Changeset in webkit [291308] by Jonathan Bedard
  • 3 edits in trunk/Tools

[Merge-Queue] Rename bugzilla_comment_text
​https://bugs.webkit.org/show_bug.cgi?id=237911
<rdar://problem/90319995>

Reviewed by Aakash Jain.

Rename bugzilla_comment_text to comment_text to re-use
code to comment on pull requests.

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

(ApplyPatch.evaluateCommand):
(ValidateCommiterAndReviewer.fail_build):
(ValidateChangeLogAndReviewer.evaluateCommand):
(CommentOnBug.start):
(AnalyzeCompileWebKitResults.analyzeResults):
(AnalyzeLayoutTestsResults.report_failure):
(FindModifiedChangeLogs.evaluateCommand):
(CreateLocalGITCommit.evaluateCommand):
(PushCommitToWebKitRepo.evaluateCommand):

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

Canonical link: ​https://commits.webkit.org/248447@main

12:22 PM Changeset in webkit [291307] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[ iOS ] ASSERTION FAILED: m_isWaitingForDidUpdateGeometry on accessibility/visible-character-range.html
​https://bugs.webkit.org/show_bug.cgi?id=237557

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
11:53 AM Changeset in webkit [291306] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Fix SQL statement in ApplicationCacheStorage::verifySchemaVersion()
​https://bugs.webkit.org/show_bug.cgi?id=237905

Reviewed by Geoffrey Garen.

This was leading to the following logging:
SQLiteDatabase::prepareStatement: Failed to prepare statement PRAGMA user_version=%7

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::verifySchemaVersion):

11:47 AM Changeset in webkit [291305] by Philippe Normand
  • 2 edits in trunk/Source/WTF

Unreviewed, CMake Debug build fix attempt after 248407@main

  • wtf/CMakeLists.txt: Include StackCheck source unit.
10:39 AM Changeset in webkit [291304] by Aditya Keerthi
  • 14 edits in trunk

[iOS] Indefinite hang when printing using a UIPrintPageRenderer
​https://bugs.webkit.org/show_bug.cgi?id=237835
rdar://90002387

Reviewed by Devin Rousso.

Source/WebKit:

r290186 adopted UIKit API to support printing web content on a
background thread, to avoid blocking the main thread while waiting
on PDF data from the web process. However, the changes made the
assumption that, with the new API, all printing would be performed on
a background thread. While this is the case when using
UIPrintInteractionController, clients can also print using
UIPrintPageRenderer on the main thread. The background thread logic
waits on a semaphore, until PDF data is received on the main thread.
However, if the logic runs on the main thread, it will wait on the
semaphore indefinitely.

To fix, restore the original sync IPC codepath when performing printing
on the main thread. Additionally, make the BinarySemaphore a
unique_ptr, so that it can be signalled and reset in failure scenarios,
regardless of whether a thread was waiting on the semaphore. This
change also allows us to avoid creating the BinarySemaphore unless it
is actually needed.

All uses of HAVE(UIKIT_BACKGROUND_THREAD_PRINTING) are removed, as the
API adoption only involves a method override, which is harmless in
builds that lack support for the new API.

  • UIProcess/WebPageProxy.h:
  • UIProcess/_WKWebViewPrintFormatter.mm:
  • UIProcess/_WKWebViewPrintFormatterInternal.h:
  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _processDidExit]):
(-[WKContentView _wk_pageCountForPrintFormatter:]):
(-[WKContentView _waitForDrawToPDFCallbackIfNeeded]):
(-[WKContentView _wk_printedDocument]):

  • UIProcess/ios/WKPDFView.mm:
  • UIProcess/ios/WebPageProxyIOS.mm:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

Source/WTF:

Remove unused HAVE macro.

  • wtf/PlatformHave.h:

Tools:

Add API test coverage for printing web content to a PDF, using a
UIPrintPageRenderer (which uses the main thread) and a
UIPrintInteractionController (which uses a background thread).

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewPrintFormatter.mm:

(TEST):

10:36 AM Changeset in webkit [291303] by Antti Koivisto
  • 3 edits
    3 adds in trunk

background-clip:text doesn't work with display:flex
​https://bugs.webkit.org/show_bug.cgi?id=169125
<rdar://problem/72432683>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex-ref.html: Added.
  • web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex.html: Added.

Source/WebCore:

Tests: imported/w3c/web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex.html

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::paintAsInlineBlock):

Flexbox children paint as inline blocks. This path didn't support text clip paint phase.

10:31 AM Changeset in webkit [291302] by commit-queue@webkit.org
  • 5 edits
    3 deletes in trunk

Stop using DYLD_INTERPOSE
​https://bugs.webkit.org/show_bug.cgi?id=237867

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-15
Reviewed by Anders Carlsson.

Source/WebCore:

It never worked on iOS, and it doesn't work on M1 Macs.
It used to be used for NPAPI and the SecItemShim,
but those have been removed and updated to use other methods that work on M1 Macs.
It is currently only used for tests in editing/secure-input which continue to pass
as much as they did before this change.

  • Configurations/WebCoreTestShim.xcconfig: Removed.
  • WebCore.xcodeproj/project.pbxproj:
  • platform/mac/DynamicLinkerInterposing.h: Removed.
  • testing/WebCoreTestShimLibrary.cpp: Removed.

Tools:

  • Scripts/webkitpy/port/mac.py:

(MacPort.setup_environ_for_server):

  • Scripts/webkitpy/port/mac_unittest.py:

(MacTest.test_setup_environ_for_server):

10:24 AM Changeset in webkit [291301] by graouts@webkit.org
  • 3 edits in trunk/Source/WebCore

[model] model-element/model-element-camera.html is a failure
​https://bugs.webkit.org/show_bug.cgi?id=237894
rdar://88982597

Reviewed by Tim Horton.

Ensure we have a non-zero contentSize() and model data before attempting to
create a player. Otherwise, we could end up with a zero frame when calling
into ARKit and the model would fail to load and the ready promise would be
rejected, causing this test to fail.

We can change the existing call site to sizeMayHaveChanged() to no longer
check whether we are using a platform layer since sizeMayHaveChanged() now
takes care of checking whether it has a player.

  • Modules/model-element/HTMLModelElement.cpp:

(WebCore::HTMLModelElement::createModelPlayer):
(WebCore::HTMLModelElement::sizeMayHaveChanged):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateConfiguration):
(WebCore::RenderLayerBacking::updateGeometry):

10:14 AM Changeset in webkit [291300] by Ryan Haddad
  • 1 edit in trunk/Tools/Scripts/webkitpy/xcode/simulated_device.py

[webkitpy] Make SimulatedDevice.is_usable check more robust
​https://bugs.webkit.org/show_bug.cgi?id=237795

Reviewed by Jonathan Bedard.

Rather than searching for the service name in the output of launchctl list,
pass in the name as an additional argument so that it prints out information
about that particular service. I have verified that this works in local testing
for both iOS and watchOS simulators.

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDevice):
(SimulatedDevice.is_usable):

Canonical link: ​https://commits.webkit.org/248439@main

10:06 AM Changeset in webkit [291299] by Brandon
  • 2 edits in trunk/Source/WebCore

Line Builder and Content Breaker out of sync
​https://bugs.webkit.org/show_bug.cgi?id=237903

Reviewed by Simon Fraser.

Line builder and content breaker could become out of sync in the case where
the first line style was different than following styles. This could result
in issues with wrapping later on.

  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::handleInlineContent):

9:56 AM Changeset in webkit [291298] by Lauro Moura
  • 4 edits in trunk/LayoutTests

[GLIB] Unreviewed gardening
​https://bugs.webkit.org/show_bug.cgi?id=237902

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
9:52 AM Changeset in webkit [291297] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS][WP] Add required syscall
​https://bugs.webkit.org/show_bug.cgi?id=237846
<rdar://90249455>

Reviewed by Brent Fulgham.

Add required syscall to the WebContent process' sandbox on macOS.

  • WebProcess/com.apple.WebProcess.sb.in:
9:40 AM Changeset in webkit [291296] by jer.noble@apple.com
  • 14 edits in trunk/Source

[Cocoa] Adopt AVAssetPrefersSandboxedParsingOptionKey
​https://bugs.webkit.org/show_bug.cgi?id=237832
<rdar://89029829>

Reviewed by Eric Carlson.

Source/WebCore:

Adopt a AVURLAsset option which would allow the media file parser to run out-of-process.
Because this adoption may have a performance impact (though it should not affect the
functionality of AVURLAsset), add a Setting to disable this adoption at runtime for the
purpose of A/B testing.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::requestInstallMissingPlugins):

  • html/HTMLMediaElement.h:
  • platform/graphics/MediaPlayer.h:

(WebCore::MediaPlayerClient::mediaPlayerPrefersSandboxedParsing const):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):

Source/WebCore/PAL:

  • pal/cocoa/AVFoundationSoftLink.h:

Source/WebKit:

Propogate the prefersSandboxedParsing() property across to the GPU process.

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxyConfiguration.h:

(WebKit::RemoteMediaPlayerProxyConfiguration::encode const):
(WebKit::RemoteMediaPlayerProxyConfiguration::decode):

  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::createRemoteMediaPlayer):

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:
9:37 AM Changeset in webkit [291295] by commit-queue@webkit.org
  • 59 edits
    1 copy
    20 adds in trunk

Expose some web APIs on Shadow Realms and Worklets
​https://bugs.webkit.org/show_bug.cgi?id=235736

Patch by Joseph Griego <​jgriego@igalia.com> on 2022-03-15
Reviewed by Yusuke Suzuki.

LayoutTests/imported/w3c:

Import the latest relevant idl definitions and new idlharness-shadowrealm tests

  • web-platform-tests/dom/idlharness-shadowrealm.window-expected.txt:
  • web-platform-tests/dom/idlharness.any.serviceworker-expected.txt:
  • web-platform-tests/dom/idlharness.any.sharedworker-expected.txt:
  • web-platform-tests/dom/idlharness.any.worker-expected.txt:
  • web-platform-tests/dom/idlharness.window-expected.txt:
  • web-platform-tests/encoding/idlharness-shadowrealm.window-expected.txt: Added.
  • web-platform-tests/encoding/idlharness-shadowrealm.window.html: Added.
  • web-platform-tests/encoding/idlharness-shadowrealm.window.js: Added.
  • web-platform-tests/hr-time/idlharness-shadowrealm.window-expected.txt: Added.
  • web-platform-tests/hr-time/idlharness-shadowrealm.window.html: Added.
  • web-platform-tests/hr-time/idlharness-shadowrealm.window.js: Added.
  • web-platform-tests/html/dom/idlharness-shadowrealm.window-expected.txt: Added.
  • web-platform-tests/html/dom/idlharness-shadowrealm.window.html: Added.
  • web-platform-tests/html/dom/idlharness-shadowrealm.window.js: Added.
  • web-platform-tests/interfaces/compression.idl:
  • web-platform-tests/interfaces/dom.idl:
  • web-platform-tests/interfaces/encoding.idl:
  • web-platform-tests/interfaces/hr-time.idl:
  • web-platform-tests/interfaces/html.idl:
  • web-platform-tests/interfaces/performance-timeline.idl:
  • web-platform-tests/interfaces/streams.idl:
  • web-platform-tests/interfaces/url.idl:
  • web-platform-tests/interfaces/user-timing.idl:
  • web-platform-tests/performance-timeline/idlharness-shadowrealm.window-expected.txt: Added.
  • web-platform-tests/performance-timeline/idlharness-shadowrealm.window.html: Added.
  • web-platform-tests/performance-timeline/idlharness-shadowrealm.window.js: Added.
  • web-platform-tests/resources/idlharness-shadowrealm.js:

(promise_setup.):
(idl_test_shadowrealm):
(promise_setup): Deleted.

  • web-platform-tests/resources/idlharness.js:

(IdlInterface.prototype.test_self):

  • web-platform-tests/streams/idlharness-shadowrealm.window-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/idlharness.any-expected.txt.
  • web-platform-tests/streams/idlharness-shadowrealm.window.html: Added.
  • web-platform-tests/streams/idlharness-shadowrealm.window.js: Added.
  • web-platform-tests/streams/idlharness.any-expected.txt:
  • web-platform-tests/streams/idlharness.any.serviceworker-expected.txt:
  • web-platform-tests/streams/idlharness.any.worker-expected.txt:
  • web-platform-tests/url/idlharness-shadowrealm.window-expected.txt: Added.
  • web-platform-tests/url/idlharness-shadowrealm.window.html: Added.
  • web-platform-tests/url/idlharness-shadowrealm.window.js: Added.
  • web-platform-tests/user-timing/idlharness-shadowrealm.window-expected.txt: Added.
  • web-platform-tests/user-timing/idlharness-shadowrealm.window.html: Added.
  • web-platform-tests/user-timing/idlharness-shadowrealm.window.js: Added.

Source/WebCore:

Mark a handful of web APIs as Exposed=*, making them visible in shadow
realm contexts. The existence of these APIs is checked by new idlharness-shadowrealm
tests in WPT, which have been imported.

Safety: I looked at the implementation of the interfaces that are exposed here and
some of them interact with the scriptExecutionContext() of the calling global scope--
since shadow realms pass that context through unchanged, nothing should go dramatically wrong.

I'm planning on adding more comprehensive testing in WPT shortly.

There's one bug currently which is that AbortSignal.timeout is exposed
on shadow realms but shouldn't be. It will only be exposed when the
incubating realm is a worker or window, which is good since it should still
work there, but it's just not supported in the spec; I'll submit a patch after
this to fix; the problem is that the script execution context in a shadow realm
does not return true for isShadowRealmGlobalScope

Also required adjustment to CodeGeneratorJS.pm since it refused to
generate a runtime check when a member is exposed less than the interface it
appears on *and* in more than one scope.

Tests: imported/w3c/web-platform-tests/encoding/idlharness-shadowrealm.window.html

imported/w3c/web-platform-tests/hr-time/idlharness-shadowrealm.window.html
imported/w3c/web-platform-tests/html/dom/idlharness-shadowrealm.window.html
imported/w3c/web-platform-tests/performance-timeline/idlharness-shadowrealm.window.html
imported/w3c/web-platform-tests/streams/idlharness-shadowrealm.window.html
imported/w3c/web-platform-tests/url/idlharness-shadowrealm.window.html
imported/w3c/web-platform-tests/user-timing/idlharness-shadowrealm.window.html

  • Modules/streams/ByteLengthQueuingStrategy.idl:
  • Modules/streams/CountQueuingStrategy.idl:
  • Modules/streams/ReadableByteStreamController.idl:
  • Modules/streams/ReadableStream.idl:
  • Modules/streams/ReadableStreamBYOBReader.idl:
  • Modules/streams/ReadableStreamBYOBRequest.idl:
  • Modules/streams/ReadableStreamDefaultController.idl:
  • Modules/streams/ReadableStreamDefaultReader.idl:
  • Modules/streams/TransformStream.idl:
  • Modules/streams/TransformStreamDefaultController.idl:
  • Modules/streams/WritableStream.idl:
  • Modules/streams/WritableStreamDefaultController.idl:
  • Modules/streams/WritableStreamDefaultWriter.idl:
  • bindings/scripts/CodeGeneratorJS.pm:

(IsAlwaysExposedOnInterface):
(GenerateRuntimeEnableConditionalStringForExposeScope):
(GenerateRuntimeEnableConditionalStringForExposed):

  • bindings/scripts/preprocess-idls.pl: Add SharedWorker to list for Exposed=*
  • bindings/scripts/test/JS/JSSharedWorkerGlobalScope.cpp: Fixed after adding SharedWorker to the list for Exposed=*

(WebCore::jsSharedWorkerGlobalScope_ExposedStarConstructorGetter):
(WebCore::JSC_DEFINE_CUSTOM_GETTER):

  • bindings/scripts/test/SharedWorkerGlobalScopeConstructors.idl: Fixed after adding SharedWorker to the list for Exposed=*
  • dom/AbortController.idl:
  • dom/AbortSignal.idl:
  • dom/CustomEvent.idl:
  • dom/ErrorEvent.idl:
  • dom/Event.idl:
  • dom/EventTarget.idl:
  • dom/PromiseRejectionEvent.idl:
  • dom/TextDecoder.idl:
  • dom/TextDecoderStream.idl:
  • dom/TextEncoder.idl:
  • dom/TextEncoderStream.idl:
  • html/DOMURL.idl:
  • html/URLSearchParams.idl:
  • page/Performance.idl:
  • page/PerformanceEntry.idl:
  • page/PerformanceMark.idl:
  • page/PerformanceMeasure.idl:
  • page/PerformanceObserver.idl:
  • page/PerformanceObserverEntryList.idl:
  • page/PerformanceResourceTiming.idl:
  • page/PerformanceServerTiming.idl:
9:18 AM Changeset in webkit [291294] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

[GStreamer] Unreviewed, tentative clang build fix after 248419@main
​https://bugs.webkit.org/show_bug.cgi?id=237897

Adds static_cast to avoid "non-const-expression cannot be narrowed"
error.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::pushDMABufToCompositor):

9:13 AM Changeset in webkit [291293] by Antti Koivisto
  • 30 edits
    2 adds in trunk/LayoutTests/imported/w3c

[CSS Container Queries] Some more WPT updates
​https://bugs.webkit.org/show_bug.cgi?id=237890

Reviewed by Antoine Quint.

  • web-platform-tests/css/css-contain/container-queries/canvas-as-container-005.html:
  • web-platform-tests/css/css-contain/container-queries/canvas-as-container-006.html:
  • web-platform-tests/css/css-contain/container-queries/chrome-legacy-skip-recalc.html:
  • web-platform-tests/css/css-contain/container-queries/container-computed-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-computed.html:
  • web-platform-tests/css/css-contain/container-queries/container-parsing-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-parsing.html:
  • web-platform-tests/css/css-contain/container-queries/container-type-parsing-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-type-parsing.html:
  • web-platform-tests/css/css-contain/container-queries/container-units-animation-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-units-animation.html:
  • web-platform-tests/css/css-contain/container-queries/container-units-basic.html:
  • web-platform-tests/css/css-contain/container-queries/container-units-computational-independence-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-units-computational-independence.html:
  • web-platform-tests/css/css-contain/container-queries/container-units-invalidation-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-units-invalidation.html:
  • web-platform-tests/css/css-contain/container-queries/container-units-selection.html:
  • web-platform-tests/css/css-contain/container-queries/container-units-small-viewport-fallback.html:
  • web-platform-tests/css/css-contain/container-queries/container-units-typed-om-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-units-typed-om.html:
  • web-platform-tests/css/css-contain/container-queries/display-none-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/display-none.html:
  • web-platform-tests/css/css-contain/container-queries/fragmented-container-001.html:
  • web-platform-tests/css/css-contain/container-queries/multicol-container-001.html:
  • web-platform-tests/css/css-contain/container-queries/sibling-layout-dependency-expected.txt: Added.
  • web-platform-tests/css/css-contain/container-queries/sibling-layout-dependency.html: Added.
  • web-platform-tests/css/css-contain/container-queries/svg-foreignobject-no-size-container.html:
  • web-platform-tests/css/css-contain/container-queries/svg-root-size-container.html:
  • web-platform-tests/css/css-contain/container-queries/table-inside-container-changing-display.html:
  • web-platform-tests/css/css-contain/container-queries/w3c-import.log:
  • web-platform-tests/css/css-contain/container-queries/whitespace-update-after-removal.html:
8:38 AM Changeset in webkit [291292] by Jonathan Bedard
  • 4 edits in trunk/Tools

[Merge-Queue] Fail draft PRs
​https://bugs.webkit.org/show_bug.cgi?id=237859
<rdar://problem/90277316>

Reviewed by Aakash Jain.

We should never merge a draft pull request.

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

(MergeQueueFactory.init): Verify that provided change is not a draft.

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

(GitHubMixin._is_pr_draft): Check if pr_json indicates a draft PR.
(ValidateChange.init): Accept verifyNoDraft flag.
(ValidateChange.start):
(ValidateChange.fail_build):
(ValidateChange.validate_github): Fail the build if the provided PR is a draft.

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

Canonical link: ​https://commits.webkit.org/248431@main

8:26 AM Changeset in webkit [291291] by Matteo Flores
  • 2 edits in trunk/LayoutTests

A combination of scrolling and a content change can leave a fixed layer in the wrong place
​https://bugs.webkit.org/show_bug.cgi?id=203112

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
8:23 AM Changeset in webkit [291290] by eocanha@igalia.com
  • 8 edits in trunk/Source/WebCore

[GStreamer] clarify playback errors with MediaError.message
​https://bugs.webkit.org/show_bug.cgi?id=237602

Reviewed by Philippe Normand.

This patch is co-authored by Eugene Mutavchi <​Ievgen_Mutavchi@comcast.com>
See: ​https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/797

  • html/HTMLMediaElement.cpp: Use internal last error message from the player, if available.
  • platform/graphics/MediaPlayer.cpp: Cache the last error message from the player private and update it when NetworkState changes to an error state. This allows the player private to be regenerated (as it has always been) while providing access to the former player private error after that.
  • platform/graphics/MediaPlayer.h: Added lastErrorMessage() method to get the last internal error message from the player private.
  • platform/graphics/MediaPlayerPrivate.h: Default lastErrorMessage() empty implementation.
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: Detect decryption and no-key errors.
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: Added errorMessage() to expose the internal error message.
  • platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp: Post multiple kind of errors to the GstBus to notify upper layers instead of just logging them.
8:02 AM Changeset in webkit [291289] by Matteo Flores
  • 2 edits in trunk/LayoutTests

Implement ElementInternals
​https://bugs.webkit.org/show_bug.cgi?id=197960

Unreviewed test gardening.

  • platform/ipad/TestExpectations:
7:49 AM Changeset in webkit [291288] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[GPU Process] Test failures in writing modes
​https://bugs.webkit.org/show_bug.cgi?id=236921

Unreviewed test gardening.

  • gpu-process/TestExpectations:
7:25 AM Changeset in webkit [291287] by Wenson Hsieh
  • 5 edits in trunk/Source

[macOS] Tooltip no longer disappears after leaving hovered element
​https://bugs.webkit.org/show_bug.cgi?id=237815
rdar://90187247

Reviewed by Tim Horton.

Source/WebKit:

On certain versions of macOS, AppKit's tooltip management system installs tracking areas (NSTrackingArea) using
-addTrackingArea: instead of tracking rects. This breaks our existing mechanism for keeping track of the
current tracking rect owner by overriding -addTrackingRect:owner:userData:assumeInside: (which assumes that
the only client that adds tracking rects is the tooltip manager). Since -addTrackingRect: isn't called,
m_trackingRectOwner remains nil, which causes both sendToolTipMouseExited() and sendToolTipMouseEntered()
to be no-ops.

To fix this, in the case where m_trackingRectOwner is nil, we instead fall back on -[WKWebView trackingAreas]
and look for an NSTrackingArea that's owned by AppKit's NSToolTipManager. We then send fake mouse enter/exit
events to this owner, the same way as we currently do.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::addTrackingRect):
(WebKit::WebViewImpl::addTrackingRectWithTrackingNum):
(WebKit::WebViewImpl::addTrackingRectsWithTrackingNums):
(WebKit::WebViewImpl::toolTipTrackingAreaOwner const):
(WebKit::WebViewImpl::sendToolTipMouseExited):
(WebKit::WebViewImpl::sendToolTipMouseEntered):

Source/WebKitLegacy/mac:

Apply the same fix to legacy WebKit; see WebKit/ChangeLog for more information.

  • WebView/WebHTMLView.mm:

Also wrap the owner in a WeakObjCPtr to avoid the possibility of calling methods on deallocated instances.

(-[WebHTMLView _toolTipOwnerForSendingMouseEvents]):
(-[WebHTMLView _sendToolTipMouseExited]):
(-[WebHTMLView _sendToolTipMouseEntered]):

7:16 AM Changeset in webkit [291286] by Antti Koivisto
  • 9 edits in trunk

CSSConditionRule.conditionText should be readonly
​https://bugs.webkit.org/show_bug.cgi?id=237880

Reviewed by Antoine Quint.

LayoutTests/imported/w3c:

  • web-platform-tests/interfaces/css-conditional.idl:

Source/WebCore:

Per CSSWG resolution ​https://github.com/w3c/csswg-drafts/issues/6819#issuecomment-1016695585

This also matches Blink.

  • css/CSSConditionRule.h:
  • css/CSSConditionRule.idl:
  • css/CSSMediaRule.cpp:

(WebCore::CSSMediaRule::setConditionText): Deleted.

  • css/CSSMediaRule.h:
  • css/CSSSupportsRule.cpp:

(WebCore::CSSSupportsRule::setConditionText): Deleted.

  • css/CSSSupportsRule.h:
6:57 AM Changeset in webkit [291285] by Matteo Flores
  • 2 edits in trunk/LayoutTests

REGRESSION: [ iOS release wk2 ] compositing/debug-borders-dynamic.html is a flaky image failure
​https://github.com/Smackteo

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
6:21 AM Changeset in webkit [291284] by youenn@apple.com
  • 7 edits in trunk

Mark permission as denied if system forbids access to camera and/or microphone
​https://bugs.webkit.org/show_bug.cgi?id=237823

Reviewed by Eric Carlson.

Source/WebKit:

If application has not set the camera/microphone usage string, we do not need to call ther permission delegate.
Ditto if TCC prompt is denied. Instead, we can return deny if possible or prompt otherwise.
Covered by API test.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/WebPageProxy.cpp:

Tools:

  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm:
  • TestWebKitAPI/Tests/WebKit/getUserMediaPermission.html:
5:40 AM Changeset in webkit [291283] by eocanha@igalia.com
  • 3 edits in trunk/Source/WebCore

[GStreamer][MSE] add ac-3,ec-3 and flac codecs gst caps
​https://bugs.webkit.org/show_bug.cgi?id=237843

Reviewed by Philippe Normand.

AC-3, EC-3 and FLAC formats should be supported on MSE and EME on those
platforms having the appropriate decoders for them.

This patch adds the appropriate mime types, factories and caps to the
set of codecs whose local support will be tested on MSE.

This patch is authored by Eugene Mutavchi <​Ievgen_Mutavchi@comcast.com>
See: ​https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/804

  • platform/graphics/gstreamer/GStreamerRegistryScanner.cpp: Add support for the codecs, factories and caps.
  • platform/graphics/gstreamer/eme/WebKitThunderDecryptorGStreamer.cpp: Add support for the caps.
4:40 AM Changeset in webkit [291282] by graouts@webkit.org
  • 5 edits
    4 adds in trunk

Dialog element only animates once
​https://bugs.webkit.org/show_bug.cgi?id=236274

Reviewed by Dean Jackson, Tim Nguyen and Antti Koivisto.

LayoutTests/imported/w3c:

Import relevant WPT tests that had already been upstreamed in a previous, reverted
version of this patch.

  • web-platform-tests/css/css-animations/dialog-animation-expected.txt: Added.
  • web-platform-tests/css/css-animations/dialog-animation.html: Added.
  • web-platform-tests/css/css-animations/dialog-backdrop-animation-expected.txt: Added.
  • web-platform-tests/css/css-animations/dialog-backdrop-animation.html: Added.
  • web-platform-tests/css/css-animations/support/testcommon.js:

(addElement):
(addDiv):

Source/WebCore:

Two issues related to CSS Animation surfaced in this bug which animates both <dialog>
and its ::backdrop as the dialog is open and eventually re-opened.

The first issue was that we didn't clear all CSS Animations state when a <dialog> was
closed and its style was set to display: none. We now call setAnimationsCreatedByMarkup
to correctly clear such state both when we identify a Styleable is newly getting
display: none. We do the same when cancelDeclarativeAnimations() is called, but also
call setCSSAnimationList() on the associated effect stack since that wasn't done either.
Now both functions do similar cleanup.

This allows us to remove removeCSSAnimationCreatedByMarkup() which did a fair bit of work
to clear CSS Animation state per-animation when we only ever used that function for
_all_ animations.

The second issue was that we never called cancelDeclarativeAnimations() for ::backdrop.
We now do that inside of Element::removeFromTopLayer() at a point where the code in
Styleable::fromRenderer() will still work as the element will still be contained in
Document::topLayerElements().

Tests: imported/w3c/web-platform-tests/css/css-animations/dialog-animation.html

imported/w3c/web-platform-tests/css/css-animations/dialog-backdrop-animation.html

  • dom/Element.cpp:

(WebCore::Element::removeFromTopLayer):

  • style/Styleable.cpp:

(WebCore::Styleable::cancelDeclarativeAnimations const):
(WebCore::Styleable::updateCSSAnimations const):
(WebCore::removeCSSAnimationCreatedByMarkup): Deleted.

4:01 AM Changeset in webkit [291281] by gnavamarino@apple.com
  • 3 edits
    2 adds in trunk

Crash in KeyframeList.cpp:183 in WebCore::KeyframeList::fillImplicitKeyframes
​https://bugs.webkit.org/show_bug.cgi?id=237858

Reviewed by Antoine Quint.

Source/WebCore:

When filling implicit key frames, we iterate through the current keyframes (m_keyframes),
and cache the address of the implicitZeroKeyframe and implicitOneKeyframe.

However, if we're not provided with an existing implicit zero keyframe, we will create a new one
and insert it to the list of current keyframes.

This mutates m_keyframes and the old address for the implicitOneKeyframe would no longer be valid.
Thus we should iterate through the current keyframes, after the insertion, to get the latest address.

Test: animations/fill-implicit-keyframes-crash.html

  • rendering/style/KeyframeList.cpp:

(WebCore::KeyframeList::fillImplicitKeyframes):

LayoutTests:

  • animations/fill-implicit-keyframes-crash-expected.txt: Added.
  • animations/fill-implicit-keyframes-crash.html: Added.
3:50 AM Changeset in webkit [291280] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.36/Tools

Merge r290982 - [GTK][WPE] Do not add new modules under ThirdParty to the tarball
​https://bugs.webkit.org/show_bug.cgi?id=237519

Reviewed by Michael Catanzaro.

We currently include ThirdParty and exclude individually what we don't want in the tarball. That means every
time something new is added to ThirdParty we have to manually exclude it. It's better to exclude ThirdParty and
manually add what we need instead.

  • gtk/manifest.txt.in:
  • wpe/manifest.txt.in:
3:00 AM Changeset in webkit [291279] by Carlos Garcia Campos
  • 8 edits in releases/WebKitGTK/webkit-2.36

Merge r291111 - REGRESSION(r284711): [GStreamer] Buffering, seek broken on youtube.com
​https://bugs.webkit.org/show_bug.cgi?id=233861

Unreviewed, manual revert of 284711.

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-10

Source/WebCore:

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::currentTimeFudgeFactor):

  • platform/graphics/SourceBufferPrivate.h:

(WebCore::SourceBufferPrivate::timeFudgeFactor const):

  • platform/graphics/gstreamer/GStreamerCommon.h:

(WebCore::toGstClockTime):

  • platform/graphics/gstreamer/MediaSampleGStreamer.cpp:

(WebCore::MediaSampleGStreamer::MediaSampleGStreamer):

  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::AppendPipeline::appsinkNewSample):
(WebCore::bufferTimeToStreamTime): Deleted.

LayoutTests:

  • platform/glib/imported/w3c/web-platform-tests/media-source/mediasource-remove-expected.txt:
2:53 AM WebKitGTK/2.36.x edited by Carlos Garcia Campos
(diff)
2:35 AM Changeset in webkit [291278] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.36/Source/WebKit

Merge r290890 - [GTK] generate-automation-atom.py breaks reproducible builds
​https://bugs.webkit.org/show_bug.cgi?id=237506

Reviewed by Carlos Garcia Campos.

  • Scripts/generate-automation-atom.py:

(append_functions): Sort utility functions to produce stable output.

2:35 AM Changeset in webkit [291277] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.36/Source/WebCore

Merge r290883 - makeprop.pl breaks reproducible builds
​https://bugs.webkit.org/show_bug.cgi?id=237521

Reviewed by Carlos Garcia Campos.

  • css/makeprop.pl: Sort hash elements so the output file is always

the same across different builds.

2:35 AM Changeset in webkit [291276] by Carlos Garcia Campos
  • 13 edits in releases/WebKitGTK/webkit-2.36/Source

Merge r290681 - Misc compiler warnings, late Feb 2022 edition
​https://bugs.webkit.org/show_bug.cgi?id=237275

Patch by Michael Catanzaro <Michael Catanzaro> on 2022-03-01
Reviewed by Adrian Perez de Castro.

Source/JavaScriptCore:

Suppress suspected false-positive -Wstringop-overflow and -Wformat-overflow warnings. Also,
remove an unused variable.

  • API/tests/MultithreadedMultiVMExecutionTest.cpp:

(startMultithreadedMultiVMExecutionTest):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • ftl/FTLOSRExit.cpp:

(JSC::FTL::OSRExitDescriptor::prepareOSRExitHandle):

  • yarr/YarrJIT.cpp:

Source/WebCore:

Remove a redundant move. Sprinkle RELEASE_ASSERT_NOT_REACHED() as required to avoid
-Wreturn-type warnings.

  • Modules/push-api/PushDatabase.cpp:

(WebCore::openAndMigrateDatabaseImpl):

  • style/ContainerQueryEvaluator.cpp:

(WebCore::Style::ContainerQueryEvaluator::evaluateCondition const):
(WebCore::Style::ContainerQueryEvaluator::evaluateSizeFeature const):

  • style/ContainerQueryEvaluator.h:

(WebCore::Style::operator!):

  • style/StyleScope.cpp:

(WebCore::Style::Scope::updateQueryContainerState):

Source/WebKit:

Delete an unused function. Remove a redundant move.

  • Shared/AuxiliaryProcess.cpp:

(WebKit::applySandboxProfileForDaemon): Deleted.

  • Shared/WebFoundTextRange.cpp:

(WebKit::WebFoundTextRange::decode):

2:05 AM Changeset in webkit [291275] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.36

Merge r290597 - -Wodr warning spam caused by ENABLE(BINDING_INTEGRITY)
​https://bugs.webkit.org/show_bug.cgi?id=229867
<rdar://problem/82975115>

Patch by Michael Catanzaro <Michael Catanzaro> on 2022-02-28
Reviewed by Carlos Garcia Campos.

Build WebKit with -Wno-odr. This warning is not salvagable, and it's impossible to suppress
locally.

  • Source/cmake/WebKitCompilerFlags.cmake:

2022-02-24 Matt Woodrow <Matt Woodrow>

Unreviewed, update my (Matt Woodrow) status to committer.

  • metadata/contributors.json:
2:04 AM Changeset in webkit [291274] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.36

Merge r290724 - REGRESSION(r216096): [GTK] Test accessibility/gtk/menu-list-unfocused-notifications.html is failing since r216096
​https://bugs.webkit.org/show_bug.cgi?id=171598

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Enable accessibility when a WTR observer is added.

  • accessibility/atspi/AccessibilityAtspi.cpp:

(WebCore::AccessibilityAtspi::addNotificationObserver):

LayoutTests:

Since r216096 the notification for menu list changes is deffered, so we need to wait one run loop cycle to get
the notifications. Also update the test to ignore notifications that are not interesting like AXLoadComplete and
AXElementBusyChanged, and update expectations for the new behavior with ATSPI where the notification is emitted
on the menu and not the combo.

  • accessibility/gtk/menu-list-unfocused-notifications-expected.txt:
  • accessibility/gtk/menu-list-unfocused-notifications.html:
  • platform/gtk/TestExpectations:
2:04 AM Changeset in webkit [291273] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.36/LayoutTests

Merge r290723 - [ATSPI] Test accessibility/select-element-at-index.html is failing
​https://bugs.webkit.org/show_bug.cgi?id=237315

Reviewed by Adrian Perez de Castro.

This is because the test contains platform specific behavior for ATK that was migrated to ATSPI by mistake. We
should behave like all other ports now.

  • accessibility/select-element-at-index.html:
  • platform/glib/TestExpectations:
2:04 AM Changeset in webkit [291272] by Carlos Garcia Campos
  • 10 edits
    4 deletes in releases/WebKitGTK/webkit-2.36

Merge r290633 - [ATSPI] Remove layout tests checking children added/removed notifications
​https://bugs.webkit.org/show_bug.cgi?id=237272

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Do not send children-changed notifications to WTR observers.

  • accessibility/atspi/AccessibilityAtspi.cpp:

(WebCore::AccessibilityAtspi::childrenChanged):
(WebCore::AccessibilityAtspi::notifyChildrenChanged const): Deleted.

  • accessibility/atspi/AccessibilityAtspi.h:

LayoutTests:

Children changed notifications are not expected by any other tests because other ports don't support them. We
already have unit tests to ensure they work as expected so we can just remove the layout tests and ensure we
don't emit those notifications either.

  • accessibility/children-changed-sends-notification-expected.txt: Removed.
  • accessibility/children-changed-sends-notification.html: Removed.
  • accessibility/gtk/menu-list-unfocused-notifications-expected.txt:
  • accessibility/gtk/no-notification-for-unrendered-iframe-children-expected.txt: Removed.
  • accessibility/gtk/no-notification-for-unrendered-iframe-children.html: Removed.
  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
  • platform/wincairo-wk1/TestExpectations:
2:04 AM Changeset in webkit [291271] by Carlos Garcia Campos
  • 11 edits in releases/WebKitGTK/webkit-2.36

Merge r290502 - AX: List item marker not exposed when not a direct child of a list item
​https://bugs.webkit.org/show_bug.cgi?id=236777
<rdar://problem/89082485>

Reviewed by Adrian Perez de Castro.

Source/WebCore:

It can happen that the marker is not a direct child of a list item, in which case the marker is ignored and not
exposed to ATs.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::parentObjectUnignored const): In case of list marker find the marker list item.
(WebCore::AccessibilityRenderObject::markerRenderer const): Helper to return the list item marker renderer.
(WebCore::AccessibilityRenderObject::addListItemMarker): Add always the list item marker as the first child of
list items.
(WebCore::AccessibilityRenderObject::addChildren): Do not add list item marker children, they will be added to
the right parent in addListItemMarker().

  • accessibility/AccessibilityRenderObject.h:

Tools:

  • WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:

(WTR::roleValueToString): Return AXStatic for Text role too.

LayoutTests:

Update test results.

  • accessibility/gtk/list-items-always-exposed-expected.txt:
  • accessibility/gtk/list-items-always-exposed.html:
  • accessibility/gtk/spans-expected.txt:
  • accessibility/gtk/spans.html:
  • platform/gtk/TestExpectations:
1:55 AM Changeset in webkit [291270] by commit-queue@webkit.org
  • 10 edits
    7 adds in trunk/Source/WebCore

[GTK][WPE] Provide DMABuf-based composition layers, DMABufVideoSink integration
​https://bugs.webkit.org/show_bug.cgi?id=237328

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-03-15
Reviewed by Alejandro G. Castro.

Introduce TextureMapperPlatformLayerProxyDMABuf, a TextureMapper proxy
implementation that handles platform layers backed by dmabuf objects.
This will be used to handle display of dmabuf producers like GStreamer
pipelines or ANGLE-backed WebGL contexts. The DMABufLayer class is the
platform layer object, handling display of the actual dmabuf. The proxy
itself is tasked with creating and caching such layers for any dmabuf
object that originates from the producer.

For each dmabuf object pushed into the proxy, the according DMABufLayer
object is spawned and cached for future reuse, expecting the producer
to be able to provide dmabufs from a pool or swapchain of these objects.
The cache is emptied whenever dmabufs go unused for a certain amount of
swaps, or if the size of the provided dmabufs changes.

DMABufFormat provides information for different DRM formats, for
instance how different planes for specific formats are formatted and
sized.

DMABufObject is a class that handles a given grouping of dmabufs
according to the specified format. It has an associated handle value,
size, and per-plane dmabuf file descriptors, offsets, strides and
modifiers, along with a DMABufReleaseFlag instance.

DMABufReleaseFlag objects are used as an eventfd-based release mechanism
that indicates to the producer that the given DMABufObject has been
presented and subsequently released and is thus available for reuse.

GBMBufferSwapchain provides a custom swapchain implementation that's
based on libgbm functionality. Each such swapchain has a capacity
specified during construction, with the capacities of four or eight
currently supported. getBuffer() is called by the producer to obtain a
buffer object that's then used for backing of specific content like
ANGLE execution or media's software-decoded video frames. Buffers
obtained this way are moved over to the end of the buffer array, with
the expectation of reusing them once they are released by the
composition engine.

MediaPlayerPrivateGStreamer implementation is enhanced to use the
recently-added WebKitDMABufVideoSink element if its use is enabled
through the development-purpose environment variable and if the
necessary GStreamer facilities are present on the system. When these
conditions are met, the Nicosia::ContentLayer instance is also
constructed with a TextureMapperPlatformLayerProxyDMABuf instance, since
we expect to present the dmabufs through that functionality.

With the WebKitDMABufVideoSink, the incoming samples are either based
on dmabufs (in case of dmabuf-capable hardware decoder) or are just raw
data (most likely coming from a software-based decoder). In case of
dmabufs we can use the GstMemory pointer as the handle through which
the relevant data is cached in TextureMapperPlatformLayerProxyDMABuf,
and upon the first occurrence we retrieve all the relevant dmabuf data
so that it can be used by that proxy implementation to construct a
renderable EGLImage.

In case of software-decoded raw data, we have to use the swapchain
object and copy the data on a per-plane basis for each such sample,
finally pushing the dmabuf data of that swapchain buffer into the
TextureMapperPlatformLayerProxyDMABuf instance.

  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • platform/TextureMapper.cmake:
  • platform/graphics/gbm/DMABufFormat.h: Added.

(WebCore::DMABufFormatImpl::createFourCC):
(WebCore::DMABufFormat::planeWidth const):
(WebCore::DMABufFormat::planeHeight const):
(WebCore::DMABufFormat::Plane::Plane):
(WebCore::DMABufFormatImpl::createSinglePlaneRGBA):
(WebCore::DMABufFormatImpl::definePlane):
(WebCore::DMABufFormat::instantiate):
(WebCore::DMABufFormat::create):

  • platform/graphics/gbm/DMABufObject.h: Added.

(WebCore::DMABufObject::DMABufObject):
(WebCore::DMABufObject::~DMABufObject):
(WebCore::DMABufObject::operator=):

  • platform/graphics/gbm/DMABufReleaseFlag.h: Added.

(WebCore::DMABufReleaseFlag::DMABufReleaseFlag):
(WebCore::DMABufReleaseFlag::~DMABufReleaseFlag):
(WebCore::DMABufReleaseFlag::operator=):
(WebCore::DMABufReleaseFlag::dup const):
(WebCore::DMABufReleaseFlag::released const):
(WebCore::DMABufReleaseFlag::release):

  • platform/graphics/gbm/GBMBufferSwapchain.cpp: Added.

(WebCore::GBMBufferSwapchain::GBMBufferSwapchain):
(WebCore::GBMBufferSwapchain::getBuffer):
(WebCore::GBMBufferSwapchain::Buffer::Buffer):
(WebCore::GBMBufferSwapchain::Buffer::createDMABufObject const):
(WebCore::GBMBufferSwapchain::Buffer::PlaneData::~PlaneData):

  • platform/graphics/gbm/GBMBufferSwapchain.h: Added.

(WebCore::GBMBufferSwapchain::Buffer::handle const):
(WebCore::GBMBufferSwapchain::Buffer::numPlanes const):
(WebCore::GBMBufferSwapchain::Buffer::planeData const):

  • platform/graphics/gstreamer/DMABufVideoSinkGStreamer.cpp:

(webKitDMABufVideoSinkIsEnabled):
(webKitDMABufVideoSinkSetMediaPlayerPrivate):

  • platform/graphics/gstreamer/DMABufVideoSinkGStreamer.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::platformLayer const):
(WebCore::fourccValue):
(WebCore::MediaPlayerPrivateGStreamer::pushDMABufToCompositor):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSinkDMABuf):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSink):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp:

(Nicosia::ContentLayerTextureMapperImpl::createFactory):

  • platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.h:
  • platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.cpp: Added.

(WebCore::createImageKHR):
(WebCore::destroyImageKHR):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::DMABufLayer::EGLImageData::~EGLImageData):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::activateOnCompositingThread):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::invalidate):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::swapBuffer):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::pushDMABuf):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::DMABufLayer::DMABufLayer):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::DMABufLayer::paintToTextureMapper):
(WebCore::TextureMapperPlatformLayerProxyDMABuf::DMABufLayer::createEGLImageData):

  • platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.h: Added.
12:52 AM Changeset in webkit [291269] by youenn@apple.com
  • 45 edits
    1 move in trunk/Source

Rename VideoSampleMetadata to VideoFrameTimeMetadata
​https://bugs.webkit.org/show_bug.cgi?id=237593

Reviewed by Eric Carlson.

Source/WebCore:

We are going to rename videoSampleAvailable to videoFrameAvailable and move from passing MediaSample to VideoFrame.
We rename VideoSampleMetadata to VideoFrameTimeMetadata for consistency.
No change of behavior.

  • Headers.cmake:
  • Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:

(WebCore::CanvasCaptureMediaStreamTrack::Source::captureCanvas):

  • WebCore.xcodeproj/project.pbxproj:
  • platform/VideoFrameTimeMetadata.h: Renamed from Source/WebCore/platform/VideoSampleMetadata.h.

(WebCore::VideoFrameTimeMetadata::encode const):
(WebCore::VideoFrameTimeMetadata::decode):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::videoSampleAvailable):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::processNewVideoSample):

  • platform/graphics/gstreamer/MediaSampleGStreamer.cpp:

(WebCore::MediaSampleGStreamer::MediaSampleGStreamer):
(WebCore::MediaSampleGStreamer::createImageSample):

  • platform/graphics/gstreamer/MediaSampleGStreamer.h:

(WebCore::MediaSampleGStreamer::create):
(WebCore::MediaSampleGStreamer::createImageSample):

  • platform/graphics/gstreamer/VideoFrameMetadataGStreamer.cpp:

(webkitGstBufferSetVideoFrameTimeMetadata):
(webkitGstBufferSetVideoSampleMetadata): Deleted.

  • platform/graphics/gstreamer/VideoFrameMetadataGStreamer.h:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::videoSampleAvailable):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/MediaRecorderPrivateGStreamer.h:
  • platform/mediarecorder/MediaRecorderPrivateMock.cpp:

(WebCore::MediaRecorderPrivateMock::videoSampleAvailable):

  • platform/mediarecorder/MediaRecorderPrivateMock.h:
  • platform/mediastream/RealtimeIncomingVideoSource.cpp:

(WebCore::RealtimeIncomingVideoSource::metadataFromVideoFrame):

  • platform/mediastream/RealtimeIncomingVideoSource.h:
  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::videoSampleAvailable):

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeOutgoingVideoSource.h:
  • platform/mediastream/RealtimeVideoCaptureSource.cpp:

(WebCore::RealtimeVideoCaptureSource::dispatchMediaSampleToObservers):

  • platform/mediastream/RealtimeVideoCaptureSource.h:
  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::RealtimeVideoSource::videoSampleAvailable):

  • platform/mediastream/RealtimeVideoSource.h:
  • platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:

(WebCore::DisplayCaptureSourceCocoa::emitFrame):

  • platform/mediastream/gstreamer/GStreamerCapturer.cpp:

(WebCore::GStreamerCapturer::createSource):

  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:

(WebCore::MockDisplayCaptureSourceGStreamer::videoSampleAvailable):
(WebCore::MockRealtimeVideoSourceGStreamer::updateSampleBuffer):

  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:
  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.cpp:

(WebCore::RealtimeOutgoingVideoSourceLibWebRTC::videoSampleAvailable):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection):

  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:

(WebCore::MockRealtimeVideoSourceMac::updateSampleBuffer):

  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:

(WebCore::RealtimeOutgoingVideoSourceCocoa::videoSampleAvailable):

  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.h:
  • testing/Internals.cpp:

(WebCore::Internals::videoSampleAvailable):

  • testing/Internals.h:

Source/WebKit:

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::videoSampleAvailable):

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:
  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

(WebKit::RemoteCaptureSampleManager::videoFrameAvailable):
(WebKit::RemoteCaptureSampleManager::videoFrameAvailableCV):
(WebKit::RemoteCaptureSampleManager::RemoteVideo::videoFrameAvailable):

  • WebProcess/cocoa/RemoteCaptureSampleManager.h:
  • WebProcess/cocoa/RemoteCaptureSampleManager.messages.in:
  • WebProcess/cocoa/RemoteRealtimeDisplaySource.h:
  • WebProcess/cocoa/RemoteRealtimeVideoSource.cpp:

(WebKit::RemoteRealtimeVideoSource::videoSampleAvailable):

  • WebProcess/cocoa/RemoteRealtimeVideoSource.h:
12:28 AM Changeset in webkit [291268] by youenn@apple.com
  • 7 edits
    2 adds in trunk

Make sure to end any pending AudioSession interruption when activating it
​https://bugs.webkit.org/show_bug.cgi?id=237654
<rdar://88405081>

Reviewed by Eric Carlson.

Source/WebCore:

In some cases, we receive audio session interruptions without receiving any end of interruption notification.
In those cases, if we reactivate the audio session, we should end this pending interruption so that our WebCore code
gets its expected end of interruption message. This for instance allows to get back regular autoplay behavior.

Test: platform/ios/mediastream/getUserMedia-override-audio-session-interruption.html

  • platform/audio/AudioSession.cpp:
  • platform/audio/AudioSession.h:
  • testing/Internals.cpp:
  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • platform/ios/mediastream/getUserMedia-override-audio-session-interruption-expected.txt: Added.
  • platform/ios/mediastream/getUserMedia-override-audio-session-interruption.html: Added.
12:19 AM Changeset in webkit [291267] by youenn@apple.com
  • 6 edits in trunk

AudioContext stops playing when minimizing or moving the macOS Safari window to the background.
​https://bugs.webkit.org/show_bug.cgi?id=231105
<rdar://problem/83889697>

Reviewed by Eric Carlson.

Source/WebCore:

AudioContext was stopped when minimizing windows if not playing audio as a way to reduce CPU usage.
But this is visible to users (if AudioContext produces audio through a track) or to web pages (use of audio worklet or script processor node).
Remove that code.
Small refactoring to remove isOfflineContext checks that can only be false in AudioContext.

Covered by existing tests.

  • Modules/webaudio/AudioContext.cpp:
  • Modules/webaudio/AudioContext.h:

LayoutTests:

Use internals API to be working on iOS as well (this does not trigger enterBackground code path).

  • webaudio/silent-audio-interrupted-in-background-expected.txt:
  • webaudio/silent-audio-interrupted-in-background.html:

Mar 14, 2022:

9:16 PM Changeset in webkit [291266] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed, gardening crash and timeout
​https://bugs.webkit.org/show_bug.cgi?id=237873

  • platform/glib/TestExpectations:
7:28 PM Changeset in webkit [291265] by Russell Epstein
  • 2 edits in branches/safari-614.1.5.9-branch/Source/WebKit

Cherry-pick r290797. rdar://problem/79198381

WKContentView should explicitly request the system pointer in the fallback case
​https://bugs.webkit.org/show_bug.cgi?id=237410
<rdar://79198381>

Reviewed by Anders Carlsson.

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView pointerRegionForPositionInformation:point:]): (-[WKContentView pointerInteraction:styleForRegion:]): Instead of assuming a nil region and nil style will provide the system pointer, provide a region the size of the WKContentView and explicitly request the system pointer shape.

Also, drive-by adopt the API systemPointerStyle instead of the
deprecated SPI version.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290797 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:13 PM Changeset in webkit [291264] by Russell Epstein
  • 9 edits in branches/safari-614.1.5.9-branch/Source

Versioning.

WebKit-7614.1.5.9.1

7:00 PM Changeset in webkit [291263] by Russell Epstein
  • 1 copy in branches/safari-614.1.5.9-branch

New branch.

6:56 PM Changeset in webkit [291262] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ Mac wk1 ] 8X imported/w3c/web-platform-tests/pointerevents/pointere vent (layout-tests) are flaky text failures (236128)
​https://bugs.webkit.org/show_bug.cgi?id=236128

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations: Disabling test that is believed to cause the others to fail as a test.
6:55 PM Changeset in webkit [291261] by Wenson Hsieh
  • 4 edits in trunk

[Mail compose] Allow copied resources with remote (HTTP/HTTPS) URLs to be pasted as attachments
​https://bugs.webkit.org/show_bug.cgi?id=237810
rdar://90119983

Reviewed by Devin Rousso.

Source/WebCore:

When creating attachments by pasting subresources with remote URLs, Mail compose in shipping macOS inserts such
subresources as attachments, which are sent as MIME parts alongside the rest of the Mail message. However, when
using the WebKit2 client-side attachment API, we currently leave remote (i.e. HTTP-family) URLs as-is, which
means they don't end up being sent as attachments.

I implemented this current behavior in r226340; back then, we opted to preserve the HTTP/HTTPS URL in pasted
resources over falling back to blob URL conversion. However, in order to match legacy Mail compose behavior, we
should've handled it by propagating the data as attachments to the client layer instead.

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::shouldReplaceSubresourceURL):

Tools:

Add an API test to exercise copying remote images and pasting as attachment-backed images. This API test first
loads a web page (simulating page load via HTTPS, along with multiple image subresources); it then pastes into
an attachment-enabled WKWebView-based editor and verifies that the _WKAttachment UI delegate hooks are invoked
with attachments corresponding to each of the remote images.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(TestWebKitAPI::TEST):

6:48 PM Changeset in webkit [291260] by Oriol Brufau
  • 6 edits
    1 copy
    1 add in trunk

[css-cascade] Fix 'revert' on low-priority properties
​https://bugs.webkit.org/show_bug.cgi?id=236272

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Add one test and expect an existing one to pass.

  • web-platform-tests/css/css-cascade/all-prop-revert-layer-noop-expected.txt:
  • web-platform-tests/css/css-cascade/all-prop-revert-noop-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-noop-expected.txt.
  • web-platform-tests/css/css-cascade/all-prop-revert-noop.html: Added.

Source/WebCore:

Some CSS properties are low-priority (a.k.a deferred or applied in parse
order). The logic for the 'revert' keyword was not taking these into
account, so it just behaved as 'unset'.
That made elements like <del>, <ins>, <s> and <u> lose the line-through
or underline thet they get in UA origin, when styled with 'all: revert'
or 'text-decoration: revert'.

This patch takes these properties into account so that 'revert' works.

Tests: imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-noop.html

imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-noop.html

  • style/PropertyCascade.cpp:

(WebCore::Style::PropertyCascade::setDeferred):

  • style/PropertyCascade.h:

(WebCore::Style::PropertyCascade::hasDeferredProperty const):
(WebCore::Style::PropertyCascade::deferredProperty const):

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::applyProperty):

6:40 PM Changeset in webkit [291259] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[macOS] Use sRGB colorspace in ScreenCaptureKitCaptureSource
​https://bugs.webkit.org/show_bug.cgi?id=237855
<rdar://problem/90273792>

Reviewed by Jer Noble.

  • platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:

(WebCore::ScreenCaptureKitCaptureSource::streamConfiguration): Configure
ScreenCaptureKit to capture in kCGColorSpaceSRGB.

5:45 PM Changeset in webkit [291258] by Robert Jenner
  • 3 edits in trunk/LayoutTests

WindowServer returned not alive with context:,unresponsive work processor(s)
<rdar://86037417>

Uneviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
5:42 PM Changeset in webkit [291257] by Oriol Brufau
  • 15 edits in trunk/Source/WebCore

Rename RenderStyle::textDecoration() to RenderStyle::textDecorationLine()
​https://bugs.webkit.org/show_bug.cgi?id=237400

Reviewed by Darin Adler.

Before ​https://webkit.org/b/237175, the text-decoration-line and
text-decoration properties were 2 longhands that shared a computed
value, accessed via RenderStyle::textDecoration().

But now text-decoration is a proper shorthand of text-decoration-line.
So it doesn't make much sense to continue accessing the line via
textDecoration(), it should be textDecorationLine() instead.

Same for RenderStyle::setTextDecoration(), etc.

No tests since it's just a rename, no change in behavior.

  • accessibility/atspi/AccessibilityObjectTextAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::textAttributes const):

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json:
  • rendering/TextDecorationPainter.cpp:

(WebCore::collectStylesForRenderer):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::RenderStyle):
(WebCore::RenderStyle::changeAffectsVisualOverflow const):
(WebCore::RenderStyle::changeRequiresRepaintIfTextOrBorderOrOutline const):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::textDecorationsInEffect const):
(WebCore::RenderStyle::textDecorationLine const):
(WebCore::RenderStyle::addToTextDecorationsInEffect):
(WebCore::RenderStyle::setTextDecorationsInEffect):
(WebCore::RenderStyle::setTextDecorationLine):
(WebCore::RenderStyle::initialTextDecorationLine):
(WebCore::RenderStyle::InheritedFlags::operator== const):
(WebCore::RenderStyle::textDecoration const): Deleted.
(WebCore::RenderStyle::setTextDecoration): Deleted.
(WebCore::RenderStyle::initialTextDecoration): Deleted.

  • rendering/style/RenderStyleConstants.h:
  • rendering/style/StyleVisualData.cpp:

(WebCore::StyleVisualData::StyleVisualData):

  • rendering/style/StyleVisualData.h:

(WebCore::StyleVisualData::operator== const):

  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::findRendererDefininingTextDecoration):

  • style/InlineTextBoxStyle.cpp:

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

  • style/StyleAdjuster.cpp:

(WebCore::Style::Adjuster::adjust const):

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertTextDecorationLine):
(WebCore::Style::BuilderConverter::convertTextDecoration): Deleted.

5:17 PM Changeset in webkit [291256] by gnavamarino@apple.com
  • 2 edits in trunk

Add myself (Gabriel Nava Marino) to contributors.json
​https://bugs.webkit.org/show_bug.cgi?id=237634

Unreviewed.

  • metadata/contributors.json:
3:39 PM Changeset in webkit [291255] by mark.lam@apple.com
  • 4 edits
    1 add in trunk/Source/WTF

Enhance StackCheck debugging support and bump up the ASAN reserved zone size.
​https://bugs.webkit.org/show_bug.cgi?id=237805

Reviewed by Robin Morisset.

  1. Apply the ASAN multiplier to StackBound::DefaultReservedZone instead of just in the StackCheck class. This ensures that all stack checks using this default value gets the necessary bump for ASAN as well.

Also bump the ASAN multipler from 2 to 3. We have evidence that an ASAN Debug
build inflates stack usage more than 2x over a non-ASAN Debug build.

  1. Enhance the StackCheck class to dump some debugging information when VERIFY_STACK_CHECK_RESERVED_ZONE_SIZE is enabled.
  • WTF.xcodeproj/project.pbxproj:
  • wtf/StackBounds.h:
  • wtf/StackCheck.cpp: Added.

(WTF::StackCheck::Scope::reportVerificationFailureAndCrash):

  • wtf/StackCheck.h:

(WTF::StackCheck::Scope::Scope):
(WTF::StackCheck::Scope::~Scope):
(WTF::StackCheck::StackCheck):

3:13 PM Changeset in webkit [291254] by Stephanie Lewis
  • 3 copies
    2 adds in trunk/Tools/Scripts/webkitpy/benchmark_runner/data/plans

Update Speedometer plan files.
rdar://89648567 (Use Speedometer 2.1 on perf bots)

Reviewed by NOBODY (OOPS!).

Create speedometer plan files for each version of speedometer.
Symlink shortcuts speedometer and speedometer2 to point at speedometer2.1

  • Scripts/webkitpy/benchmark_runner/data/plans/speedometer1.0.plan: Copied from Tools/Scripts/webkitpy/benchmark_runner/data/plans/speedometer.plan.
  • Scripts/webkitpy/benchmark_runner/data/plans/speedometer2.0.plan: Copied from Tools/Scripts/webkitpy/benchmark_runner/data/plans/speedometer2.plan.
  • Scripts/webkitpy/benchmark_runner/data/plans/speedometer2.1.plan: Copied from Tools/Scripts/webkitpy/benchmark_runner/data/plans/speedometer2.plan.

T Tools/Scripts/webkitpy/benchmark_runner/data/plans/speedometer.plan: T Tools/Scripts/webkitpy/benchmark_runner/data/plans/speedometer2.plan

3:02 PM Changeset in webkit [291253] by Wenson Hsieh
  • 6 edits
    1 add in trunk

[Mail Compose] Spelling and grammar context menu items need custom identifiers
​https://bugs.webkit.org/show_bug.cgi?id=237804
rdar://90124049

Reviewed by Aditya Keerthi.

Source/WebKit:

Introduce several new context menu item identifier strings that correspond to the default spelling and grammar
menu items that appear when showing the context menu for editable content, such that Mail can replace or
customize behaviors around these items in compose, via WKUIDelegate.

Test: ContextMenuTests.ProposedMenuContainsSpellingMenu

  • UIProcess/API/Cocoa/WKMenuItemIdentifiers.mm:
  • UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
  • UIProcess/mac/WebContextMenuProxyMac.mm:

(WebKit::menuItemIdentifier):

Tools:

Add a new API test to exercise the new identifiers.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/mac/ContextMenuTests.mm: Added.

(-[NSMenu itemWithIdentifier:]):
(TestWebKitAPI::TEST):

2:59 PM Changeset in webkit [291252] by Jonathan Bedard
  • 3 edits in trunk/Tools

[EWS] Clean up PR branches and remotes
​https://bugs.webkit.org/show_bug.cgi?id=237714
<rdar://problem/88771970>

Reviewed by Aakash Jain.

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

(ShellMixin.shell_command): Use sh on Windows.
(CleanGitRepo.run): Delete all non-origin remote and all unused branches.

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

Canonical link: ​https://commits.webkit.org/248404@main

2:14 PM Changeset in webkit [291251] by Elliott Williams
  • 2 edits in trunk/Source/bmalloc

bmalloc.xcodeproj: Remove duplicate file reference
​https://bugs.webkit.org/show_bug.cgi?id=237845

Reviewed by Simon Fraser.

pas_thread_local_cache_layout_node_kind.h was listed twice in the same group, probably due
to a merge conflict resolution typo. Dedupe it.

  • bmalloc.xcodeproj/project.pbxproj:
1:44 PM Changeset in webkit [291250] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.11

Tag Safari-614.1.5.11.

1:23 PM Changeset in webkit [291249] by Elliott Williams
  • 4 edits
    1 delete in trunk/Source/ThirdParty/libwebrtc

Unreviewed, reverting r291239.

Some builds failing with "fatal error:
'absl/utility/utility.h' file not found"

Reverted changeset:

"Reland "[XCBuild] libwebrtc's headers are copied via rsync
and do not emit task outputs""
​https://bugs.webkit.org/show_bug.cgi?id=237112
​https://commits.webkit.org/r291239

1:22 PM Changeset in webkit [291248] by Russell Epstein
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.11

1:15 PM Changeset in webkit [291247] by Russell Epstein
  • 1 copy in branches/safari-614.1.6-branch

New branch.

1:14 PM Changeset in webkit [291246] by Russell Epstein
  • 9 edits in trunk/Source

Versioning.

WebKit-7614.1.7

12:36 PM Changeset in webkit [291245] by graouts@webkit.org
  • 12 edits in trunk

[model] <model interactive> doesn't allow model to be rotated on iOS
​https://bugs.webkit.org/show_bug.cgi?id=237831
rdar://89698247

Reviewed by Simon Fraser.

Source/WebCore:

A <model> element is *not* interactive by default and the "interactive" HTML attribute
must be set explicitly. We used to mirror this initial disabled state by explicitly
setting "userInteractionEnabled" to NO on WKModelView during its creation, and we would
update that property when HTMLModelElement::isInteractive() would change value.

However, in the case where the attribute was originally set, we would completely
disregard that value.

We now account for it when we create the GraphicsLayer for the <model> element, letting the
existing GraphicsLayer machinery to set the matching "userInteractionEnabled" property on
the WKModelView.

  • Modules/model-element/HTMLModelElement.h:
  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::setContentsToModel):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setContentsToModel):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateConfiguration):

Source/WebKit:

Remove the call to set userInteractionEnabled on the WKModelView when created. This property
is now set via the layer tree application code from the GraphicsLayer::userInteractionEnabled()
value.

  • UIProcess/ios/WKModelView.mm:

(-[WKModelView initWithModel:]):

LayoutTests:

Add a test where the <model> element is added to the DOM with the "interactive"
HTML attribute already set.

  • model-element/model-element-interactive-dragging-expected.txt:
  • model-element/model-element-interactive-dragging.html:
  • model-element/resources/model-utils.js:

(const.makeModel):
(const.readyModel.async test):

12:18 PM Changeset in webkit [291244] by Oriol Brufau
  • 18 edits in trunk

[css] Implement 'text-decoration' as a shorthand.
​https://bugs.webkit.org/show_bug.cgi?id=237175

Reviewed by Darin Adler.

Source/WebCore:

The 'text-decoration' property was considered to be a longhand, sharing
a computed value with 'text-decoration-line'.

This patch switches 'text-decoration' to be shorthand instead.
According to the CSS Text Decoration spec, the longhands should be
'text-decoration-line', 'text-decoration-thickness',
'text-decoration-style' and 'text-decoration-color'.
I tried that in ​https://commits.webkit.org/r290756, but it got reverted
because of a performance regression. So as a first step, here I'm making
'text-decoration-line' be the only longhand.

There is a bunch of editing code that was getting/setting/removing
'text-decoration' as a longhand, so I'm switching that to instead
use 'text-decoration-line'.

Tests: fast/css/getComputedStyle/computed-style.html

fast/css/getComputedStyle/computed-style-without-renderer.html
fast/css/getComputedStyle/getComputedStyle-text-decoration.html
fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-shorthand.html
imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml.html
imported/w3c/web-platform-tests/css/css-variables/variable-presentation-attribute.html
imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html
svg/css/getComputedStyle-basic.xhtml

  • css/CSSProperties.json:
  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue const):
(WebCore::StyleProperties::asText const):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::CSSPropertyParser::parseShorthand):

  • editing/EditingStyle.cpp:

(WebCore::HTMLTextDecorationEquivalent::HTMLTextDecorationEquivalent):
(WebCore::EditingStyle::init):
(WebCore::EditingStyle::styleWithResolvedTextDecorations const):
(WebCore::EditingStyle::collapseTextDecorationProperties):
(WebCore::textDecorationValueList):
(WebCore::EditingStyle::conflictsWithInlineStyleOfElement const):
(WebCore::EditingStyle::styleIsPresentInComputedStyleOfNode const):
(WebCore::EditingStyle::mergeStyle):
(WebCore::reconcileTextDecorationProperties):
(WebCore::StyleChange::StyleChange):
(WebCore::StyleChange::extractTextStyles):
(WebCore::extractPropertiesNotIn):

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverterCaches::propertyValueForNode):
(HTMLConverter::computedAttributesForElement):

  • editing/ios/EditorIOS.mm:

(WebCore::Editor::removeUnchangeableStyles):

  • editing/markup.cpp:

(WebCore::serializePreservingVisualAppearanceInternal):

  • style/PropertyAllowlist.cpp:

(WebCore::Style::isValidCueStyleProperty):

LayoutTests:

Update tests to take into account that 'text-decoration' is a shorthand.

  • fast/css/getComputedStyle/computed-style-expected.txt:
  • fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • fast/css/getComputedStyle/getComputedStyle-text-decoration-expected.txt:
  • fast/css/getComputedStyle/getComputedStyle-text-decoration.html:
  • fast/css/getComputedStyle/resources/property-names.js:
  • fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-shorthand-expected.txt:
  • fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-shorthand.html:
  • svg/css/getComputedStyle-basic-expected.txt:
12:11 PM Changeset in webkit [291243] by Simon Fraser
  • 13 edits
    1 add in trunk/Source/WebKit

Do a single IPC for MarkSurfaceNonVolatile and SwapToValidFrontBuffer
​https://bugs.webkit.org/show_bug.cgi?id=237814

Reviewed by Tim Horton.

Now that we know how to group the calls to markSurfaceNonVolatile() followed by
swapToValidFrontBuffer(), we can do them with a single sync IPC to the GPU process, passing
supportsPartialRepaint and hasEmptyDirtyRegion.

RemoteLayerWithRemoteRenderingBackingStoreCollection::prepareBackingStoreBuffers() takes
care to avoid IPCs for layers which don't need display, which is important for performance.

Introduce the SwapBuffersDisplayRequirement enum which is returned, and used to know if
we have to do a full repaint.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::prepareBuffersForDisplay):
(WebKit::RemoteRenderingBackend::markSurfaceNonVolatile): Deleted.
(WebKit::RemoteRenderingBackend::swapToValidFrontBuffer): Deleted.

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.h:

(WebKit::RemoteLayerBackingStore::hasEmptyDirtyRegion const):

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::operator<<):
(WebKit::RemoteLayerBackingStore::prepareToDisplay):
(WebKit::RemoteLayerBackingStore::prepareBuffers):

  • Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:

(WebKit::RemoteLayerBackingStoreCollection::prepareBackingStoreBuffers):
(WebKit::RemoteLayerBackingStoreCollection::makeFrontBufferNonVolatile): Deleted.
(WebKit::RemoteLayerBackingStoreCollection::swapToValidFrontBuffer): Deleted.

  • Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.h:
  • Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm:

(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::prepareBackingStoreBuffers):
(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::makeFrontBufferNonVolatile): Deleted.
(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::swapToValidFrontBuffer): Deleted.

  • Shared/RemoteLayerTree/SwapBuffersDisplayRequirement.h: Added.
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::prepareBuffersForDisplay):
(WebKit::RemoteRenderingBackendProxy::swapToValidFrontBuffer): Deleted.
(WebKit::RemoteRenderingBackendProxy::markSurfaceNonVolatile): Deleted.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
11:48 AM Changeset in webkit [291242] by Jonathan Bedard
  • 7 edits in trunk/Tools

[git-webkit] Handle comparing User and Contributor to None
​https://bugs.webkit.org/show_bug.cgi?id=237622
<rdar://problem/89992772>

Reviewed by Dewei Zhu.

  • Tools/Scripts/libraries/webkitbugspy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/tests/user_unittest.py:

(TestUser.test_compare):

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/user.py:

(User.cmp): Handle 'None' case.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/contributor.py:

(Contributor.cmp): Ditto.

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

(TestContributor.test_comparison):

Canonical link: ​https://commits.webkit.org/248397@main

11:44 AM Changeset in webkit [291241] by ntim@apple.com
  • 3 edits in trunk/Source/WebCore

REGRESSION(r289850): Bundle size has increased
​https://bugs.webkit.org/show_bug.cgi?id=237844

Unreviewed, fully revert r289850.

  • Makefile:
  • WebCore.xcodeproj/project.pbxproj:
11:25 AM Changeset in webkit [291240] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

[Flatpack SDK] Api tests scripts have conflicting parameters with the flatpak scripts
​https://bugs.webkit.org/show_bug.cgi?id=237778

Patch by Alejandro G. Castro <​alex@igalia.com> on 2022-03-14
Reviewed by Philippe Normand.

run-gtk-tests and run-wpe-tests have arguments that cause
conflicts with the flatpak sdk, we have to rewrite and consume
some of them to avoid problems because we do not know what the
user is requesting. This patch gives priority to the api tests
parameters, the flatpak ones for the conflictive situations need
to be passed with the long format, namely regenerate-toolchains
and sccache-token.

  • Scripts/run-gtk-tests:
  • Scripts/run-wpe-tests:
  • glib/api_test_runner.py:

(add_options):
(get_runner_args):

11:14 AM Changeset in webkit [291239] by Elliott Williams
  • 4 edits
    1 add in trunk/Source/ThirdParty/libwebrtc

Reland "[XCBuild] libwebrtc's headers are copied via rsync and do not emit task outputs"
​https://bugs.webkit.org/show_bug.cgi?id=237112

Reviewed by Alexey Proskuryakov.

r290966 had a bad xcconfig setting in libabsl.xcconfig, which prevented absl's headers from
being copied to the right location, causing build failures. Fix this setting and reland.

  • Configurations/Base.xcconfig:
  • Configurations/libabsl.xcconfig: s/PREFIX/PATH/g to fix settings.
  • Configurations/libwebrtc.xcconfig:
  • libwebrtc.xcodeproj/project.pbxproj:
10:57 AM Changeset in webkit [291238] by gnavamarino@apple.com
  • 2 edits in trunk/Source/WebCore

Don't create a scroll corner without renderer
​https://bugs.webkit.org/show_bug.cgi?id=237837

Reviewed by Simon Fraser.

Don't create a scroll corner without renderer, as renderer document is needed to create one.
Also destroy the scroll corner early when RenderView is available.

  • page/FrameView.cpp:

(WebCore::FrameView::willBeDestroyed):
(WebCore::FrameView::updateScrollCorner):

10:34 AM Changeset in webkit [291237] by Tyler Wilcock
  • 5 edits in trunk/Source/WebCore

AX: Move addChildren, addChild, insertChild, canHaveChildren, setNeedsToUpdateChildren, setNeedsToUpdateSubtree, clearChildren, and needsToUpdateChildren out of AXCoreObject interface
​https://bugs.webkit.org/show_bug.cgi?id=237801

Reviewed by Andres Gonzalez.

All of these virtual methods are ASSERT_NOT_REACHED no-ops for AXIsolatedObjects,
so this patch moves them to AccessibilityObject.h instead.

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::addChildren):
(WebCore::AccessibilityObject::canHaveChildren const):
(WebCore::AccessibilityObject::setNeedsToUpdateChildren):
(WebCore::AccessibilityObject::setNeedsToUpdateSubtree):
(WebCore::AccessibilityObject::needsToUpdateChildren const):

  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::addChildren): Deleted.
(WebCore::AXIsolatedObject::addChild): Deleted.
(WebCore::AXIsolatedObject::insertChild): Deleted.
(WebCore::AXIsolatedObject::canHaveChildren const): Deleted.
(WebCore::AXIsolatedObject::setNeedsToUpdateChildren): Deleted.
(WebCore::AXIsolatedObject::setNeedsToUpdateSubtree): Deleted.
(WebCore::AXIsolatedObject::clearChildren): Deleted.
(WebCore::AXIsolatedObject::needsToUpdateChildren const): Deleted.

  • accessibility/isolatedtree/AXIsolatedObject.h:
9:52 AM Changeset in webkit [291236] by graouts@webkit.org
  • 2 edits in trunk/LayoutTests

[model] model-element/model-element-camera.html fails due to promise_rejects being undefined
​https://bugs.webkit.org/show_bug.cgi?id=237833
rdar://88982597

Unreviewed test fix after testharness.js was updated in bug 235398 but neglected to update this
test to use promise_rejects_dom.

  • model-element/model-element-camera.html:
9:50 AM Changeset in webkit [291235] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitcorepy] Do not fetch key without username
​https://bugs.webkit.org/show_bug.cgi?id=237830
<rdar://problem/90248939>

Unreviewed git-webkit fix.

  • Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Scripts/libraries/webkitcorepy/webkitcorepy/credentials.py:

(credentials): Only attempt to fetch key if username is defined.

9:42 AM Changeset in webkit [291234] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit

Revert r290659
​https://bugs.webkit.org/show_bug.cgi?id=237296

It caused a performance regression.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::createWebSocketTask):

9:40 AM Changeset in webkit [291233] by Matteo Flores
  • 1 edit in trunk/LayoutTests/ChangeLog

[GTK][WPE] EXIF orientation tests are failing since added in r249364 - "EXIF orientation should be respected when rendering images"
​https://bugs.webkit.org/show_bug.cgi?id=201982

Unreviewed test gardening.

  • platform/ios/TestExpectations:
9:37 AM Changeset in webkit [291232] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[GTK][WPE] EXIF orientation tests are failing since added in r249364 - "EXIF orientation should be respected when rendering images"
Nhttps://bugs.webkit.org/show_bug.cgi?id=201982

Unreviewed test gardening.

  • platform/ios/TestExpectations:
8:47 AM Changeset in webkit [291231] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r291206.
​https://bugs.webkit.org/show_bug.cgi?id=237829

Introduced perf regression

Reverted changeset:

"Adjust when
_setPrivacyProxyFailClosedForUnreachableNonMainHosts is
called"
​https://bugs.webkit.org/show_bug.cgi?id=237735
​https://commits.webkit.org/r291206

8:46 AM Changeset in webkit [291230] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[ iOS iPhone 12 ] fast/hidpi & fast/layers/hidpi tests are flaky text/image failing
​https://bugs.webkit.org/show_bug.cgi?id=232384

Unreviewed test gardening.

  • platform/ios/TestExpectations:
8:42 AM Changeset in webkit [291229] by Adrian Perez de Castro
  • 6 edits in trunk

[GLib] Expose typed arrays in the public API
​https://bugs.webkit.org/show_bug.cgi?id=197535

Reviewed by Carlos Garcia Campos.

This adds a set of new functions to operate on JSCValue objects which refer to typed
arrays in the JavaScript side of the world. Typed array values can be created with an
existing ArrayBuffer to hold the contents, in which case custom allocations are possible;
or letting JSC handle allocation. Operating on typed arrays is expected to be done on an
element-by-element basis, and in general it is recommended to use the functions dealing
with the "length" (number of elements) of typed arrays; nevertheless it is also possible
to retrieve their "size" and "offset" over the underlying ArrayBuffer, and/or retrieving
said ArrayBuffer.

Source/JavaScriptCore:

  • API/glib/JSCValue.cpp:

(toTypedArrayType):
(toJSCTypedArrayType):
(jsc_value_new_typed_array):
(jsc_value_new_typed_array_with_buffer):
(jsc_value_is_typed_array):
(jsc_value_typed_array_get_buffer):
(jsc_value_typed_array_get_data):
(jsc_value_typed_array_get_length):
(jsc_value_typed_array_get_offset):
(jsc_value_typed_array_get_size):
(jsc_value_typed_array_get_type):

  • API/glib/JSCValue.h:
  • API/glib/docs/jsc-glib-4.0-sections.txt:

Tools:

  • TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp: Added test for typed arrays.

(elementSize):
(testJSCTypedArray):
(main):

7:03 AM Changeset in webkit [291228] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] marker-start should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237826

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Test failures are due to SVGURIReference::fragmentIdentifierFromIRIString() rejecting the values used in the
test which do not contain a "#". While this is not the greatest test values for this property, this is indeed
a bug that we reject the value during parsing instead of storing it.

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

6:54 AM Changeset in webkit [291227] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] marker-mid should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237825

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Test failures are due to SVGURIReference::fragmentIdentifierFromIRIString() rejecting the values used in the
test which do not contain a "#". While this is not the greatest test values for this property, this is indeed
a bug that we reject the value during parsing instead of storing it.

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

6:49 AM Changeset in webkit [291226] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] marker-end should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237824

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Test failures are due to SVGURIReference::fragmentIdentifierFromIRIString() rejecting the values used in the
test which do not contain a "#". While this is not the greatest test values for this property, this is indeed
a bug that we reject the value during parsing instead of storing it.

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

6:21 AM Changeset in webkit [291225] by eocanha@igalia.com
  • 3 edits
    2 adds in trunk

[MSE][SourceBuffer] Fix removal of paddings from buffered range
​https://bugs.webkit.org/show_bug.cgi?id=237780

Reviewed by Jer Noble.

Source/WebCore:

When removing a range ending up in a sample S2 which overlaps slightly with a
previous one S1 but still extends beyond the removal range, the buffered range
computing algorithm can become confused removing the range paddings and
completely skip the S2 sample (instead of accounting it as part of the still
buffered ranges). The sample S2 is leaked and becomes unnoticed in the buffered
ranges.

This patch changes the way in which buffered ranges boundaries are computed in
such cases.

This patch is authored by Eugene Mutavchi <​Ievgen_Mutavchi@comcast.com>
See: ​https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/797#discussion_r818973424

Test: media/media-source/media-source-remove-overlapped.html

  • platform/graphics/SourceBufferPrivate.cpp: End the additionalErasedRanges iterator in removeSamplesFromTrackBuffer() in a sample starting after erasedStart, instead of starting on or after erasedEnd.

LayoutTests:

This tests that overlapped samples in the boundaries of removal ranges aren't leaked.

This patch is authored by Eugene Mutavchi <​Ievgen_Mutavchi@comcast.com>
See: ​https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/797

  • media/media-source/media-source-remove-overlapped-expected.txt: Added.
  • media/media-source/media-source-remove-overlapped.html: Added.
5:45 AM Changeset in webkit [291224] by commit-queue@webkit.org
  • 15 edits in trunk

WebGL context should use discrete gpu if the context is created when the window is on external monitor, ANGLE Metal backend
​https://bugs.webkit.org/show_bug.cgi?id=236487

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-14
Reviewed by Kenneth Russell.

Source/WebCore:

Add GraphicsContextGLAttributes::windowGPUID which describes the GPU ID
for the window that the context is on.
Create the ANGLE Metal context based on this, unless high-performance GPU
is requested.

Changes the behavior so that new WebGL contexts will use dgpu is always when user has
external display plugged in. The system changes all the windows to the dgpu, so
this is consistent with the system expectation.

Notable difference due to the above is that we get different layout tests for a developer
that has a external monitor than before.

Tested by new unit tests.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):

  • page/Chrome.cpp:

(WebCore::Chrome::createGraphicsContextGL const):

  • page/ChromeClient.cpp:

(WebCore::ChromeClient::createGraphicsContextGL const):

  • page/ChromeClient.h:
  • platform/PlatformScreen.h:
  • platform/ScreenProperties.h:

(WebCore::ScreenData::decode):

  • platform/graphics/GraphicsContextGLAttributes.h:

(WebCore::GraphicsContextGLAttributes::encode const):
(WebCore::GraphicsContextGLAttributes::decode):

  • platform/graphics/cocoa/GraphicsContextGLCocoa.mm:

(WebCore::initializeEGLDisplay):

  • platform/mac/PlatformScreenMac.mm:

(WebCore::collectScreenProperties):
(WebCore::primaryGPUID):
(WebCore::gpuIDForDisplay):
(WebCore::gpuIDForDisplayMask):

Source/WebKit:

Before, the ChromeClient passed PlatformDisplayID to the createGraphicsContextGL. This was ignored.
After, pass the PlatformGPUID as part of GraphicsContextGLAttributes.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createGraphicsContextGL const):

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Tools:

Add tests to test that the windowGPUID affects the contexts being created.
Avoid ifdefs by always compiling the tests and move the "platform can have
multiple gpus / there is no multiple gpus in the platform" ifdef aspects
to helper functions.

  • TestWebKitAPI/Tests/WebCore/cocoa/TestGraphicsContextGLCocoa.mm:

(TestWebKitAPI::allDevices):
(TestWebKitAPI::lowPowerDevice):
(TestWebKitAPI::highPerformanceDevice):
(TestWebKitAPI::hasMultipleGPUs):
(TestWebKitAPI::TEST_F):

5:04 AM Changeset in webkit [291223] by youenn@apple.com
  • 2 edits in trunk/LayoutTests

[ MacOS ] imported/w3c/web-platform-tests/webrtc-extensions/transfer-datachannel.html is a flaky failure
​https://bugs.webkit.org/show_bug.cgi?id=230116
<rdar://problem/82936812>

Unreviewed.

  • platform/mac/TestExpectations:

Unflake test now that is passing consistently on bots.

4:35 AM Changeset in webkit [291222] by youenn@apple.com
  • 2 edits in trunk/LayoutTests

[BigSur wk2] http/tests/fetch/redirectmode-and-preload.html is a flaky failure
​https://bugs.webkit.org/show_bug.cgi?id=230112
<rdar://problem/82932781>

Unreviewed.

  • platform/mac-wk2/TestExpectations:

Unflake test now that is passing consistently on bots.

4:27 AM Changeset in webkit [291221] by youenn@apple.com
  • 2 edits in trunk/LayoutTests

[ BigSur wk2 arm64 ] 4 webrtc/ Layout-tests are consistently timing out
​https://bugs.webkit.org/show_bug.cgi?id=223043
<rdar://problem/75280718>

Unreviewed.

  • platform/mac/TestExpectations:

Unflake tests now that are passing consistently on bots.

3:24 AM Changeset in webkit [291220] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Unreviewed, fixing an incomplete-type build error in InlineIteratorLine
​https://bugs.webkit.org/show_bug.cgi?id=237822

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-03-14

  • layout/integration/InlineIteratorLine.h:

Add the missing RenderBlockFlow.h include to avoid incomplete-type
error in InlineIterator::Line::selectionPhysicalRect() that might occur
when unified sources are sorted some other way.

2:20 AM Changeset in webkit [291219] by commit-queue@webkit.org
  • 3 edits
    5 deletes in trunk/Tools/buildstream

[Flatpak SDK] Get rid of Python2
​https://bugs.webkit.org/show_bug.cgi?id=221043

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-14
Reviewed by Michael Catanzaro.

Python2 is no longer needed as the tooling was ported to Python3.

  • elements/freedesktop-sdk.bst: Update junction to 21.08-11 release.
  • elements/sdk-platform.bst:
  • elements/sdk/python2-pycairo.bst: Removed.
  • elements/sdk/python2-pygobject.bst: Removed.
  • elements/sdk/python2-six.bst: Removed.
  • elements/sdk/python2-subprocess32.bst: Removed.
  • elements/sdk/python2.bst: Removed.
1:42 AM Changeset in webkit [291218] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/ANGLE

REGRESSION (iOS 15.4 beta) - WebGL yields incorrect results when using preserveDrawingBuffer on iOS 15.4 Beta
​https://bugs.webkit.org/show_bug.cgi?id=237113

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-14
Reviewed by Myles C. Maxfield.

Cherry-pick without tests conflicting tests.

Cherry-pick ANGLE commit: 74f3270214394c896154e4bf9338e7d75002de61
From: Gregg Tavares <Gregg Tavares>
Date: Thu, 3 Mar 2022 13:13:34 -0800
Subject: [PATCH] Metal: Fix for mulitsampled buffers losing their contents

Fixes tst included as well as WebGL CTS

​https://www.khronos.org/registry/webgl/sdk/tests/conformance2/renderbuffers/multisample-draws-between-blits.html

Both fail on M1 without this fix.

Also fixes WebKit bug ​https://bugs.webkit.org/show_bug.cgi?id=237113

Bug: angleproject:7073

  • src/libANGLE/renderer/metal/FrameBufferMtl.mm:

(rx::FramebufferMtl::setLoadStoreActionOnRenderPassFirstStart):

Mar 12, 2022:

7:34 AM Changeset in webkit [291217] by Angelos Oikonomopoulos
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] Use addressTempRegister in loadValue(void *) on 32 bits
​https://bugs.webkit.org/show_bug.cgi?id=237773

Reviewed by Žan Doberšek.

Instead of using one of the destination registers as an address
temporary, use addressTempRegister instead. This allows reusing
the value in addressTempRegister (with an appropriate offset) if
possible, which results in a >25% size reduction for DFGOSRExit
(JS2) on ARMv7 (though not a significant size reduction overall).
Technically, this change could be killing some address reuse that
was previously possible because loadValue was not clobbering
addressTempRegister but, if so, this seems to be balanced out for
JS2.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::BoundsNonDoubleWordOffset::within):
(JSC::MacroAssemblerARMv7::BoundsDoubleWordOffset::within):
(JSC::MacroAssemblerARMv7::loadPair32):
(JSC::MacroAssemblerARMv7::setupArmAddress):
(JSC::MacroAssemblerARMv7::absoluteAddressWithinShortOffset):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::loadPair32):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::loadValue):

Mar 12, 2022:

11:23 PM Changeset in webkit [291216] by Jean-Yves Avenard
  • 8 edits
    7 adds in trunk

Safari produces scrambled output for some webm videos with vp8 codec.
​https://bugs.webkit.org/show_bug.cgi?id=236754
Source/ThirdParty/libwebrtc:

rdar://80869041

Reviewed by Eric Carlson.

  • Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:

(webrtc::WebKitDecoderReceiver::decoderFailed): Tell CoreMedia if a frame
was silently dropped by the decoder.

Source/WebCore:

rdar://80869041

Reviewed by Eric Carlson.

The MediaFormatReader plugin and the MSE SourceBufferPrivate are using
a SampleMap to store all the media samples timing information: one sorted
by DTS order and the other in PTS order.
Those SampleMap use the sample's presentation time as unique key.
The VP8 codec can define hidden samples that are to be fed to the decoder
but will not decode into an actual image. Those samples are typically
packed together in the webm container in two or more consecutive blocks
with the same presentation time (similar behaviour can also be found in
webm where multiple frames may be stored with the same presentation
time).
When stored in the SampleMap, only the latest sample added would be kept
after overwriting the previous one with the same time.
To get around this issue, we pack all samples with the same presentation
time in a single MediaSamplesBlock so that they can be stored together in
the map without any losses.
Upon decoding, all those sub-samples will be retrieved and fed to the
decoder.

The CoreMedia MediaFormatReader backend however has a bug where it will
enter in an infinite if we return successive frames with the same
timestamp which will cause memory exhaustion and a crash.
To get around this, we make the grouped samples appear as discrete,
making each hidden sample have a duration of 1us followed by the
visible frames (which will see its duration shorten by 1us).

Tests: media/media-source/media-source-vp8-hiddenframes.html

media/media-vp8-hiddenframes.html

New tests had to be disabled due to bug 236755. We currently have no
way to guarantee which frame is currently displayed after either a seek
operation or reaching the end of playback.

  • platform/MediaSample.h:

(WebCore::MediaSamplesBlock::append):
(WebCore::MediaSamplesBlock::clear):

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::WebMParser::parse):
(WebCore::WebMParser::OnFrame):
(WebCore::WebMParser::flushPendingVideoSamples):
(WebCore::WebMParser::VideoTrackData::resetCompletedFramesState):
(WebCore::WebMParser::VideoTrackData::consumeFrameData):
(WebCore::WebMParser::VideoTrackData::processPendingMediaSamples):
(WebCore::WebMParser::VideoTrackData::flushPendingSamples):
(WebCore::WebMParser::AudioTrackData::consumeFrameData):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

(WebCore::WebMParser::TrackData::consumeFrameData):
(WebCore::WebMParser::TrackData::resetCompletedFramesState):
(WebCore::WebMParser::TrackData::drainPendingSamples):

LayoutTests:

Reviewed by Eric Carlson.

VP8 files were generated such that alternative reference frames were used:
$ fmpeg -i dragon.webm -c:v libvpx -vf scale=320:-1 -auto-alt-ref 1 -arnr-maxframes 5 -arnr-strength 3 -pass 1 test-vp8-hiddenframes.webm
$ fmpeg -i dragon.webm -c:v libvpx -vf scale=320:-1 -auto-alt-ref 1 -arnr-maxframes 5 -arnr-strength 3 -pass 2 test-vp8-hiddenframes.webm

The command used to extract the last frame in png format was:
$ ffmpeg -sseof -3 -i test-vp8-hiddenframes.webm -pred mixed -pix_fmt rgb24 -sws_flags +accurate_rnd+full_chroma_int -update 1 -q:v 1 test-vp8-hiddenframes.png

  • TestExpectations:
  • media/content/test-vp8-hiddenframes.png: Added.
  • media/content/test-vp8-hiddenframes.webm: Added.
  • media/media-source/media-source-vp8-hiddenframes-expected.html: Added.
  • media/media-source/media-source-vp8-hiddenframes.html: Added.
  • media/media-vp8-hiddenframes-expected.html: Added.
  • media/media-vp8-hiddenframes.html: Added.
  • media/utilities.js: Added.

(once):
(fetchWithXHR):
(loadSegment):

8:55 PM Changeset in webkit [291215] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[IFC][Integration] Add InlineIterator::Line::selectionPhysicalRect
​https://bugs.webkit.org/show_bug.cgi?id=237796

Reviewed by Antti Koivisto.

Introduce selectionPhysicalRect() so that the clients don't need to convert/flip the logical coords and
also rename selectionRect() to selectionLogicalRect() to clear up any ambiguity.

  • editing/VisiblePosition.cpp:

(WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::selectionLogicalRect const):
(WebCore::InlineIterator::Line::selectionPhysicalRect const):
(WebCore::InlineIterator::Line::selectionRect const): Deleted.

  • rendering/CaretRectComputation.cpp:

(WebCore::computeCaretRectForLinePosition):

8:54 PM Changeset in webkit [291214] by Simon Fraser
  • 3 edits in trunk/Source/WebKit

In RemoteLayerBackingStore, group makeFrontBufferNonVolatile() and swapToValidFrontBuffer() into a single function
​https://bugs.webkit.org/show_bug.cgi?id=237806

Reviewed by Tim Horton.

As a step towards reducing the number of sync IPC calls when displaying layers, refactor
code in RemoteLayerBackingStore so that we can do the makeFrontBufferNonVolatile()
and swapToValidFrontBuffer() in a single function. Its return value indicates whether
we need to do any display, or a full display.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::operator<<):
(WebKit::RemoteLayerBackingStore::prepareToDisplay):
(WebKit::RemoteLayerBackingStore::prepareBuffers):
(WebKit::RemoteLayerBackingStore::paintContents): Fix an assertion that fired for WebGL.
(WebKit::RemoteLayerBackingStore::swapBuffers): Deleted.

7:01 PM Changeset in webkit [291213] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WTF

Fail the build if Internal or Experimental web preferences are missing human readable names
​https://bugs.webkit.org/show_bug.cgi?id=237813

Reviewed by Alex Christensen.

  • Scripts/GeneratePreferences.rb:

Ensure that all preferences that expose human readable strings to the
API client actually have such a name.

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Add one missing human readable preference name.

3:29 PM Changeset in webkit [291212] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r291209.
​https://bugs.webkit.org/show_bug.cgi?id=237811

Re-land 290754 due to mis-blaming

Reverted changeset:

"Unreviewed, reverting r290754."
​https://bugs.webkit.org/show_bug.cgi?id=237808
​https://commits.webkit.org/r291209

3:15 PM Changeset in webkit [291211] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[IFC][Integration] Replace generic InlineIterator::Line::legacyRootInlineBox() with 2 dedicated functions
​https://bugs.webkit.org/show_bug.cgi?id=237807

Reviewed by Antti Koivisto.

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::containingFragment const):
(WebCore::InlineIterator::Line::isFirstAfterPageBreak const):
(WebCore::InlineIterator::Line::legacyRootInlineBox const): Deleted.

  • layout/integration/InlineIteratorLineLegacyPath.h:

(WebCore::InlineIterator::LineIteratorLegacyPath::containingFragment const):
(WebCore::InlineIterator::LineIteratorLegacyPath::isFirstAfterPageBreak const):
(WebCore::InlineIterator::LineIteratorLegacyPath::legacyRootInlineBox const): Deleted.

  • layout/integration/InlineIteratorLineModernPath.h:

(WebCore::InlineIterator::LineIteratorModernPath::containingFragment const):
(WebCore::InlineIterator::LineIteratorModernPath::isFirstAfterPageBreak const):
(WebCore::InlineIterator::LineIteratorModernPath::legacyRootInlineBox const): Deleted.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):

  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::collectSelectionGeometries):

3:12 PM Changeset in webkit [291210] by timothy_horton@apple.com
  • 44 edits in trunk

Adopt FALLBACK_PLATFORM_NAME in place of FALLBACK_PLATFORM
​https://bugs.webkit.org/show_bug.cgi?id=237809

Reviewed by Per Arne Vollan.

PerformanceTests:

  • MediaTime/Configurations/SDKVariant.xcconfig:

Source/bmalloc:

  • Configurations/SDKVariant.xcconfig:

Source/JavaScriptCore:

  • Configurations/SDKVariant.xcconfig:

Source/ThirdParty:

  • gtest/xcode/Config/SDKVariant.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/SDKVariant.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/SDKVariant.xcconfig:

Source/WebCore:

  • Configurations/SDKVariant.xcconfig:

Source/WebCore/PAL:

  • Configurations/SDKVariant.xcconfig:

Source/WebGPU:

  • Configurations/SDKVariant.xcconfig:

Source/WebInspectorUI:

  • Configurations/SDKVariant.xcconfig:

Source/WebKit:

  • Configurations/SDKVariant.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/SDKVariant.xcconfig:

Source/WTF:

  • Configurations/SDKVariant.xcconfig:

Tools:

  • ContentExtensionTester/Configurations/SDKVariant.xcconfig:
  • DumpRenderTree/mac/Configurations/SDKVariant.xcconfig:
  • ImageDiff/cg/Configurations/SDKVariant.xcconfig:
  • MiniBrowser/Configurations/SDKVariant.xcconfig:
  • MobileMiniBrowser/Configurations/SDKVariant.xcconfig:
  • TestWebKitAPI/Configurations/SDKVariant.xcconfig:
  • WebEditingTester/Configurations/SDKVariant.xcconfig:
  • WebKitTestRunner/Configurations/SDKVariant.xcconfig:
  • lldb/lldbWebKitTester/Configurations/SDKVariant.xcconfig:
12:53 PM Changeset in webkit [291209] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r290754.
​https://bugs.webkit.org/show_bug.cgi?id=237808

Introduced launch regression

Reverted changeset:

"[iOS] Seatbelt sandbox profile entitlement is deprecated"
​https://bugs.webkit.org/show_bug.cgi?id=237374
​https://commits.webkit.org/r290754

11:10 AM Changeset in webkit [291208] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[IFC][Integration] previousLinePosition/nextLinePosition should use Line::lineBoxHeight
​https://bugs.webkit.org/show_bug.cgi?id=237788

Reviewed by Antti Koivisto.

Line::lineBoxHeight() should be sufficient for checking if the line is empty for VisualPosition.

  • editing/VisibleUnits.cpp:

(WebCore::previousLinePosition):
(WebCore::nextLinePosition):

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::lineBoxHeight const):
(WebCore::InlineIterator::Line::logicalHeight const): Deleted.

  • layout/integration/InlineIteratorLineLegacyPath.h:

(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalRight const):
(WebCore::InlineIterator::LineIteratorLegacyPath::logicalHeight const): Deleted.

  • layout/integration/InlineIteratorLineModernPath.h:

(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalRight const):
(WebCore::InlineIterator::LineIteratorModernPath::logicalHeight const): Deleted.

6:30 AM Changeset in webkit [291207] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[IFC][Integration] RenderBlockFlow::findClosestTextAtAbsolutePoint should use root inline box iterator
​https://bugs.webkit.org/show_bug.cgi?id=237786

Reviewed by Antti Koivisto.

Let's remove root inline box APIs from the line iterator interface.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::findClosestTextAtAbsolutePoint): Replace line iterator with root inline box iterator
and check whether the local point is in between these root inline boxes.

Mar 11, 2022:

9:01 PM Changeset in webkit [291206] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Adjust when _setPrivacyProxyFailClosedForUnreachableNonMainHosts is called
​https://bugs.webkit.org/show_bug.cgi?id=237735
<rdar://89972004>

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-11
Reviewed by Geoff Garen.

It was originally being called differently between main resources and subresources on the same domain,
causing them to use connections with different properties, so we couldn't share connections any more.
This will make it so that more connections are shared, which should fix the performance regression from
no longer sharing connections to the same domain.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):

8:07 PM Changeset in webkit [291205] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Unreviewed logging removal.

Revert an ALWAYS_LOG_WITH_STREAM() that I inadvertently committed back to a
LOG_WITH_STREAM().

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::swapToValidFrontBuffer):

7:15 PM Changeset in webkit [291204] by pvollan@apple.com
  • 3 edits in trunk/Source/WebCore

[macOS] Image decoders should be restricted for Mail
​https://bugs.webkit.org/show_bug.cgi?id=237717
<rdar://89827733>

Reviewed by Geoffrey Garen.

Use correct prefix for static member.

  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::ImageDecoderCG::enableRestrictedDecoding):
(WebCore::ImageDecoderCG::restrictedDecodingEnabled):

  • platform/graphics/cg/ImageDecoderCG.h:
6:33 PM Changeset in webkit [291203] by Chris Dumez
  • 5 edits in trunk/Source

IPC thread's QOS should match the sending thread's QOS when calling sendSync()
​https://bugs.webkit.org/show_bug.cgi?id=237800
<rdar://problem/90061548>

Reviewed by Geoffrey Garen.

Source/WebKit:

IPC thread's QOS should match the sending thread's QOS when calling sendSync(), since it blocks the calling thread.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::sendSyncMessage):

Source/WTF:

Add function to get the QoS of the current thread.

  • wtf/Threading.cpp:

(WTF::toQOS):
(WTF::Thread::currentThreadQOS):

  • wtf/Threading.h:
6:23 PM Changeset in webkit [291202] by Simon Fraser
  • 4 edits in trunk/Source/WebKit

Move RemoteLayerBackingStore flusher creation into RemoteLayerBackingStoreCollection
​https://bugs.webkit.org/show_bug.cgi?id=237798

Reviewed by Tim Horton.

Move the code that creates layer flushers from RemoteLayerTreeDrawingArea into
RemoteLayerBackingStoreCollection, per the FIXME.

RemoteLayerBackingStoreCollection::didFlushLayers() then becomes internal, and gets renamed
to updateUnreachableBackingStores(). Now we only need to schedule the volatility timer from
one place.

  • Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:

(WebKit::RemoteLayerBackingStoreCollection::didFlushLayers):
(WebKit::RemoteLayerBackingStoreCollection::updateUnreachableBackingStores):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::updateRendering):

4:56 PM Changeset in webkit [291201] by Wenson Hsieh
  • 6 edits in trunk/Source

Refactor the filter block in DocumentMarkerController::filterMarkers() to return an enum type
​https://bugs.webkit.org/show_bug.cgi?id=237794

Reviewed by Megan Gardner.

Source/WebCore:

Change the return value of the filter function argument in filterMarkers() from a bool to a named enum
type with 2 values: Keep or Remove; this makes it more obvious to call sites whether the return value will
cause document markers to remain or be removed from the document.

  • dom/DocumentMarkerController.cpp:

(WebCore::DocumentMarkerController::filterMarkers):
(WebCore::DocumentMarkerController::removeMarkers):

  • dom/DocumentMarkerController.h: Remove a FIXME and comment that's no longer needed.

Source/WebKit:

Drive-by fix: only remove the spellchecking document marker in removeAnnotationRelativeToSelection if the
annotation string of the marker matches the given annotation string to the method.

  • WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm:

(WebKit::TextCheckingControllerProxy::removeAnnotationRelativeToSelection):

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::clearDictationAlternatives):

4:32 PM Changeset in webkit [291200] by commit-queue@webkit.org
  • 9 edits in trunk

Finish implementing modify-headers actions for WKContentRuleList SPI
​https://bugs.webkit.org/show_bug.cgi?id=237784
Source/WebCore:

<rdar://72433048>

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-11
Reviewed by Tim Hatcher.

I hadn't implemented regex substitution yet.

  • contentextensions/ContentExtensionActions.cpp:

(WebCore::ContentExtensions::RedirectAction::parse):
(WebCore::ContentExtensions::RedirectAction::serialize const):
(WebCore::ContentExtensions::RedirectAction::deserialize):
(WebCore::ContentExtensions::RedirectAction::applyToRequest):
(WebCore::ContentExtensions::RedirectAction::RegexSubstitutionAction::serialize const):
(WebCore::ContentExtensions::RedirectAction::RegexSubstitutionAction::deserialize):
(WebCore::ContentExtensions::makeJSString):
(WebCore::ContentExtensions::RedirectAction::RegexSubstitutionAction::applyToURL const):

  • contentextensions/ContentExtensionActions.h:

(WebCore::ContentExtensions::add):

  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::loadAction):
(WebCore::ContentExtensions::loadRule):

Source/WebKit:

<rdar://72433048>

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-11
Reviewed by Tim Hatcher.

  • UIProcess/API/APIContentRuleListStore.h:

Tools:

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-11
Reviewed by Tim Hatcher.

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::TEST_F):

4:00 PM Changeset in webkit [291199] by ysuzuki@apple.com
  • 2 edits in trunk/Source/bmalloc

Unreviewed, ASan specific build fix
​https://bugs.webkit.org/show_bug.cgi?id=237572

  • libpas/src/libpas/pas_utils.h:

(pas_zero_memory):

3:42 PM Changeset in webkit [291198] by Nikos Mouchtaris
  • 10 edits
    2 adds in trunk

[iOS] Fix ovserscroll-behavior for main document
​https://bugs.webkit.org/show_bug.cgi?id=237696

Reviewed by Simon Fraser.

Source/WebCore:

Make getters for overscroll behavior public.

Test: fast/scrolling/ios/overscroll-behavior-on-body.html

  • page/scrolling/ScrollingTreeScrollingNode.h:

Source/WebKit:

Get value of over scroll behavior from root scrolling node to set whether root
UIScrollView should rubber band or not. Add new UIScrollView SPI.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _updateScrollViewForTransaction:]):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::rootNode const):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::updateScrollViewForOverscrollBehavior):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

LayoutTests:

Added test that does a scroll expecting a rubberband, sets overscroll-behavior:none for
the body, then does another scroll, expected that no rubberband occurs.

  • fast/scrolling/ios/overscroll-behavior-on-body-expected.txt: Added.
  • fast/scrolling/ios/overscroll-behavior-on-body.html: Added.
3:34 PM Changeset in webkit [291197] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[ iOS ] fast/events/ios/rotation/layout-viewport-during-safari-type-rotation.html is flaky failing
​https://bugs.webkit.org/show_bug.cgi?id=231266

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
3:30 PM Changeset in webkit [291196] by J Pascoe
  • 2 edits in trunk/Source/WebKit

[WebAuthn] Unreviewed build fix after r291177
​https://bugs.webkit.org/show_bug.cgi?id=237797
rdar://problem/90183881

Remove unused move that is breaking iOS build

  • UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:
3:25 PM Changeset in webkit [291195] by Kocsen Chung
  • 1 copy in tags/Safari-614.1.5.10

Tag Safari-614.1.5.10.

2:55 PM Changeset in webkit [291194] by Adrian Perez de Castro
  • 6 edits in trunk

[GLib] Expose ArrayBuffer in the public API
​https://bugs.webkit.org/show_bug.cgi?id=237088

Reviewed by Carlos Garcia Campos.

This adds a set of new functions to operate on JSCValue objects which refer to array
buffers in the JS side of the world. This allows sharing chunks of memory buffers
efficiently with native code, without needing to copy nor encode data back and forth.

Source/JavaScriptCore:

  • API/glib/JSCValue.cpp:

(jscArrayBufferDeallocate):
(jsc_value_new_array_buffer):
(jsc_value_is_array_buffer):
(jsc_value_array_buffer_get_data):
(jsc_value_array_buffer_get_length):

  • API/glib/JSCValue.h:
  • API/glib/docs/jsc-glib-4.0-sections.txt:

Tools:

  • TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp: Added test for array buffers.

(testJSCArrayBuffer):
(main):

2:45 PM Changeset in webkit [291193] by Jonathan Bedard
  • 7 edits in trunk/Tools

[Merge-Queue] Add queue triggered by label addition
​https://bugs.webkit.org/show_bug.cgi?id=237615
<rdar://problem/89983452>

Reviewed by Aakash Jain.

  • Tools/CISupport/ews-build/config.json: Add Merge-Queue.
  • Tools/CISupport/ews-build/events.py:

(GitHubEventHandlerNoEdits): Remove action list, add merge-queue labels.
(GitHubEventHandlerNoEdits.handle_pull_request): Let parent class filter actions, treat
merge-queue label addition as a 'synchronize', but change event name to trigger different
scheduler family.

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

(MergeQueueFactory): Added.

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

(TestExpectedBuildSteps):

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

(loadBuilderConfig): AnyBranchSchedulers should only accept events which match their name.

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

(ConfigDotJSONTest): Match pull request scheduler name to pull request event.

Canonical link: ​https://commits.webkit.org/248349@main

2:30 PM Changeset in webkit [291192] by Elliott Williams
  • 4 edits in trunk/Source

[Xcode] "Nest Headers" script phases copy headers incorrectly on Catalyst
​https://bugs.webkit.org/show_bug.cgi?id=237793

Reviewed by Alexey Proskuryakov.

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:

Source/WTF:

SDK_VARIANT needs to be passed into the nested xcodebuild invocation that these script
phases run. Pass WK_USE_ALTERNATE_FRAMEWORKS_DIR=NO to prevent the default behavior where
Catalyst content is installed to /System/iOSSupport, as this causes headers to be copied to
WebKitBuild/Release/System/iOSSupport/...

This script phases only run under the legacy build system, so they do not affect production
builds. ​https://commits.webkit.org/247656@main provides more context on this hack (tl;dr
it's a temporary workaround for the XCBuild migration).

  • WTF.xcodeproj/project.pbxproj:
2:22 PM Changeset in webkit [291191] by Simon Fraser
  • 7 edits in trunk/Source/WebKit

Do buffer swapping on all RemoteLayerBackingStores before painting all of them
​https://bugs.webkit.org/show_bug.cgi?id=237752

Reviewed by Tim Horton.

Buffer swapping requires sync IPC with the GPU Process, but painting can be asynchronous, so
do all the sync IPC before all the async IPC to avoid serializing everything.

During the recursive PlatformCALayerRemote::recursiveBuildTransaction() we now call
prepareToDisplay() which does the buffer swapping, and then we paint all the reachable
backing stores via RemoteLayerTreeContext::buildTransaction().

This is a 9% perf improvement on the "Images" MotionMark subtest.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::prepareToDisplay):
(WebKit::RemoteLayerBackingStore::display): Deleted.

  • Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:

(WebKit::RemoteLayerBackingStoreCollection::paintReachableBackingStoreContents):
(WebKit::RemoteLayerBackingStoreCollection::didFlushLayers): The local variables can
be pointers, rather than using references to pointers.
(WebKit::RemoteLayerBackingStoreCollection::markAllBackingStoreVolatile): Ditto

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::recursiveBuildTransaction):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:

(WebKit::RemoteLayerTreeContext::buildTransaction):

2:13 PM Changeset in webkit [291190] by pvollan@apple.com
  • 10 edits in trunk/Source

[macOS] Image decoders should be restricted for Mail
​https://bugs.webkit.org/show_bug.cgi?id=237717
<rdar://89827733>

Reviewed by Geoffrey Garen.

Source/WebCore:

Only add restricted decoding flag when it is explicitly requested.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::createImageSourceOptions):
(WebCore::ImageDecoderCG::enableRestrictedDecoding):
(WebCore::ImageDecoderCG::restrictedDecodingEnabled):

  • platform/graphics/cg/ImageDecoderCG.h:

Source/WebKit:

We already restrict image decoders for Mail on iOS. We should do so on macOS too.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

  • WebProcess/com.apple.WebProcess.sb.in:
1:55 PM Changeset in webkit [291189] by Kocsen Chung
  • 2 edits in branches/safari-614.1.5-branch/Source/WebGPU

Cherry-pick r291184. rdar://problem/90172920

WebGPU Catalyst builds fail when using the system content path
​https://bugs.webkit.org/show_bug.cgi?id=237790

Reviewed by Saam Barati.

The value of ALTERNATE_ROOT_PATH should be set to the framework directory instead of
DYLIB_INSTALL_NAME_BASE since it will include the system content path as a prefix for
Catalyst builds.

This is similar to the construction of ALTERNATE_ROOT_PATH for the other frameworks.

  • Configurations/WebGPU.xcconfig:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291184 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:55 PM Changeset in webkit [291188] by Kocsen Chung
  • 16 edits in branches/safari-614.1.5-branch/Source

Cherry-pick r291139. rdar://problem/90127039

Catalyst JavaScriptCore, WebCore, WebKitLegacy, and WebKit shouldn't be copied to the Secondary Path
​https://bugs.webkit.org/show_bug.cgi?id=237748

Reviewed by Mark Lam.

Updated the configuration to exclude copying Catalyst build products to the secondary path.

Source/JavaScriptCore:

  • Configurations/Base.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/ANGLE-dynamic.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/libwebrtc.xcconfig:

Source/WebCore:

  • Configurations/WebCore.xcconfig:

Source/WebGPU:

  • Configurations/WebGPU.xcconfig:

Source/WebInspectorUI:

  • Configurations/WebInspectorUIFramework.xcconfig:

Source/WebKit:

  • Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@291139 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:52 PM Changeset in webkit [291187] by Kocsen Chung
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.10

1:51 PM Changeset in webkit [291186] by Jonathan Bedard
  • 3 edits in trunk/Tools

[Merge-Queue] Check for merge-queue labels
​https://bugs.webkit.org/show_bug.cgi?id=237690
<rdar://problem/90064892>

Reviewed by Aakash Jain.

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

(GitHubMixin):
(GitHubMixin.get_pr_json): Add retry.
(GitHubMixin._is_pr_in_merge_queue): Check for merge-queue label.
(GitHubMixin.should_send_email_for_pr): get_pr_json now owns logging.
(ValidateChange.init): Add verifyMergeQueue flag.
(ValidateChange):
(ValidateChange.start): Add log to indicate PR has a merge-queue flag.
(ValidateChange.validate_github): Add retry when getting PR json, add merge queue check.

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

Canonical link: ​https://commits.webkit.org/248345@main

1:25 PM Changeset in webkit [291185] by Jon Davis
  • 3 edits in trunk/Websites/webkit.org

Allow table of contents on posts in special cases
​https://bugs.webkit.org/show_bug.cgi?id=237744

Reviewed by Devin Rousso.

  • wp-content/plugins/table-of-contents.php:
  • wp-content/themes/webkit/functions.php:
  • wp-content/themes/webkit/single.php:
1:08 PM Changeset in webkit [291184] by msaboff@apple.com
  • 2 edits in trunk/Source/WebGPU

WebGPU Catalyst builds fail when using the system content path
​https://bugs.webkit.org/show_bug.cgi?id=237790

Reviewed by Saam Barati.

The value of ALTERNATE_ROOT_PATH should be set to the framework directory instead of
DYLIB_INSTALL_NAME_BASE since it will include the system content path as a prefix for
Catalyst builds.

This is similar to the construction of ALTERNATE_ROOT_PATH for the other frameworks.

  • Configurations/WebGPU.xcconfig:
1:07 PM Changeset in webkit [291183] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

[iOS] Unreviewed gardening after r291169.

  • platform/ios/fast/dynamic/insert-before-table-part-in-continuation-expected.txt:
12:22 PM Changeset in webkit [291182] by Chris Dumez
  • 10 edits in trunk/Source/WebKit

Delay responsiveness checks for the Network Process until it has finished initialization
​https://bugs.webkit.org/show_bug.cgi?id=237782
<rdar://88226412>

Reviewed by Geoffrey Garen.

Delay responsiveness checks for the Network Process until it has finished initialization.
Network process initialization can be slow but we have evidence that it is not truly
hung since we see network process terminations right as the network process is initiating
the WebProcess connection later on.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/AuxiliaryProcessProxy.cpp:

(WebKit::AuxiliaryProcessProxy::didFinishLaunching):
(WebKit::AuxiliaryProcessProxy::beginResponsivenessChecks):
(WebKit::AuxiliaryProcessProxy::startResponsivenessTimer):

  • UIProcess/AuxiliaryProcessProxy.h:
  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::didFinishLaunching):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::sendCreationParametersToNewProcess):

  • UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp:

(WebKit::WebAuthnProcessProxy::didFinishLaunching):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didFinishLaunching):

11:14 AM Changeset in webkit [291181] by Elliott Williams
  • 2 edits in trunk

Makefile.shared: Rename WORKSPACE to WORKSPACE_PATH and allow overrides
​https://bugs.webkit.org/show_bug.cgi?id=237746

Reviewed by Alexey Proskuryakov.

This permits Make-based workflows which build out of a different workspace, e.g. a workspace
that includes WebKitAdditions.

WORKSPACE_PATH was chosen as a new name for parity with SCRIPTS_PATH and to avoid confusion
with USE_WORKSPACE.

Refactors Makefile.shared a bit to prevent SCHEME or WORKSPACE_PATH being set without
USE_WORKSPACE from breaking the build.

  • Makefile.shared:
11:08 AM Changeset in webkit [291180] by Wenson Hsieh
  • 21 edits in trunk

[iOS] Add support for -[UITextInput removeEmojiAlternatives] on WKContentView
​https://bugs.webkit.org/show_bug.cgi?id=237742
rdar://89647018

Reviewed by Kate Cheney.

Source/WebCore:

Add plumbing to AlternativeTextUIController and AlternativeTextContextController to replace an existing
DictationContext's NSTextAlternatives; passing in a nil NSTextAlternatives simply removes the DictationContext
and its existing text alternatives.

See WebKit ChangeLog for more details.

Tests: TextAlternatives.AddAndRemoveTextAlternativesWithMatch

TextAlternatives.AddAndRemoveTextAlternativesWithTextAndEmojis

  • dom/DocumentMarkerController.h:

Drive-by fix: adjust a comment to reflect the actual behavior in DocumentMarkerController, and also add a FIXME
to replace the bool return type with an enum type.

  • editing/cocoa/AlternativeTextContextController.h:
  • editing/cocoa/AlternativeTextContextController.mm:

(WebCore::AlternativeTextContextController::replaceAlternatives):

  • editing/cocoa/AlternativeTextUIController.h:
  • editing/cocoa/AlternativeTextUIController.mm:

(WebCore::AlternativeTextUIController::replaceAlternatives):

Source/WebKit:

Add support for -removeEmojiAlternatives, which removes all dictation alternatives at the current selection,
whose text alternative strings only contain emojis. See below for more details.

  • Platform/spi/ios/TextInputSPI.h:
  • UIProcess/Cocoa/PageClientImplCocoa.h:
  • UIProcess/Cocoa/PageClientImplCocoa.mm:

(WebKit::PageClientImplCocoa::replaceDictationAlternatives):

Add PageClient plumbing to the new AlternativeTextUIController methods in WebCore to replace an existing
dictation context's text alternatives.

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::dictationAlternativesAtSelection):

We expand the selection range by one character here since DocumentMarkerController::markersInRange() does not
include document markers that end exactly at the given range.

(WebKit::WebPageProxy::clearDictationAlternatives):

Add two helper methods on WebPageProxy: one to query all dictation alternative identifiers that intersect with
the current selection range, and another to remove all dictation alternative document markers whose
DictationContext matches an identifier in a given list of identifiers.

  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView removeEmojiAlternatives]):

Implement the new SPI method with a two-step process:

  1. Request the list of dictation context IDs at the selection; for each ID, we either (a) replace the text

alternatives for that context ID with a new NSTextAlternatives object that doesn't have any of the emoji-
only alternatives that appear in the original NSTextAlternatives, or (b) remove the NSTextAlternatives and
dictation context ID mapping entirely, if all the alternatives only contain emojis.

  1. For all the text alternatives that were removed in step 1 (due to only containing emojis), clear out all

document markers corresponding to those text alternatives in the document.

  • WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm:

(WebKit::TextCheckingControllerProxy::removeAnnotationRelativeToSelection):

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::dictationAlternativesAtSelection):
(WebKit::WebPage::clearDictationAlternatives):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Tools:

Adjust an API test and augment an existing test to exercise -removeEmojiAlternatives.

  • TestWebKitAPI/Tests/ios/TextAlternatives.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/ios/UIKitSPI.h:
11:05 AM Changeset in webkit [291179] by Russell Epstein
  • 1 copy in tags/Safari-613.2.2

Tag Safari-613.2.2.

10:42 AM Changeset in webkit [291178] by Simon Fraser
  • 7 edits in trunk/Source/WebKit

Some minor refactoring in RemoteLayerBackingStore
​https://bugs.webkit.org/show_bug.cgi?id=237749

Reviewed by Tim Horton.

Simplify RemoteLayerBackingStore a little, primarily to push the setNeedsDisplay() calls
when swapToValidFrontBuffer() returns WebCore::SetNonVolatileResult::Empty out to the
callers, so it's clearer when m_dirtyRegion gets mutated.

In order to pass SetNonVolatileResult around more, change setBufferVolatility(bool) into
setBufferVolatile() and setFrontBufferNonVolatile(), which makes it clear that we only ever
set the front buffer to non-volatile.

Also move the call to clearBackendHandle() into
RemoteLayerWithRemoteRenderingBackingStoreCollection, since it's about GPU process.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):
(WebKit::RemoteLayerBackingStore::applySwappedBuffers):
(WebKit::RemoteLayerBackingStore::swapBuffers):
(WebKit::RemoteLayerBackingStore::setContents):
(WebKit::RemoteLayerBackingStore::display):
(WebKit::RemoteLayerBackingStore::paintContents):
(WebKit::RemoteLayerBackingStore::setBufferVolatile):
(WebKit::RemoteLayerBackingStore::setFrontBufferNonVolatile):
(WebKit::RemoteLayerBackingStore::willMakeBufferVolatile): Deleted.
(WebKit::RemoteLayerBackingStore::didMakeFrontBufferNonVolatile): Deleted.
(WebKit::RemoteLayerBackingStore::setBufferVolatility): Deleted.

  • Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:

(WebKit::RemoteLayerBackingStoreCollection::makeFrontBufferNonVolatile):
(WebKit::RemoteLayerBackingStoreCollection::swapToValidFrontBuffer):
(WebKit::RemoteLayerBackingStoreCollection::markBackingStoreVolatile):

  • Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.h:
  • Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm:

(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::makeFrontBufferNonVolatile):
(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::swapToValidFrontBuffer):
(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::collectBackingStoreBufferIdentifiersToMarkVolatile):

10:25 AM Changeset in webkit [291177] by J Pascoe
  • 5 edits in trunk/Source/WebKit

[WebAuthn] Cancel running operations in ASA on navigation
​https://bugs.webkit.org/show_bug.cgi?id=237452
rdar://problem/89781990

Reviewed by Brent Fulgham.

Pre-ASA WebAuthn calls cancel requests on navigation via calling authenticatorManager.cancelRequest
in WebPageProxy. In WebAuthn calls that go through ASA, the authenticatorManager lives in the ASA
process, so calls won't be cancelled on navigation.

This patch attempts to cancel ongoing operations whenever a WebAuthenticatorCoordinatorProxy that
uses ASA is destroyed, effectively cancelling requests on reload or navigation.

  • Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:
  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:

(WebKit::WebAuthenticatorCoordinatorProxy::~WebAuthenticatorCoordinatorProxy):

  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h:
9:49 AM Changeset in webkit [291176] by J Pascoe
  • 28 edits
    3 copies in trunk

[WebAuthn] Support authenticatorSelection.residentKey ResidentKeyRequirement
​https://bugs.webkit.org/show_bug.cgi?id=237567
rdar://89788378

Reviewed by Brent Fulgham and Chris Dumez.

Source/WebCore:

In Web Authentication level one, relying parties can specify authenticatorSelection.residentKeyRequired,
to signify they require a client-side discoverable credential. However, if the authenticator does not
support client-side discoverable credentials, the rp has no way to clarify they want a client-side
discoverable credential only if available.

This patch implements authenticatorSelection.residentKeyRequired introduced in level 2, which has three
values 'Preferred', 'Required', and 'Discouraged'. This allows RPs to create a client-side discoverable
credential if possible.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/webauthn/PublicKeyCredentialCreationOptions.h:

(WebCore::PublicKeyCredentialCreationOptions::AuthenticatorSelectionCriteria::encode const):
(WebCore::PublicKeyCredentialCreationOptions::AuthenticatorSelectionCriteria::decode):

  • Modules/webauthn/PublicKeyCredentialCreationOptions.idl:
  • Modules/webauthn/ResidentKeyRequirement.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKAuthenticatorSelectionCriteria.mm.
  • Modules/webauthn/ResidentKeyRequirement.idl: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKAuthenticatorSelectionCriteria.mm.
  • Modules/webauthn/fido/AuthenticatorSupportedOptions.cpp:

(fido::AuthenticatorSupportedOptions::setResidentKeyAvailability):
(fido::convertToCBOR):
(fido::AuthenticatorSupportedOptions::setSupportsResidentKey): Deleted.

  • Modules/webauthn/fido/AuthenticatorSupportedOptions.h:
  • Modules/webauthn/fido/DeviceRequestConverter.cpp:

(fido::encodeMakeCredenitalRequestAsCBOR):

  • Modules/webauthn/fido/DeviceRequestConverter.h:
  • Modules/webauthn/fido/DeviceResponseConverter.cpp:

(fido::readCTAPGetInfoResponse):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

In Web Authentication level one, relying parties can specify authenticatorSelection.residentKeyRequired,
to signify they require a client-side discoverable credential. However, if the authenticator does not
support client-side discoverable credentials, the rp has no way to clarify they want a client-side
discoverable credential only if available.

This patch implements authenticatorSelection.residentKeyRequired introduced in level 2, which has three
values 'Preferred', 'Required', and 'Discouraged'. This allows RPs to create a client-side discoverable
credential if possible.

  • UIProcess/API/Cocoa/_WKAuthenticatorSelectionCriteria.h:
  • UIProcess/API/Cocoa/_WKAuthenticatorSelectionCriteria.mm:

(-[_WKAuthenticatorSelectionCriteria init]):

  • UIProcess/API/Cocoa/_WKResidentKeyRequirement.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKAuthenticatorSelectionCriteria.mm.
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:

(residentKey):
(authenticatorSelectionCriteria):
(+[_WKWebAuthenticationPanel encodeMakeCredentialCommandWithClientDataJSON:options:userVerificationAvailability:]):
(+[_WKWebAuthenticationPanel encodeMakeCredentialCommandWithClientDataHash:options:userVerificationAvailability:]):

  • UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:

(WebKit::CtapAuthenticator::makeCredential):

  • WebKit.xcodeproj/project.pbxproj:

Tools:

Add API tests for authenticatorSelection.residentKey.

  • TestWebKitAPI/Tests/WebCore/CtapRequestTest.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/CtapResponseTest.cpp:

(TestWebKitAPI::TEST):

LayoutTests:

Add layout tests using residentKey field.

  • http/wpt/webauthn/public-key-credential-create-failure-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-hid.https.html:
  • http/wpt/webauthn/public-key-credential-create-success-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-hid.https.html:
9:39 AM Changeset in webkit [291175] by Ben Nham
  • 2 edits in trunk/Source/WebCore

Fix WebContent jetsam that occurs when selecting text in a large e-mail
​https://bugs.webkit.org/show_bug.cgi?id=237698

Reviewed by Simon Fraser.

When selecting text in a large e-mail in MobileMail, we often jetsam. This is due to this
chain of events:

  1. If the selection extends enough to start causing the content to pan (which is easy to do when zoomed in on the mail content), then AutoscrollController ends up changing the scroll position of the FrameView to perform the pan.
  2. FrameView::requestScrollPositionUpdate tries to prepopulate tiles around the endpoint of the pan by calling TileController::prepopulateRect with visibleContentRect's size.

The problem is that MobileMail resizes their web view (and therefore FrameView) to match
the size of the content. This causes FrameView's visibleContentRect to be very large (>100k
pts high for some emails). As a result, we end up prepopulating every single tile in the
email, causing a huge spike in IOSurface memory usage that leads to a jetsam.

To fix this, we make FrameView::requestScrollPositionUpdate act more like
RenderLayerCompositor::visibleRectForLayerFlushing. In particular, on iOS, we now use
exposedContentRect instead of visibleContentRect. Since exposedContentRect is derived from
contentOffset/contentSize of the scroll view in the UIProcess, it's more correct and is much
smaller than visibleContentRect in this case.

  • page/FrameView.cpp:

(WebCore::FrameView::requestScrollPositionUpdate):

9:38 AM Changeset in webkit [291174] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[WinCairo] DrawingAreaWC::sendUpdateAC should keep a WeakPtr of this for the reply handler
​https://bugs.webkit.org/show_bug.cgi?id=237757

Reviewed by Don Olmstead.

WinCairo Release was crashing by visiting some random web sites
for several minutes. The reply handler in
DrawingAreaWC::sendUpdateAC should check that this object is
still alive with weakThis.

  • WebProcess/WebPage/wc/DrawingAreaWC.cpp:

(WebKit::DrawingAreaWC::sendUpdateAC): Capture weakThis for the
reply handler and check it.

9:31 AM Changeset in webkit [291173] by don.olmstead@sony.com
  • 2 edits
    2 copies
    6 adds
    3 deletes in trunk/LayoutTests

Platforms implementing WebSocketTask pass hybi/close-and-server-script-exception-expected.txt
​https://bugs.webkit.org/show_bug.cgi?id=237727

Reviewed by Alex Christensen.

The root expected.txt had a line with FAIL but all platforms that implement WebSocketTask
PASS the test fully. Make this the default and remove redundant expectations and add a
FAIL for Apple WebKitLegacy ports which don't implement WebSocketTask.

  • http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt:
  • platform/glib/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt: Removed.
  • platform/ios-wk2/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt: Removed.
  • platform/mac-wk1/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt: Copied from LayoutTests/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt: Removed.
  • platform/win/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt: Copied from LayoutTests/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt.
9:16 AM Changeset in webkit [291172] by Brandon
  • 2 edits in trunk/Source/WebCore

Verify values before adding to hash map
​https://bugs.webkit.org/show_bug.cgi?id=237781

Reviewed by Simon Fraser.

Verify values before adding to hash map to avoid hash map corruption.

Original patch by John Cunningham

  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::updateSnapOffsetsForScrollableArea):

9:11 AM Changeset in webkit [291171] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] shape-rendering should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237767

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

9:08 AM Changeset in webkit [291170] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] vector-effect should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237766

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

8:44 AM Changeset in webkit [291169] by Alan Bujtas
  • 8 edits in trunk

[IFC][Integration] Add support for inline table
​https://bugs.webkit.org/show_bug.cgi?id=237498

Reviewed by Antti Koivisto.

Source/WebCore:

This patch enables inline tables for IFC
e.g.
<div>inline content with <table style="display: inline-table">table</table></div>

We treat the inline table as any other atomic inline level box with synthetic baseline.

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::buildTree):

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForChild):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::updateInlineTableDimensions):
(WebCore::LayoutIntegration::LineLayout::updateLayoutBoxDimensions):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutModernLines):

LayoutTests:

  • platform/mac/fast/dynamic/insert-before-table-part-in-continuation-expected.txt:
8:05 AM Changeset in webkit [291168] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS][WP] Add required sys call to sandbox
​https://bugs.webkit.org/show_bug.cgi?id=237739

Reviewed by Chris Dumez.

Add a rarely used, but required syscall, to the WebContent process sandbox on macOS.

  • WebProcess/com.apple.WebProcess.sb.in:
7:33 AM Changeset in webkit [291167] by youenn@apple.com
  • 23 edits
    2 deletes in trunk

Do capture video frame downsampling in GPUProcess
​https://bugs.webkit.org/show_bug.cgi?id=237316
<rdar://problem/89959777>

Reviewed by Eric Carlson.

Source/WebCore:

To prevent some flakinesses, we now compute the video frame size from MediaSample given to rvfc metadata.
We stop making requestToEnd as virtual by introducing a virtual endProducingData method.
RealtimeMediaSource::end calls the new endProducingData virtual method, which is stop by default.
RealtimeVideoSource::endProducingData is implemented by calling requestToEnd on the underlying source.
This makes sure that ending a source will not end a related cloned source.

Covered by existing tests.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
  • platform/mediastream/RealtimeMediaSource.cpp:
  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeVideoSource.cpp:
  • platform/mediastream/RealtimeVideoSource.h:

Source/WebKit:

Instead of cloning within WebProcess, we know clone in GPUProcess for camera tracks.
This allows to keep using IOSurfaces when several tracks are using the same device with different resolutions.
Since display tracks are already cloned remotely, we can merge RemoteRealtimeDisplaySource and RemoteRealtimeVideoSource.

We no longer need to stop the source in ~SourceProxy given we are removing ourselves from observing the source.
We rename UserMediaCaptureManagerProxy end to remove and requestToEnd to endProducingData.

  • SourcesCocoa.txt:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:
  • WebProcess/cocoa/RemoteCaptureSampleManager.h:
  • WebProcess/cocoa/RemoteRealtimeDisplaySource.cpp: Removed.
  • WebProcess/cocoa/RemoteRealtimeDisplaySource.h: Removed.
  • WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.cpp:
  • WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.h:
  • WebProcess/cocoa/RemoteRealtimeVideoSource.cpp:
  • WebProcess/cocoa/RemoteRealtimeVideoSource.h:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:
  • WebProcess/cocoa/UserMediaCaptureManager.h:

LayoutTests:

  • fast/mediastream/getDisplayMedia-size.html:

Remove potential race condition by restarting playing the stream to compute the size.

6:30 AM Changeset in webkit [291166] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] text-anchor should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237765

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

6:27 AM Changeset in webkit [291165] by Mikhail R. Gadelha
  • 3 edits in trunk/Source

Debug build failure after r246172: ASSERT_UNDER_CONSTEXPR_CONTEXT should work in constexpr contexts
​https://bugs.webkit.org/show_bug.cgi?id=236728

Reviewed by Michael Catanzaro.

ASSERT_UNDER_CONSTEXPR_CONTEXT is calling a non-constexpr function (WTFReportAssertionFailure)
when it fails, so it cannot be used for an assert not reached.

This patch adds a new RELEASE_ASSERT_NOT_REACHED_UNDER_CONSTEXPR_CONTEXT() macro
that calls CRASH_UNDER_CONSTEXPR_CONTEXT() instead of WTFReportAssertionFailure.

No functional change.

  • wasm/WasmCompilationMode.h:

(JSC::Wasm::isOSREntry):
(JSC::Wasm::isAnyBBQ):
(JSC::Wasm::isAnyOMG):

6:27 AM Changeset in webkit [291164] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] stroke-linejoin should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237764

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

6:23 AM Changeset in webkit [291163] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] stroke-linecap should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237763

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

6:19 AM Changeset in webkit [291162] by commit-queue@webkit.org
  • 14 edits in trunk/Source/WebCore

Rename invalidation methods in SVGElement
​https://bugs.webkit.org/show_bug.cgi?id=237716

Patch by Rob Buis <​rbuis@igalia.com> on 2022-03-11
Reviewed by Martin Robinson.

Rename invalidation methods in SVGElement to be more specific. This in fact
uses the naming in the underlying ElementData.

  • svg/SVGCircleElement.cpp:

(WebCore::SVGCircleElement::svgAttributeChanged):

  • svg/SVGElement.cpp:

(WebCore::SVGElement::commitPropertyChange):

  • svg/SVGElement.h:
  • svg/SVGElementInlines.h:

(WebCore::SVGElement::setAnimatedSVGAttributesAreDirty):
(WebCore::SVGElement::setPresentationalHintStyleIsDirty):
(WebCore::SVGElement::invalidateSVGAttributes): Deleted.
(WebCore::SVGElement::invalidateSVGPresentationalHintStyle): Deleted.

  • svg/SVGEllipseElement.cpp:

(WebCore::SVGEllipseElement::svgAttributeChanged):

  • svg/SVGFilterElement.cpp:

(WebCore::SVGFilterElement::svgAttributeChanged):

  • svg/SVGForeignObjectElement.cpp:

(WebCore::SVGForeignObjectElement::svgAttributeChanged):

  • svg/SVGImageElement.cpp:

(WebCore::SVGImageElement::svgAttributeChanged):

  • svg/SVGMaskElement.cpp:

(WebCore::SVGMaskElement::svgAttributeChanged):

  • svg/SVGPatternElement.cpp:

(WebCore::SVGPatternElement::svgAttributeChanged):

  • svg/SVGRectElement.cpp:

(WebCore::SVGRectElement::svgAttributeChanged):

  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::svgAttributeChanged):

  • svg/properties/SVGAttributeAnimator.cpp:

(WebCore::SVGAttributeAnimator::invalidateStyle):

6:17 AM Changeset in webkit [291161] by graouts@webkit.org
  • 7 edits in trunk

[web-animations] mask-repeat should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237771

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::setMaskRepeatX):
(WebCore::RenderStyle::setMaskRepeatY):

6:08 AM Changeset in webkit [291160] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] mask-mode should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237770

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

6:05 AM Changeset in webkit [291159] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] mask-composite should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237769

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

Refactor FillLayerFillBoxPropertyWrapper to a templatized DiscreteFillLayerPropertyWrapper
which allows us to support other enum types like CompositeOperator.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

6:01 AM Changeset in webkit [291158] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] mask-type should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237768

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

5:48 AM Changeset in webkit [291157] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] text-rendering should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237777

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

5:45 AM Changeset in webkit [291156] by graouts@webkit.org
  • 4 edits in trunk/Source/WebCore

[web-animations] refactor discrete FontCascadeDescription to use dedicated animation wrappers
​https://bugs.webkit.org/show_bug.cgi?id=237776

Reviewed by Antti Koivisto.

We added getters and setters on RenderStyle for properties exposed on FontCascadeDescription
solely for the purpose of animation support. Instead, we add a couple of dedicated animation
wrapper that removes the methods from RenderStyle and do all the work in
CSSPropertyAnimation.cpp.

The base class DiscreteFontDescriptionWrapper and is used for CSS properties backed by several
FontCascadeDescription methods.

The subclass DiscreteFontDescriptionTypedWrapper is used for CSS properties backed by a single
FontCascadeDescrption method dealing with a simple type.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::DiscreteFontDescriptionWrapper::DiscreteFontDescriptionWrapper):
(WebCore::DiscreteFontDescriptionWrapper::propertiesInFontDescriptionAreEqual const):
(WebCore::DiscreteFontDescriptionWrapper::setPropertiesInFontDescription const):
(WebCore::DiscreteFontDescriptionTypedWrapper::DiscreteFontDescriptionTypedWrapper):
(WebCore::DiscreteFontDescriptionTypedWrapper::value const):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setFontPalette):
(WebCore::RenderStyle::setFontKerning): Deleted.
(WebCore::RenderStyle::setFontFeatureSettings): Deleted.
(WebCore::RenderStyle::setFontFamilies): Deleted.
(WebCore::RenderStyle::setFontSynthesis): Deleted.
(WebCore::RenderStyle::setFontVariantAlternates): Deleted.
(WebCore::RenderStyle::setFontVariantPosition): Deleted.
(WebCore::RenderStyle::setFontVariantCaps): Deleted.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::fontPalette const):
(WebCore::RenderStyle::fontKerning const): Deleted.
(WebCore::RenderStyle::fontFeatureSettings const): Deleted.
(WebCore::RenderStyle::fontFamilies const): Deleted.
(WebCore::RenderStyle::fontSynthesis const): Deleted.
(WebCore::RenderStyle::fontVariantAlternates const): Deleted.
(WebCore::RenderStyle::fontVariantPosition const): Deleted.
(WebCore::RenderStyle::fontVariantCaps const): Deleted.

4:59 AM Changeset in webkit [291155] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GStreamer] Allow AOM AV1 decoder and check for hardware AV1 decoders as well
​https://bugs.webkit.org/show_bug.cgi?id=237713

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-11
Reviewed by Xabier Rodriguez-Calvar.

The AOM AV1 decoder performs better nowadays. Also it seems hardware-accelerated decoders
are appearing, so we should check for this as well.

  • platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:

(WebCore::GStreamerRegistryScanner::initializeDecoders):

3:51 AM Changeset in webkit [291154] by Antti Koivisto
  • 7 edits in trunk

[CSS Container Queries] Only apply inline-size containment when it is allowed
​https://bugs.webkit.org/show_bug.cgi?id=237761

Reviewed by Antoine Quint.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-contain/container-queries/ineligible-containment-expected.txt:

Source/WebCore:

"Giving an element inline-size containment has no effect if any of the following are true:

if the element does not generate a principal box (as is the case with display: contents or display: none)
if its inner display type is table
if its principal box is an internal table box
if its principal box is an internal ruby box or a non-atomic inline-level box"

​https://drafts.csswg.org/css-contain-3/#containment-inline-size

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::computeInlinePreferredLogicalWidths const):

Check for valid inline-size containment.

  • rendering/RenderObject.cpp:

(WebCore::shouldApplyInlineSizeContainment):

  • rendering/RenderObject.h:
  • style/ContainerQueryEvaluator.cpp:

(WebCore::Style::ContainerQueryEvaluator::selectContainer const):

Cleanups.

(WebCore::Style::ContainerQueryEvaluator::evaluateSizeFeature const):

Check for valid size containment for the type, evaluate to unknown if it doesn't exist.
Also check layout containment.

3:17 AM Changeset in webkit [291153] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Unreviewed isInGPUProcess() fix after 248209@main
​https://bugs.webkit.org/show_bug.cgi?id=237762

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-03-11

  • platform/RuntimeApplicationChecks.h:

(WebCore::isInGPUProcess): Define isInGPUProcess() in all cases but
return false if ENABLE_GPU_PROCESS is disabled.

2:36 AM Changeset in webkit [291152] by Carlos Garcia Campos
  • 7 edits in trunk

[GTK] Add a unit tests to check the remote inspector HTTP server
​https://bugs.webkit.org/show_bug.cgi?id=237708

Reviewed by Michael Catanzaro.

Source/WebKit:

Ensure we close the socket if it's still open when the remote inspector client is destroyed.

  • UIProcess/Inspector/glib/RemoteInspectorClient.cpp:

(WebKit::RemoteInspectorClient::~RemoteInspectorClient):

Source/WTF:

  • wtf/glib/SocketConnection.h: Export close().

Tools:

Rework the inspector server test to also allow to launch the HTTP server and check it correctly serves the
target list page.

  • TestWebKitAPI/Tests/WebKitGtk/InspectorTestServer.cpp:

(main):

  • TestWebKitAPI/Tests/WebKitGtk/TestInspectorServer.cpp:

(InspectorHTTPServerTest::setup):
(InspectorHTTPServerTest::teardown):
(testInspectorServerPageList):
(testInspectorHTTPServerPageList):
(beforeAll):
(afterAll):
(stopTestServer): Deleted.
(sigAbortHandler): Deleted.
(connectToInspectorServer): Deleted.
(waitUntilInspectorServerIsReady): Deleted.
(startTestServer): Deleted.

1:27 AM Changeset in webkit [291151] by graouts@webkit.org
  • 3 edits in trunk/Source/WebCore

[web-animations] refactor discrete SVG properties to use a dedicated animation wrapper
​https://bugs.webkit.org/show_bug.cgi?id=237760

Reviewed by Antti Koivisto.

We added getters and setters on RenderStyle for properties exposed on SVGRenderStyle
solely for the purpose of animation support. Instead, we add a dedicated animation
wrapper that removes the methods from RenderStyle and do all the work in
CSSPropertyAnimation.cpp. This will be beneficial for future SVG properties
with discrete animation support that are yet to be added.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::clipRule const): Deleted.
(WebCore::RenderStyle::setClipRule): Deleted.
(WebCore::RenderStyle::colorInterpolation const): Deleted.
(WebCore::RenderStyle::setColorInterpolation): Deleted.
(WebCore::RenderStyle::colorInterpolationFilters const): Deleted.
(WebCore::RenderStyle::setColorInterpolationFilters): Deleted.
(WebCore::RenderStyle::dominantBaseline const): Deleted.
(WebCore::RenderStyle::setDominantBaseline): Deleted.
(WebCore::RenderStyle::fillRule const): Deleted.
(WebCore::RenderStyle::setFillRule): Deleted.

1:20 AM Changeset in webkit [291150] by Diego Pino Garcia
  • 2 edits in trunk/Source/WebKit

[GLIB] Debian Stable & Ubuntu LTS build is failing after r291093
​https://bugs.webkit.org/show_bug.cgi?id=237756

Reviewed by Carlos Garcia Campos.

Use soup_websocket_connection_send_message when SOUP < 2.67.3.

  • UIProcess/Inspector/glib/RemoteInspectorHTTPServer.cpp:
12:40 AM Changeset in webkit [291149] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Disable WebGL and DOM GPU process when some dependencies are unavailable
​https://bugs.webkit.org/show_bug.cgi?id=237700
<rdar://problem/88735051>

Reviewed by Eric Carlson.

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultUseGPUProcessForDOMRenderingEnabled):
(WebKit::defaultUseGPUProcessForWebGLEnabled):

Mar 10, 2022:

11:37 PM Changeset in webkit [291148] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] mask-origin should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237733

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

11:26 PM Changeset in webkit [291147] by graouts@webkit.org
  • 7 edits in trunk

[web-animations] font-variant-numeric should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237669

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

We can also add support for animating the font-variant shorthand since
font-variant-numeric is the last of its longhands that was lacking
animation support.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

10:43 PM Changeset in webkit [291146] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ iOS ] editing/inserting/insert-paragraph-separator-with-inline-table-bold-crash.html is a flaky timeout
​https://bugs.webkit.org/show_bug.cgi?id=237551

Patch by Frédéric Wang <​fwang@igalia.com> on 2022-03-10
Reviewed by Ryosuke Niwa.

  • editing/inserting/insert-paragraph-separator-with-inline-table-bold-crash.html: Ensure the

test does not complete before the page load.

10:29 PM WebKit Team edited by Diego Pino Garcia
Update location to contributors.json (diff)
9:39 PM Changeset in webkit [291145] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Abandoned memory in NetworkStorageManager::m_temporaryBlobPathsByConnection
​https://bugs.webkit.org/show_bug.cgi?id=237734

Reviewed by Chris Dumez.

Remove items from m_temporaryBlobPathsByConnection when connection is closed.

  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::stopReceivingMessageFromConnection):

9:03 PM Changeset in webkit [291144] by Peng Liu
  • 15 edits
    3 moves in trunk

EnterPictureInPictureEvent event was renamed to PictureInPictureEvent in spec
​https://bugs.webkit.org/show_bug.cgi?id=221083

Reviewed by Youenn Fablet.

Source/WebCore:

Some updates based on the spec changes:

  • Rename EnterPictureInPictureEvent.idl to PictureInPictureEvent.idl.
  • leavepictureinpicture event should be fired with the Picture-in-Picture window.

(​https://github.com/w3c/picture-in-picture/issues/188)

Covered by media/picture-in-picture/picture-in-picture-api-events.html.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp:

(WebCore::HTMLVideoElementPictureInPicture::didEnterPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::didExitPictureInPicture):

  • Modules/pictureinpicture/PictureInPictureEvent.cpp: Renamed from Source/WebCore/Modules/pictureinpicture/EnterPictureInPictureEvent.cpp.

(WebCore::PictureInPictureEvent::create):
(WebCore::PictureInPictureEvent::PictureInPictureEvent):

  • Modules/pictureinpicture/PictureInPictureEvent.h: Renamed from Source/WebCore/Modules/pictureinpicture/EnterPictureInPictureEvent.h.
  • Modules/pictureinpicture/PictureInPictureEvent.idl: Renamed from Source/WebCore/Modules/pictureinpicture/EnterPictureInPictureEvent.idl.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • dom/EventNames.in:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

LayoutTests:

  • media/picture-in-picture/picture-in-picture-api-events-expected.txt:
  • media/picture-in-picture/picture-in-picture-api-events.html:

Check the picture-in-picture window in the "leavepictureinpicture" event handler.

7:22 PM Changeset in webkit [291143] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

Unreviewed, non-unified build fix after 248294@main
​https://bugs.webkit.org/show_bug.cgi?id=237751

  • layout/integration/LayoutIntegrationLineLayout.cpp: Add missing

include.

6:35 PM Changeset in webkit [291142] by Elliott Williams
  • 8 edits in trunk/Source/JavaScriptCore

[XCBuild] Emit a discovered dependency file from offlineasm
​https://bugs.webkit.org/show_bug.cgi?id=237329

Reviewed by Alexey Proskuryakov.

Xcode needs to know what files offlineasm uses and produces in order to schedule it
correctly in incremental builds. Rather than use generated xcfilelists like WebKit does
elsewhere in the project, emit a depfile from offlineasm based on the parse tree's source
files.

Discovered dependency files ("depfiles") are Makefile-formatted files which list the inputs
used to produce an output. They are emitting during the build to a temporary directory, and
ensure that subsequent incremental builds will re-run offlineasm when any of the included
sources change. This is the same mechanism clang uses to track header dependencies.

Unfortunately, the legacy build system will refuse to execute a script phase or rule that
emits a depfile. To work around this, convert the offlineasm pipeline to be based on build
rules, to be used by XCBuild only. The idea is that LowLevelInterpreter.asm is listed as a
source build file in JSCLLIntSettingsExtractor, JSCLLIntOffsetsExtractor, and
JavaScriptCore. Each target uses a build rule to generate its respective header from
LowLevelInterpreter.asm. Xcode schedules these rule executions before any clang tasks.

The legacy build system avoids executing the rules via EXCLUDED_SOURCE_FILE_NAMES, and
instead uses the existing build phases, which have "(Legacy)" in their names and are now
no-ops under XCBuild.

Aside from working around the legacy build system's limitations, using build rules is
probably a superior way to express what we're doing, as it gives Xcode the opportunity to
compile other objects in parallel, and could be easily extended to compile multiple discrete
asm files should the need arise.

  • Configurations/ToolExecutable.xcconfig: Build rules are XCBuild-only.
  • JavaScriptCore.xcodeproj/project.pbxproj: Add build rules, rename legacy scripts.
  • offlineasm/asm.rb: Add --depfile flag.
  • offlineasm/generate_offset_extractor.rb: Add --depfile flag.
  • offlineasm/generate_settings_extractor.rb: Add --depfile flag.
6:04 PM Changeset in webkit [291141] by Chris Dumez
  • 6 edits
    3 adds in trunk

Main document is leaking on haaretz.co.il due to lazy image loading
​https://bugs.webkit.org/show_bug.cgi?id=237660
<rdar://problem/90035071>

Reviewed by Geoffrey Garen.

Source/WebCore:

When an HTML image uses loading=lazy, ImageLoader::updateFromElement() may get
called twice. If the image is outside the viewport, the first time ImageLoader::updateFromElement()
is called, we'll request a CachedImage but we'll set m_lazyImageLoadState to LazyImageLoadState::Deferred
and not ask the CachedImage to load. Then, later on, if the HTML image approaches the viewport,
ImageLoader::loadDeferredImage() will get called. It will set m_lazyImageLoadState to LazyImageLoadState::LoadImmediately
and call updateFromElement() again. This time however, updateFromElement() will actually ask the CachedImage
to load.

The issue was that the first time ImageLoader::updateFromElement(), we would set m_lazyImageLoadState to Deferred
and not ask the CachedImage to load but still set m_hasPendingLoadEvent to true. This is problematic if the CachedImage
is not already loaded since no was was started and thus no load event is coming (and no load event may ever come if the
image never approaches the viewport). When updatedHasPendingEvent() is called, it will protect the HTMLImageElement if
m_hasPendingLoadEvent is true, to make sure the image element stays alive long enough for us to dispatch the load event.
With lazy loading, this meant that we would protect the HTMLImageElement right away and undefinitely since no load event
may ever come. This meant that when navigating away from a page with images that are lazily loaded (and not loaded yet),
we would leak the HTMLImageElements (and ImageLoaders), which in turn would keep the Document alive too.

To address the issue, we now make sure that m_hasPendingLoadEvent is no longer set to true when updateFromElement()
is called but the CachedImage is not already loaded and not loading (lazy loading case). When updateFromElement() gets
called the second time (when the lazily loaded image approaches the viewport), we make sure that the m_hasPendingLoadEvent
flag gets set to true then.

Test: fast/dom/lazy-image-loading-document-leak.html

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::ImageLoader):
(WebCore::ImageLoader::updateFromElement):
(WebCore::ImageLoader::didUpdateCachedImage):
(WebCore::ImageLoader::didStartLoading):

  • loader/ImageLoader.h:
  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::load):

  • loader/cache/CachedImageClient.h:

(WebCore::CachedImageClient::didStartLoading):

LayoutTests:

Add layout test coverage.

  • fast/dom/lazy-image-loading-document-leak-expected.txt: Added.
  • fast/dom/lazy-image-loading-document-leak.html: Added.
  • fast/dom/resources/lazy-image-loading-document-leak-popup.html: Added.
5:47 PM Changeset in webkit [291140] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Fix naming in NetworkProcessProxy::registerRemoteWorkerClientProcess()
​https://bugs.webkit.org/show_bug.cgi?id=237737

Reviewed by Geoffrey Garen.

Fix naming in NetworkProcessProxy::registerRemoteWorkerClientProcess() to store referring to
shared workers and add logging.

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::registerRemoteWorkerClientProcess):
(WebKit::NetworkProcessProxy::unregisterRemoteWorkerClientProcess):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
5:20 PM Changeset in webkit [291139] by msaboff@apple.com
  • 16 edits in trunk/Source

Catalyst JavaScriptCore, WebCore, WebKitLegacy, and WebKit shouldn't be copied to the Secondary Path
​https://bugs.webkit.org/show_bug.cgi?id=237748

Reviewed by Mark Lam.

Updated the configuration to exclude copying Catalyst build products to the secondary path.

Source/JavaScriptCore:

  • Configurations/Base.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/ANGLE-dynamic.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/libwebrtc.xcconfig:

Source/WebCore:

  • Configurations/WebCore.xcconfig:

Source/WebGPU:

  • Configurations/WebGPU.xcconfig:

Source/WebInspectorUI:

  • Configurations/WebInspectorUIFramework.xcconfig:

Source/WebKit:

  • Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:
4:38 PM Changeset in webkit [291138] by Jonathan Bedard
  • 8 edits
    1 move in trunk

[git-webkit] Support multiple metadata locations
​https://bugs.webkit.org/show_bug.cgi?id=237395
<rdar://problem/89715863>

Reviewed by Dewei Zhu.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git): Rename PROJECT_CONFIG_PATH to GIT_CONFIG_EXTENSION.
(Git.config): Use dynamic context.metadata instead of constant.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/scm.py:

(Scm.init): Use self.metadata instead of constant.
(Scm.metadata): Support multiple locations for this directory.

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

(Setup.git): Use dynamic repository.metadata instead of constant.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:
  • metadata/git_config_extension: Renamed from metadata/project_config.
  • metadata/project_config: Renamed to metadata/git_config_extension.

Canonical link: ​https://commits.webkit.org/248298@main

4:28 PM Changeset in webkit [291137] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

[macOS] WebContent processes crash with XPC_EXIT_REASON_SIGTERM_TIMEOUT when logging out
​https://bugs.webkit.org/show_bug.cgi?id=237398
<rdar://88940229>

Reviewed by Alexey Proskuryakov.

Because we don't use RunningBoard on macOS, we leak an OS transaction to control the lifetime of our XPC
services ourselves. However, one of the side effects of leaking this transaction is that the default SIGTERM
handler doesn't cleanly exit our XPC services when logging out or rebooting. This led to crashes with
XPC_EXIT_REASON_SIGTERM_TIMEOUT as termination reason (rdar://88940229).

To address the issue, we now set our own SIGTERM handler that calls _exit(0) to exit cleanly. In the future,
we should likely adopt RunningBoard on macOS and control our lifetime via process assertions instead of
leaking this OS transaction.

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:

(WebKit::XPCServiceInitializer):

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm:

(WebKit::setOSTransaction):
(WebKit::XPCServiceExit):
(WebKit::osTransaction): Deleted.

4:15 PM Changeset in webkit [291136] by Wenson Hsieh
  • 11 edits
    1 add in trunk

[iOS] Add support for -[UITextInput addTextAlternatives:] on WKContentView
​https://bugs.webkit.org/show_bug.cgi?id=237691
rdar://89647018

Reviewed by Aditya Keerthi.

Source/WebKit:

Work towards refactoring support for dictation alternatives on iOS; this patch adds support for an optional,
private UITextInput protocol method on WKContentView, which clients can use to directly insert
NSTextAlternatives for a given string of matching text (i.e., if the given string matches text at or before the
current selection range).

Tests: TextAlternatives.AddTextAlternativesWithMatch

TextAlternatives.AddTextAlternativesWithSelectedMatch
TextAlternatives.AddTextAlternativesWithoutMatch

  • Scripts/webkit/messages.py:

(headers_for_type):

Add support for sending WebCore::DictationContext as an IPC message argument.

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::addDictationAlternative):

Register the dictation alternative (NSTextAlternative) on the page client, and send a message to the web process
to try and insert document markers corresponding to this dictation alternative. If, for whatever reason, we fail
to map dictation alternatives to an editable DOM range, make sure we automatically unregister this text
alternative as well.

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView addTextAlternatives:]):

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::addDictationAlternative):

Given a string to match and a dictation alternative identifier context, try to search for the matching string
before (or in) the selection; if found, install the dictation alternatives in the match range, as a document
marker.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Tools:

Add several basic API tests to exercise the new API; in particular, exercise both cases where the text
alternative's primary text matches before the selection, where it does not match, and where it matches inside
the selection.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/ios/TextAlternatives.mm: Added.

(-[TestWKWebView dictationAlternativesMarkerCount:]):
(TestWebKitAPI::createWebViewForTestingTextAlternatives):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/ios/UIKitSPI.h:
3:45 PM Changeset in webkit [291135] by Matteo Flores
  • 3 edits in trunk/LayoutTests

[ iOS Mac ] imported/w3c/web-platform-tests/service-workers/service-worker/partitioned-service-worker-matchAll.tentative.https.html is a flaky text failure on all queues
​https://bugs.webkit.org/show_bug.cgi?id=237680

Unreviewed test gardening.

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
2:51 PM Changeset in webkit [291134] by Alan Bujtas
  • 40 edits in trunk

[IFC][Integration] Enable RenderListItem and RenderListMarker for IFC
​https://bugs.webkit.org/show_bug.cgi?id=237497

Reviewed by Antti Koivisto.

Source/WebCore:

This enables horizontal, RTL, "non-same line nested" list items for IFC.

List markers behave as regular inline level boxes except when it comes to vertical align,
when non-image based list markers are aligned as text. Also outside list markers (list-style-position: outside)
have extra (negative) horizontal margin to place them outside of the containing block's border box.

  • layout/formattingContexts/inline/InlineContentBreaker.cpp:

(WebCore::Layout::isWrappableRun):

  • layout/formattingContexts/inline/InlineFormattingGeometry.cpp:

(WebCore::Layout::InlineFormattingGeometry::inlineLevelBoxAffectsLineBox const):

  • layout/formattingContexts/inline/InlineLevelBox.h:

(WebCore::Layout::InlineLevelBox::isListMarker const):

  • layout/formattingContexts/inline/InlineLine.cpp:

(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::toLineRunType):
(WebCore::Layout::Line::Run::Run):

  • layout/formattingContexts/inline/InlineLine.h:

(WebCore::Layout::Line::Run::isBox const):
(WebCore::Layout::Line::Run::isListMarker const):

  • layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:

(WebCore::Layout::LineBoxBuilder::setBaselineAndLayoutBounds const):
(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):

  • layout/formattingContexts/inline/InlineLineBoxBuilder.h:
  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

(WebCore::Layout::isAtSoftWrapOpportunity):

  • layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::processNonBidiContent):
(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::buildTree):

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::printReason):
(WebCore::LayoutIntegration::canUseForChild):
(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

  • layout/integration/LayoutIntegrationCoverage.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::updateListItemDimensions):
(WebCore::LayoutIntegration::LineLayout::updateListMarkerDimensions):
(WebCore::LayoutIntegration::LineLayout::updateLayoutBoxDimensions):
(WebCore::LayoutIntegration::LineLayout::layout):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::isListMarker const):
(WebCore::Layout::Box::isInsideListMarker const):
(WebCore::Layout::Box::isOutsideListMarker const):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutModernLines):

  • rendering/RenderListMarker.h:

LayoutTests:

  • fast/replaced/ul-li-word-break-break-word-expected.html: progression. We do not break between the list marker and the content anymore.
  • platform/mac/css1/box_properties/margin_right-expected.txt:
  • platform/mac/css1/box_properties/padding_right-expected.txt: progressions. Align list marker with the content (like Firefox does).
  • platform/mac/css2.1/t0505-c16-descendant-01-e-expected.txt: inline box height progression (not visible)
  • platform/mac/fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element-expected.txt: usual 1px diff.
  • platform/mac/fast/inline/emptyInlinesWithinLists-expected.txt: progression
  • platform/mac/fast/lists/002-expected.txt: same as margin_right/padding_right.
  • platform/mac/fast/lists/003-expected.txt:
  • platform/mac/fast/lists/li-br-expected.txt: same as ul-li-word-break-break-word
  • platform/mac/fast/selectors/166-expected.txt: usual 1px diff.
2:17 PM Changeset in webkit [291133] by Elliott Williams
  • 18 edits in trunk

[XCBuild] Fix GeneratedSources dependency validation errors
​https://bugs.webkit.org/show_bug.cgi?id=237490

Reviewed by Alexey Proskuryakov.
.:

Fixes miscellanous targets which were not specifying their task outputs correctly.

For easier dependency validation testing, Make builds now recognize a VALIDATE_DEPENDENCIES
setting. Building with VALIDATE_DEPENDENCIES=YES or VALIDATE_DEPENDENCIES=YES_ERROR passes
the setting to xcodebuild and sets a magic xattr on the build directory so that product
files in it are validated.

  • Makefile.shared:

Source/JavaScriptCore:

Declare JSCBuiltins.cpp in DerivedSources.make. It's created by generate-js-builtins.py but
was never declared as an output.

  • DerivedSources-output.xcfilelist: Autogenerated changes.
  • DerivedSources.make:

Source/ThirdParty:

In gtest's static library target, replace the folder reference containing headers with file
references for each copied header. This allows XCBuild to correctly plan incremental builds
when these headers change.

  • gtest/xcode/Config/StaticLibraryTarget.xcconfig:
  • gtest/xcode/gtest.xcodeproj/project.pbxproj:

Source/WebCore:

Declare missing outputs in DerivedSources.make, and merge files from the "Copy Generated
Headers" phase in with the other private headers, since they all go to the same destination.

  • DerivedSources-output.xcfilelist: Autogenerated chagnes.
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:

Tools:

  • Scripts/set-webkit-configuration: Add --validate-dependencies option.
  • WebKitTestRunner/DerivedSources-input.xcfilelist: Autogenerated changes.
  • WebKitTestRunner/DerivedSources.make: Explicitly depend on preprocessor.pm, which is

imported by other scripts but not listed as a dependency.

2:00 PM Changeset in webkit [291132] by Jean-Yves Avenard
  • 4 edits in trunk/Source/WebKit

MediaSampleCursor should iterate over the samples contained in the MediaSamplesBlock
​https://bugs.webkit.org/show_bug.cgi?id=237677
rdar://80869041

Reviewed by Eric Carlson.

No change in observable behaviour for now, as the current code can't
produce MediaSamplesBlock with more than one sub-sample.
Tests will be added in bug 236754.

  • Shared/mac/MediaFormatReader/MediaSampleByteRange.h:
  • Shared/mac/MediaFormatReader/MediaSampleCursor.cpp:

(WebKit::stepIterator):
(WebKit::MediaSampleCursor::MediaSampleCursor):
(WebKit::MediaSampleCursor::locateIterator const):
(WebKit::MediaSampleCursor::setLocator const):
(WebKit::MediaSampleCursor::locateMediaSample const):
(WebKit::MediaSampleCursor::locateTiming const):
(WebKit::MediaSampleCursor::stepInOrderedMap):
(WebKit::MediaSampleCursor::stepInPresentationTime):
(WebKit::MediaSampleCursor::getMediaSample const):
(WebKit::MediaSampleCursor::getSyncInfo const):
(WebKit::MediaSampleCursor::copyFormatDescription const):
(WebKit::MediaSampleCursor::copySampleLocation const):

  • Shared/mac/MediaFormatReader/MediaSampleCursor.h: The Locator type and

the templated code making use of it makes use of strong assumptions that
the iterator can only be made of one type or the other.
As such, the originally obvious solution to expand the Locator type with
a MediaSamplesBlock iterator ended up being overly complex.
So instead we define an additional member m_currentEntry
and will add all the logic handling in the stepIterator method.
It should be noted that while the MediaSampleCursor implements all the
methods of MTPluginSampleCursor; in practice only the following appear used:

  • stepInDecodeOrderAndReportStepsTaken
  • getSampleTiming
  • getSyncInfo
  • copyFormatDescription
1:50 PM Changeset in webkit [291131] by achristensen@apple.com
  • 1 edit
    2 deletes in trunk/LayoutTests

Remove unused iOS 14 test results

  • platform/ios-14: Removed.
  • platform/ios-14-wk2: Removed.
1:50 PM Changeset in webkit [291130] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] mask-clip should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237725

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

1:47 PM Changeset in webkit [291129] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] scroll-behavior should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237723

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

1:41 PM Changeset in webkit [291128] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] quotes should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237721

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

1:27 PM Changeset in webkit [291127] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Document is leaking on haaretz.co.il due to an async script
​https://bugs.webkit.org/show_bug.cgi?id=237672
<rdar://problem/90050632>

Reviewed by Geoffrey Garen.

I haven't been able to reproduce this in the context of a layout test, however,
I see the ​https://acdn.adnxs.com/dmp/async_usersync.html document flakily leaking
on haaretz.co.il due to an async script (sometimes the top document too).

From a memgraph, I can see that the cycle is:
HTMLDocument -> ScriptRunner -> PendingScript (via m_scriptsToExecuteSoon) -> HTMLScriptElement -> HTMLDocument (again)

To address the issue, I updated Document::commonTeardown() to clear all its ScriptRunner's pending scripts, right after
we stop all ActiveDOMObjects. At this point, we no longer want to run script and clearing any pending scripts is critical
since they hold a strong reference to the Document.

I have validated the fix on haaretz.co.il since I wasn't able to write an automated
test for this.

  • dom/Document.cpp:

(WebCore::Document::commonTeardown):

  • dom/ScriptRunner.cpp:

(WebCore::ScriptRunner::clearPendingScripts):

  • dom/ScriptRunner.h:
1:25 PM Changeset in webkit [291126] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

Markup dropdown menu not working in Mail compose
​https://bugs.webkit.org/show_bug.cgi?id=237726
<rdar://problem/89777983>

Reviewed by Wenson Hsieh.

Partial revert of r290103. No need for standardShareMenu in the
services menu case.

  • UIProcess/mac/WebContextMenuProxyMac.mm:

(WebKit::WebContextMenuProxyMac::setupServicesMenu):

1:10 PM Changeset in webkit [291125] by jonlee@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed gardening.

  • platform/ios/TestExpectations: r291034 fixed platform/ios/mediastream/audio-muted-in-background-tab-gpu-process.html.
12:15 PM Changeset in webkit [291124] by Chris Fleizach
  • 39 edits
    8 copies
    1 add in trunk

AX: Support updated WebSpeech API
​https://bugs.webkit.org/show_bug.cgi?id=237614
<rdar://problem/89981851>

Reviewed by Andres Gonzalez.

LayoutTests/imported/w3c:

  • web-platform-tests/speech-api/SpeechSynthesisErrorEvent-constructor-expected.txt:
  • web-platform-tests/speech-api/SpeechSynthesisEvent-constructor-expected.txt:
  • web-platform-tests/speech-api/idlharness.window-expected.txt:

Source/WebCore:

Adopt WebSpeech (18 August 2020) changes from
​https://wicg.github.io/speech-api/

Tests Fixed:

imported/w3c/web-platform-tests/speech-api/

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/speech/DOMWindow+SpeechSynthesis.idl:
  • Modules/speech/DOMWindowSpeechSynthesis.cpp:

(WebCore::DOMWindowSpeechSynthesis::speechSynthesis):

  • Modules/speech/SpeechSynthesis.cpp:

(WebCore::Ref<SpeechSynthesis>SpeechSynthesis::create):
(WebCore::SpeechSynthesis::SpeechSynthesis):
(WebCore::SpeechSynthesis::voicesDidChange):
(WebCore::SpeechSynthesis::fireEvent const):
(WebCore::SpeechSynthesis::fireErrorEvent const):
(WebCore::SpeechSynthesis::handleSpeakingCompleted):
(WebCore::SpeechSynthesis::boundaryEventOccurred):
(WebCore::SpeechSynthesis::didStartSpeaking):
(WebCore::SpeechSynthesis::didPauseSpeaking):
(WebCore::SpeechSynthesis::didResumeSpeaking):
(WebCore::SpeechSynthesis::create): Deleted.
(WebCore::SpeechSynthesis::fireEvent): Deleted.

  • Modules/speech/SpeechSynthesis.h:
  • Modules/speech/SpeechSynthesis.idl:
  • Modules/speech/SpeechSynthesisErrorCode.h: Added.
  • Modules/speech/SpeechSynthesisErrorCode.idl: Copied from Source/WebCore/Modules/speech/DOMWindow+SpeechSynthesis.idl.
  • Modules/speech/SpeechSynthesisErrorEvent.cpp: Copied from Source/WebCore/Modules/speech/SpeechSynthesisEvent.cpp.

(WebCore::SpeechSynthesisErrorEvent::create):
(WebCore::SpeechSynthesisErrorEvent::SpeechSynthesisErrorEvent):

  • Modules/speech/SpeechSynthesisErrorEvent.h: Copied from Source/WebCore/Modules/speech/SpeechSynthesisEvent.h.
  • Modules/speech/SpeechSynthesisErrorEvent.idl: Copied from Source/WebCore/Modules/speech/SpeechSynthesisEvent.idl.
  • Modules/speech/SpeechSynthesisErrorEventInit.h: Copied from Source/WebCore/Modules/speech/DOMWindow+SpeechSynthesis.idl.
  • Modules/speech/SpeechSynthesisErrorEventInit.idl: Copied from Source/WebCore/Modules/speech/DOMWindow+SpeechSynthesis.idl.
  • Modules/speech/SpeechSynthesisEvent.cpp:

(WebCore::SpeechSynthesisEvent::create):
(WebCore::SpeechSynthesisEvent::SpeechSynthesisEvent):

  • Modules/speech/SpeechSynthesisEvent.h:

(WebCore::SpeechSynthesisEvent::utterance const):
(WebCore::SpeechSynthesisEvent::charLength const):
(): Deleted.

  • Modules/speech/SpeechSynthesisEvent.idl:
  • Modules/speech/SpeechSynthesisEventInit.h: Copied from Source/WebCore/Modules/speech/SpeechSynthesisEvent.h.

(WebCore::SpeechSynthesisEventInit::SpeechSynthesisEventInit):

  • Modules/speech/SpeechSynthesisEventInit.idl: Copied from Source/WebCore/Modules/speech/DOMWindow+SpeechSynthesis.idl.
  • Modules/speech/SpeechSynthesisUtterance.cpp:

(WebCore::SpeechSynthesisUtterance::SpeechSynthesisUtterance):

  • Modules/speech/SpeechSynthesisUtterance.h:
  • Modules/speech/SpeechSynthesisVoice.idl:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/EventNames.h:
  • dom/EventNames.in:
  • dom/EventTargetFactory.in:
  • page/SpeechSynthesisClient.h:
  • platform/PlatformSpeechSynthesizer.h:
  • platform/cocoa/PlatformSpeechSynthesizerCocoa.mm:

(-[WebSpeechSynthesisWrapper speechSynthesizer:willSpeakRangeOfSpeechString:utterance:]):
(WebCore::PlatformSpeechSynthesizer::initializeVoiceList):

  • platform/mock/PlatformSpeechSynthesizerMock.cpp:

(WebCore::PlatformSpeechSynthesizerMock::speak):

Source/WebKit:

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::boundaryEventOccurred):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::boundaryEventOccurred):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

LayoutTests:

Fixed expectations:

  • imported/w3c/web-platform-tests/speech-api/SpeechSynthesisEvent-constructor-expected.txt: Updated.
  • imported/w3c/web-platform-tests/speech-api/SpeechSynthesisErrorEvent-constructor-expected.txt: Updated.
  • fast/speechsynthesis/speech-synthesis-boundary-events.html: Updated.
  • fast/speechsynthesis/speech-synthesis-boundary-events-expected.txt: Updated.
11:43 AM Changeset in webkit [291123] by Chris Dumez
  • 85 edits in trunk/Source

Optimize further the passing of data across threads
​https://bugs.webkit.org/show_bug.cgi?id=237695

Reviewed by Geoffrey Garen.

Optimize further the passing of data across threads by leveraging the optimized
version of isolatedCopy() on r-value references whenever possible.

Source/JavaScriptCore:

  • inspector/remote/RemoteConnectionToTarget.cpp:

(Inspector::RemoteConnectionToTarget::sendMessageToTarget):

  • inspector/remote/RemoteConnectionToTarget.h:
  • inspector/remote/RemoteControllableTarget.h:
  • jsc.cpp:

(JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSGlobalObjectDebuggable.cpp:

(JSC::JSGlobalObjectDebuggable::dispatchMessageFromRemote):

  • runtime/JSGlobalObjectDebuggable.h:
  • tools/FunctionOverrides.cpp:

(JSC::FunctionOverrides::initializeOverrideFor):

Source/WebCore:

  • Modules/cache/CacheStorageConnection.h:
  • Modules/cache/DOMCache.cpp:

(WebCore::DOMCache::queryCache):

  • Modules/cache/WorkerCacheStorageConnection.cpp:

(WebCore::toCrossThreadRecordData):
(WebCore::recordsDataFromRecords):
(WebCore::recordsDataOrErrorFromRecords):
(WebCore::WorkerCacheStorageConnection::retrieveRecords):
(WebCore::WorkerCacheStorageConnection::batchPutOperation):

  • Modules/cache/WorkerCacheStorageConnection.h:
  • Modules/entriesapi/DOMFileSystem.cpp:

(WebCore::DOMFileSystem::listDirectory):

  • Modules/mediastream/DetachedRTCDataChannel.h:

(WebCore::DetachedRTCDataChannel::DetachedRTCDataChannel):
(WebCore::DetachedRTCDataChannel::decode):

  • Modules/mediastream/RTCDataChannel.cpp:

(WebCore::RTCDataChannel::detach):

  • Modules/mediastream/RTCDataChannel.h:
  • Modules/notifications/Notification.cpp:

(WebCore::Notification::create):
(WebCore::Notification::Notification):

  • Modules/notifications/Notification.h:
  • Modules/push-api/PushSubscriptionData.cpp:

(WebCore::PushSubscriptionData::isolatedCopy const):
(WebCore::PushSubscriptionData::isolatedCopy):

  • Modules/push-api/PushSubscriptionData.h:
  • Modules/storage/DummyStorageProvider.h:
  • Modules/storage/StorageConnection.h:
  • Modules/storage/StorageManager.cpp:

(WebCore::StorageManager::persisted):
(WebCore::StorageManager::fileSystemAccessGetDirectory):

  • Modules/storage/WorkerStorageConnection.cpp:

(WebCore::WorkerStorageConnection::getPersisted):
(WebCore::WorkerStorageConnection::fileSystemGetDirectory):

  • Modules/storage/WorkerStorageConnection.h:
  • Modules/webdatabase/ChangeVersionWrapper.cpp:

(WebCore::ChangeVersionWrapper::ChangeVersionWrapper):

  • Modules/webdatabase/ChangeVersionWrapper.h:

(WebCore::ChangeVersionWrapper::create):

  • Modules/webdatabase/Database.cpp:

(WebCore::Database::changeVersion):

  • Modules/webdatabase/Database.h:
  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::addOpenDatabase):

  • Modules/webdatabase/SQLError.h:

(WebCore::SQLError::create):
(WebCore::SQLError::SQLError):

  • Modules/websockets/ThreadableWebSocketChannel.h:
  • Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:

(WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessage):
(WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessageError):

  • Modules/websockets/ThreadableWebSocketChannelClientWrapper.h:
  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::didReceiveMessage):
(WebCore::WebSocket::didReceiveMessageError):

  • Modules/websockets/WebSocket.h:
  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::fail):
(WebCore::WebSocketChannel::didFailSocketStream):
(WebCore::WebSocketChannel::processFrame):

  • Modules/websockets/WebSocketChannel.h:
  • Modules/websockets/WebSocketChannelClient.h:
  • Modules/websockets/WebSocketHandshake.cpp:

(WebCore::WebSocketHandshake::setURL): Deleted.

  • Modules/websockets/WorkerThreadableWebSocketChannel.cpp:

(WebCore::WorkerThreadableWebSocketChannel::fail):
(WebCore::WorkerThreadableWebSocketChannel::Peer::fail):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessage):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessageError):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::connect):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::fail):

  • Modules/websockets/WorkerThreadableWebSocketChannel.h:
  • dom/ExceptionData.h:

(WebCore::ExceptionData::toException const):
(WebCore::ExceptionData::toException):

  • inspector/agents/InspectorWorkerAgent.cpp:

(WebCore::InspectorWorkerAgent::sendMessageFromWorkerToFrontend):

  • inspector/agents/InspectorWorkerAgent.h:
  • page/CacheStorageProvider.h:
  • page/PageDebuggable.cpp:

(WebCore::PageDebuggable::dispatchMessageFromRemote):

  • page/PageDebuggable.h:
  • workers/WorkerInspectorProxy.cpp:

(WebCore::WorkerInspectorProxy::sendMessageFromWorkerToFrontend):

  • workers/WorkerInspectorProxy.h:
  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::postMessageToDebugger):

  • workers/service/SWClientConnection.cpp:

(WebCore::SWClientConnection::jobRejectedInServer):
(WebCore::SWClientConnection::registrationJobResolvedInServer):

  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorkerClientData.cpp:

(WebCore::ServiceWorkerClientData::isolatedCopy const):
(WebCore::ServiceWorkerClientData::isolatedCopy):

  • workers/service/ServiceWorkerClientData.h:
  • workers/service/ServiceWorkerContextData.h:

(WebCore::ServiceWorkerContextData::ImportedScript::isolatedCopy const):
(WebCore::ServiceWorkerContextData::ImportedScript::isolatedCopy):

  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::showNotification):

  • workers/service/ServiceWorkerRegistration.h:
  • workers/service/ServiceWorkerRegistrationOptions.cpp:

(WebCore::ServiceWorkerRegistrationOptions::isolatedCopy const):
(WebCore::ServiceWorkerRegistrationOptions::isolatedCopy):

  • workers/service/ServiceWorkerRegistrationOptions.h:
  • workers/service/context/ServiceWorkerDebuggable.cpp:

(WebCore::ServiceWorkerDebuggable::dispatchMessageFromRemote):

  • workers/service/context/ServiceWorkerDebuggable.h:
  • workers/service/context/ServiceWorkerInspectorProxy.cpp:

(WebCore::ServiceWorkerInspectorProxy::sendMessageToWorker):
(WebCore::ServiceWorkerInspectorProxy::sendMessageFromWorkerToFrontend):

  • workers/service/context/ServiceWorkerInspectorProxy.h:
  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::ServiceWorkerThreadProxy::postMessageToDebugger):
(WebCore::ServiceWorkerThreadProxy::startFetch):

  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::RegistrationDatabase::importRecords):

Source/WebKit:

  • NetworkProcess/NetworkSocketChannel.cpp:

(WebKit::NetworkSocketChannel::didReceiveMessageError):

  • NetworkProcess/NetworkSocketChannel.h:
  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::fileSystemGetDirectory):

  • NetworkProcess/storage/NetworkStorageManager.h:
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::dispatchMessageFromRemote):

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Inspector/WebPageDebuggable.cpp:

(WebKit::WebPageDebuggable::dispatchMessageFromRemote):

  • UIProcess/Inspector/WebPageDebuggable.h:
  • WebProcess/Cache/WebCacheStorageConnection.cpp:

(WebKit::WebCacheStorageConnection::retrieveRecords):

  • WebProcess/Cache/WebCacheStorageConnection.h:
  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::fail):
(WebKit::WebSocketChannel::didReceiveText):
(WebKit::WebSocketChannel::didReceiveMessageError):

  • WebProcess/Network/WebSocketChannel.h:
  • WebProcess/WebCoreSupport/WebStorageConnection.cpp:

(WebKit::WebStorageConnection::getPersisted):
(WebKit::WebStorageConnection::fileSystemGetDirectory):

  • WebProcess/WebCoreSupport/WebStorageConnection.h:
11:41 AM Changeset in webkit [291122] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] grid-template-areas should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237712

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

While we now run the grid-template-areas tests, we have a bug in the way we serialize the value through the
computed style.

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

10:56 AM Changeset in webkit [291121] by Kocsen Chung
  • 1 copy in tags/Safari-613.1.17.1.11

Tag Safari-613.1.17.1.11.

10:46 AM Changeset in webkit [291120] by Kocsen Chung
  • 9 edits in branches/safari-613.1.17.1-branch/Source

Versioning.

WebKit-7613.1.17.1.11

10:36 AM Changeset in webkit [291119] by graouts@webkit.org
  • 15 edits in trunk

[web-animations] font-variant-caps should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237662

Reviewed by Myles C. Maxfield.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-fonts/animations/system-fonts-expected.txt:
  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • platform/text/TextFlags.cpp:

(WebCore::operator<<):

  • platform/text/TextFlags.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setFontVariantAlternates):
(WebCore::RenderStyle::setFontVariantCaps):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::fontVariantCaps const):

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/css/css-fonts/animations/system-fonts-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/css/css-fonts/animations/system-fonts-expected.txt:
10:22 AM Changeset in webkit [291118] by jer.noble@apple.com
  • 3 edits
    2 adds in trunk

[iOS] Netflix.com fails to resume after moving app to background during playback
​https://bugs.webkit.org/show_bug.cgi?id=237659
<rdar://88775037>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-interruption-with-resume-allowing-play.html

When the MediaPlayerPrivateMediaSourceAVFObjC player is asked to play or pause, it notifies
the client (HTMLMediaElement) that its playback state has changed. HTMLMediaElement will in response
call playInternal() or pauseInternal() to ensure that a state change driven by the MediaPlayer
is reflected up to the DOM. However, when an interruption causes the media element to suspend
and pause playback, this results in an additional call to pauseInternal(), which updates the
"state to resume" after an interruption ends to "Paused".

In mediaPlayerPlaybackStateChanged(), only call pauseInternal() or playInternal() if the reported
player state does not match the HTMLMediaElement's own state.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerPlaybackStateChanged):

LayoutTests:

  • media/media-source/media-source-interruption-with-resume-allowing-play-expected.txt: Added.
  • media/media-source/media-source-interruption-with-resume-allowing-play.html: Added.
9:58 AM Changeset in webkit [291117] by sihui_liu@apple.com
  • 11 edits in trunk/Source

IndexedDB: free memory used by database connection on low-memory warning
​https://bugs.webkit.org/show_bug.cgi?id=237673

Reviewed by Chris Dumez.

Source/WebCore:

  • Modules/indexeddb/server/IDBBackingStore.h:
  • Modules/indexeddb/server/MemoryIDBBackingStore.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::handleLowMemoryWarning):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::handleLowMemoryWarning):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:

Source/WebKit:

  • NetworkProcess/storage/IDBStorageManager.cpp:

(WebKit::IDBStorageManager::handleLowMemoryWarning):

  • NetworkProcess/storage/IDBStorageManager.h:
  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::handleLowMemoryWarning):

9:56 AM Changeset in webkit [291116] by youenn@apple.com
  • 2 edits in trunk/Source/WTF

Enable Permissions API by default on Cocoa ports
​https://bugs.webkit.org/show_bug.cgi?id=237699

Reviewed by Brent Fulgham.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
9:28 AM WebKitGTK/2.36.x edited by Michael Catanzaro
(diff)
8:47 AM Changeset in webkit [291115] by graouts@webkit.org
  • 11 edits in trunk

[web-animations] font-variant-position should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237671

Reviewed by Myles C. Maxfield.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • platform/text/TextFlags.cpp:

(WebCore::operator<<):

  • platform/text/TextFlags.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setFontVariantAlternates):
(WebCore::RenderStyle::setFontVariantPosition):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::fontVariantPosition const):

8:43 AM Changeset in webkit [291114] by graouts@webkit.org
  • 7 edits in trunk

[web-animations] font-variant-ligatures should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237667

Reviewed by Myles C. Maxfield.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

8:34 AM Changeset in webkit [291113] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

Unreviewed, non-unified build fix after 248260@main
​https://bugs.webkit.org/show_bug.cgi?id=237715

  • css/ContainerQuery.h: Add missing include.
8:31 AM Changeset in webkit [291112] by Jonathan Bedard
  • 2 edits in trunk/Tools

[EWS] Add DEFAULT_BRANCH variable
​https://bugs.webkit.org/show_bug.cgi?id=237693
<rdar://problem/90067276>

Reviewed by Aakash Jain.

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

(ShowIdentifier.evaluateCommand):
(CheckOutPullRequest.run):
(CleanGitRepo.init):

Canonical link: ​https://commits.webkit.org/248274@main

8:25 AM Changeset in webkit [291111] by commit-queue@webkit.org
  • 8 edits in trunk

REGRESSION(r284711): [GStreamer] Buffering, seek broken on youtube.com
​https://bugs.webkit.org/show_bug.cgi?id=233861

Unreviewed, manual revert of 284711.

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-10

Source/WebCore:

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::currentTimeFudgeFactor):

  • platform/graphics/SourceBufferPrivate.h:

(WebCore::SourceBufferPrivate::timeFudgeFactor const):

  • platform/graphics/gstreamer/GStreamerCommon.h:

(WebCore::toGstClockTime):

  • platform/graphics/gstreamer/MediaSampleGStreamer.cpp:

(WebCore::MediaSampleGStreamer::MediaSampleGStreamer):

  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::AppendPipeline::appsinkNewSample):
(WebCore::bufferTimeToStreamTime): Deleted.

LayoutTests:

  • platform/glib/imported/w3c/web-platform-tests/media-source/mediasource-remove-expected.txt:
8:01 AM Changeset in webkit [291110] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r290795.

Caused crashes <rdar://problem/89970722>

Reverted changeset:

"[macOS] WebContent processes crash with
XPC_EXIT_REASON_SIGTERM_TIMEOUT when logging out"
​https://bugs.webkit.org/show_bug.cgi?id=237398
​https://commits.webkit.org/r290795

7:57 AM Changeset in webkit [291109] by graouts@webkit.org
  • 7 edits in trunk

[web-animations] font-variant-east-asian should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237665

Reviewed by Myles C. Maxfield.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

7:52 AM Changeset in webkit [291108] by commit-queue@webkit.org
  • 21 edits in trunk/Source/WebCore

Use PropertyRegistry consistently in svgAttributeChanged
​https://bugs.webkit.org/show_bug.cgi?id=237604

Patch by Rob Buis <​rbuis@igalia.com> on 2022-03-10
Reviewed by Martin Robinson.

Use PropertyRegistry consistently in svgAttributeChanged by always checking
PropertyRegistry::isKnownAttribute first thing, before delegating to subclasses.

  • svg/SVGFEBlendElement.cpp:

(WebCore::SVGFEBlendElement::svgAttributeChanged):

  • svg/SVGFEColorMatrixElement.cpp:

(WebCore::SVGFEColorMatrixElement::svgAttributeChanged):

  • svg/SVGFECompositeElement.cpp:

(WebCore::SVGFECompositeElement::svgAttributeChanged):

  • svg/SVGFEConvolveMatrixElement.cpp:

(WebCore::SVGFEConvolveMatrixElement::svgAttributeChanged):

  • svg/SVGFEDiffuseLightingElement.cpp:

(WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged):

  • svg/SVGFEDisplacementMapElement.cpp:

(WebCore::SVGFEDisplacementMapElement::svgAttributeChanged):

  • svg/SVGFEImageElement.cpp:

(WebCore::SVGFEImageElement::svgAttributeChanged):

  • svg/SVGFEMergeNodeElement.cpp:

(WebCore::SVGFEMergeNodeElement::svgAttributeChanged):

  • svg/SVGFEMorphologyElement.cpp:

(WebCore::SVGFEMorphologyElement::svgAttributeChanged):

  • svg/SVGFESpecularLightingElement.cpp:

(WebCore::SVGFESpecularLightingElement::svgAttributeChanged):

  • svg/SVGFETileElement.cpp:

(WebCore::SVGFETileElement::svgAttributeChanged):

  • svg/SVGForeignObjectElement.cpp:

(WebCore::SVGForeignObjectElement::svgAttributeChanged):

  • svg/SVGGeometryElement.cpp:

(WebCore::SVGGeometryElement::svgAttributeChanged):

  • svg/SVGGraphicsElement.cpp:

(WebCore::SVGGraphicsElement::svgAttributeChanged):

  • svg/SVGImageElement.cpp:

(WebCore::SVGImageElement::svgAttributeChanged):

  • svg/SVGPathElement.cpp:

(WebCore::SVGPathElement::svgAttributeChanged):

  • svg/SVGPolyElement.cpp:

(WebCore::SVGPolyElement::svgAttributeChanged):

  • svg/SVGStopElement.cpp:

(WebCore::SVGStopElement::svgAttributeChanged):

7:27 AM Changeset in webkit [291107] by Philippe Normand
  • 2 edits in trunk/LayoutTests

Unreviewed GStreamer gardening

  • platform/glib/TestExpectations: media/video-src-blob-perf.html is failing actually.
6:23 AM Changeset in webkit [291106] by Lauro Moura
  • 159 edits
    6 copies
    1 move
    16 adds
    2 deletes in trunk

Add context.roundRect support to OffScreenCanvas
​https://bugs.webkit.org/show_bug.cgi?id=232780
<rdar://problem/85366210>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Updated baselines with PASS.

  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompoint-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompointinit-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompointinit.single.argument-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.double-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.double.single.argument-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.dompoint-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.dompointinit-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.double-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.dompoint-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.dompointinit-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.double-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.dompoint-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.dompointinit-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.double-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.dompoint-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.dompointinit-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.double-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.dompoint-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.dompointinit-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.double-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.dompoint-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.dompointinit-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.double-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.dompoint-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.dompointinit-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.double-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.dompoint-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.dompointinit-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.double-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.dompoint-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.dompointinit-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.double-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.closed-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.1-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.2-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.3-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.4-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.negative-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.newsubpath-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.nonfinite-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.intersecting.1-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.intersecting.2-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.negative-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.none-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.toomany-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.selfintersect-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.winding-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.1-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.2-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.3-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.4-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.5-expected.txt:
  • web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.6-expected.txt:
  • web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image-expected.txt:
  • web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompoint-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompoint.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompointinit-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompointinit.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.double-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.double.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompoint-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompoint.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompointinit-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompointinit.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.double-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.double.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompoint-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompoint.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompointinit-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompointinit.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.double-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.double.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompoint-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompoint.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompointinit-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.dompointinit-expected.txt.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompointinit.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.double-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.double.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompoint-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompoint.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompointinit-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompointinit.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.double-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.double.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompoint-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompoint.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompointinit-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.dompointinit-expected.txt.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompointinit.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.double-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.double.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompoint-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompoint.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompointinit-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.dompointinit-expected.txt.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompointinit.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.double-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.double.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompoint-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompoint.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompointinit-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.dompointinit-expected.txt.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompointinit.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.double-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.double.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompoint-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompoint.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompointinit-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.dompointinit-expected.txt.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompointinit.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.double-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.double.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompoint-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompoint.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompointinit-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.dompointinit-expected.txt.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompointinit.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.double-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.double.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.closed-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.closed.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.1-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.1.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.2-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.2.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.3-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.3.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.4-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.4.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.negative-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.negative.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.newsubpath-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.newsubpath.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.1-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.1.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.2-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.2.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.negative-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.negative.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.none-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.none.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.toomany-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.toomany.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.selfintersect-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.selfintersect.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.winding-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.winding.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.1-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.1.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.2-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.2.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.3-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.3.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.4-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.4.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.5-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.5.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.6-expected.txt:
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.6.worker-expected.txt:
  • web-platform-tests/html/dom/idlharness.https-expected.txt:
  • web-platform-tests/html/dom/idlharness.worker-expected.txt:

Source/WebCore:

Covered by existing tests.

  • html/canvas/CanvasPath.cpp:

(WebCore::CanvasPath::roundRect): Added.

  • html/canvas/CanvasPath.h:
  • html/canvas/CanvasPath.idl: Added roundRect declarations.
  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::processArgument): Added stub for the
RadiusVariant as used in roundRect.

  • inspector/InspectorCanvasCallTracer.h:
  • inspector/agents/InspectorCanvasAgent.cpp: Add include.
  • inspector/RecordingSwizzleType.h: Added DOMPointInit type.

Source/WebInspectorUI:

  • UserInterface/Models/Recording.js:

(WI.Recording.displayNameForSwizzleType): Added name for DOMPointInit.
Proper support for it should come with bug233255.

LayoutTests:

  • inspector/canvas/recording-2d-full-expected.txt:
  • inspector/canvas/resources/recording-2d.js: Added calls to roundRect

to test the inspector processArgument()

  • platform/glib/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image-expected.txt: Removed.
  • platform/gtk/imported/w3c/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker-expected.txt: Removed.
  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ipad/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt.
5:37 AM Changeset in webkit [291105] by Nikolas Zimmermann
  • 8 edits
    4 adds in trunk

Cleanup RenderLayer::currentTransform()
​https://bugs.webkit.org/show_bug.cgi?id=237553

Reviewed by Rob Buis.

LayoutTests/imported/w3c:

Add two new WPT tests covering animations of the 'transform-box' property.

  • web-platform-tests/css/css-transforms/animation/transform-box-expected.html: Added.
  • web-platform-tests/css/css-transforms/animation/transform-box-will-change-transform-layer-expected.html: Added.
  • web-platform-tests/css/css-transforms/animation/transform-box-will-change-transform-layer.html: Added.
  • web-platform-tests/css/css-transforms/animation/transform-box.html: Added.

Source/WebCore:

In preparation for the upcoming SVG/CSS transforms support in LBSE,
the transform related code in RenderLayer is cleaned up, starting
with RenderLayers currentTransform() function.

RenderLayer::currentTransform() has two purposes. It can either be used
to re-compute the existing transformation matrix with different options
(e.g. include or exclude 'transform-origin' induced transformations), or
to retrieve the current transformation matrix from the animatedStyle() of
the associated renderer, if an accelerated transform animation is running
(triggered e.g. via CSS Animations / JS WebAnimations).

Currently the code to compute the transformation matrix is duplicated,
avoid that and unify the two code paths (re-compute CTM if accelerated transform
animations are running / re-compute CTM if transform-origin shall be excluded).

Add two new WPT tests that verify animating 'transform-box' is functional
for both composited & non-composited elements. Currently 'transform-box'
support is ignored for composited elements, as demonstrated by the
transform-box-with-change-transform-layer.html test.

Follow-up patches that fix the bugs depends on this initial cleanup patch.
For now mark the failing test as such until it's fixed.

Tests: imported/w3c/web-platform-tests/css/css-transforms/animation/transform-box-will-change-transform-layer.html

imported/w3c/web-platform-tests/css/css-transforms/animation/transform-box.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::currentTransform const):

LayoutTests:

Mark new WPT test css/css-transforms/animation/transform-box-will-change-transform-layer.html
as expected to fail, since 'transform-box' is ignored for composited elements at the moment.

  • platform/glib/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
4:50 AM Changeset in webkit [291104] by graouts@webkit.org
  • 10 edits in trunk

[web-animations] font-variant-alternates should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237661

Reviewed by Myles C. Maxfield.

LayoutTests/imported/w3c:

While we now run the font-variant-alternates tests, we don't support all values for this property so we fail
those tests.

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • platform/text/TextFlags.cpp:

(WebCore::operator<<):

  • platform/text/TextFlags.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setFontFamilies):
(WebCore::RenderStyle::setFontVariantAlternates):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::fontVariantAlternates const):

4:44 AM Changeset in webkit [291103] by graouts@webkit.org
  • 9 edits in trunk

[web-animations] font-synthesis should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237650

Reviewed by Myles C. Maxfield.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setFontFamilies):
(WebCore::RenderStyle::setFontSynthesis):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::fontSynthesis const):

4:04 AM Changeset in webkit [291102] by Razvan Caliman
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Panel: CSS variable completions should be provided even without a query
​https://bugs.webkit.org/show_bug.cgi?id=237679
<rdar://problem/90059628>

Reviewed by Patrick Angle.

Return the list of all available completion suggestions if WI.CSSCompletions is configured to allow empty
prefix search. This was already the case for classic autocompletion with prefix matching, but was missing
for fuzzy matching.

  • UserInterface/Models/CSSCompletions.js:

(WI.CSSCompletions.prototype.executeQuery):

4:03 AM Changeset in webkit [291101] by eocanha@igalia.com
  • 2 edits in trunk/Source/WebCore

[MSE][SourceBuffer] Fix creating float PTS/DTS when dividing sample
​https://bugs.webkit.org/show_bug.cgi?id=237528

Reviewed by Xabier Rodriguez-Calvar.

The timestamps used for sample division in SourceBuffer aren't being
aligned with the same rounding margin used in
SourceBuffer::sourceBufferPrivateDidReceiveSample().

This patch is authored by Eugene Mutavchi <​Ievgen_Mutavchi@comcast.com>
See: ​https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/797

  • platform/graphics/SourceBufferPrivate.cpp: Extracted roundTowardsTimeScaleWithRoundingMargin lambda as a function and used it from removeCodedFrames(), on top of the current usage from sourceBufferPrivateDidReceiveSample().
3:38 AM Changeset in webkit [291100] by graouts@webkit.org
  • 7 edits in trunk

[web-animations] fill-rule should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237648

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::fillRule const):
(WebCore::RenderStyle::setFillRule):

3:16 AM Changeset in webkit [291099] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] counter-reset should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237644

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

Generalize the wrapper added for counter-increment to also handle counter-reset.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

2:22 AM Changeset in webkit [291098] by Antti Koivisto
  • 11 edits in trunk

[CSS Container Queries] Implement new container selection algorithm
​https://bugs.webkit.org/show_bug.cgi?id=237657

Reviewed by Antoine Quint.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-contain/container-queries/container-selection-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/unsupported-axis-expected.txt:

Source/WebCore:

"For each element, the query container to be queried is selected from among the element’s
ancestor query containers that have a valid container-type for all the container features
in the <container-condition>."

​https://drafts.csswg.org/css-contain-3/#container-rule

  • css/ContainerQuery.cpp:

(WebCore::CQ::requiredAxesForFeature):

  • css/ContainerQuery.h:
  • css/ContainerQueryParser.cpp:

(WebCore::ContainerQueryParser::consumeFilteredContainerQuery):

Move container name parsing to ContainerQueryParser too.

(WebCore::ContainerQueryParser::consumeSizeQuery):

Collect required axes during parsing.

  • css/ContainerQueryParser.h:
  • css/parser/CSSParserImpl.cpp:

(WebCore::CSSParserImpl::consumeContainerRule):

  • style/ContainerQueryEvaluator.cpp:

(WebCore::Style::ContainerQueryEvaluator::evaluate const):
(WebCore::Style::ContainerQueryEvaluator::selectContainer const):

Select container based on required axes for the features being used.

(WebCore::Style::ContainerQueryEvaluator::evaluateQuery const):
(WebCore::Style::ContainerQueryEvaluator::evaluateCondition const):
(WebCore::Style::ContainerQueryEvaluator::evaluateSizeFeature const):

No need to check axes during evaluation anymore. We only evaluate against containers that support them.

(WebCore::Style::ContainerQueryEvaluator::resolveContainer const): Deleted.

Rename resolveContainer -> selectContainer to match the spec.

  • style/ContainerQueryEvaluator.h:
2:19 AM Changeset in webkit [291097] by ysuzuki@apple.com
  • 2 edits in trunk/Source/bmalloc

[libpas] We should gurantee that in-flux-stash is fully baked when pointing table is set
​https://bugs.webkit.org/show_bug.cgi?id=237697
rdar://89116983

Reviewed by Mark Lam.

To support enumerating hashtable which can be in the middle of resizing, we have in-flux-stash: this
small stash is used to keep old table and size while resizing. However, Mark pointed that
pas_tiny_large_map_hashtable_for_each_entry_remote's assertion is firing, which is ensuring that table's
underlying pointer should be NULL when the size is 0. But in-flux-stash, we did not guarantee that
in-flux-stash data is consistent when it is exposed to the enumerator (when setting hashtable_being_resized).

This patch inserts pas_compiler_fence when exposing and unexposing in-flux-stash. pas_compiler_fence is
enough (pas_store_store_fence is not necessary) because pas_enumerator runs after suspending the process.
Thus, data structure's consistency between instruction boundary is enough.

  • libpas/src/libpas/pas_hashtable.h:
1:30 AM Changeset in webkit [291096] by Carlos Garcia Campos
  • 2 edits
    2 adds in trunk/Source/WebCore

[GTK][WPE] Add initial adwaita style for PDF.js
​https://bugs.webkit.org/show_bug.cgi?id=237527

Reviewed by Michael Catanzaro.

  • Modules/pdfjs-extras/adwaita/style.css: Added.

(#openFile):
(.dropdownToolbarButton > select):

  • html/PDFDocument.cpp:

(WebCore::PDFDocument::injectStyleAndContentScript):

1:08 AM Changeset in webkit [291095] by youenn@apple.com
  • 15 edits
    2 deletes in trunk/Source

Remove RemoteVideoSample
​https://bugs.webkit.org/show_bug.cgi?id=237592

Reviewed by Eric Carlson.

Source/WebCore:

No change of behavior.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/RemoteVideoSample.cpp: Removed.
  • platform/graphics/RemoteVideoSample.h: Removed.

Source/WebKit:

Send RemoteVideoSample data directly as IPC message parameters instead of inside RemoteVideoSample.
Fix timeStampNs by sending them back to WebProcess and divide them by 1000 to put them as milliseconds, as expected by libwebrtc backend.

  • GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:

(WebKit::LibWebRTCCodecsProxy::createDecoderCallback):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::LibWebRTCCodecs::completedDecodingCV):

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.messages.in:
  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

(WebKit::RemoteCaptureSampleManager::videoFrameAvailable):
(WebKit::RemoteCaptureSampleManager::videoFrameAvailableCV):
(WebKit::RemoteCaptureSampleManager::videoSampleAvailable): Deleted.
(WebKit::RemoteCaptureSampleManager::videoSampleAvailableCV): Deleted.
(WebKit::RemoteCaptureSampleManager::RemoteVideo::videoSampleAvailable): Deleted.

  • WebProcess/cocoa/RemoteCaptureSampleManager.h:
  • WebProcess/cocoa/RemoteCaptureSampleManager.messages.in:
  • WebProcess/cocoa/RemoteRealtimeVideoSource.cpp:
1:00 AM Changeset in webkit [291094] by Carlos Garcia Campos
  • 16 edits
    2 adds in trunk

[GTK][WPE] Add initial support for PDF documents using PDF.js
​https://bugs.webkit.org/show_bug.cgi?id=237513

Reviewed by Michael Catanzaro.

Source/WebCore:

Add support for loading PDF documents using PDF.js.

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::start):
(WebCore::ResourceLoader::isPDFJSResourceLoad const):

  • loader/soup/ResourceLoaderSoup.cpp:

(WebCore::ResourceLoader::loadGResource):

  • page/SecurityOrigin.cpp:

(WebCore::shouldTreatAsUniqueOrigin):

  • platform/LegacySchemeRegistry.cpp:

(WebCore::builtinSecureSchemes):

Source/WebKit:

Build PDF.js resources into the library.

  • PdfJSGResources.cmake: Added.
  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::canShowMIMEType): Claim to support PDF documents when PDF.js is enabled.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::canShowMIMEType const): Ditto.

Source/WTF:

Enable PDF.js for GTK and WPE ports.

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Tools:

Add a script to generate the GResource manifest for PDF.js sources.

  • glib/generate-pdfjs-gresource-manifest.py: Added.

(get_filenames):
(get_filenames.should_ignore_resource):
(get_filenames.resource_name):
(is_compressible):

  • gtk/manifest.txt.in: Add pdfjs to tarballs.
  • wpe/manifest.txt.in: Ditto.
12:57 AM Changeset in webkit [291093] by Carlos Garcia Campos
  • 18 edits
    4 adds in trunk/Source

[GTK][WPE] Web Inspector: make it possible to use the remote inspector from other browsers
​https://bugs.webkit.org/show_bug.cgi?id=237601

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

Make it possible to start the inspector server with 0 port, meaning any free one will be used.

  • inspector/remote/glib/RemoteInspectorServer.cpp:

(Inspector::RemoteInspectorServer::start): Pass the effective address to g_socket_listener_add_address and get the port.

  • inspector/remote/glib/RemoteInspectorServer.h:

(Inspector::RemoteInspectorServer::port const): Return the port the server is listening to.

Source/WebInspectorUI:

Add Base/BrowserInspectorFrontendHost.js to be used when inspector is run and InspectorFrontendHost is not
defined in window. This new file is only included in the inspector sources for GTK and WPE ports.

  • CMakeLists.txt:
  • PlatformWPE: Added
  • PlatformGTK:
  • Scripts/combine-resources.pl: Add --input-script-name to be able to skip individual scripts too.
  • Scripts/copy-user-interface-resources.pl: If inspector frontend host should not be included, remove the script

from generated files.

  • UserInterface/Base/BrowserInspectorFrontendHost.js: Added.

(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.get supportsShowCertificate):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.get isRemote):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.get inspectionLevel):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.get debuggableInfo):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.get port):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.get platform):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.get platformVersionName):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.get supportsDiagnosticLogging):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.get supportsWebExtensions):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.connect):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.loaded):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.closeWindow):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.reopen):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.reset):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.bringToFront):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.inspectedURLChanged):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.showCertificate):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.setZoomFactor):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.zoomFactor):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.setForcedAppearance):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.userInterfaceLayoutDirection):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.supportsDockSide):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.requestDockSide):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.setAttachedWindowHeight):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.setAttachedWindowWidth):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.setSheetRect):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.startWindowDrag):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.moveWindowBy):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.copyText):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.killText):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.openURLExternally):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.canSave):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.save):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.append):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.close):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.showContextMenu):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.dispatchEventAsContextMenuEvent):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.sendMessageToBackend):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.unbufferedLog):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.isUnderTest):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.isExperimentalBuild):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.beep):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.inspectInspector):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.isBeingInspected):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.setAllowsInspectingInspector):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.logDiagnosticEvent):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.didShowExtensionTab):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.didHideExtensionTab):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.didNavigateExtensionTab):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.inspectedPageDidNavigate):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype.evaluateScriptInExtensionTab):
(window.InspectorFrontendHost.WI.BrowserInspectorFrontendHost.prototype._sendPendingMessagesToBackendIfNeeded):

  • UserInterface/Base/Main.js:

(WI.loaded): Connect the inspector host if needed.

  • UserInterface/Main.html: Add Base/BrowserInspectorFrontendHost.js.

Source/WebKit:

This is no longer possible since we switched to the new remote inspector. We don't want to bring the legacy
remote inspector back, but it should be possible to use a mixed approach, using a WebSocket for the inspector
protocol communication, but still using the new remote inspector code. This patch adds a simple HTTP browser to
server the inspector resources and open WebSocket connection to the inspector. It pretends to be a remote
inspector client, so we don't need any change in the current remote inspector implementation. The server is only
started when the env var WEBKIT_INSPECTOR_HTTP_SERVER is present, and the inspector server is started for the
same host but using a free port.

  • PlatformWPE.cmake:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • UIProcess/API/glib/WebKitInitialize.cpp:

(WebKit::initializeRemoteInspectorServer): Start the HTTP server if the env var WEBKIT_INSPECTOR_HTTP_SERVER is present.
(WebKit::webkitInitialize): Just call initializeRemoteInspectorServer().

  • UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:

(WebKit::RemoteInspectorProtocolHandler::handleRequest): Use RemoteInspectorClient::buildTargetListPage().

  • UIProcess/Inspector/glib/RemoteInspectorClient.cpp:

(WebKit::RemoteInspectorClient::inspect): Only call RemoteInspectorProxy::load() for UI inspector type.
(WebKit::RemoteInspectorClient::buildTargetListPage const): Build the target list page, using message handlers
for UI inspector and window.open for the HTTP inspector.

  • UIProcess/Inspector/glib/RemoteInspectorClient.h:

(WebKit::RemoteInspectorClient::targets const): Deleted.

  • UIProcess/Inspector/glib/RemoteInspectorHTTPServer.cpp: Added.

(WebKit::RemoteInspectorHTTPServer::singleton):

  • UIProcess/Inspector/glib/RemoteInspectorHTTPServer.h: Added.

Mar 9, 2022:

11:14 PM Changeset in webkit [291092] by youenn@apple.com
  • 2 edits in trunk/LayoutTests/imported/w3c

imported/w3c/web-platform-tests/webrtc-extensions/transfer-datachannel.html is flaky
​https://bugs.webkit.org/show_bug.cgi?id=237327

Reviewed by Eric Carlson.

The worker is first sending the Opened message, than any message coming from the data channel.
Wait for the Opened message before proceeding with the rest of the test.

  • web-platform-tests/webrtc-extensions/transfer-datachannel.html:
11:04 PM Changeset in webkit [291091] by Megan Gardner
  • 2 edits in trunk/Source/WebKit

Combine Lookup and Define.
​https://bugs.webkit.org/show_bug.cgi?id=237627
rdar://26205225

Reviewed by Tim Horton.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _defineForWebView:]):

10:12 PM Changeset in webkit [291090] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] counter-increment should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237640

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

The counter-increment and counter-reset properties are represented via a single data structure
held by RenderStyle. This lays up the groundwork for animation support of counter-reset as well
but right now we only handle counter-increment to keep this patch focused.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

8:36 PM Changeset in webkit [291089] by Cameron McCormack
  • 3 edits in trunk/LayoutTests

Unreviewed test gardening
​https://bugs.webkit.org/show_bug.cgi?id=237688

  • gpu-process/TestExpectations:
  • svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg:
8:31 PM Changeset in webkit [291088] by Cameron McCormack
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening
​https://bugs.webkit.org/show_bug.cgi?id=236931

  • gpu-process/TestExpectations:
7:31 PM Changeset in webkit [291087] by sbarati@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Limit WK_XCODE_SUPPORTS_LTO in JavaScriptCore based on target OS
​https://bugs.webkit.org/show_bug.cgi?id=237682

Reviewed by Alexey Proskuryakov.

  • Configurations/Base.xcconfig:
  • Configurations/WebKitTargetConditionals.xcconfig:
7:18 PM Changeset in webkit [291086] by Cameron McCormack
  • 3 edits in trunk/LayoutTests

Unreviewed test gardening
​https://bugs.webkit.org/show_bug.cgi?id=236930

  • gpu-process/TestExpectations:
  • platform/ios/TestExpectations:
7:05 PM Changeset in webkit [291085] by Andres Gonzalez
  • 2 edits in trunk/Source/WebCore

Remove unused AccessibilityObject member variable.
​https://bugs.webkit.org/show_bug.cgi?id=237670
<rdar://problem/90042470>

Reviewed by Chris Fleizach.

AccessibilityObject::m_isolatedTreeNodeInitialized is not used, thus
removing.

  • accessibility/AccessibilityObject.h:
6:43 PM Changeset in webkit [291084] by Andres Gonzalez
  • 4 edits in trunk/Source/WebCore

In isolated tree mode, do not call NSAccessibilityUnregisterUniqueIdForUIElement until the isolated object is detached.
​https://bugs.webkit.org/show_bug.cgi?id=237621
<rdar://problem/89992486>

Reviewed by Chris Fleizach.

When the live object is detached from its wrapper on the main thread,
the wrapper may be in the middle of serving a request on the AX thread.
Therefore calling NSAccessibilityUnregisterUniqueIdForUIElement may
interfere with the completiong of the request, or even cause undefined
behavior since many of the internal lookups for objects depend on a data
structure updated by system call. With this patch, we unregister a
wrapper when the isolated object is detached, which happens after the
live object is detached.

  • accessibility/mac/WebAccessibilityObjectWrapperBase.h:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(-[WebAccessibilityObjectWrapperBase initWithAccessibilityObject:]):
(-[WebAccessibilityObjectWrapperBase attachIsolatedObject:]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper detach]):
(-[WebAccessibilityObjectWrapper detachIsolatedObject:]):
(-[WebAccessibilityObjectWrapper unregisterUniqueIdForUIElement]): Deleted.

6:05 PM Changeset in webkit [291083] by Russell Epstein
  • 1 edit in branches/safari-613-branch/Source/WebCore/Modules/webauthn/AuthenticatorCoordinator.cpp

Unreivewed build fix. rdar://89376484

./Modules/webauthn/AuthenticatorCoordinator.cpp:144:50: error: no member named 'findIf' in 'WTF::Vector<WebCore::PublicKeyCredentialCreationOptions::Parameters, 0, WTF::CrashOnOverflow, 16>'; did you mean 'find'?

6:02 PM Changeset in webkit [291082] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebCore/platform/sql

Apply patch. rdar://problem/82071968

3:43 PM Changeset in webkit [291081] by Russell Epstein
  • 87 edits
    1 copy
    2 adds in branches/safari-613-branch

Revert "Cherry-pick r289790. rdar://problem/89997669"

This reverts commit r291070.

3:06 PM Changeset in webkit [291080] by Matt Woodrow
  • 5 edits
    5 adds in trunk

Empty float rects should remain empty after integrally enclosing them.
​https://bugs.webkit.org/show_bug.cgi?id=237507

Reviewed by Alan Bujtas.

Source/WebCore:

Test: compositing/tile-coverage-subpixel-empty-rect.html

  • platform/graphics/FloatRect.cpp:

(WebCore::enclosingIntRectPreservingEmptyRects):

  • platform/graphics/FloatRect.h:
  • platform/graphics/ca/TileGrid.cpp:

(WebCore::TileGrid::setNeedsDisplayInRect):
(WebCore::TileGrid::dropTilesInRect):
(WebCore::TileGrid::tilesWouldChangeForCoverageRect const):
(WebCore::TileGrid::prepopulateRect):
(WebCore::TileGrid::revalidateTiles):
(WebCore::TileGrid::ensureTilesForRect):

Add a new variant of enclosingIntRect(const Float&) that ensures that empty input rects
always return an empty output rect, even if the x/y position is fractional.
Significant portions of the layout code (including, but not limited to linesBoundingBox()) depend
on the old behavior, so the new behaviour is opt-in and only used by TileGrid.

Fixes the case where TileGrid received an empty coverage rect at a fractional position, and rounded
it out to a 1x1 rect and allocated unnecessary tiles.

LayoutTests:

  • compositing/tile-coverage-subpixel-empty-rect-expected.txt: Added.
  • compositing/tile-coverage-subpixel-empty-rect.html: Added.
  • platform/gtk/compositing/tile-coverage-subpixel-empty-rect-expected.txt: Added.
  • platform/ios/compositing/tile-coverage-subpixel-empty-rect-expected.txt: Added.

Adds a new test that uses multiple overflow:hidden clips and absolute positioning to create
an empty coverage rect with a subpixel x/y position that is within the bounds of an offscreen
layer. Confirms that we don't accidentally allocate a tile for this layer.

2:45 PM Changeset in webkit [291079] by ysuzuki@apple.com
  • 2 edits in branches/safari-613-branch/Source/bmalloc

Cherry-picking r290110

[libpas] scavenger should not call pthread_mach_thread_np after suspension
​https://bugs.webkit.org/show_bug.cgi?id=236798
rdar://89020902

Reviewed by Mark Lam and Keith Miller.

pthread_mach_thread_np can take a lock internally. So we should not call it after suspending a thread.
This patch refactors libpas scavenger so that we call pthread_mach_thread_np before suspending a thread.
We also avoid calling pthread_self() after suspension to make suspending safer (while it does not take
a lock, it also depends on an internal implementation).

  • libpas/src/libpas/pas_thread_local_cache.c: (scavenger_thread_suspend_data_create): (suspend): (resume): (stop_allocator): (pas_thread_local_cache_for_all):
2:38 PM Changeset in webkit [291078] by achristensen@apple.com
  • 3 edits in trunk/Source/WebCore

Fix AppleWin build
​https://bugs.webkit.org/show_bug.cgi?id=236131

  • platform/VideoFrame.cpp:

(WebCore::VideoFrame::asVideoFrameCV):

  • platform/VideoFrame.h:
2:35 PM Changeset in webkit [291077] by Jonathan Bedard
  • 2 edits in trunk/Tools

[EWS] Support concept of 'blocked' pull requests
​https://bugs.webkit.org/show_bug.cgi?id=237370
<rdar://problem/89689094>

Unreviewed follow-up fix.

Accidently landed change using string literals instead of variables.

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

(GitHubMixin):
(GitHubMixin._is_pr_blocked):
(ValidateChange.validate_github):
(BlockPullRequest.start):
(BlockPullRequest.getResultSummary):

Canonical link: ​https://commits.webkit.org/248243@main

2:31 PM Changeset in webkit [291076] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix AppleWin build
​https://bugs.webkit.org/show_bug.cgi?id=236131

  • platform/VideoFrame.cpp:

(WebCore::VideoFrame::asVideoFrameCV):

2:25 PM Changeset in webkit [291075] by rmorisset@apple.com
  • 12 edits
    1 copy
    2 adds in trunk/Source/WebGPU

[WGSL] Implement enough of the Parser for the simplest shaders
​https://bugs.webkit.org/show_bug.cgi?id=237629

Reviewed by Myles Maxfield.

The specific "hello-world"-like shaders that I want this to be able to parse are included in WGSLParserTests.mm.

The general approach to the parser, such as its templating by the Lexer, is directly copied from JSC's parser.
Things are a bit simpler for us as WGSL is such a simple language to parse, being strictly LR(1).

In this patch I also deleted BlockAttribute, since this attribute was recently removed from the language.

  • WGSL/AST/Attribute.h:

(WGSL::AST::Attribute::isBlock const): Deleted.

  • WGSL/AST/Expressions/TypeConversion.h:
  • WGSL/AST/FunctionDecl.h:
  • WGSL/AST/ShaderModule.h:
  • WGSL/AST/Statements/AssignmentStatement.h:
  • WGSL/AST/StructureDecl.h:
  • WGSL/AST/TypeDecl.h:

(WGSL::AST::ParameterizedType::stringViewToKind):

  • WGSL/CompilationMessage.h:
  • WGSL/Parser.cpp: Added.

(WGSL::Parser::Parser):
(WGSL::Parser::current):
(WGSL::parse):
(WGSL::parseLChar):
(WGSL::parseUChar):
(WGSL::Parser<Lexer>::consumeType):
(WGSL::Parser<Lexer>::consume):
(WGSL::Parser<Lexer>::parseShader):
(WGSL::Parser<Lexer>::parseGlobalDecl):
(WGSL::Parser<Lexer>::parseAttributes):
(WGSL::Parser<Lexer>::parseAttribute):
(WGSL::Parser<Lexer>::parseStructDecl):
(WGSL::Parser<Lexer>::parseStructMember):
(WGSL::Parser<Lexer>::parseTypeDecl):
(WGSL::Parser<Lexer>::parseTypeDeclAfterIdentifier):
(WGSL::Parser<Lexer>::parseGlobalVariableDecl):
(WGSL::Parser<Lexer>::parseVariableQualifier):
(WGSL::Parser<Lexer>::parseStorageClass):
(WGSL::Parser<Lexer>::parseAccessMode):
(WGSL::Parser<Lexer>::parseFunctionDecl):
(WGSL::Parser<Lexer>::parseParameter):
(WGSL::Parser<Lexer>::parseStatement):
(WGSL::Parser<Lexer>::parseCompoundStatement):
(WGSL::Parser<Lexer>::parseReturnStatement):
(WGSL::Parser<Lexer>::parseShortCircuitOrExpression):
(WGSL::Parser<Lexer>::parseRelationalExpression):
(WGSL::Parser<Lexer>::parseShiftExpression):
(WGSL::Parser<Lexer>::parseAdditiveExpression):
(WGSL::Parser<Lexer>::parseMultiplicativeExpression):
(WGSL::Parser<Lexer>::parseUnaryExpression):
(WGSL::Parser<Lexer>::parseSingularExpression):
(WGSL::Parser<Lexer>::parsePostfixExpression):
(WGSL::Parser<Lexer>::parsePrimaryExpression):
(WGSL::Parser<Lexer>::parseExpression):
(WGSL::Parser<Lexer>::parseLHSExpression):
(WGSL::Parser<Lexer>::parseCoreLHSExpression):
(WGSL::Parser<Lexer>::parseArgumentExpressionList):

  • WGSL/Parser.h: Copied from Source/WebGPU/WGSL/CompilationMessage.h.
  • WGSL/WGSL.cpp:

(WGSL::staticCheck):
(WGSL::SuccessfulCheck::SuccessfulCheck):

  • WGSL/WGSL.h:
  • WebGPU.xcodeproj/project.pbxproj:
2:16 PM Changeset in webkit [291074] by Russell Epstein
  • 9 edits in branches/safari-613-branch

Cherry-pick r290515. rdar://problem/89376484

[WebAuthn] Use default pubKeyCredParams if empty in makeCredential
​https://bugs.webkit.org/show_bug.cgi?id=237109
rdar://problem/89376484

Reviewed by Brent Fulgham.

Source/WebCore:

The Web Authentication level 2 spec was updated to clarify that
a set of default pubKeyCredParams should be used if the list
supplied by the RP is empty. This patch starts using
the default and updates associated tests.

  • Modules/webauthn/AuthenticatorCoordinator.cpp: (WebCore::AuthenticatorCoordinator::create const):
  • Modules/webauthn/PublicKeyCredentialCreationOptions.h:
  • Modules/webauthn/WebAuthenticationConstants.h:

LayoutTests:

Update tests to take in account using default pubKeyCredParams.

  • http/wpt/webauthn/public-key-credential-create-failure.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure.https.html:
  • http/wpt/webauthn/public-key-credential-create-success-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-hid.https.html:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290515 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:16 PM Changeset in webkit [291073] by Russell Epstein
  • 5 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290760. rdar://problem/83745510

Rendering issues with many dynamically-added sticky elements inside overflow scroll
​https://bugs.webkit.org/show_bug.cgi?id=237378
<rdar://83745510>

Reviewed by Cameron McCormack.

Source/WebCore:

A bug was filed describing a symptom where position:sticky elements would eventually
fail to render when many of them were dynamically added inside a non-stacking context
overflow scroll.

Debugging showed that CALayers were accumulating, causing us to hit per-process IOSurface
limits, at which point content fails to render (this is being fixed via rdar://89640915).
Further debugging showed that these layers were unparented, and being entrained by
ScrollingStateStickyNodes, which were accumulating in ScrollingStateTree's m_unparentedNodes.

This happened because with this scrolling configuration, each ScrollingStateStickyNode
is parented via a ScrollingStateOverflowScrollProxyNode which is referenced by entries
in RenderLayerBacking's m_ancestorClippingStack. On cleanup, the ScrollingStateOverflowScrollProxyNode
was unparented first, leaving the ScrollingStateStickyNode in m_unparentedNodes.

The fix is to have ScrollingStateTree::unparentChildrenAndDestroyNode() remove nodes
from m_unparentedNodes.

To test, add a m_unparentedNodes count to scrollingStateTreeAsText output, which means
having scrollingStateTreeAsText() as a member function on ScrollingStateTree.

Test: scrollingcoordinator/scrolling-tree/accumulated-unparented-sticky-nodes.html

  • page/scrolling/AsyncScrollingCoordinator.cpp: (WebCore::AsyncScrollingCoordinator::scrollingStateTreeAsText const):
  • page/scrolling/ScrollingStateTree.cpp: (WebCore::ScrollingStateTree::unparentChildrenAndDestroyNode): (WebCore::ScrollingStateTree::scrollingStateTreeAsText const):
  • page/scrolling/ScrollingStateTree.h:

LayoutTests:

  • scrollingcoordinator/scrolling-tree/accumulated-unparented-sticky-nodes-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/accumulated-unparented-sticky-nodes.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290760 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:16 PM Changeset in webkit [291072] by Russell Epstein
  • 27 edits
    4 adds in branches/safari-613-branch

Cherry-pick r290646. rdar://problem/88911184

focus({preventScroll: true}) does not prevent scrolling on iOS
​https://bugs.webkit.org/show_bug.cgi?id=236584
rdar://88911184

Reviewed by Simon Fraser.

Source/WebCore:

Plumb FocusOptions through Element::dispatchFocusEvent() as well as the chrome client hooks for
elementDidRefocus and elementDidFocus, instead of just a FocusDirection flag.

  • dom/Document.cpp: (WebCore::Document::setFocusedElement):
  • dom/Element.cpp: (WebCore::Element::focus): (WebCore::Element::dispatchFocusEvent):
  • dom/Element.h:
  • html/HTMLSelectElement.cpp: (WebCore::HTMLSelectElement::dispatchFocusEvent):
  • html/HTMLSelectElement.h:
  • html/HTMLTextFormControlElement.cpp: (WebCore::HTMLTextFormControlElement::dispatchFocusEvent):
  • html/HTMLTextFormControlElement.h:
  • loader/EmptyClients.h:
  • page/ChromeClient.h: (WebCore::ChromeClient::elementDidFocus): (WebCore::ChromeClient::elementDidRefocus):
  • page/FocusController.cpp: (WebCore::dispatchEventsOnWindowAndFocusedElement): (WebCore::FocusController::setFocusedElement):

Source/WebKit:

Add support for preventScroll on iOS by avoiding UI-side zooming/scrolling to reveal the focused element if it
was focused with preventScroll: true. See below for more details.

Tests: fast/forms/select-focus-prevent-scroll.html

fast/forms/text-field-focus-prevent-scroll.html

  • Shared/FocusedElementInformation.cpp: (WebKit::FocusedElementInformation::encode const): (WebKit::FocusedElementInformation::decode):
  • Shared/FocusedElementInformation.h:

Add a boolean flag to FocusedElementInformation to indicate whether or not scrolling to reveal the focused
element should be prevented.

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _zoomToRevealFocusedElement]):

Only zoom to reveal the focused element if the focused element information's preventScroll flag is NO.

(-[WKContentView _elementDidBlur]):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::elementDidFocus): (WebKit::WebChromeClient::elementDidRefocus):
  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::elementDidRefocus): (WebKit::WebPage::elementDidFocus):

Use FocusOptions to set the preventScroll flag when propagating FocusedElementInformation.

  • WebProcess/WebPage/WebPage.h:

Source/WebKitLegacy/ios:

Adjust the method signature of elementDidFocus. See WebCore ChangeLog for more information.

  • WebCoreSupport/WebChromeClientIOS.h:
  • WebCoreSupport/WebChromeClientIOS.mm: (WebChromeClientIOS::elementDidFocus):

Source/WebKitLegacy/mac:

Adjust the method signature of elementDidFocus. See WebCore ChangeLog for more information.

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm: (WebChromeClient::elementDidFocus):

LayoutTests:

Add a couple of new layout tests to verify that passing in { preventScroll: true } for focus options causes
us to avoid scrolling to reveal focused select elements and text fields.

  • fast/forms/select-focus-prevent-scroll-expected.txt: Added.
  • fast/forms/select-focus-prevent-scroll.html: Added.
  • fast/forms/text-field-focus-prevent-scroll-expected.txt: Added.
  • fast/forms/text-field-focus-prevent-scroll.html: Added.
  • resources/ui-helper.js:

Also make it safe to call waitForInputSessionToDismiss() in a platform-agnostic test, by bailing early if
we're not on iOS, using WebKit2.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290646 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:16 PM Changeset in webkit [291071] by Russell Epstein
  • 15 edits
    4 adds in branches/safari-613-branch/LayoutTests

Cherry-pick r290556. rdar://problem/89525864

Re-import inert and <dialog> WPT
​https://bugs.webkit.org/show_bug.cgi?id=237243

Reviewed by Youenn Fablet.

Upstream commit: ​https://github.com/web-platform-tests/wpt/commit/9261ca87db106c1f31f1ab4f54b8f4a2617cbc24

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer-expected.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer-ref.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column-expected.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column-ref.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/w3c-import.log:
  • web-platform-tests/inert/inert-and-contenteditable.tentative-expected.txt: Added.
  • web-platform-tests/inert/inert-and-contenteditable.tentative.html: Added.
  • web-platform-tests/inert/inert-iframe-hittest.tentative-expected.txt:
  • web-platform-tests/inert/inert-iframe-hittest.tentative.html:
  • web-platform-tests/inert/inert-iframe-tabbing.tentative-expected.txt:
  • web-platform-tests/inert/inert-iframe-tabbing.tentative.html:
  • web-platform-tests/inert/w3c-import.log:

LayoutTests:

  • TestExpectations:
  • platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-hittest.tentative-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-tabbing.tentative-expected.txt:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290556 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:15 PM Changeset in webkit [291070] by Russell Epstein
  • 87 edits
    3 deletes in branches/safari-613-branch

Cherry-pick r289790. rdar://problem/89997669

ExtensionsGL is not useful class, it should be removed
​https://bugs.webkit.org/show_bug.cgi?id=236490

Source/WebCore:

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-02-14
Reviewed by Dean Jackson.

Remove ExtensionsGL. It is not a useful class, it does not abstract anything.
It has similar functions to GraphicsContextGL subclass, and needs and uses GraphicsContextGL subclass
underneath.
It is a problematic class as it is obtained through a virtual function, but that
virtual function override is being called during construction of the GraphicsContextGL subclass
instance.
Also the ExtensionsGL will neccessarily call back to GraphicsContextGL subclass instance being
constructed.
Current getExtensions() virtual function override calls are expected to go
where the C++ defines them going during construction.
Current calls back to the GraphicsContextGL subclass instance during construction *should*
access state that is already initialized, but it is quite error-prone and hard to
analyze.

Move ExtensionsGL functions to GraphicsContextGL. Make call-sites call the context instead of the
extension helper. Rename the functions with pattern "isSupported" -> "isExtensionSupported".
Remove GraphicsContextGL::getExtensions() virtual function call.

For legacy contexts GraphicsContextGLOpenGL, GraphicsContextGLOpenGLES preserve their
ExtensionGLCommon subclasses. Accessing it happens from a normal function from legacy call sites
that know that they're calling GraphicsContextGLOpenGL.

For GraphicsContextGLANGLE, move context initialization code to GraphicsContextGLANGLE::initialize()
instead of the constructor. This way the initialization code can call virtual functions and the calls
are delivered normally to the last overrider.

RemoteGraphicsContextGLProxyBase can now be removed, as it is unneeded anyway and its added virtual
functions would cause inconvenient naming duplication.

No new tests, a refactor.

  • CMakeLists.txt:
  • Headers.cmake:
  • Modules/webxr/WebXROpaqueFramebuffer.cpp: (WebCore::WebXROpaqueFramebuffer::startFrame): (WebCore::WebXROpaqueFramebuffer::setupFramebuffer):
  • Sources.txt:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/canvas/ANGLEInstancedArrays.cpp: (WebCore::ANGLEInstancedArrays::ANGLEInstancedArrays): (WebCore::ANGLEInstancedArrays::supported):
  • html/canvas/ANGLEInstancedArrays.h:
  • html/canvas/EXTColorBufferFloat.cpp: (WebCore::EXTColorBufferFloat::EXTColorBufferFloat): (WebCore::EXTColorBufferFloat::supported):
  • html/canvas/EXTColorBufferFloat.h:
  • html/canvas/EXTColorBufferHalfFloat.cpp: (WebCore::EXTColorBufferHalfFloat::EXTColorBufferHalfFloat): (WebCore::EXTColorBufferHalfFloat::supported):
  • html/canvas/EXTColorBufferHalfFloat.h:
  • html/canvas/EXTFloatBlend.cpp: (WebCore::EXTFloatBlend::EXTFloatBlend): (WebCore::EXTFloatBlend::supported):
  • html/canvas/EXTFloatBlend.h:
  • html/canvas/EXTTextureCompressionRGTC.cpp: (WebCore::EXTTextureCompressionRGTC::EXTTextureCompressionRGTC):
  • html/canvas/KHRParallelShaderCompile.cpp: (WebCore::KHRParallelShaderCompile::KHRParallelShaderCompile): (WebCore::KHRParallelShaderCompile::supported):
  • html/canvas/KHRParallelShaderCompile.h:
  • html/canvas/OESFBORenderMipmap.cpp: (WebCore::OESFBORenderMipmap::OESFBORenderMipmap): (WebCore::OESFBORenderMipmap::supported):
  • html/canvas/OESFBORenderMipmap.h:
  • html/canvas/OESTextureFloat.cpp: (WebCore::OESTextureFloat::OESTextureFloat): (WebCore::OESTextureFloat::supported):
  • html/canvas/OESTextureFloat.h:
  • html/canvas/OESTextureHalfFloat.cpp: (WebCore::OESTextureHalfFloat::OESTextureHalfFloat): (WebCore::OESTextureHalfFloat::supported):
  • html/canvas/OESTextureHalfFloat.h:
  • html/canvas/OESVertexArrayObject.cpp:
  • html/canvas/WebGL2RenderingContext.cpp: (WebCore::WebGL2RenderingContext::initializeShaderExtensions): (WebCore::WebGL2RenderingContext::getExtension): (WebCore::WebGL2RenderingContext::getSupportedExtensions):
  • html/canvas/WebGLColorBufferFloat.cpp: (WebCore::WebGLColorBufferFloat::WebGLColorBufferFloat): (WebCore::WebGLColorBufferFloat::supported):
  • html/canvas/WebGLColorBufferFloat.h:
  • html/canvas/WebGLCompressedTextureASTC.cpp: (WebCore::WebGLCompressedTextureASTC::WebGLCompressedTextureASTC): (WebCore::WebGLCompressedTextureASTC::supported):
  • html/canvas/WebGLCompressedTextureASTC.h:
  • html/canvas/WebGLCompressedTextureATC.cpp: (WebCore::WebGLCompressedTextureATC::WebGLCompressedTextureATC): (WebCore::WebGLCompressedTextureATC::supported):
  • html/canvas/WebGLCompressedTextureATC.h:
  • html/canvas/WebGLCompressedTextureETC.cpp: (WebCore::WebGLCompressedTextureETC::WebGLCompressedTextureETC): (WebCore::WebGLCompressedTextureETC::supported):
  • html/canvas/WebGLCompressedTextureETC.h:
  • html/canvas/WebGLCompressedTextureETC1.cpp: (WebCore::WebGLCompressedTextureETC1::WebGLCompressedTextureETC1): (WebCore::WebGLCompressedTextureETC1::supported):
  • html/canvas/WebGLCompressedTextureETC1.h:
  • html/canvas/WebGLCompressedTexturePVRTC.cpp: (WebCore::WebGLCompressedTexturePVRTC::WebGLCompressedTexturePVRTC): (WebCore::WebGLCompressedTexturePVRTC::supported):
  • html/canvas/WebGLCompressedTexturePVRTC.h:
  • html/canvas/WebGLCompressedTextureS3TC.cpp: (WebCore::WebGLCompressedTextureS3TC::WebGLCompressedTextureS3TC): (WebCore::WebGLCompressedTextureS3TC::supported):
  • html/canvas/WebGLCompressedTextureS3TC.h:
  • html/canvas/WebGLCompressedTextureS3TCsRGB.cpp: (WebCore::WebGLCompressedTextureS3TCsRGB::WebGLCompressedTextureS3TCsRGB): (WebCore::WebGLCompressedTextureS3TCsRGB::supported):
  • html/canvas/WebGLCompressedTextureS3TCsRGB.h:
  • html/canvas/WebGLDebugShaders.cpp: (WebCore::WebGLDebugShaders::WebGLDebugShaders): (WebCore::WebGLDebugShaders::getTranslatedShaderSource):
  • html/canvas/WebGLDepthTexture.cpp: (WebCore::WebGLDepthTexture::WebGLDepthTexture): (WebCore::WebGLDepthTexture::supported):
  • html/canvas/WebGLDrawBuffers.cpp: (WebCore::WebGLDrawBuffers::WebGLDrawBuffers): (WebCore::WebGLDrawBuffers::supported): (WebCore::WebGLDrawBuffers::drawBuffersWEBGL): (WebCore::WebGLDrawBuffers::satisfiesWebGLRequirements):
  • html/canvas/WebGLFramebuffer.cpp: (WebCore::getClearBitsByAttachmentType): (WebCore::getClearBitsByFormat): (WebCore::WebGLFramebuffer::checkStatus const): (WebCore::WebGLFramebuffer::drawBuffersIfNecessary): (WebCore::WebGLFramebuffer::getDrawBuffer):
  • html/canvas/WebGLMultiDraw.cpp: (WebCore::WebGLMultiDraw::WebGLMultiDraw): (WebCore::WebGLMultiDraw::supported):
  • html/canvas/WebGLMultiDraw.h:
  • html/canvas/WebGLRenderingContext.cpp: (WebCore::WebGLRenderingContext::getExtension): (WebCore::WebGLRenderingContext::getSupportedExtensions): (WebCore::WebGLRenderingContext::getFramebufferAttachmentParameter): (WebCore::WebGLRenderingContext::getMaxDrawBuffers): (WebCore::WebGLRenderingContext::getMaxColorAttachments): (WebCore::WebGLRenderingContext::validateBlendEquation):
  • html/canvas/WebGLRenderingContextBase.cpp: (WebCore::getChannelBitsByFormat): (WebCore::possibleFormatAndTypeForInternalFormat): (WebCore::WebGLRenderingContextBase::setupFlags): (WebCore::WebGLRenderingContextBase::getParameter): (WebCore::WebGLRenderingContextBase::getProgramParameter): (WebCore::WebGLRenderingContextBase::getShaderParameter): (WebCore::WebGLRenderingContextBase::getTexParameter): (WebCore::WebGLRenderingContextBase::getUniform): (WebCore::WebGLRenderingContextBase::hint): (WebCore::WebGLRenderingContextBase::readPixels): (WebCore::WebGLRenderingContextBase::renderbufferStorageImpl): (WebCore::WebGLRenderingContextBase::validateTexFuncFormatAndType): (WebCore::WebGLRenderingContextBase::texParameter): (WebCore::WebGLRenderingContextBase::loseContextImpl): (WebCore::WebGLRenderingContextBase::validateCompressedTexFuncData): (WebCore::WebGLRenderingContextBase::validateCompressedTexDimensions): (WebCore::WebGLRenderingContextBase::validateCompressedTexSubDimensions): (WebCore::WebGLRenderingContextBase::maybeRestoreContext): (WebCore::WebGLRenderingContextBase::getMaxDrawBuffers): (WebCore::WebGLRenderingContextBase::getMaxColorAttachments): (WebCore::WebGLRenderingContextBase::enableSupportedExtension):
  • html/canvas/WebGLVertexArrayObjectOES.cpp:
  • loader/FrameLoaderClient.h:
  • platform/graphics/ExtensionsGL.h: Removed.
  • platform/graphics/GraphicsContextGL.cpp: (WebCore::GraphicsContextGL::computeFormatAndTypeParameters):
  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/RemoteGraphicsContextGLProxyBase.cpp:
  • platform/graphics/RemoteGraphicsContextGLProxyBase.h:
  • platform/graphics/angle/ExtensionsGLANGLE.cpp: Removed.
  • platform/graphics/angle/ExtensionsGLANGLE.h: Removed.
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp: (WebCore::GraphicsContextGLANGLE::initialize): (WebCore::GraphicsContextGLANGLE::platformInitializeContext): (WebCore::GraphicsContextGLANGLE::platformInitialize): (WebCore::GraphicsContextGLANGLE::texImage2D): (WebCore::GraphicsContextGLANGLE::validateDepthStencil): (WebCore::GraphicsContextGLANGLE::supportsExtension): (WebCore::GraphicsContextGLANGLE::ensureExtensionEnabled): (WebCore::GraphicsContextGLANGLE::isExtensionEnabled): (WebCore::GraphicsContextGLANGLE::getGraphicsResetStatusARB): (WebCore::GraphicsContextGLANGLE::getTranslatedShaderSourceANGLE): (WebCore::GraphicsContextGLANGLE::drawBuffersEXT): (WebCore::GraphicsContextGLANGLE::adjustWebGL1TextureInternalFormat):
  • platform/graphics/angle/GraphicsContextGLANGLE.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
  • platform/graphics/cocoa/GraphicsContextGLCocoa.h:
  • platform/graphics/cocoa/GraphicsContextGLCocoa.mm: (WebCore::GraphicsContextGLCocoa::create): (WebCore::GraphicsContextGLCocoa::GraphicsContextGLCocoa): (WebCore::GraphicsContextGLANGLE::GraphicsContextGLANGLE): (WebCore::GraphicsContextGLCocoa::platformInitializeContext): (WebCore::GraphicsContextGLCocoa::platformInitialize): (WebCore::GraphicsContextGLCocoa::reshapeDisplayBufferBacking): (WebCore::GraphicsContextGLCocoa::allocateAndBindDisplayBufferBacking): (WebCore::GraphicsContextGLCocoa::bindDisplayBufferBacking): (WebCore::GraphicsContextGLCocoa::prepareForDisplay):
  • platform/graphics/cocoa/WebProcessGraphicsContextGLCocoa.mm: (WebCore::createWebProcessGraphicsContextGL):
  • platform/graphics/opengl/ExtensionsGLOpenGL.cpp: (WebCore::ExtensionsGLOpenGL::platformSupportsExtension):
  • platform/graphics/opengl/ExtensionsGLOpenGL.h:
  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp: (WebCore::ExtensionsGLOpenGLCommon::supports): (WebCore::ExtensionsGLOpenGLCommon::ensureEnabled):
  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.h:
  • platform/graphics/opengl/ExtensionsGLOpenGLES.cpp: (WebCore::ExtensionsGLOpenGLES::isEnabled): (WebCore::ExtensionsGLOpenGLES::getGraphicsResetStatusARB): (WebCore::ExtensionsGLOpenGLES::platformSupportsExtension):
  • platform/graphics/opengl/ExtensionsGLOpenGLES.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp: (WebCore::GraphicsContextGLOpenGL::getExtensions): (WebCore::GraphicsContextGLOpenGL::validateDepthStencil): (WebCore::GraphicsContextGLOpenGL::supportsExtension): (WebCore::GraphicsContextGLOpenGL::ensureExtensionEnabled): (WebCore::GraphicsContextGLOpenGL::isExtensionEnabled): (WebCore::GraphicsContextGLOpenGL::getGraphicsResetStatusARB): (WebCore::GraphicsContextGLOpenGL::drawBuffersEXT): (WebCore::GraphicsContextGLOpenGL::getTranslatedShaderSourceANGLE):
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp: (WebCore::GraphicsContextGLOpenGL::texImage2D): (WebCore::GraphicsContextGLOpenGL::getExtensions):
  • platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp: (WebCore::GraphicsContextGLOpenGL::reshapeFBOs): (WebCore::GraphicsContextGLOpenGL::validateAttributes): (WebCore::GraphicsContextGLOpenGL::getExtensions):
  • platform/graphics/texmap/BitmapTextureGL.cpp:
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp: (WebCore::GraphicsContextGLTextureMapper::create): (WebCore::createWebProcessGraphicsContextGL):
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.h:
  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp: (WebCore::GraphicsContextGLANGLE::GraphicsContextGLANGLE): (WebCore::GraphicsContextGLTextureMapper::prepareForDisplay): (WebCore::GraphicsContextGLTextureMapper::reshapeDisplayBufferBacking):
  • platform/graphics/texmap/TextureMapperGL.cpp:

Source/WebKit:

Move the RemoteGraphicsContextGLProxyBase functions to
RemoteGraphicsContextGL. The ..Base can now be removed
as ExtensionGL is removed.

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-02-14
Reviewed by Dean Jackson.

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp: (WebKit::RemoteGraphicsContextGL::workQueueInitialize): (WebKit::RemoteGraphicsContextGL::ensureExtensionEnabled): (WebKit::RemoteGraphicsContextGL::markContextChanged):
  • GPUProcess/graphics/RemoteGraphicsContextGL.h:
  • GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
  • GPUProcess/graphics/RemoteGraphicsContextGLFunctionsGenerated.h: (getGraphicsResetStatusARB): (getTranslatedShaderSourceANGLE): (drawBuffersEXT):
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp: (WebKit::RemoteGraphicsContextGLProxy::RemoteGraphicsContextGLProxy): (WebKit::RemoteGraphicsContextGLProxy::setContextVisibility): (WebKit::RemoteGraphicsContextGLProxy::isGLES2Compliant const): (WebKit::RemoteGraphicsContextGLProxy::markContextChanged): (WebKit::RemoteGraphicsContextGLProxy::supportsExtension): (WebKit::RemoteGraphicsContextGLProxy::ensureExtensionEnabled): (WebKit::RemoteGraphicsContextGLProxy::isExtensionEnabled): (WebKit::RemoteGraphicsContextGLProxy::initialize): (WebKit::RemoteGraphicsContextGLProxy::reshape):
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:

Tools:

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-02-14
Reviewed by Dean Jackson.

Update manually implemented functions.

  • Scripts/generate-gpup-webgl:
  • TestWebKitAPI/Tests/WebCore/cocoa/TestGraphicsContextGLCocoa.mm:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289790 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:15 PM Changeset in webkit [291069] by Russell Epstein
  • 5 edits
    5 adds in branches/safari-613-branch

Cherry-pick r289071. rdar://problem/89997434

ANGLE Metal and ANGLE OpenGL cannot be initialised one after the other
​https://bugs.webkit.org/show_bug.cgi?id=236030

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-02-03
Reviewed by Dean Jackson.

Source/WebCore:

Test: webgl/pending/conformance2/misc/webgl2-after-webgl1-bug.html

Remove the power-preference specific native displays.
Add a native display for opengl, and use the default
one for Metal.

After the recent ANGLE roll, ANGLE uses (native display, power preference)
as the key to look up EGLDisplays.

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp: (WebCore::GraphicsContextGLANGLE::releaseThreadResources):
  • platform/graphics/angle/GraphicsContextGLANGLE.h:
  • platform/graphics/cocoa/GraphicsContextGLCocoa.mm: (WebCore::initializeEGLDisplay):

LayoutTests:

  • webgl/pending/conformance2/misc/webgl2-after-webgl1-bug-expected.txt: Added.
  • webgl/pending/conformance2/misc/webgl2-after-webgl1-bug.html: Added.
  • webgl/resources/pending_webgl_test_files/conformance2/misc/webgl2-after-webgl1-bug.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289071 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [291068] by graouts@webkit.org
  • 7 edits in trunk

[web-animations] dominant-baseline should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237645

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::dominantBaseline const):
(WebCore::RenderStyle::setDominantBaseline):

2:07 PM Changeset in webkit [291067] by Lauro Moura
  • 1 edit
    1 add in trunk/Tools

[Tools] Add script to query results database
​https://bugs.webkit.org/show_bug.cgi?id=233800

Reviewed by Jonathan Bedard.

This commit adds a script to query ​https://results.webkit.org for the
history of a testcase for a given bot/config. It includes a
--only-changes switch to show only revisions when the actual changed
from the previous one (useful to check when a test started failing).

For now it supports only layout-tests and has GTK/WPE bots predefined,
although full configurations (the query string for results.webkit.org)
can be used to access other bots.

  • Scripts/webkit-test-results: Added.
2:05 PM Changeset in webkit [291066] by Matteo Flores
  • 2 edits in trunk/LayoutTests

Unreviewed, reverting r290750.

Bug has been fixed, expectations are no longer needed.

Reverted changeset:

"[ iOS Debug ] editing/async-clipboard/* 20 tests are flaky
timeouts on iOS."
​https://bugs.webkit.org/show_bug.cgi?id=237372
​https://commits.webkit.org/r290750

1:46 PM Changeset in webkit [291065] by Lauro Moura
  • 2 edits in trunk/Tools

[webkitcorepy] Prefer xdg-open to open in linux
​https://bugs.webkit.org/show_bug.cgi?id=237655

Reviewed by Jonathan Bedard.

  • Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py:

(Terminal.open_url):

1:06 PM Changeset in webkit [291064] by Russell Epstein
  • 1 edit in branches/safari-613-branch/Source/WebCore/page/csp/ContentSecurityPolicy.cpp

Unreviewed build fix. rdar://83734079

error: no matching member function for call to 'reportViolation'

1:05 PM Changeset in webkit [291063] by zhifei_fang@apple.com
  • 7 edits
    1 add in trunk/Tools

[results.webkit.org]Add selection box for results database.
​https://bugs.webkit.org/show_bug.cgi?id=233958

Reviewed by Jonathan Bedard.

Allow user can drag a selection box to select multiple dots.
Allow user to use cmd + click to select multiple dots.
Allow user to use shift + click to select a row of dots.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/timeline.js:

(TimelineFromEndpoint):
(TimelineFromEndpoint.prototype.update):
(TimelineFromEndpoint.prototype.getTestResultStatus):
(TimelineFromEndpoint.prototype.getTestResultUrl):
(TimelineFromEndpoint.prototype.render):

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/tooltip.js:
  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/library/js/components/TimelineComponents.js:

(pointRectCollisionDetect): Detact if a point and a rect have a insertion.
(rectRectCollisionDetect): Detact if two rects have a insertion.
(XScrollableCanvasProvider): Add selection box.
(xScrollStreamRenderFactory):
(Timeline.CanvasSeriesComponent): Add selection box , cmd + click and shift + click.
(prototype.ExpandableSeriesComponent):
(prototype.Timeline.CanvasContainer):

Canonical link: ​https://commits.webkit.org/248236@main

12:59 PM Changeset in webkit [291062] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

The accessibility library should be soft linked optionally
​https://bugs.webkit.org/show_bug.cgi?id=236513

Reviewed by Geoffrey Garen.

The accessibility library should be soft linked optionally, since it is not always present.

  • Shared/Cocoa/AuxiliaryProcessCocoa.mm:

(WebKit::handleAXPreferenceChange):
(WebKit::AuxiliaryProcess::handlePreferenceChange):

12:44 PM Changeset in webkit [291061] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebKit

[CMake] Associate platform specific configuration with WinCairo
​https://bugs.webkit.org/show_bug.cgi?id=237668

Reviewed by Basuke Suzuki.

Move all cairo and curl platform configuration under a check for WinCairo. This arranges
platform config in a consistent manner.

  • PlatformWin.cmake:
12:29 PM Changeset in webkit [291060] by Jonathan Bedard
  • 2 edits in trunk/Tools

[EWS] Support concept of 'blocked' pull requests
​https://bugs.webkit.org/show_bug.cgi?id=237370
<rdar://problem/89689094>

Reviewed by Ryan Haddad.

cq- communicates that a change is blocked, either by an engineer or by a failed EWS run.
"changes requested" is not as dramatic as "cq-", so we are adding the concept of a "blocked"
pull request, which has simlar effects to "cq-".

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

(GitHubMixin._is_pr_blocked): Check if a pull request currently has the "blocked" tag.
(GitHubMixin.modify_label): Add or remove a label from a pull request.
(SetCommitQueueMinusFlagOnPatch.hideStepIf): Added.
(BlockPullRequest): Added.
(AnalyzeCompileWebKitResults.analyzeResults): Block PR if failed.
(AnalyzeLayoutTestsResults.report_failure): Ditto.

Canonical link: ​https://commits.webkit.org/248233@main

11:59 AM Changeset in webkit [291059] by Matteo Flores
  • 2 edits in trunk/LayoutTests

[ iOS ] 2 imported/w3c/web-platform-tests/content-security-policy/connect-src/* tests are flaky text failures
​https://bugs.webkit.org/show_bug.cgi?id=237603

Unreviewed test gardening.

  • platform/ios/TestExpectations:
11:48 AM Changeset in webkit [291058] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.9

Tag Safari-614.1.5.9.

11:43 AM Changeset in webkit [291057] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

File System Access: disallows names that are not permitted by underlying file system
​https://bugs.webkit.org/show_bug.cgi?id=237635
rdar://89291566

We use FileSystem::fileSystemRepresentation to convert input name to a name that is permitted in current file
system. This patch makes File System Access API to throw error if the input name does not match the converted
name.

Reviewed by Youenn Fablet.

  • NetworkProcess/storage/FileSystemStorageHandle.cpp:

(WebKit::isValidFileName):
(WebKit::FileSystemStorageHandle::requestCreateHandle):
(WebKit::FileSystemStorageHandle::removeEntry):
(WebKit::FileSystemStorageHandle::move):

11:03 AM Changeset in webkit [291056] by jonlee@apple.com
  • 4 edits in trunk/Source/WebKit

Update feature flags for WebGL
​https://bugs.webkit.org/show_bug.cgi?id=237666
rdar://problem/90040981

Reviewed by Geoffrey Garen.

  • FeatureFlags/WebKit-appletvos.plist:
  • FeatureFlags/WebKit-ios.plist:
  • FeatureFlags/WebKit-watchos.plist:
10:40 AM Changeset in webkit [291055] by Matteo Flores
  • 3 edits in trunk

[iOS] Hard link AVPictureInPictureController
​https://bugs.webkit.org/show_bug.cgi?id=237227

Unreviewed test gardening.

  • platform/ipad/TestExpectations:
10:32 AM Changeset in webkit [291054] by graouts@webkit.org
  • 6 edits in trunk

[css-lists] css/css-lists/inherit-overwrites.html and css/css-lists/li-counter-increment-computed-style.html are unique failures
​https://bugs.webkit.org/show_bug.cgi?id=237642

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-lists/inherit-overwrites-expected.txt:
  • web-platform-tests/css/css-lists/li-counter-increment-computed-style-expected.txt:
  • web-platform-tests/html/rendering/non-replaced-elements/lists/lists-styles-expected.txt:

Source/WebCore:

A std::nullopt means the property isn't set, not that it shoudl be 0.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::counterToCSSValue):

10:16 AM Changeset in webkit [291053] by Simon Fraser
  • 18 edits in trunk/Source

Move RemoteLayerBackingStore::Buffer.isVolatile into ImageBufferBackend
​https://bugs.webkit.org/show_bug.cgi?id=237631

Reviewed by Tim Horton.
Source/WebCore:

'isVolatile' is a property of a specific image buffer, so it makes more sense to have it in
ImageBuffer[Backend] than RemoteLayerBackingStore. This also allows GPU Process code to
maintain volatility state in the web process, which reduces the amount of IPC needed when
making the front buffer non-volatile before display.

So ImageBufferBackend gets volatilityState()/setVolatilityState(), accessed via ImageBuffer.
This state is maintained by RemoteRenderingBackendProxy for remote buffers. We set the state
to volatile when we receive the IPC reply for markSurfacesVolatile(), which requires
changing the reply to list buffers for which making volatile was successful.

RemoteLayerWithRemoteRenderingBackingStoreCollection::makeFrontBufferNonVolatile() can now
early return when the buffer is already non-volatile, and we have a backend handle (recall
that we clear backend handles when trying to make a buffer volatile).

  • platform/graphics/ConcreteImageBuffer.h:
  • platform/graphics/ImageBuffer.h:
  • platform/graphics/ImageBufferBackend.h:

(WebCore::ImageBufferBackend::volatilityState const):
(WebCore::ImageBufferBackend::setVolatilityState):

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:

(WebCore::ImageBufferIOSurfaceBackend::setVolatile):
(WebCore::ImageBufferIOSurfaceBackend::setNonVolatile):
(WebCore::ImageBufferIOSurfaceBackend::volatilityState const):
(WebCore::ImageBufferIOSurfaceBackend::setVolatilityState):

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.h:

Source/WebKit:

'isVolatile' is a property of a specific image buffer, so it makes more sense to have it in
ImageBuffer[Backend] than RemoteLayerBackingStore. This also allows GPU Process code to
maintain volatility state in the web process, which reduces the amount of IPC needed when
making the front buffer non-volatile before display.

So ImageBufferBackend gets volatilityState()/setVolatilityState(), accessed via ImageBuffer.
This state is maintained by RemoteRenderingBackendProxy for remote buffers. We set the state
to volatile when we receive the IPC reply for markSurfacesVolatile(), which requires
changing the reply to list buffers for which making volatile was successful.

RemoteLayerWithRemoteRenderingBackingStoreCollection::makeFrontBufferNonVolatile() can now
early return when the buffer is already non-volatile, and we have a backend handle (recall
that we clear backend handles when trying to make a buffer volatile).

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::markSurfacesVolatile):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::applySwappedBuffers):
(WebKit::RemoteLayerBackingStore::setBufferVolatile):
(WebKit::RemoteLayerBackingStore::setBufferNonVolatile):
(WebKit::RemoteLayerBackingStore::didMakeFrontBufferNonVolatile):
(WebKit::RemoteLayerBackingStore::Buffer::discard):

  • Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm:

(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::RemoteLayerWithRemoteRenderingBackingStoreCollection):
(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::makeFrontBufferNonVolatile):
(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::collectBackingStoreBufferIdentifiersToMarkVolatile):
(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::sendMarkBuffersVolatile): Call the completion handler inside the callback.

  • WebProcess/GPU/graphics/ImageBufferBackendHandleSharing.h:

(WebKit::ImageBufferBackendHandleSharing::hasBackendHandle const):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::swapToValidFrontBuffer):
(WebKit::RemoteRenderingBackendProxy::markSurfaceNonVolatile):
(WebKit::RemoteRenderingBackendProxy::markSurfacesVolatile):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/GPU/graphics/cocoa/ImageBufferRemoteIOSurfaceBackend.cpp:

(WebKit::ImageBufferRemoteIOSurfaceBackend::createBackendHandle const):
(WebKit::ImageBufferRemoteIOSurfaceBackend::hasBackendHandle const):

  • WebProcess/GPU/graphics/cocoa/ImageBufferRemoteIOSurfaceBackend.h:
10:13 AM Changeset in webkit [291052] by jonlee@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed gardening.

  • platform/ios-wk2/TestExpectations:
9:47 AM Changeset in webkit [291051] by youenn@apple.com
  • 23 edits
    2 adds in trunk/Source

Allow to pass webrtc video frame buffers through RealtimeMediaSource based pipelines
​https://bugs.webkit.org/show_bug.cgi?id=236131
<rdar://problem/88805580>

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Update routines to take VideoFrameBuffer instead of VideoFrame.
Fix bugs in handling of YUV conversion libwebrtc routines.

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:
  • Source/webrtc/sdk/WebKit/WebKitUtilities.h:
  • Source/webrtc/sdk/WebKit/WebKitUtilities.mm:

Source/WebCore:

Introduce VideoFrameLibWebRTC as a wrapper to libwebrtc video frame buffer.
In case we send VideoFrameLibWebRTC through RealtimeOutgoingVideoSourceCocoa, directly send the video frame buffer.
When receiving libwebrtc video frame buffers in RealtimeIncomingVideoSourceCocoa, make use of VideoFrameLibWebRTC to delay conversion of the video frame buffer in a CVPixelBufferRef.
In most cases, the conversion is unneeded as the video frame buffer will be used for rendering and will be copied to shared memory through SharedVideoFrameWriter.
Fix bugs in handling of YUV conversion libwebrtc routines.
Minor refactoring to have a default asVideoFrameCV method implementatin in VideoFrame.

Covered by existing tests.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/VideoFrame.cpp:
  • platform/VideoFrame.h:
  • platform/cocoa/SharedVideoFrameInfo.h:
  • platform/cocoa/SharedVideoFrameInfo.mm:
  • platform/mediastream/libwebrtc/VideoFrameLibWebRTC.cpp: Added.
  • platform/mediastream/libwebrtc/VideoFrameLibWebRTC.h: Added.
  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.h:
  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:

Source/WebKit:

Add optimization support for VideoFrameLibWebRTC writing into shared memory.
This removes the need to convert the webrtc video frame into a CVPixelBuffer, just to send it to GPUProcess for rendering.

  • GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/media/RemoteVideoFrameProxy.cpp:
  • WebProcess/GPU/media/RemoteVideoFrameProxy.h:
  • WebProcess/GPU/webrtc/SharedVideoFrame.cpp:
  • WebProcess/GPU/webrtc/SharedVideoFrame.h:
7:58 AM Changeset in webkit [291050] by Jonathan Bedard
  • 4 edits in trunk/Tools

[git-webkit] Extract revision from git svn dcommit (Follow-up fix)
​https://bugs.webkit.org/show_bug.cgi?id=236849
<rdar://problem/89155179>

Unreviewed follow-up fix.

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

(Land.main): Only capture stdout.

Canonical link: ​https://commits.webkit.org/248224@main

7:25 AM Changeset in webkit [291049] by youenn@apple.com
  • 9 edits in trunk

WebRTC decoded frames are not correctly rotated in case GPU Process DOM rendering flag is set to true
​https://bugs.webkit.org/show_bug.cgi?id=237468
<rdar://problem/89807876>

Reviewed by Eric Carlson.

Source/WebCore:

We were creating remote video frames at webrtc decoder level but at that level, we do not know yet the rotation and timestamps of the frame.
We need to set those values when the frame is exposed to RealtimeIncomingVideoSource.
Previous tests did not catch the regression as we were correctly computing the size of the video using the webrtc rotation and not the rotation from the frame.
We should probably migrate to RemoteVideoFrameProxy as a buffer wrapper so that we can easily create remote video frames from a RemoteVideoFrameProxy buffer.
In the meantime, we use const_cast in VideoFrame::initializeCharacteristics.

Covered by updated test.

  • platform/VideoFrame.cpp:
  • platform/VideoFrame.h:
  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
  • testing/Internals.cpp:
  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • webrtc/video-rotation.html:

Observe actual video frame rotation value.

6:30 AM Changeset in webkit [291048] by Fujii Hironori
  • 10 edits
    2 adds in trunk/Source

[WinCairo] Improve WCTiledBacking and TextureMapperSparseBackingStore
​https://bugs.webkit.org/show_bug.cgi?id=237355

Reviewed by Don Olmstead.

Source/WebCore:

  • platform/graphics/texmap/TextureMapperSparseBackingStore.cpp:

(WebCore::TextureMapperSparseBackingStore::setSize):
(WebCore::TextureMapperSparseBackingStore::paintToTextureMapper):
(WebCore::TextureMapperSparseBackingStore::drawBorder):
(WebCore::TextureMapperSparseBackingStore::drawRepaintCounter):
(WebCore::TextureMapperSparseBackingStore::updateContents):
(WebCore::TextureMapperSparseBackingStore::removeTile):
(WebCore::TextureMapperSparseBackingStore::TextureMapperSparseBackingStore): Deleted.
(WebCore::TextureMapperSparseBackingStore::removeUncoveredTiles): Deleted.
(WebCore::TextureMapperSparseBackingStore::tileDimension const): Deleted.

  • platform/graphics/texmap/TextureMapperSparseBackingStore.h:
  • platform/graphics/texmap/TextureMapperTile.h:

Source/WebKit:

TextureMapperSparseBackingStore simply had a Vector to have all
tiles. If a web page had a very large layer, the vector was
extended to be able to keep all tiles, and it performed poorly.
Use a HashMap to keep tiles only in the coverage rect.

GraphicsLayerWC had only one dirty rect, and created a
ImageBuffer for all tiles to update. Change it to have one dirty
rect for one tile, and create a ImageBuffer for every dirty tile.

  • GPUProcess/graphics/wc/WCScene.cpp:

(WebKit::WCScene::update):

  • PlatformWin.cmake:
  • WebProcess/WebPage/wc/DrawingAreaWC.cpp:

(WebKit::flushLayerImageBuffers):

  • WebProcess/WebPage/wc/GraphicsLayerWC.cpp:

(WebKit::GraphicsLayerWC::setSize):
(WebKit::GraphicsLayerWC::recursiveCommitChanges):

  • WebProcess/WebPage/wc/WCTileGrid.cpp: Added.

(WebKit::WCTileGrid::Tile::Tile):
(WebKit::WCTileGrid::Tile::addDirtyRect):
(WebKit::WCTileGrid::Tile::clearDirtyRect):
(WebKit::WCTileGrid::Tile::hasDirtyRect const):
(WebKit::WCTileGrid::setSize):
(WebKit::WCTileGrid::tileRectFromPixelRect):
(WebKit::WCTileGrid::tileSizeFromPixelSize):
(WebKit::WCTileGrid::tilePixelSize const):
(WebKit::WCTileGrid::addDirtyRect):
(WebKit::WCTileGrid::clearDirtyRects):
(WebKit::WCTileGrid::ensureTile):
(WebKit::WCTileGrid::setCoverageRect):

  • WebProcess/WebPage/wc/WCTileGrid.h: Added.

(WebKit::WCTileGrid::Tile::willRemove const):
(WebKit::WCTileGrid::Tile::setWillRemove):
(WebKit::WCTileGrid::Tile::dirtyRect):
(WebKit::WCTileGrid::tiles):

  • WebProcess/WebPage/wc/WCUpateInfo.h:

(WebKit::WCTileUpdate::encode const):
(WebKit::WCTileUpdate::decode):
(WebKit::WCLayerUpateInfo::encode const):
(WebKit::WCLayerUpateInfo::decode):

5:44 AM Changeset in webkit [291047] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

[web-animations] increase the max number of animatable properties
​https://bugs.webkit.org/show_bug.cgi?id=237651

Reviewed by Antti Koivisto.

We've run out of space in m_propertyToIdMap, the limit was 255.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

5:34 AM Changeset in webkit [291046] by Antti Koivisto
  • 6 edits in trunk

[CSS Container Queries] Remove size() function syntax
​https://bugs.webkit.org/show_bug.cgi?id=237639

Reviewed by Antoine Quint.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-contain/container-queries/at-container-parsing-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-name-parsing-expected.txt:

Source/WebCore:

Per ​https://github.com/w3c/csswg-drafts/issues/6870

  • css/ContainerQueryParser.cpp:

(WebCore::ContainerQueryParser::consumeContainerQuery):

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::consumeSingleContainerName):

Also disallow strings as container names (they need to be identifiers).

5:31 AM Changeset in webkit [291045] by Angelos Oikonomopoulos
  • 3 edits in trunk/Tools

[JSC] Make runner should only schedule tests on live remotes
​https://bugs.webkit.org/show_bug.cgi?id=237030

Reviewed by Adrian Perez de Castro.

The make runner does static scheduling of tests, i.e. it will
assign tests to all known remotes. In practice, this means that
even though the make runner participates in the retry loop, it
will always end up scheduling any tests that failed to run
(e.g. because the remote was down on startup or went away during
testing) on all remotes, including ones that are known to be down.

This patch makes it slightly more robust by introducing a liveness
check (getLiveRemoteHosts) before the static scheduling, i.e.

  1. in the initial preparation of the tests to run (prepareArtifacts) and
  2. in refreshExecution.

It reuses the command to get the number of processors as the
liveness check (it's a command we know currenly works in all
supported remotes), so flips numberOfProcessors inside-out.
While here, it adds getconf _NPROCESSORS_ONLN as a final attempt
to get the number of processors.

This does not mean that the make runner is now robust against
flaky remotes. At the very least, it's still missing an ssh
timeout (so it won't hang e.g. when hosts go away after the
initial connection is established) and child cleanup (e.g. when
bailing early from one remote in forEachRemote, it needs to kill
all children for other remotes, or we might end up retrying while
the old jobs are still running). But it's getting there.

Q: But isn't the GNU parallel runner much better suited for
handling flaky remotes?

A: Yes. However, the make runner is (somewhat) better at keeping
the remote CPUs busy with "fast" remotes, so we may still want to
use it when the remotes are both fast and stable enough. That
said, it still needs to be able to recover from the occasional
failed remote without producing false test failures.

  • Scripts/run-jsc-stress-tests:
  • Scripts/webkitruby/jsc-stress-test/executor.rb:

Make remoteHosts available to refreshExecution.

5:29 AM Changeset in webkit [291044] by Fujii Hironori
  • 4 edits in trunk/Source/WebCore

[WinCairo] SpatialNavigation.h(93): error C2365: 'WebCore::None': redefinition; previous definition was 'enumerator'
​https://bugs.webkit.org/show_bug.cgi?id=237647

Unreviewed build fix.

Changed WebCore::RectsAlignment to an enum class.

  • page/FocusController.cpp:

(WebCore::updateFocusCandidateIfNeeded):

  • page/SpatialNavigation.cpp:

(WebCore::FocusCandidate::FocusCandidate):
(WebCore::alignmentForRects):
(WebCore::distanceDataForNode):

  • page/SpatialNavigation.h:

(WebCore::FocusCandidate::FocusCandidate):
(): Deleted.

5:01 AM Changeset in webkit [291043] by graouts@webkit.org
  • 7 edits in trunk

[web-animations] color-interpolation-filters should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237637

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::colorInterpolationFilters const):
(WebCore::RenderStyle::setColorInterpolationFilters):

4:58 AM Changeset in webkit [291042] by graouts@webkit.org
  • 7 edits in trunk

[web-animations] clip-rule should support discrete animations
​https://bugs.webkit.org/show_bug.cgi?id=237609

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::clipRule const):
(WebCore::RenderStyle::setClipRule):

4:55 AM Changeset in webkit [291041] by graouts@webkit.org
  • 7 edits in trunk

[web-animations] background-blend-mode should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237607

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::backgroundBlendMode const):
(WebCore::RenderStyle::setBackgroundBlendMode):

4:52 AM Changeset in webkit [291040] by graouts@webkit.org
  • 13 edits in trunk

[web-animations] font-family should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237591

Reviewed by Myles Maxfield.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-fonts/animations/system-fonts-expected.txt:
  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setFontPalette):
(WebCore::RenderStyle::setFontFamilies):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::fontFamilies const):

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/css/css-fonts/animations/system-fonts-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/css/css-fonts/animations/system-fonts-expected.txt:
4:45 AM Changeset in webkit [291039] by graouts@webkit.org
  • 11 edits in trunk

[web-animations] font-feature-settings should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237587

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • platform/graphics/FontTaggedSettings.cpp:

(WebCore::operator<<):

  • platform/graphics/FontTaggedSettings.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setFontPalette):
(WebCore::RenderStyle::setFontFeatureSettings):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::fontFeatureSettings const):

4:43 AM Changeset in webkit [291038] by Carlos Garcia Campos
  • 9 edits in trunk/Source

[GTK][WPE] Stop using the env var WEBKIT_INSPECTOR_SERVER to connect to the inspector
​https://bugs.webkit.org/show_bug.cgi?id=237646

Reviewed by Adrian Perez de Castro.

Source/JavaScriptCore:

Add RemoteInspector::s_inspectorServerAddress to keep the remote inspector server address instead of the
environment variable used to start the server.

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/glib/RemoteInspectorGlib.cpp:

(Inspector::RemoteInspector::RemoteInspector): Only call start if s_inspectorServerAddress is not null.
(Inspector::RemoteInspector::start): Use s_inspectorServerAddress instead of querying the environment.

Source/WebKit:

Use it only in the UI process to start the server, but propagate the address to web process using creation
parameters.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const): Encode inspectorServerAddress.
(WebKit::WebProcessCreationParameters::decode): Decode inspectorServerAddress.

  • Shared/WebProcessCreationParameters.h: Add inspectorServerAddress.
  • UIProcess/API/glib/WebKitInitialize.cpp:

(WebKit::initializeRemoteInspectorServer): Set RemoteInspector::s_inspectorServerAddress if the server started
successfully.

  • UIProcess/glib/WebProcessPoolGLib.cpp:

(WebKit::WebProcessPool::platformInitializeWebProcess): Set inspectorServerAddress parameter from
RemoteInspector::s_inspectorServerAddress value.

  • WebProcess/glib/WebProcessGLib.cpp:

(WebKit::WebProcess::platformInitializeWebProcess): Set RemoteInspector::s_inspectorServerAddress from creation
parameter value.

4:37 AM Changeset in webkit [291037] by graouts@webkit.org
  • 14 edits
    1 add in trunk

[web-animations] font-kerning should supporting discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237585

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-expected.txt:
  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • platform/text/TextFlags.cpp: Added.

(WebCore::operator<<):

  • platform/text/TextFlags.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setFontPalette):
(WebCore::RenderStyle::setFontKerning):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::fontKerning const):

  • style/PropertyAllowlist.cpp:

(WebCore::Style::isValidMarkerStyleProperty):

3:38 AM Changeset in webkit [291036] by Antti Koivisto
  • 88 edits
    7 moves
    23 adds in trunk/LayoutTests

[CSS Container Queries] Import updated WPTs
​https://bugs.webkit.org/show_bug.cgi?id=237638

Reviewed by Antoine Quint.

LayoutTests/imported/w3c:

Upstream has been updated with the new syntax from

​https://github.com/w3c/csswg-drafts/issues/6870

and behavior from

​https://github.com/w3c/csswg-drafts/issues/6644

  • resources/resource-files.json:
  • web-platform-tests/css/css-contain/container-queries/animation-container-size.html:
  • web-platform-tests/css/css-contain/container-queries/animation-container-type-dynamic.html:
  • web-platform-tests/css/css-contain/container-queries/animation-nested-animation.html:
  • web-platform-tests/css/css-contain/container-queries/animation-nested-transition.html:
  • web-platform-tests/css/css-contain/container-queries/aspect-ratio-feature-evaluation.html:
  • web-platform-tests/css/css-contain/container-queries/at-container-parsing-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/at-container-parsing.html:
  • web-platform-tests/css/css-contain/container-queries/auto-scrollbars.html:
  • web-platform-tests/css/css-contain/container-queries/backdrop-invalidation.html:
  • web-platform-tests/css/css-contain/container-queries/canvas-as-container-005-expected.txt: Added.
  • web-platform-tests/css/css-contain/container-queries/canvas-as-container-005.html: Added.
  • web-platform-tests/css/css-contain/container-queries/canvas-as-container-006-expected.txt: Added.
  • web-platform-tests/css/css-contain/container-queries/canvas-as-container-006.html: Added.
  • web-platform-tests/css/css-contain/container-queries/change-display-in-container.html:
  • web-platform-tests/css/css-contain/container-queries/conditional-container-status.html:
  • web-platform-tests/css/css-contain/container-queries/container-computed-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-computed.html:
  • web-platform-tests/css/css-contain/container-queries/container-for-shadow-dom-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-for-shadow-dom.tentative-expected.txt.
  • web-platform-tests/css/css-contain/container-queries/container-for-shadow-dom.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-for-shadow-dom.tentative.html.
  • web-platform-tests/css/css-contain/container-queries/container-inner-at-rules-expected.txt: Added.
  • web-platform-tests/css/css-contain/container-queries/container-inner-at-rules.html: Added.
  • web-platform-tests/css/css-contain/container-queries/container-name-computed-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-name-computed.html:
  • web-platform-tests/css/css-contain/container-queries/container-name-invalidation.html:
  • web-platform-tests/css/css-contain/container-queries/container-name-parsing-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-name-parsing.html:
  • web-platform-tests/css/css-contain/container-queries/container-nested-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-nested.html:
  • web-platform-tests/css/css-contain/container-queries/container-parsing-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-parsing.html:
  • web-platform-tests/css/css-contain/container-queries/container-selection-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/container-selection.html:
  • web-platform-tests/css/css-contain/container-queries/container-size-invalidation.html:
  • web-platform-tests/css/css-contain/container-queries/container-type-invalidation.html:
  • web-platform-tests/css/css-contain/container-queries/container-units-small-viewport-fallback-expected.txt: Added.
  • web-platform-tests/css/css-contain/container-queries/container-units-small-viewport-fallback.html: Added.
  • web-platform-tests/css/css-contain/container-queries/counters-flex-circular.html:
  • web-platform-tests/css/css-contain/container-queries/counters-in-container-dynamic.html:
  • web-platform-tests/css/css-contain/container-queries/counters-in-container.html:
  • web-platform-tests/css/css-contain/container-queries/deep-nested-inline-size-containers-expected.txt: Added.
  • web-platform-tests/css/css-contain/container-queries/deep-nested-inline-size-containers.html: Added.
  • web-platform-tests/css/css-contain/container-queries/display-contents.html:
  • web-platform-tests/css/css-contain/container-queries/display-in-container.html:
  • web-platform-tests/css/css-contain/container-queries/display-none.html:
  • web-platform-tests/css/css-contain/container-queries/fieldset-legend-change.html:
  • web-platform-tests/css/css-contain/container-queries/flex-in-columns-000-crash.html:
  • web-platform-tests/css/css-contain/container-queries/flex-in-columns-001-crash.html:
  • web-platform-tests/css/css-contain/container-queries/flex-in-columns-002-crash.html:
  • web-platform-tests/css/css-contain/container-queries/flex-in-columns-003-crash.html:
  • web-platform-tests/css/css-contain/container-queries/focus-inside-content-visibility-crash.html:
  • web-platform-tests/css/css-contain/container-queries/font-relative-units-dynamic.html:
  • web-platform-tests/css/css-contain/container-queries/font-relative-units.html:
  • web-platform-tests/css/css-contain/container-queries/fragmented-container-001-expected.txt: Added.
  • web-platform-tests/css/css-contain/container-queries/fragmented-container-001.html: Added.
  • web-platform-tests/css/css-contain/container-queries/get-animations.html:
  • web-platform-tests/css/css-contain/container-queries/grid-in-columns-000-crash.html:
  • web-platform-tests/css/css-contain/container-queries/grid-in-columns-001-crash.html:
  • web-platform-tests/css/css-contain/container-queries/grid-in-columns-002-crash.html:
  • web-platform-tests/css/css-contain/container-queries/grid-in-columns-003-crash.html:
  • web-platform-tests/css/css-contain/container-queries/iframe-invalidation.html:
  • web-platform-tests/css/css-contain/container-queries/ineligible-containment.html:
  • web-platform-tests/css/css-contain/container-queries/inline-multicol-inside-container-crash.html:
  • web-platform-tests/css/css-contain/container-queries/inline-size-and-min-width.html:
  • web-platform-tests/css/css-contain/container-queries/inline-size-bfc-floats.html:
  • web-platform-tests/css/css-contain/container-queries/inline-size-containment-vertical-rl.html:
  • web-platform-tests/css/css-contain/container-queries/inline-size-containment.html:
  • web-platform-tests/css/css-contain/container-queries/inline-with-columns-000-crash.html:
  • web-platform-tests/css/css-contain/container-queries/inline-with-columns-001-crash.html:
  • web-platform-tests/css/css-contain/container-queries/multicol-container-001-expected.txt: Added.
  • web-platform-tests/css/css-contain/container-queries/multicol-container-001.html: Added.
  • web-platform-tests/css/css-contain/container-queries/multicol-inside-container.html:
  • web-platform-tests/css/css-contain/container-queries/never-match-container-expected.txt: Added.
  • web-platform-tests/css/css-contain/container-queries/never-match-container.html: Added.
  • web-platform-tests/css/css-contain/container-queries/orthogonal-wm-container-query.html:
  • web-platform-tests/css/css-contain/container-queries/percentage-padding-orthogonal.html:
  • web-platform-tests/css/css-contain/container-queries/pseudo-elements-001.html:
  • web-platform-tests/css/css-contain/container-queries/pseudo-elements-002.tentative-expected.html: Removed.
  • web-platform-tests/css/css-contain/container-queries/pseudo-elements-002.tentative-ref.html: Removed.
  • web-platform-tests/css/css-contain/container-queries/pseudo-elements-002.tentative.html: Removed.
  • web-platform-tests/css/css-contain/container-queries/pseudo-elements-003-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.tentative-expected.txt.
  • web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.tentative.html.
  • web-platform-tests/css/css-contain/container-queries/query-content-box.html:
  • web-platform-tests/css/css-contain/container-queries/query-evaluation-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/query-evaluation.html:
  • web-platform-tests/css/css-contain/container-queries/reattach-container-with-dirty-child.html:
  • web-platform-tests/css/css-contain/container-queries/resize-while-content-visibility-hidden.html:
  • web-platform-tests/css/css-contain/container-queries/size-container-no-principal-box.html:
  • web-platform-tests/css/css-contain/container-queries/size-feature-evaluation-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/size-feature-evaluation.html:
  • web-platform-tests/css/css-contain/container-queries/style-change-in-container.html:
  • web-platform-tests/css/css-contain/container-queries/svg-layout-root-crash.html:
  • web-platform-tests/css/css-contain/container-queries/svg-root-size-container-expected.txt: Added.
  • web-platform-tests/css/css-contain/container-queries/svg-root-size-container.html: Added.
  • web-platform-tests/css/css-contain/container-queries/table-in-columns-000-crash.html:
  • web-platform-tests/css/css-contain/container-queries/table-in-columns-001-crash.html:
  • web-platform-tests/css/css-contain/container-queries/table-in-columns-002-crash.html:
  • web-platform-tests/css/css-contain/container-queries/table-in-columns-003-crash.html:
  • web-platform-tests/css/css-contain/container-queries/top-layer-dialog-backdrop.html:
  • web-platform-tests/css/css-contain/container-queries/top-layer-dialog-container.html:
  • web-platform-tests/css/css-contain/container-queries/top-layer-dialog.html:
  • web-platform-tests/css/css-contain/container-queries/top-layer-nested-dialog.html:
  • web-platform-tests/css/css-contain/container-queries/transition-scrollbars.html:
  • web-platform-tests/css/css-contain/container-queries/transition-style-change-event.html:
  • web-platform-tests/css/css-contain/container-queries/unsupported-axis-expected.txt:
  • web-platform-tests/css/css-contain/container-queries/unsupported-axis.html:
  • web-platform-tests/css/css-contain/container-queries/viewport-units-dynamic.html:
  • web-platform-tests/css/css-contain/container-queries/viewport-units.html:
  • web-platform-tests/css/css-contain/container-queries/w3c-import.log:
  • web-platform-tests/css/css-contain/container-queries/whitespace-update-after-removal.html:

LayoutTests:

12:36 AM Changeset in webkit [291035] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

GraphicsContextGLCocoa manages EGL native displays manually
​https://bugs.webkit.org/show_bug.cgi?id=237313

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-09
Reviewed by Kenneth Russell.

ANGLE now keys the Metal EGL_DEFAULT_DISPLAY on the EGL_PLATFORM_ANGLE_TYPE_ANGLE.
This means that we do not need to use the default a native display for Metal and an
invented native display for OpenGL.

  • platform/graphics/GraphicsTypesGL.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLANGLE::platformInitialize):
(WebCore::GraphicsContextGLANGLE::releaseThreadResources):

  • platform/graphics/angle/GraphicsContextGLANGLE.h:
  • platform/graphics/cocoa/GraphicsContextGLCocoa.mm:

(WebCore::initializeEGLDisplay):
(WebCore::GraphicsContextGLCocoa::platformInitialize):

  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:

(WebCore::GraphicsContextGLTextureMapper::platformInitialize):

12:04 AM Changeset in webkit [291034] by youenn@apple.com
  • 62 edits
    1 move
    3 deletes in trunk

Scope capture sources by page identifiers
​https://bugs.webkit.org/show_bug.cgi?id=237359

Reviewed by Eric Carlson.

Source/WebCore:

Pass PageIdentifier when creating capture sources.
This is used at WebKit layer to better handle creation of mulitple sources.
Since we are now sometimes answering to getUserMedia by cloning sources directly,
fix a bug in RealtimeVideoSource to use the preset aspect ratio to compute missing width or height.
Introduce a way to end immediately a capture source, this is used on GPUProcess side in case starting a capture using a different device.

Covered by existing tests.

  • Headers.cmake:
  • Modules/mediastream/MediaDevices.cpp:
  • Modules/mediastream/MediaStreamTrack.cpp:
  • Modules/speech/SpeechRecognitionCaptureSource.cpp:
  • Modules/speech/SpeechRecognitionCaptureSource.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/PageIdentifier.h: Renamed from Source/WebCore/page/PageIdentifier.h.
  • platform/mediastream/MediaStreamRequest.h:
  • platform/mediastream/RealtimeMediaSource.cpp:
  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeMediaSourceCenter.cpp:
  • platform/mediastream/RealtimeMediaSourceFactory.cpp: Removed.
  • platform/mediastream/RealtimeMediaSourceFactory.h:
  • platform/mediastream/RealtimeVideoCaptureSource.cpp:
  • platform/mediastream/RealtimeVideoCaptureSource.h:
  • platform/mediastream/RealtimeVideoSource.cpp:
  • platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:
  • platform/mediastream/cocoa/DisplayCaptureSourceCocoa.h:
  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
  • platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp:
  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:
  • platform/mediastream/ios/CoreAudioCaptureSourceIOS.h:
  • platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm:
  • platform/mediastream/mac/AVVideoCaptureSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:
  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:
  • platform/mediastream/mac/CoreAudioCaptureSource.h:
  • platform/mediastream/mac/MockAudioSharedUnit.mm:
  • platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
  • platform/mock/MockRealtimeAudioSource.cpp:
  • platform/mock/MockRealtimeAudioSource.h:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp:
  • platform/mock/MockRealtimeVideoSource.cpp:
  • platform/mock/MockRealtimeVideoSource.h:

Source/WebKit:

Pass PageIdentifier where appropriate.
Make use of PageIdentifier in UserMediaCaptureManagerProxy:

  • For microphone, if there is a source with a different device, fail the source as we are not yet supporting concurrent captures.
  • For camera, if there is a source with a different device, fail the source as we are not yet supporting concurrent captures (only on iOS). Otherwise, if there is a matching source, clone it so that we reduce the overhead of creating a new source (setting up a camera can be an expensive operation).

We silently fail (meaning there is no console log message for now, while still firing ended event) but add release logging to detect this case.
Minor refactoring to have one message in case capture source ends (stopped or failing) instead of two.

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp:
  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h:
  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp:
  • UIProcess/WebPageProxy.cpp:
  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp:
  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.h:
  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.messages.in:
  • WebProcess/cocoa/RemoteRealtimeAudioSource.cpp:
  • WebProcess/cocoa/RemoteRealtimeAudioSource.h:
  • WebProcess/cocoa/RemoteRealtimeDisplaySource.cpp:
  • WebProcess/cocoa/RemoteRealtimeDisplaySource.h:
  • WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.cpp:
  • WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.h:
  • WebProcess/cocoa/RemoteRealtimeVideoSource.cpp:
  • WebProcess/cocoa/RemoteRealtimeVideoSource.h:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:
  • WebProcess/cocoa/UserMediaCaptureManager.h:
  • WebProcess/cocoa/UserMediaCaptureManager.messages.in:

LayoutTests:

Remove platform/ios/mediastream/getUserMedia-single-capture.html now that we no longer handle multi capture in WebProcess but in GPUProcess.
Update platform/ios/mediastream/audio-muted-in-background-tab-gpu-process.html to be like platform/ios/mediastream/audio-muted-in-background-tab.html
so that test is no longer dependent on synchronous event firing.

  • platform/ios/mediastream/audio-muted-in-background-tab-gpu-process.html:
  • platform/ios/mediastream/getUserMedia-single-capture-expected.txt: Removed.
  • platform/ios/mediastream/getUserMedia-single-capture-gpu-process.html:
  • platform/ios/mediastream/getUserMedia-single-capture.html: Removed.

Mar 8, 2022:

11:38 PM Changeset in webkit [291033] by Jean-Yves Avenard
  • 22 edits in trunk

Have MediaFormatReader plugin use WebMParser directly
​https://bugs.webkit.org/show_bug.cgi?id=237594
rdar://89960307

Reviewed by Eric Carlson.

Source/WebCore:

Covered by existing tests.

  • platform/MediaSample.h:

(WebCore::MediaSample::byteRange const): Have default implementation.

  • platform/VideoFrame.cpp:
  • platform/VideoFrame.h:
  • platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:

(WebCore::ImageDecoderAVFObjCSample::byteRangeForAttachment const):

  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
  • platform/graphics/cocoa/CMUtilities.h: Export symbols.
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::WebMParser::createByteRangeSamples):
(WebCore::WebMParser::OnTrackEntry):
(WebCore::WebMParser::VideoTrackData::consumeFrameData):
(WebCore::WebMParser::AudioTrackData::consumeFrameData):
(WebCore::WebMParser::provideMediaData):
(WebCore::SourceBufferParserWebM::parsedMediaData):
(WebCore::SourceBufferParserWebM::returnSamples):
(WebCore::SourceBufferParserWebM::flushPendingAudioSamples):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

(WebCore::WebMParser::TrackData::createByteRangeSamples):
(WebCore::WebMParser::TrackData::drainPendingSamples):

  • platform/graphics/gstreamer/MediaSampleGStreamer.h:
  • platform/mock/mediasource/MockSourceBufferPrivate.cpp:

Source/WebKit:

Directly build the sample tables from the sample's offset/size without
first build MediaSampleAVFObjC objects.
The MTPluginByteSourceRef interface unfortunately doesn't allow to skip a
given number of bytes, and you must read the content into a buffer to be
able to continue reading the resource.
As such, we continue to have to create SharedBuffer objects for each sample.
However, those objects are now much shorter lived and not dispatched to
other work queues. So the peak memory usage when playing a webm is
significantly reduced: a 50% memory reduction (from 440MB to 202MB with a sample video)

  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp:

(WebKit::MediaFormatReader::parseByteSource):
(WebKit::MediaFormatReader::parsedInitializationData):
(WebKit::MediaFormatReader::parsedMediaData):
(WebKit::MediaFormatReader::didProvideMediaData):
(WebKit::MediaFormatReader::finishParsing):

  • Shared/mac/MediaFormatReader/MediaFormatReader.h:
  • Shared/mac/MediaFormatReader/MediaSampleByteRange.cpp:

(WebKit::MediaSampleByteRange::MediaSampleByteRange):
(WebKit::MediaSampleByteRange::trackID const):
(WebKit::MediaSampleByteRange::platformSample const):
(WebKit::MediaSampleByteRange::presentationTime const):
(WebKit::MediaSampleByteRange::decodeTime const):
(WebKit::MediaSampleByteRange::duration const):
(WebKit::MediaSampleByteRange::sizeInBytes const):
(WebKit::MediaSampleByteRange::presentationSize const):
(WebKit::MediaSampleByteRange::flags const):
(WebKit::MediaSampleByteRange::byteRange const):
(WebKit::MediaSampleByteRange::offsetTimestampsBy):
(WebKit::MediaSampleByteRange::setTimestamps):

  • Shared/mac/MediaFormatReader/MediaSampleByteRange.h:
  • Shared/mac/MediaFormatReader/MediaSampleCursor.cpp:

(WebKit::MediaSampleCursor::copyFormatDescription const):

  • Shared/mac/MediaFormatReader/MediaTrackReader.cpp:

(WebKit::MediaTrackReader::addSample):
(WebKit::MediaTrackReader::copyProperty):

  • Shared/mac/MediaFormatReader/MediaTrackReader.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/SampleMap.cpp:
10:49 PM Changeset in webkit [291032] by commit-queue@webkit.org
  • 12 edits in trunk

RemoteGraphicsContextGL ReadPixels does not preserve contents for area that is not part of the Framebuffer
​https://bugs.webkit.org/show_bug.cgi?id=222410
<rdar://problem/75025951>

Patch by John Cunningham <​johncunningham@apple.com> on 2022-03-08
Reviewed by Kimmo Kinnunen.

Source/WebKit:

Make a copy of the data buffer passed into readnpixels so that reads outside the framebuffer contain
the expected results, rather than being zero'd.

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::RemoteGraphicsContextGL::readnPixels0):
(WebKit::RemoteGraphicsContextGL::readnPixels1):

  • GPUProcess/graphics/RemoteGraphicsContextGL.h:
  • GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
  • GPUProcess/graphics/RemoteGraphicsContextGLFunctionsGenerated.h:

(bufferSubData):
(readnPixels0): Deleted.
(readnPixels1): Deleted.

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::readnPixels):

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.cpp:

(WebKit::RemoteGraphicsContextGLProxy::readnPixels): Deleted.

Tools:

Make a copy of the data buffer passed into readnpixels so that reads outside the framebuffer contain
the expected results, rather than being zero'd.

  • Scripts/generate-gpup-webgl:

LayoutTests:

Don't overwrite the data buffer for readPixels

  • platform/ios-wk2/TestExpectations:
10:19 PM Changeset in webkit [291031] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Fix assertion when DOM Rendering in GPU Process is enabled with accelerated drawing disabled
​https://bugs.webkit.org/show_bug.cgi?id=237626

Reviewed by Tim Horton.

Override releaseGraphicsContext() in the base class (which asserts). This subclass
doesn't need to do anything; releaseGraphicsContext() is only relevant for IOSurface-
based backends.

  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:
10:13 PM Changeset in webkit [291030] by Chris Dumez
  • 5 edits
    3 adds in trunk

IntersectionObserver is causing massive document leaks on haaretz.co.il
​https://bugs.webkit.org/show_bug.cgi?id=237619
<rdar://problem/89989815>

Reviewed by Simon Fraser.

Source/WebCore:

On haaretz.co.il, many of the iframe documents (for Google ad frames) were leaking due to
IntersectionObserver. In particular, IntersectionObserver::isReachableFromOpaqueRoots()
was returning true because m_targetsWaitingForFirstObservation was non-empty. This indicates
that the IntersectionObserver is waiting for its first observation since that target was
added. However, the observation is not coming because we navigated away from the document.

To address the issue, I updated Document::commonTeardown() to disconnect all
IntersectionObservers (and the very similar ResizeObservers), right after stopping all
ActiveDOMObject.

Test: fast/dom/intersection-observer-document-leak.html

  • dom/Document.cpp:

(WebCore::Document::commonTeardown):

  • dom/Document.h:
  • page/IntersectionObserver.cpp:

(WebCore::IntersectionObserver::disconnect):
No longer return early if hasObservationTargets() returns false. This is because

LayoutTests:

Add layout test coverage.

  • fast/dom/intersection-observer-document-leak-expected.txt: Added.
  • fast/dom/intersection-observer-document-leak.html: Added.
  • fast/dom/resources/intersection-observer-document-leak-popup.html: Added.
7:34 PM Changeset in webkit [291029] by eric.carlson@apple.com
  • 5 edits
    2 adds in trunk

[Cocoa] metadata cue endTime may not be updated
​https://bugs.webkit.org/show_bug.cgi?id=237630
rdar://88690874

Reviewed by Jer Noble.

Source/WebCore:

Data cues have a start time but not an explicit duration, a data cue ends when
the next data cue from the same track starts. This means we don’t know the
duration of cue #1 until cue #2 is delivered, so when cue #1 is delivered it is
given the end time of the media file’s duration and the actual end time is updated
when cue #2 arrives.

​http://webkit.org/b/229924 refactored text, audio, and video tracks to not depend
on HTMLMediaElement. Because InbandDataTextTrack could no longer access the
HTMLMediaElement to get its duration, a duration property was added to TextTrackList
that InbandDataTextTrack uses to set the duration of temporary cues.
TextTrackList.duration is set when it is created and updated when the media player
reports a duration change.

This means that if the media file’s duration is not known when the text track list
is created, and the file's duration never changes, the text track list never has a
valid duration and data cues were not added to the temporary list.

Fix this by updating TextTrackList.duration when a HTMLMediaElement reaches HAVE_METADATA.

Test: http/tests/media/hls/track-in-band-hls-metadata-cue-duration.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::durationChanged): Update m_textTracks.duration and post
the 'durationchange' event.
(WebCore::HTMLMediaElement::setReadyState): Call durationChanged.
(WebCore::HTMLMediaElement::mediaPlayerDurationChanged): Ditto.

  • html/HTMLMediaElement.h:
  • html/track/InbandDataTextTrack.cpp:

(WebCore::InbandDataTextTrack::addDataCue): Add cues to the incomplete cue map
even if the track list doesn't have duration.

LayoutTests:

  • http/tests/media/hls/track-in-band-hls-metadata-cue-duration-expected.txt: Added.
  • http/tests/media/hls/track-in-band-hls-metadata-cue-duration.html: Added.
6:58 PM Changeset in webkit [291028] by Cameron McCormack
  • 2 edits in trunk/Source/WebCore

Skip scheduling lazy UA shadow tree creation if already created or not needed
​https://bugs.webkit.org/show_bug.cgi?id=237546
<rdar://problem/89922896>

Reviewed by Aditya Keerthi.

Bug 236747 made <input> element UA shadow trees get created lazily.
HTMLInputElement::insertedIntoAncestor now schedules the UA shadow tree
to be created the next time style is flushed. We currently do this every
time an <input> element is inserted into the document, but there's only
a need to do this if the particular input type needs a shadow tree and
we haven't already created it.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::insertedIntoAncestor):

6:56 PM Changeset in webkit [291027] by rmorisset@apple.com
  • 6 edits in trunk/Source

[WTF] LikelyDenseUnsignedIntegerSet::add can cause a reindexing of the entire bit vector with every call in the worst case
​https://bugs.webkit.org/show_bug.cgi?id=236997

Reviewed by Saam Barati.

Source/JavaScriptCore:

Just make it a little bit easier to change the number of stack slots in testZDefOfSpillSlotWithOffsetNeedingToBeMaterializedInARegister.

  • b3/air/testair.cpp:

Source/WTF:

This problem was found while investigating ​https://bugs.webkit.org/show_bug.cgi?id=236269.

LikelyDenseUnsignedIntegerSet has two forms: either as a HashSet (if sparse) or as a BitVector representing numbers above some value m_min (if sufficiently dense).
This is a massive memory win in most situations (>4x in practice for register allocation in JS2, >20x on some pathological webpages).
But it means that when adding a value below m_min to a set in BitVector shape, we have to rebuild the whole set, which takes a time proportional to the time of the set.
So if building a set by repeatedly adding decreasing values (like in ​https://bugs.webkit.org/show_bug.cgi?id=236269 where we add 10000, then 9999, then 9998, etc..), we have some awful performance.

In this patch I improve this situation in two ways:

  • First I always round down m_min to the next multiple of 64. This means that when adding contiguous values like above we only re-index once every 64 adds.
  • It then allows me to do the reindexing by simple memcpy instead of costly iteration of all the set bits, since they are now always at the same offset within the words of the BitVector.

On an M1 MBP, on testair:: testZDefOfSpillSlotWithOffsetNeedingToBeMaterializedInARegister, with n=5000, in release mode, measuring just the time spent building the interference graph:
Before this patch: 107 s
After this patch: 77 ms (note the different unit, it is not a typo!)

Unfortunately, it does not seem to significantly improve the time spent in LikelyDenseUnsignedIntgerSet::add in JetStream2,
probably because the pattern of always adding a value just before the minimum is quite pathological/rare.
I still think it is worth landing, as we don't know what code out there may hit this performance problem.

  • wtf/BitVector.cpp:

(WTF::BitVector::shiftRightByMultipleOf64):
(WTF::BitVector::resizeOutOfLine):

  • wtf/BitVector.h:
  • wtf/LikelyDenseUnsignedIntegerSet.h:

(WTF::LikelyDenseUnsignedIntegerSet::add):
(WTF::LikelyDenseUnsignedIntegerSet::validate const):
(WTF::LikelyDenseUnsignedIntegerSet::transitionToBitVector):

6:53 PM Changeset in webkit [291026] by rmorisset@apple.com
  • 4 edits in trunk

Enable tier-up in loops created by recursive tail call optimizations.
​https://bugs.webkit.org/show_bug.cgi?id=178389

Reviewed by Saam Barati.

PerformanceTests:

Just changed a constant for consistency with TailBench9000/merge-sort.js

  • TailBench9000/merge-sort-cps.js:

Source/JavaScriptCore:

Made the recursive tail call optimization only run in FTL mode, since it is a significant progression on TailBench.
Also some trivial refactoring of handleRecursiveTailCall.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleRecursiveTailCall):

6:25 PM Changeset in webkit [291025] by Jean-Yves Avenard
  • 29 edits
    1 copy
    1 add in trunk

Split SourceBufferParserWebM and have platform agnostic WebMParser
​https://bugs.webkit.org/show_bug.cgi?id=237472
rdar://problem/89810969

Reviewed by Eric Carlson.

Source/WebCore:

Split raw WebMParser from SourceBufferParserWebM and introduce platform
agnostic MediaSamplesBlock objects and TrackInfo

  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/MediaSample.h:

(WebCore::MediaSample::dump const):
(WebCore::TrackInfo::isAudio const):
(WebCore::TrackInfo::isVideo const):
(WebCore::TrackInfo::type const):
(WebCore::TrackInfo::operator== const):
(WebCore::TrackInfo::operator!= const):
(WebCore::TrackInfo::TrackInfo):
(WebCore::VideoInfo::create):
(WebCore::VideoInfo::VideoInfo):
(WebCore::AudioInfo::create):
(WebCore::AudioInfo::AudioInfo):
(WebCore::MediaSamplesBlock::setInfo):
(WebCore::MediaSamplesBlock::info const):
(WebCore::MediaSamplesBlock::isVideo const):
(WebCore::MediaSamplesBlock::isAudio const):
(WebCore::MediaSamplesBlock::type const):
(WebCore::MediaSamplesBlock::append):
(WebCore::MediaSamplesBlock::size const):
(WebCore::MediaSamplesBlock::isEmpty const):
(WebCore::MediaSamplesBlock::clear):
(WebCore::MediaSamplesBlock::takeSamples):
(WebCore::MediaSamplesBlock::operator[] const):
(WebCore::MediaSamplesBlock::first const):
(WebCore::MediaSamplesBlock::last const):
(WebCore::MediaSamplesBlock::begin const):
(WebCore::MediaSamplesBlock::end const):
(isType):

  • platform/audio/cocoa/AudioFileReaderCocoa.cpp:

(WebCore::AudioFileReader::demuxWebMData const):

  • platform/graphics/PlatformVideoColorPrimaries.h:
  • platform/graphics/PlatformVideoMatrixCoefficients.h:
  • platform/graphics/PlatformVideoTransferCharacteristics.h:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
  • platform/graphics/cocoa/CMUtilities.h: Copied from Source/WebCore/platform/graphics/PlatformVideoColorPrimaries.h.
  • platform/graphics/cocoa/CMUtilities.mm: Added.

(WebCore::createAudioFormatDescription):
(WebCore::convertToCMColorPrimaries):
(WebCore::convertToCMTransferFunction):
(WebCore::convertToCMYCbCRMatrix):
(WebCore::createFormatDescriptionFromTrackInfo):

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::segmentReadErrorToWebmStatus):
(WebCore::WebMParser::WebMParser):
(WebCore::WebMParser::~WebMParser):
(WebCore::WebMParser::resetState):
(WebCore::WebMParser::reset):
(WebCore::WebMParser::parse):
(WebCore::WebMParser::setLogger):
(WebCore::WebMParser::invalidate):
(WebCore::WebMParser::trackDataForTrackNumber):
(WebCore::WebMParser::OnElementBegin):
(WebCore::WebMParser::OnElementEnd):
(WebCore::WebMParser::OnEbml):
(WebCore::WebMParser::OnSegmentBegin):
(WebCore::WebMParser::OnInfo):
(WebCore::WebMParser::OnClusterBegin):
(WebCore::WebMParser::OnTrackEntry):
(WebCore::WebMParser::OnBlockBegin):
(WebCore::WebMParser::OnBlockEnd):
(WebCore::WebMParser::OnSimpleBlockBegin):
(WebCore::WebMParser::OnSimpleBlockEnd):
(WebCore::WebMParser::OnBlockGroupBegin):
(WebCore::WebMParser::OnBlockGroupEnd):
(WebCore::WebMParser::OnFrame):
(WebCore::WebMParser::TrackData::contiguousCompleteBlockBuffer const):
(WebCore::WebMParser::TrackData::readFrameData):
(WebCore::WebMParser::VideoTrackData::resetCompletedFramesState):
(WebCore::WebMParser::VideoTrackData::consumeFrameData):
(WebCore::WebMParser::AudioTrackData::resetCompletedFramesState):
(WebCore::WebMParser::AudioTrackData::consumeFrameData):
(WebCore::WebMParser::isSupportedVideoCodec):
(WebCore::WebMParser::isSupportedAudioCodec):
(WebCore::SourceBufferParserWebM::SourceBufferParserWebM):
(WebCore::SourceBufferParserWebM::isWebMFormatReaderAvailable):
(WebCore::SourceBufferParserWebM::isContentTypeSupported):
(WebCore::SourceBufferParserWebM::create):
(WebCore::WebMParser::provideMediaData):
(WebCore::SourceBufferParserWebM::parsedInitializationData):
(WebCore::SourceBufferParserWebM::parsedMediaData):
(WebCore::SourceBufferParserWebM::returnSamples):
(WebCore::SourceBufferParserWebM::parsedTrimmingData):
(WebCore::SourceBufferParserWebM::contentKeyRequestInitializationDataForTrackID):
(WebCore::SourceBufferParserWebM::flushPendingAudioSamples):
(WebCore::SourceBufferParserWebM::appendData):
(WebCore::SourceBufferParserWebM::flushPendingMediaData):
(WebCore::SourceBufferParserWebM::setShouldProvideMediaDataForTrackID):
(WebCore::SourceBufferParserWebM::shouldProvideMediadataForTrackID):
(WebCore::SourceBufferParserWebM::invalidate):
(WebCore::SourceBufferParserWebM::setLogger):
(WebCore::SourceBufferParserWebM::setMinimumAudioSampleDuration):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

(WebCore::WebMParser::Callback::parsedTrimmingData):
(WebCore::WebMParser::Callback::canDecrypt const):
(WebCore::WebMParser::Callback::contentKeyRequestInitializationDataForTrackID):
(WebCore::WebMParser::loggerPtr const):
(WebCore::WebMParser::logIdentifier const):
(WebCore::WebMParser::TrackData::create):
(WebCore::WebMParser::TrackData::TrackData):
(WebCore::WebMParser::TrackData::trackType const):
(WebCore::WebMParser::TrackData::formatDescription const):
(WebCore::WebMParser::TrackData::setFormatDescription):
(WebCore::WebMParser::TrackData::parser const):
(WebCore::WebMParser::TrackData::consumeFrameData):
(WebCore::WebMParser::TrackData::resetCompletedFramesState):
(WebCore::WebMParser::TrackData::drainPendingSamples):
(WebCore::WebMParser::VideoTrackData::create):
(WebCore::WebMParser::VideoTrackData::VideoTrackData):
(WebCore::WebMParser::AudioTrackData::create):
(WebCore::WebMParser::AudioTrackData::AudioTrackData):
(WebCore::SourceBufferParserWebM::type const):
(WebCore::SourceBufferParserWebM::appendData):
(WebCore::SourceBufferParserWebM::setDidParseTrimmingDataCallback):
(WebCore::SourceBufferParserWebM::loggerPtr const):
(WebCore::SourceBufferParserWebM::logIdentifier const):
(isType):

  • platform/graphics/cocoa/VP9UtilitiesCocoa.h:
  • platform/graphics/cocoa/VP9UtilitiesCocoa.mm:

(WebCore::convertToPlatformVideoColorPrimaries):
(WebCore::convertToPlatformVideoTransferCharacteristics):
(WebCore::convertToPlatformVideoMatrixCoefficients):
(WebCore::createVideoInfoFromVPCodecConfigurationRecord):
(WebCore::createVideoInfoFromVP9HeaderParser):
(WebCore::createVideoInfoFromVP8Header):

  • platform/graphics/cocoa/WebMAudioUtilitiesCocoa.h:
  • platform/graphics/cocoa/WebMAudioUtilitiesCocoa.mm:

(WebCore::createAudioInfoForFormat):
(WebCore::parseOpusPrivateData):
(WebCore::createOpusAudioInfo):
(WebCore::createVorbisAudioInfo):

Source/WebCore/PAL:

  • pal/cf/CoreMediaSoftLink.cpp:
  • pal/cf/CoreMediaSoftLink.h: Method CMSampleBufferCreateReady wasn't soft-linked.

Source/WebKit:

  • Shared/mac/MediaFormatReader/MediaSampleByteRange.cpp:

(WebKit::MediaSampleByteRange::MediaSampleByteRange):

  • Shared/mac/MediaFormatReader/MediaSampleByteRange.h: MediaSampleByteRange.h

didn't need to inherit from MediaSampleAVFObjC.

Tools:

  • TestWebKitAPI/Tests/WebCore/SampleMap.cpp: Update following base class definition change.
6:09 PM Changeset in webkit [291024] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Allow adattributiond to read and execute dylibs in /usr/lib on iOS
​https://bugs.webkit.org/show_bug.cgi?id=237625
<rdar://89809031>

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-08
Reviewed by Per Arne Vollan.

WebKit's other sandboxes allow this.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb:
5:58 PM Changeset in webkit [291023] by commit-queue@webkit.org
  • 12 edits
    1 delete in trunk

Remove unused _grantAccessToPreferenceService
​https://bugs.webkit.org/show_bug.cgi?id=237623

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-08
Reviewed by Per Arne Vollan.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _grantAccessToPreferenceService]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::grantAccessToPreferenceService): Deleted.

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::unblockPreferenceServiceIfNeeded): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessProxy.h:
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::notifyPreferencesChanged):
(WebKit::WebProcess::unblockPreferenceService): Deleted.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/GrantAccessToPreferencesService.mm: Removed.
5:17 PM Changeset in webkit [291022] by Wenson Hsieh
  • 10 edits
    2 moves in trunk/Source/WebKit

Rename TextRecognitionUtilities.* to ImageAnalysisUtilities.*
​https://bugs.webkit.org/show_bug.cgi?id=237613
rdar://89982051

Reviewed by Tim Horton and Kate Cheney.

Rename TextRecognitionUtilities.h and TextRecognitionUtilities.mm to ImageAnalysisUtilities.h and
ImageAnalysisUtilities.mm, respectively. This is because this file now contains helper functions that are not
specific to just the text recognition aspect of visual intelligence features on Cocoa, but rather encompass a
variety of image analysis helpers.

  • Platform/cocoa/ImageAnalysisUtilities.h: Renamed from Source/WebKit/Platform/cocoa/TextRecognitionUtilities.h.
  • Platform/cocoa/ImageAnalysisUtilities.mm: Renamed from Source/WebKit/Platform/cocoa/TextRecognitionUtilities.mm.

(WebKit::createImageAnalyzer):
(WebKit::createImageAnalyzerRequest):
(WebKit::floatQuad):
(WebKit::floatQuads):
(WebKit::makeTextRecognitionResult):
(WebKit::textRecognitionEnhancementsSystemFeatureEnabled):
(WebKit::imageAnalysisQueueSystemFeatureEnabled):
(WebKit::isImageAnalysisMarkupSystemFeatureEnabled):
(WebKit::isLiveTextAvailableAndEnabled):

  • Shared/Cocoa/WebPreferencesDefaultValuesCocoa.mm:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/ios/ProcessAssertionIOS.mm:

(-[WKRBSAssertionDelegate assertion:didInvalidateWithError:]):

Drive-by fix: additionally tweak a couple of release logging arguments that are currently in reverse order.

  • UIProcess/ios/WKActionSheetAssistant.mm:
  • UIProcess/ios/WKContentViewInteraction.mm:
  • UIProcess/mac/WebContextMenuProxyMac.mm:
  • UIProcess/mac/WebPageProxyMac.mm:
  • WebKit.xcodeproj/project.pbxproj:
4:52 PM Changeset in webkit [291021] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Enable CFPrefs direct mode in adattributiond
​https://bugs.webkit.org/show_bug.cgi?id=237620

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-08
Reviewed by Per Arne Vollan.

This makes it not try to connect to cfprefsd, which is not allowed by the sandbox.

  • Shared/EntryPointUtilities/Cocoa/Daemon/PCMDaemonEntryPoint.mm:

(WebKit::PCMDaemonMain):

4:15 PM Changeset in webkit [291020] by Jean-Yves Avenard
  • 6 edits in trunk/Source/WebCore

Have SourceBufferParserWebM use SharedBuffer internally
​https://bugs.webkit.org/show_bug.cgi?id=237078
rdar://89348752

Reviewed by Eric Carlson.

This is a refactor to allow SourceBufferParser to return SharedBuffer
rather than CMBlockBuffer.

No change in observable behaviours.
Covered by existing tests.

  • platform/graphics/SourceBufferPrivate.cpp:

(WebCore::SourceBufferPrivate::reenqueueMediaForTime): Fly-by fix: typo.
(WebCore::SourceBufferPrivate::didReceiveSample): Fly-by fix, exit early
if end time is lower than start time which can happen if the duration is
smaller than contiguousFrameTolerance.

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::TrackData::contiguousCompleteBlockBuffer const):
(WebCore::SourceBufferParserWebM::TrackData::readFrameData):
(WebCore::SourceBufferParserWebM::TrackData::createSampleBuffer):
(WebCore::SourceBufferParserWebM::VideoTrackData::resetCompleted):
(WebCore::SourceBufferParserWebM::VideoTrackData::consumeFrameData):
(WebCore::SourceBufferParserWebM::VideoTrackData::postProcess):
(WebCore::SourceBufferParserWebM::AudioTrackData::resetCompleted):
(WebCore::SourceBufferParserWebM::AudioTrackData::consumeFrameData):
(WebCore::SourceBufferParserWebM::flushPendingAudioBuffers):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

(WebCore::SourceBufferParserWebM::TrackData::resetCompleted):
(WebCore::SourceBufferParserWebM::TrackData::reset):
(WebCore::SourceBufferParserWebM::TrackData::drainPendingSamples):
(WebCore::SourceBufferParserWebM::TrackData::postProcess):

  • platform/graphics/cocoa/VP9UtilitiesCocoa.h:
  • platform/graphics/cocoa/VP9UtilitiesCocoa.mm:

(WebCore::parseVP8FrameHeader): Make methods const.

3:54 PM Changeset in webkit [291019] by Diego Pino Garcia
  • 5 edits in trunk/Source/WebKit

[macOS] Unreviewed, non-unified build fixes
​https://bugs.webkit.org/show_bug.cgi?id=237586

  • Shared/ModelIdentifier.h:
  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewControllerInternal.h:
  • UIProcess/Cocoa/ModelElementControllerCocoa.mm:
  • UIProcess/ModelElementController.h:
3:51 PM Changeset in webkit [291018] by J Pascoe
  • 20 edits
    3 adds in trunk

[WebAuthn] Using WebAuthn within cross-origin iframe elements
​https://bugs.webkit.org/show_bug.cgi?id=222240
rdar://problem/74830748

Reviewed by Brent Fulgham.

Source/WebCore:

This patch relaxes the requirement to perform a Web Authentication assertion
inside an i-frame with the "publickey-credentials-get" feature policy from
'same-site' to 'cross-origin with consent'.

There is an additional requirement that there is only a single cross-origin
parent to present to the user in the prompt. If we can't display the updated
prompt, then cross-origin assertions are not allowed.

Test: http/wpt/webauthn/public-key-credential-cross-origin.https.html

  • Modules/credentialmanagement/CredentialsContainer.cpp:

(WebCore::CredentialsContainer::scopeAndSingleParent):
(WebCore::CredentialsContainer::get):
(WebCore::CredentialsContainer::isCreate):
(WebCore::CredentialsContainer::scope): Deleted.

  • Modules/credentialmanagement/CredentialsContainer.h:
  • Modules/webauthn/AuthenticatorCoordinator.cpp:

(WebCore::AuthenticatorCoordinator::discoverFromExternalSource const):

  • Modules/webauthn/AuthenticatorCoordinator.h:
  • Modules/webauthn/AuthenticatorCoordinatorClient.h:

Source/WebKit:

This patch relaxes the requirement to perform a Web Authentication assertion
inside an i-frame with the "publickey-credentials-get" feature policy from
'same-site' to 'cross-origin with consent'.

There is an additional requirement that there is only a single cross-origin
parent to present to the user in the prompt. If we can't display the updated
prompt, then cross-origin assertions are not allowed.

  • Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:

(WebKit::configureAssertionOptions):
(WebKit::configurationAssertionRequestContext):
(WebKit::WebAuthenticatorCoordinatorProxy::contextForRequest):

  • UIProcess/WebAuthentication/WebAuthenticationRequestData.h:
  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:

(WebKit::WebAuthenticatorCoordinatorProxy::makeCredential):
(WebKit::WebAuthenticatorCoordinatorProxy::getAssertion):
(WebKit::WebAuthenticatorCoordinatorProxy::handleRequest):

  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h:
  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.messages.in:
  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:

(WebKit::WebAuthenticatorCoordinator::getAssertion):

  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.h:

LayoutTests:

Update existing tests and create new test for cross-origin, non same-site i-frames.

  • http/wpt/webauthn/public-key-credential-cross-origin.https-expected.txt: Added.
  • http/wpt/webauthn/public-key-credential-cross-origin.https.html: Added.
  • http/wpt/webauthn/public-key-credential-same-origin-with-ancestors.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-same-origin-with-ancestors.https.html:
  • http/wpt/webauthn/resources/public-key-credential-cross-origin.https.html: Added.
3:27 PM Changeset in webkit [291017] by Chris Dumez
  • 7 edits in trunk

Rename allow-custom-protocols-navigation to allow-top-navigation-to-custom-protocols
​https://bugs.webkit.org/show_bug.cgi?id=237605

Reviewed by Darin Adler.

Source/WebCore:

Rename allow-custom-protocols-navigation sandbox flag to allow-top-navigation-to-custom-protocols as per:

There is no backward compatibility risk since support for this flag was added very recently
in r290958.

  • dom/SecurityContext.cpp:

(WebCore::SecurityContext::isSupportedSandboxPolicy):
(WebCore::SecurityContext::parseSandboxPolicy):

  • dom/SecurityContext.h:

Source/WebKit:

Rename allow-custom-protocols-navigation sandbox flag to allow-top-navigation-to-custom-protocols as per:

There is no backward compatibility risk since support for this flag was added very recently
in r290958.

  • UIProcess/WebPageProxy.cpp:

(WebKit::frameSandboxAllowsOpeningExternalCustomProtocols):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:

(TEST):

3:18 PM Changeset in webkit [291016] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Fix Windows debug build
​https://bugs.webkit.org/show_bug.cgi?id=237617

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-08
Reviewed by Fujii Hironori.

Source/WebCore:

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::parseHeader):

Source/WTF:

MSVC's linker is limited to generating 4GB libraries.
Currently, I'm seeing WebCore.lib be 3.9GB and some bots are failing to link debug builds.
More source unification reduces WebCore.lib's size to 3.3GB.

  • Scripts/generate-unified-source-bundles.rb:
3:17 PM Changeset in webkit [291015] by Russell Epstein
  • 113 edits
    10 adds in branches/safari-613-branch

Cherry-pick r288701. rdar://problem/83734079

"Unrecognized Content-Security-Policy directive 'worker-src'."
​https://bugs.webkit.org/show_bug.cgi?id=235260
<rdar://problem/83734079>

Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

  • web-platform-tests/content-security-policy/child-src/child-src-cross-origin-load.sub-expected.txt:
  • web-platform-tests/content-security-policy/child-src/child-src-worker-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-self/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-self/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-wildcard/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-wildcard/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-classic.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-classic.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-module.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-module.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-classic.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-classic.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-import.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-import.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-module.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-module.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-wildcard/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-wildcard/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-self/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-self/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-self/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-self/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-wildcard/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-wildcard/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/dedicated-fallback.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/dedicated-none.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/dedicated-worker-src-child-fallback-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/dedicated-worker-src-script-fallback.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/dedicated-worker-src-self-fallback.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/service-none.https.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/service-worker-src-child-fallback-blocked.https.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/shared-child.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-fallback.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-list.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-none.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-self.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-worker-src-child-fallback-blocked.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-worker-src-child-fallback.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-worker-src-default-fallback.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-worker-src-script-fallback.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-worker-src-self-fallback.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/blob/self-doesnt-match-blob.sub-expected.txt:
  • web-platform-tests/content-security-policy/blob/star-doesnt-match-blob.sub-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/sharedworker-classic.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/sharedworker-classic.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/sharedworker-module.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/sharedworker-module.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-classic.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-classic.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-import.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-import.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-module.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-module.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-self/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-self/worker-import-data.https-expected.txt:

Source/WebCore:

Implementation of worker-src directive. According to ​https://www.w3.org/TR/CSP3/#changes-from-level-2
the worker-src directive now restricts URLs that can be loaded by
workers, and defers to child-src if not specified.

  • bindings/js/WorkerModuleScriptLoader.cpp: (WebCore::WorkerModuleScriptLoader::load): Check worker-src instead of child-src for worker loads.
  • loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::isAllowedByContentSecurityPolicy):
  • loader/ThreadableLoader.h: Check worker-src instead of child-src for worker loads.
  • page/csp/ContentSecurityPolicy.cpp: We can remove allowChildContextFromSource which is now fully replaced by allowWorkerFromSource.

(WebCore::ContentSecurityPolicy::allowWorkerFromSource const):
(WebCore::ContentSecurityPolicy::allowChildContextFromSource const): Deleted.

  • page/csp/ContentSecurityPolicy.h:
  • page/csp/ContentSecurityPolicyDirectiveList.cpp: (WebCore::ContentSecurityPolicyDirectiveList::operativeDirectiveForWorkerSrc const): worker-src defers to child-src, then script-src, then default-src.

(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForWorker):
(WebCore::ContentSecurityPolicyDirectiveList::addDirective):

  • page/csp/ContentSecurityPolicyDirectiveList.h:
  • page/csp/ContentSecurityPolicyDirectiveNames.cpp:
  • page/csp/ContentSecurityPolicyDirectiveNames.h:
  • workers/AbstractWorker.cpp: (WebCore::AbstractWorker::resolveURL):
  • workers/AbstractWorker.h: We check LegacySchemeRegistry::schemeShouldBypassContentSecurityPolicy in allowWorkerFromSource, so we don't need to check in in AbstractWorker::resolveURL anymore. We can also replace the child-src checks with worker-src ones.
  • workers/Worker.cpp: (WebCore::Worker::create):
  • workers/WorkerFontLoadRequest.cpp: (WebCore::WorkerFontLoadRequest::load):
  • workers/service/ServiceWorkerContainer.cpp: (WebCore::ServiceWorkerContainer::addRegistration): Block service worker registrations not specified by worker-src.
  • workers/shared/SharedWorker.cpp: (WebCore::SharedWorker::create): Block shared worker urls not specified by worker-src.
  • workers/shared/SharedWorkerScriptLoader.cpp: (WebCore::SharedWorkerScriptLoader::SharedWorkerScriptLoader):

Source/WebKit:

  • NetworkProcess/NetworkLoadChecker.cpp: (WebKit::NetworkLoadChecker::isAllowedByContentSecurityPolicy):

LayoutTests:

Update tests now that worker-src defaults eventually to script-src.
Since this was not the case with child-src, legacy CSP tests do not
expect script-src policies to affect workers. We can fix this by
specifying a separate worker-src policy for these tests to maintain
behavior.

  • TestExpectations: Some wpt tests log random URL strings that change for every test iteration. For now we can't unskip those.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-blocks-eval.html:
  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-importScripts-block-aborts-all-subsequent-imports.html:
  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-importScripts-redirect-cross-origin-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp.html:
  • http/tests/security/contentSecurityPolicy/worker-script-src.html:
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker-blob-eval.html:
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker-blob-importScript-redirect-cross-origin.html:
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker-blob-xhr.html:
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker.html:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@288701 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:04 PM Changeset in webkit [291014] by sihui_liu@apple.com
  • 4 edits in trunk/Source/WebKit

File System Access: throw exception if file or directory cannot be accessed in file system
​https://bugs.webkit.org/show_bug.cgi?id=237537

Reviewed by Youenn Fablet.

When a FileSystemHandle is created, we will ensure that corresponding directory or file exists (create the
directory or file if it does not exist yet). However, we did not check the result of the file system calls.
That means, we may fail to create the file (e.g. due to no disk space, or cases in rdar://89291566), but we
still return success to the FileSystemHandle creation request. We should fix this by checking the file system
call's result before completing the request.

  • NetworkProcess/storage/FileSystemStorageHandle.cpp:

(WebKit::FileSystemStorageHandle::create):
(WebKit::FileSystemStorageHandle::FileSystemStorageHandle):

  • NetworkProcess/storage/FileSystemStorageHandle.h:
  • NetworkProcess/storage/FileSystemStorageManager.cpp:

(WebKit::FileSystemStorageManager::createHandle):

2:18 PM Changeset in webkit [291013] by Jonathan Bedard
  • 8 edits in trunk/Tools

[git-webkit] Prompt user when GitHub credentials are likely incorrect
​https://bugs.webkit.org/show_bug.cgi?id=237450
<rdar://problem/89781069>

Reviewed by Dewei Zhu.

GitHub doesn't make it obvious when credentials are invalid, but our scripts
can make an educated guess when invalid credentials are the root cause.

  • Tools/Scripts/libraries/webkitbugspy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/github.py:

(Tracker): Add REFRESH_TOKEN_PROMPT.

  • Tools/Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:

(GitHub.PRGenerator.create):
(GitHub.PRGenerator.update):
(GitHub.request):

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

(TestCheckout.test_no_pr_github):

Canonical link: ​https://commits.webkit.org/248188@main

2:06 PM Changeset in webkit [291012] by Russell Epstein
  • 113 edits
    10 deletes in branches/safari-613-branch

Revert "Cherry-pick r288701. rdar://problem/83734079"

This reverts commit r291000.

1:58 PM Changeset in webkit [291011] by Jonathan Bedard
  • 4 edits in trunk/Tools

[git-webkit] Set bug tracker usernames from contributors.json
​https://bugs.webkit.org/show_bug.cgi?id=237608
<rdar://problem/89971547>

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/local/scm.py:

(Scm.init): Set GitHub and bugzilla usernames from contributors.json

Canonical link: ​https://commits.webkit.org/248187@main

1:42 PM Changeset in webkit [291010] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r291006.
​https://bugs.webkit.org/show_bug.cgi?id=237618

Introduced build failure.

Reverted changeset:

"The accessibility library should be soft linked optionally"
​https://bugs.webkit.org/show_bug.cgi?id=236513
​https://commits.webkit.org/r291006

1:39 PM Changeset in webkit [291009] by Chris Fleizach
  • 3 edits
    2 adds in trunk

AX: Speech Synthesis no longer returning list of voices in macOS 12.3
​https://bugs.webkit.org/show_bug.cgi?id=237584
<rdar://problem/89952347>

Reviewed by Andres Gonzalez.

Source/WTF:

The minimum macOS version was meant to be 13 and above, but we started including 12.x releases inadvertently.

  • wtf/PlatformHave.h:

LayoutTests:

  • fast/speechsynthesis/voices-non-mock-expected.txt: Added.
  • fast/speechsynthesis/voices-non-mock.html: Added.
1:25 PM Changeset in webkit [291008] by graouts@webkit.org
  • 8 edits in trunk

[web-animations] color-interpolation should support discrete animation
​https://bugs.webkit.org/show_bug.cgi?id=237610

Reviewed by Tim Nguyen.

LayoutTests/imported/w3c:

Since the input for the strings used in comparison for the WPT tests is using toLowerCase(),
we need to also use toLowerCase() for the output, so that "linearRGB" and "linearrgb" are
both correct values for "color-interpolation" values.

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/property-list.js:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::colorInterpolation const):
(WebCore::RenderStyle::setColorInterpolation):

12:48 PM Changeset in webkit [291007] by ysuzuki@apple.com
  • 13 edits in trunk/Source/bmalloc

[libpas] Report more actionable crash in pas_enumerator
​https://bugs.webkit.org/show_bug.cgi?id=237572

Reviewed by Saam Barati.

  1. Adds PAS_ASSERT_WITH_DETAIL, which can report more detailed crash information than PAS_ASSERT while it is not efficient as much as PAS_ASSERT. We use it only in pas_enumerator related code to report more actionable crash from these code. It is OK since pas_enumerator is not used usually, which will be used only when vmmap is attached.
  2. Extract enumerate_large_map, enumerate_small_large_map, and enumerate_tiny_large_map to report which part of these functions can crash (in very rare case).
  3. Ensure pas_thread_local_cache_create's thread_local_cache is exposed after setting up all the data.
  • libpas/src/libpas/pas_enumerable_range_list.c:

(pas_enumerable_range_list_append):
(pas_enumerable_range_list_iterate):
(pas_enumerable_range_list_iterate_remote):

  • libpas/src/libpas/pas_enumerate_bitfit_heaps.c:

(view_callback):
(enumerate_bitfit_heap_callback):

  • libpas/src/libpas/pas_enumerate_initially_unaccounted_pages.c:

(range_list_iterate_add_unaccounted_callback):
(range_list_iterate_exclude_accounted_callback):

  • libpas/src/libpas/pas_enumerate_large_heaps.c:

(range_list_iterate_add_large_payload_callback):
(record_span):
(large_map_hashtable_entry_callback):
(small_large_map_hashtable_entry_callback):
(tiny_large_map_hashtable_entry_callback):
(enumerate_large_map):
(enumerate_small_large_map):
(enumerate_tiny_large_map):
(pas_enumerate_large_heaps):

  • libpas/src/libpas/pas_enumerate_segregated_heaps.c:

(local_allocator_map_entry_is_empty_or_deleted):
(local_allocator_map_entry_is_empty):
(local_allocator_map_entry_is_deleted):
(collect_shared_page_directories_heap_callback):
(enumerate_exclusive_view):
(enumerate_shared_view):
(enumerate_partial_view):
(shared_page_directory_view_callback):
(size_directory_view_callback):
(consider_allocator):
(pas_enumerate_segregated_heaps):

  • libpas/src/libpas/pas_enumerate_unaccounted_pages_as_meta.c:

(pas_enumerate_unaccounted_pages_as_meta):

  • libpas/src/libpas/pas_enumerator.c:

(pas_enumerator_create):
(pas_enumerator_read_compact):
(pas_enumerator_read):
(pas_enumerator_add_unaccounted_pages):
(pas_enumerator_exclude_accounted_page):
(pas_enumerator_exclude_accounted_pages):
(pas_enumerator_record):
(pas_enumerator_record_page_payload_and_meta):

  • libpas/src/libpas/pas_enumerator.h:

(pas_enumerator_record_kind_get_string):

  • libpas/src/libpas/pas_enumerator_region.c:

(pas_enumerator_region_allocate):

  • libpas/src/libpas/pas_thread_local_cache.c:

(pas_thread_local_cache_create):

  • libpas/src/libpas/pas_utils.c:

(pas_assertion_failed_no_inline):

  • libpas/src/libpas/pas_utils.h:

(pas_zero_memory):

12:46 PM Changeset in webkit [291006] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

The accessibility library should be soft linked optionally
​https://bugs.webkit.org/show_bug.cgi?id=236513

Reviewed by Geoffrey Garen.

The accessibility library should be soft linked optionally, since it is not always present.

  • Shared/Cocoa/AuxiliaryProcessCocoa.mm:

(WebKit::handleAXPreferenceChange):
(WebKit::AuxiliaryProcess::handlePreferenceChange):

12:41 PM Changeset in webkit [291005] by rmorisset@apple.com
  • 6 edits
    24 adds
    1 delete in trunk/Source/WebGPU

[WGSL] Add enough of the AST for the simplest shaders
​https://bugs.webkit.org/show_bug.cgi?id=236655

Reviewed by Myles Maxfield.

These AST nodes are just those required for the most trivial graphics and compute shaders.
I used the machinery from wtf/TypeCasts as suggested by Myles in ​https://bugs.webkit.org/show_bug.cgi?id=233276.
Currently all of the code for these nodes is included in WGSL.cpp to verify that they build. This will be removed in the parser patch.

Attributes are added in setAttributes methods instead of being part of the constructors, because it can fail, and returning an error from a constructor is tricky.

  • WGSL/AST/Attribute.h: Added.

(WGSL::AST::Attribute::Attribute):
(WGSL::AST::Attribute::kind const):
(WGSL::AST::Attribute::isBlock const):
(WGSL::AST::Attribute::isGroup const):
(WGSL::AST::Attribute::isBinding const):
(WGSL::AST::Attribute::isStage const):
(WGSL::AST::Attribute::isLocation const):
(WGSL::AST::Attribute::isBuiltin const):
(WGSL::AST::BlockAttribute::BlockAttribute):
(WGSL::AST::GroupAttribute::GroupAttribute):
(WGSL::AST::GroupAttribute::group const):
(WGSL::AST::BindingAttribute::BindingAttribute):
(WGSL::AST::BindingAttribute::binding const):
(WGSL::AST::StageAttribute::StageAttribute):
(WGSL::AST::StageAttribute::stage const):
(WGSL::AST::BuiltinAttribute::BuiltinAttribute):
(WGSL::AST::BuiltinAttribute::name const):
(WGSL::AST::LocationAttribute::LocationAttribute):
(WGSL::AST::LocationAttribute::location const):

  • WGSL/AST/Expression.h: Added.

(WGSL::AST::Expression::Expression):
(WGSL::AST::Expression::kind const):
(WGSL::AST::Expression::isBoolLiteral const):
(WGSL::AST::Expression::isInt32Literal const):
(WGSL::AST::Expression::isUInt32Literal const):
(WGSL::AST::Expression::isFloat32Literal const):
(WGSL::AST::Expression::isIdentifier const):
(WGSL::AST::Expression::isStructureAccess const):
(WGSL::AST::Expression::isTypeConversion const):

  • WGSL/AST/Expressions/IdentifierExpression.h: Added.

(WGSL::AST::IdentifierExpression::IdentifierExpression):
(WGSL::AST::IdentifierExpression::identifier const):

  • WGSL/AST/Expressions/LiteralExpressions.h: Added.

(WGSL::AST::BoolLiteral::BoolLiteral):
(WGSL::AST::BoolLiteral::value const):
(WGSL::AST::Int32Literal::Int32Literal):
(WGSL::AST::Int32Literal::value const):
(WGSL::AST::Uint32Literal::Uint32Literal):
(WGSL::AST::Uint32Literal::value const):
(WGSL::AST::Float32Literal::Float32Literal):
(WGSL::AST::Float32Literal::value const):

  • WGSL/AST/Expressions/StructureAccess.h: Added.

(WGSL::AST::StructureAccess::StructureAccess):
(WGSL::AST::StructureAccess::base):
(WGSL::AST::StructureAccess::fieldName const):

  • WGSL/AST/Expressions/TypeConversion.h: Added.

(WGSL::AST::TypeConversion::TypeConversion):
(WGSL::AST::TypeConversion::typeDecl):
(WGSL::AST::TypeConversion::arguments):

  • WGSL/AST/FunctionDecl.h: Added.

(WGSL::AST::Parameter::Parameter):
(WGSL::AST::Parameter::setAttributes):
(WGSL::AST::Parameter::builtin const):
(WGSL::AST::Parameter::location const):
(WGSL::AST::Parameter::name const):
(WGSL::AST::Parameter::type):
(WGSL::AST::FunctionDecl::FunctionDecl):
(WGSL::AST::FunctionDecl::setAttributes):
(WGSL::AST::FunctionDecl::setReturnAttributes):
(WGSL::AST::FunctionDecl::entryPointStage const):
(WGSL::AST::FunctionDecl::name const):
(WGSL::AST::FunctionDecl::parameters):
(WGSL::AST::FunctionDecl::returnBuiltin const):
(WGSL::AST::FunctionDecl::returnLocation const):
(WGSL::AST::FunctionDecl::maybeReturnType):
(WGSL::AST::FunctionDecl::body):

  • WGSL/AST/GlobalDecl.h: Added.

(WGSL::AST::GlobalDecl::GlobalDecl):
(WGSL::AST::GlobalDecl::kind const):
(WGSL::AST::GlobalDecl::isGlobalVariable const):
(WGSL::AST::GlobalDecl::isStruct const):
(WGSL::AST::GlobalDecl::isFunction const):

  • WGSL/AST/GlobalDirective.h: Added.

(WGSL::AST::GlobalDirective::name const):

  • WGSL/AST/GlobalVariableDecl.h: Added.

(WGSL::AST::GlobalVariableDecl::GlobalVariableDecl):
(WGSL::AST::GlobalVariableDecl::setAttributes):
(WGSL::AST::GlobalVariableDecl::group const):
(WGSL::AST::GlobalVariableDecl::binding const):
(WGSL::AST::GlobalVariableDecl::name const):
(WGSL::AST::GlobalVariableDecl::maybeQualifier):
(WGSL::AST::GlobalVariableDecl::maybeTypeDecl):
(WGSL::AST::GlobalVariableDecl::maybeInitializer):

  • WGSL/AST/Shader.h: Renamed from Source/WebGPU/WGSL/AST.h.
  • WGSL/AST/Statement.h: Added.

(WGSL::AST::Statement::Statement):
(WGSL::AST::Statement::kind const):
(WGSL::AST::Statement::isCompound const):
(WGSL::AST::Statement::isReturn const):
(WGSL::AST::Statement::isAssignment const):

  • WGSL/AST/Statements/AssignmentStatement.h: Added.

(WGSL::AST::AssignmentStatement::AssignmentStatement):
(WGSL::AST::AssignmentStatement::maybeLhs):
(WGSL::AST::AssignmentStatement::rhs):

  • WGSL/AST/Statements/ReturnStatement.h: Added.

(WGSL::AST::ReturnStatement::ReturnStatement):
(WGSL::AST::ReturnStatement::maybeExpression):

  • WGSL/AST/StructureDecl.h: Added.

(WGSL::AST::StructMember::StructMember):
(WGSL::AST::StructMember::setAttributes):
(WGSL::AST::StructMember::builtin const):
(WGSL::AST::StructMember::location const):
(WGSL::AST::StructMember::name const):
(WGSL::AST::StructMember::type):
(WGSL::AST::StructDecl::StructDecl):
(WGSL::AST::StructDecl::setAttributes):
(WGSL::AST::StructDecl::isBlock const):
(WGSL::AST::StructDecl::name const):
(WGSL::AST::StructDecl::members):

  • WGSL/AST/TypeDecl.h: Added.

(WGSL::AST::TypeDecl::TypeDecl):
(WGSL::AST::TypeDecl::kind const):
(WGSL::AST::TypeDecl::isNamed const):
(WGSL::AST::TypeDecl::isParameterized const):

  • WGSL/AST/VariableQualifier.h: Added.

(WGSL::AST::VariableQualifier::VariableQualifier):
(WGSL::AST::VariableQualifier::storageClass const):
(WGSL::AST::VariableQualifier::accessMode const):

  • WGSL/ASTNode.h: Added.

(WGSL::AST::ASTNode::ASTNode):
(WGSL::AST::ASTNode::span const):

  • WGSL/CompilationMessage.cpp: Added.

(WGSL::CompilationMessage::dump const):

  • WGSL/CompilationMessage.h: Added.

(WGSL::CompilationMessage::CompilationMessage):

  • WGSL/WGSL.cpp:
  • WGSL/WGSL.h:
  • WebGPU.xcodeproj/project.pbxproj:
12:15 PM Changeset in webkit [291004] by rmorisset@apple.com
  • 3 edits in trunk/Source/WebGPU

[WGSL] The lexer should use the functions from wtf/ASCIICType.h
​https://bugs.webkit.org/show_bug.cgi?id=236783

Reviewed by Darin Adler.

I was not aware of these functions when I wrote the lexer, and I ended up reimplementing them.
Reusing them is both simpler, and slightly more efficient as some of them (especially isASCIISpace) have been optimized.

  • WGSL/Lexer.cpp:

(WGSL::Lexer<T>::lex):
(WGSL::Lexer<T>::skipWhitespace):
(WGSL::Lexer<T>::parseDecimalInteger):
(WGSL::Lexer<T>::parseDecimalFloatExponent):
(WGSL::Lexer<T>::isWhiteSpace): Deleted.
(WGSL::Lexer<T>::isIdentifierStart): Deleted.
(WGSL::Lexer<T>::isValidIdentifierCharacter): Deleted.
(WGSL::Lexer<T>::isDecimal): Deleted.
(WGSL::Lexer<T>::isHexadecimal): Deleted.
(WGSL::Lexer<T>::readDecimal): Deleted.
(WGSL::Lexer<T>::readHexadecimal): Deleted.

  • WGSL/Lexer.h:
12:05 PM Changeset in webkit [291003] by Chris Dumez
  • 77 edits in trunk/Source

Optimize further the passing of data across threads
​https://bugs.webkit.org/show_bug.cgi?id=237568

Reviewed by Geoffrey Garen.

Optimize further the passing of data across threads by leveraging more broadly the optimized
versions of isolatedCopy() on r-value references.

Source/WebCore:

  • Modules/entriesapi/DOMFileSystem.cpp:

(WebCore::DOMFileSystem::listDirectory):
(WebCore::DOMFileSystem::getParent):
(WebCore::DOMFileSystem::getEntry):
(WebCore::DOMFileSystem::getFile):

  • Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp:

(WebCore::WorkerFileSystemStorageConnection::isSameEntry):
(WebCore::WorkerFileSystemStorageConnection::getFileHandle):
(WebCore::WorkerFileSystemStorageConnection::getDirectoryHandle):
(WebCore::WorkerFileSystemStorageConnection::removeEntry):
(WebCore::WorkerFileSystemStorageConnection::resolve):
(WebCore::WorkerFileSystemStorageConnection::getFile):
(WebCore::WorkerFileSystemStorageConnection::createSyncAccessHandle):
(WebCore::WorkerFileSystemStorageConnection::closeSyncAccessHandle):
(WebCore::WorkerFileSystemStorageConnection::getHandleNames):
(WebCore::WorkerFileSystemStorageConnection::getHandle):
(WebCore::WorkerFileSystemStorageConnection::move):

  • Modules/indexeddb/server/IDBConnectionToClientDelegate.h:
  • Modules/indexeddb/shared/IndexKey.cpp:

(WebCore::IndexKey::isolatedCopy const):
(WebCore::IndexKey::isolatedCopy):

  • Modules/indexeddb/shared/IndexKey.h:
  • Modules/storage/StorageManager.cpp:

(WebCore::StorageManager::fileSystemAccessGetDirectory):

  • Modules/storage/WorkerStorageConnection.cpp:

(WebCore::WorkerStorageConnection::fileSystemGetDirectory):

  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::registerProcessor):

  • crypto/CryptoAlgorithm.cpp:

(WebCore::dispatchAlgorithmOperation):

  • dom/ExceptionOr.h:
  • fileapi/ThreadableBlobRegistry.cpp:

(WebCore::ThreadableBlobRegistry::registerBlobURL):

  • fileapi/ThreadableBlobRegistry.h:
  • workers/service/SWClientConnection.cpp:

(WebCore::SWClientConnection::startScriptFetchForServer):

  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorkerClients.cpp:

(WebCore::ServiceWorkerClients::get):
(WebCore::ServiceWorkerClients::matchAll):

  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):
(WebCore::ServiceWorkerContainer::notifyFailedFetchingScript):

  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerJobClient.h:
  • workers/service/WorkerSWClientConnection.cpp:

(WebCore::WorkerSWClientConnection::registerServiceWorkerClient):
(WebCore::WorkerSWClientConnection::finishFetchingScriptInServer):
(WebCore::WorkerSWClientConnection::scheduleUnregisterJobInServer):
(WebCore::WorkerSWClientConnection::subscribeToPushService):
(WebCore::WorkerSWClientConnection::unsubscribeFromPushService):
(WebCore::WorkerSWClientConnection::getPushSubscription):
(WebCore::WorkerSWClientConnection::getPushPermissionState):

  • workers/service/WorkerSWClientConnection.h:
  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::RegistrationDatabase::doPushChanges):

  • worklets/Worklet.cpp:

(WebCore::Worklet::addModule):

Source/WebKit:

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::hasStorageAccess):
(WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal):
(WebKit::ResourceLoadStatisticsDatabaseStore::dumpResourceLoadStatistics):
(WebKit::ResourceLoadStatisticsDatabaseStore::clear):
(WebKit::ResourceLoadStatisticsDatabaseStore::updateCookieBlocking):

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::removeDataRecords):
(WebKit::ResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
(WebKit::ResourceLoadStatisticsStore::updateCookieBlockingForDomains):
(WebKit::ResourceLoadStatisticsStore::logTestingEvent):

  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::setPrevalentResourceForDebugMode):
(WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::grantStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
(WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::logCrossSiteLoadWithLinkDecoration):
(WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::setLastSeen):
(WebKit::WebResourceLoadStatisticsStore::mergeStatisticForTesting):
(WebKit::WebResourceLoadStatisticsStore::isRelationshipOnlyInDatabaseOnce):
(WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::dumpResourceLoadStatistics):
(WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubresourceUnder):
(WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubFrameUnder):
(WebKit::WebResourceLoadStatisticsStore::isRegisteredAsRedirectingTo):
(WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::setGrandfathered):
(WebKit::WebResourceLoadStatisticsStore::isGrandfathered):
(WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameDomain):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameDomain):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectFrom):
(WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectTo):
(WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectFrom):
(WebKit::WebResourceLoadStatisticsStore::deleteAndRestrictWebsiteDataForRegistrableDomains):
(WebKit::WebResourceLoadStatisticsStore::insertExpiredStatisticForTesting):

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::updateQuotaBasedOnSpaceUsageForTesting):
(WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFilesForIndexedDB):
(WebKit::NetworkConnectionToWebProcess::logUserInteraction):
(WebKit::NetworkConnectionToWebProcess::hasStorageAccess):
(WebKit::NetworkConnectionToWebProcess::requestStorageAccess):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::isGrandfathered):
(WebKit::NetworkProcess::isPrevalentResource):
(WebKit::NetworkProcess::isVeryPrevalentResource):
(WebKit::NetworkProcess::setGrandfathered):
(WebKit::NetworkProcess::setPrevalentResource):
(WebKit::NetworkProcess::setPrevalentResourceForDebugMode):
(WebKit::NetworkProcess::setVeryPrevalentResource):
(WebKit::NetworkProcess::clearPrevalentResource):
(WebKit::NetworkProcess::setSubframeUnderTopFrameDomain):
(WebKit::NetworkProcess::isRegisteredAsRedirectingTo):
(WebKit::NetworkProcess::isRegisteredAsSubFrameUnder):
(WebKit::NetworkProcess::setSubresourceUnderTopFrameDomain):
(WebKit::NetworkProcess::setSubresourceUniqueRedirectTo):
(WebKit::NetworkProcess::setSubresourceUniqueRedirectFrom):
(WebKit::NetworkProcess::isRegisteredAsSubresourceUnder):
(WebKit::NetworkProcess::setTopFrameUniqueRedirectTo):
(WebKit::NetworkProcess::setTopFrameUniqueRedirectFrom):
(WebKit::NetworkProcess::setLastSeen):
(WebKit::NetworkProcess::mergeStatisticForTesting):
(WebKit::NetworkProcess::insertExpiredStatisticForTesting):
(WebKit::NetworkProcess::logFrameNavigation):
(WebKit::NetworkProcess::logUserInteraction):
(WebKit::NetworkProcess::hadUserInteraction):
(WebKit::NetworkProcess::isRelationshipOnlyInDatabaseOnce):
(WebKit::NetworkProcess::clearUserInteraction):
(WebKit::NetworkProcess::didCommitCrossSiteLoadWithDataTransfer):
(WebKit::NetworkProcess::setCrossSiteLoadWithLinkDecorationForTesting):
(WebKit::NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains):
(WebKit::NetworkProcess::deleteCookiesForTesting):
(WebKit::NetworkProcess::registrableDomainsWithWebsiteData):
(WebKit::NetworkProcess::didIncreaseQuota):
(WebKit::NetworkProcess::renameOriginInWebsiteData):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::setResourceLoadStatisticsEnabled):
(WebKit::NetworkSession::deleteAndRestrictWebsiteDataForRegistrableDomains):

  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::clearForRegistrableDomain):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerProxy.cpp:

(WebKit::PCM::ManagerProxy::clearForRegistrableDomain):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerProxy.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.cpp:

(WebKit::PCM::Store::attributePrivateClickMeasurement):
(WebKit::PCM::Store::privateClickMeasurementToStringForTesting const):
(WebKit::PCM::Store::clearPrivateClickMeasurementForRegistrableDomain):
(WebKit::PCM::Store::clearSentAttribution):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.h:
  • NetworkProcess/WebStorage/LocalStorageDatabaseTracker.h:

(WebKit::LocalStorageDatabaseTracker::OriginDetails::isolatedCopy const):
(WebKit::LocalStorageDatabaseTracker::OriginDetails::isolatedCopy):

  • NetworkProcess/WebStorage/StorageManager.cpp:

(WebKit::StorageManager::getSessionStorageOriginsCrossThreadCopy const):
(WebKit::StorageManager::getLocalStorageOriginsCrossThreadCopy const):

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::writeFile):
(WebKit::CacheStorage::Engine::readFile):
(WebKit::CacheStorage::Engine::removeFile):
(WebKit::CacheStorage::Engine::writeSizeFile):
(WebKit::CacheStorage::Engine::getDirectories):
(WebKit::CacheStorage::Engine::clearCachesForOriginFromDirectories):
(WebKit::CacheStorage::Engine::deleteNonEmptyDirectoryOnBackgroundThread):

  • NetworkProcess/cache/CacheStorageEngine.h:
  • NetworkProcess/cache/CacheStorageEngineCache.cpp:

(WebKit::CacheStorage::RecordInformation::isolatedCopy):
(WebKit::CacheStorage::TraversalResult::isolatedCopy):
(WebKit::CacheStorage::Cache::open):
(WebKit::CacheStorage::isolatedCopy): Deleted.

  • NetworkProcess/cache/CacheStorageEngineCache.h:
  • NetworkProcess/cache/CacheStorageEngineCaches.cpp:

(WebKit::CacheStorage::Caches::retrieveOriginFromDirectory):
(WebKit::CacheStorage::Caches::clear):
(WebKit::CacheStorage::Caches::readCachesFromDisk):

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::clear):

  • NetworkProcess/cache/NetworkCacheIOChannel.h:

(WebKit::NetworkCache::IOChannel::open):

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::updateFileModificationTime):
(WebKit::NetworkCache::Storage::dispatchReadOperation):
(WebKit::NetworkCache::Storage::dispatchWriteOperation):
(WebKit::NetworkCache::Storage::traverse):
(WebKit::NetworkCache::Storage::clear):

  • NetworkProcess/cache/NetworkCacheStorage.h:
  • NetworkProcess/storage/IDBStorageConnectionToClient.cpp:

(WebKit::IDBStorageConnectionToClient::didGetAllDatabaseNamesAndVersions):

  • NetworkProcess/storage/IDBStorageConnectionToClient.h:
  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::didIncreaseQuota):
(WebKit::NetworkStorageManager::moveData):
(WebKit::NetworkStorageManager::registerTemporaryBlobFilePaths):
(WebKit::NetworkStorageManager::resetQuotaUpdatedBasedOnUsageForTesting):

  • NetworkProcess/storage/NetworkStorageManager.h:
  • Shared/API/APIString.h:
  • Shared/WebsiteData/WebsiteData.cpp:

(WebKit::WebsiteData::isolatedCopy const):
(WebKit::WebsiteData::isolatedCopy):
(WebKit::WebsiteData::Entry::isolatedCopy const):
(WebKit::WebsiteData::Entry::isolatedCopy):

  • Shared/WebsiteData/WebsiteData.h:
  • UIProcess/API/APIContentRuleListStore.cpp:

(API::createExtension):
(API::ContentRuleListStore::lookupContentRuleList):
(API::ContentRuleListStore::compileContentRuleList):
(API::ContentRuleListStore::removeContentRuleList):
(API::ContentRuleListStore::getContentRuleListSource):

  • UIProcess/API/APIContentRuleListStore.h:
  • UIProcess/API/glib/WebKitUserContentFilterStore.cpp:

(webkitUserContentFilterStoreSaveBytes):

  • UIProcess/DeviceIdHashSaltStorage.cpp:

(WebKit::DeviceIdHashSaltStorage::deleteHashSaltFromDisk):

  • UIProcess/DeviceIdHashSaltStorage.h:

(WebKit::DeviceIdHashSaltStorage::HashSaltForOrigin::HashSaltForOrigin):
(WebKit::DeviceIdHashSaltStorage::HashSaltForOrigin::isolatedCopy const):
(WebKit::DeviceIdHashSaltStorage::HashSaltForOrigin::isolatedCopy):

  • UIProcess/WebsiteData/WebsiteDataRecord.cpp:

(WebKit::WebsiteDataRecord::isolatedCopy const):
(WebKit::WebsiteDataRecord::isolatedCopy):

  • UIProcess/WebsiteData/WebsiteDataRecord.h:
  • WebProcess/Storage/WebSWClientConnection.cpp:

(WebKit::WebSWClientConnection::finishFetchingScriptInServer):
(WebKit::WebSWClientConnection::registerServiceWorkerClient):

  • WebProcess/Storage/WebSWClientConnection.h:
  • WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:

(WebKit::WebServiceWorkerFetchTaskClient::didReceiveFormDataAndFinish):

Source/WebKitLegacy:

  • Storage/InProcessIDBServer.cpp:

(InProcessIDBServer::didGetAllDatabaseNamesAndVersions):

  • Storage/InProcessIDBServer.h:
  • Storage/StorageTracker.cpp:

(WebKit::StorageTracker::deleteOrigin):

11:29 AM Changeset in webkit [291002] by Russell Epstein
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.9

11:27 AM Changeset in webkit [291001] by sihui_liu@apple.com
  • 4 edits in trunk/Source

Disable CFURLCache in WebKit
​https://bugs.webkit.org/show_bug.cgi?id=237575

Reviewed by Geoffrey Garen.

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::addStorageSession):

Source/WebKitLegacy:

  • WebCoreSupport/NetworkStorageSessionMap.cpp:

(NetworkStorageSessionMap::ensureSession):

11:17 AM Changeset in webkit [291000] by Russell Epstein
  • 113 edits
    10 adds in branches/safari-613-branch

Cherry-pick r288701. rdar://problem/83734079

"Unrecognized Content-Security-Policy directive 'worker-src'."
​https://bugs.webkit.org/show_bug.cgi?id=235260
<rdar://problem/83734079>

Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

  • web-platform-tests/content-security-policy/child-src/child-src-cross-origin-load.sub-expected.txt:
  • web-platform-tests/content-security-policy/child-src/child-src-worker-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-self/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-self/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-wildcard/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/script-src-wildcard/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-classic.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-classic.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-module.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-module.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-classic.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-classic.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-import.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-import.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-module.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-none/worker-module.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-wildcard/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-wildcard/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-self/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-self/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-self/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-self/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-wildcard/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/script-src-wildcard/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/dedicated-fallback.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/dedicated-none.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/dedicated-worker-src-child-fallback-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/dedicated-worker-src-script-fallback.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/dedicated-worker-src-self-fallback.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/service-none.https.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/service-worker-src-child-fallback-blocked.https.sub-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/shared-child.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-fallback.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-list.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-none.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-self.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-worker-src-child-fallback-blocked.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-worker-src-child-fallback.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-worker-src-default-fallback.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-worker-src-script-fallback.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/worker-src/shared-worker-src-self-fallback.sub-expected.txt: Added.
  • web-platform-tests/content-security-policy/blob/self-doesnt-match-blob.sub-expected.txt:
  • web-platform-tests/content-security-policy/blob/star-doesnt-match-blob.sub-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/sharedworker-classic.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/sharedworker-classic.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/sharedworker-module.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/sharedworker-module.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-classic.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-classic.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-import.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-import.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-module.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-none/worker-module.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import-data.https-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-self/worker-import-data.http-expected.txt:
  • web-platform-tests/content-security-policy/gen/top.meta/worker-src-self/worker-import-data.https-expected.txt:

Source/WebCore:

Implementation of worker-src directive. According to ​https://www.w3.org/TR/CSP3/#changes-from-level-2
the worker-src directive now restricts URLs that can be loaded by
workers, and defers to child-src if not specified.

  • bindings/js/WorkerModuleScriptLoader.cpp: (WebCore::WorkerModuleScriptLoader::load): Check worker-src instead of child-src for worker loads.
  • loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::isAllowedByContentSecurityPolicy):
  • loader/ThreadableLoader.h: Check worker-src instead of child-src for worker loads.
  • page/csp/ContentSecurityPolicy.cpp: We can remove allowChildContextFromSource which is now fully replaced by allowWorkerFromSource.

(WebCore::ContentSecurityPolicy::allowWorkerFromSource const):
(WebCore::ContentSecurityPolicy::allowChildContextFromSource const): Deleted.

  • page/csp/ContentSecurityPolicy.h:
  • page/csp/ContentSecurityPolicyDirectiveList.cpp: (WebCore::ContentSecurityPolicyDirectiveList::operativeDirectiveForWorkerSrc const): worker-src defers to child-src, then script-src, then default-src.

(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForWorker):
(WebCore::ContentSecurityPolicyDirectiveList::addDirective):

  • page/csp/ContentSecurityPolicyDirectiveList.h:
  • page/csp/ContentSecurityPolicyDirectiveNames.cpp:
  • page/csp/ContentSecurityPolicyDirectiveNames.h:
  • workers/AbstractWorker.cpp: (WebCore::AbstractWorker::resolveURL):
  • workers/AbstractWorker.h: We check LegacySchemeRegistry::schemeShouldBypassContentSecurityPolicy in allowWorkerFromSource, so we don't need to check in in AbstractWorker::resolveURL anymore. We can also replace the child-src checks with worker-src ones.
  • workers/Worker.cpp: (WebCore::Worker::create):
  • workers/WorkerFontLoadRequest.cpp: (WebCore::WorkerFontLoadRequest::load):
  • workers/service/ServiceWorkerContainer.cpp: (WebCore::ServiceWorkerContainer::addRegistration): Block service worker registrations not specified by worker-src.
  • workers/shared/SharedWorker.cpp: (WebCore::SharedWorker::create): Block shared worker urls not specified by worker-src.
  • workers/shared/SharedWorkerScriptLoader.cpp: (WebCore::SharedWorkerScriptLoader::SharedWorkerScriptLoader):

Source/WebKit:

  • NetworkProcess/NetworkLoadChecker.cpp: (WebKit::NetworkLoadChecker::isAllowedByContentSecurityPolicy):

LayoutTests:

Update tests now that worker-src defaults eventually to script-src.
Since this was not the case with child-src, legacy CSP tests do not
expect script-src policies to affect workers. We can fix this by
specifying a separate worker-src policy for these tests to maintain
behavior.

  • TestExpectations: Some wpt tests log random URL strings that change for every test iteration. For now we can't unskip those.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-blocks-eval.html:
  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-importScripts-block-aborts-all-subsequent-imports.html:
  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-importScripts-redirect-cross-origin-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp.html:
  • http/tests/security/contentSecurityPolicy/worker-script-src.html:
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker-blob-eval.html:
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker-blob-importScript-redirect-cross-origin.html:
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker-blob-xhr.html:
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker.html:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@288701 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:12 AM Changeset in webkit [290999] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebCore

UniqueIDBDatabase::didFireVersionChangeEvent should capture identifier of UniqueIDBDatabaseConnection
​https://bugs.webkit.org/show_bug.cgi?id=236950
rdar://problem/89218299

Reviewed by Chris Dumez.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::didFireVersionChangeEvent):

10:40 AM Changeset in webkit [290998] by sihui_liu@apple.com
  • 7 edits in trunk

File System Access: disallow empty name in FileSystemHandle
​https://bugs.webkit.org/show_bug.cgi?id=237563

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any.worker-expected.txt:

Source/WebKit:

Updated expectations of imported wpt tests.

  • NetworkProcess/storage/FileSystemStorageHandle.cpp:

(WebKit::isValidFileName):

9:29 AM Changeset in webkit [290997] by Peng Liu
  • 5 edits in trunk/Source/WebCore

[iOS] Flash media controls when a fullscreen video resets its source
​https://bugs.webkit.org/show_bug.cgi?id=237493

Reviewed by Jer Noble.

Source/WebCore:

Some pages reset the fullscreen video's source when a user rotates the device.
The screen will become black for a while, and users might think the player is broken.
With this patch, the player will show the media controls for 1 second when the source
is changed, so that users will know the player is working.

  • platform/ios/VideoFullscreenInterfaceAVKit.h:
  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

_presentingViewController is only used for watchOS.
(-[WebAVPlayerViewController flashPlaybackControlsWithDuration:]):
(VideoFullscreenInterfaceAVKit::setPlayerIdentifier):

Source/WebCore/PAL:

  • pal/spi/cocoa/AVKitSPI.h:
9:15 AM Changeset in webkit [290996] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Expand adattributiond sandbox to prevent sandbox exceptions during main functionality
​https://bugs.webkit.org/show_bug.cgi?id=237580
<rdar://89855243>

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-08
Reviewed by Per Arne Vollan.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb:
9:03 AM Changeset in webkit [290995] by achristensen@apple.com
  • 29 edits
    15 adds
    32 deletes in trunk

WebSocket.send() should synchronously update bufferedAmount
​https://bugs.webkit.org/show_bug.cgi?id=235707

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/websockets/Send-binary-65K-arraybuffer.any.worker-expected.txt:
  • web-platform-tests/websockets/Send-binary-arraybuffer.any.worker-expected.txt:
  • web-platform-tests/websockets/Send-data.any.worker-expected.txt:
  • web-platform-tests/websockets/Send-paired-surrogates.any.worker-expected.txt:
  • web-platform-tests/websockets/Send-unicode-data.any.worker-expected.txt:
  • web-platform-tests/websockets/bufferedAmount-unchanged-by-sync-xhr.any.worker-expected.txt:
  • web-platform-tests/websockets/interfaces/WebSocket/close/close-basic-expected.txt:
  • web-platform-tests/websockets/interfaces/WebSocket/close/close-connecting-expected.txt:

Source/WebCore:

This matches the behavior of Chrome and Firefox and is covered by web platform tests.

  • Modules/websockets/ThreadableWebSocketChannel.h:
  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::send):

  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::send):
(WebCore::WebSocketChannel::enqueueTextFrame):

  • Modules/websockets/WebSocketChannel.h:
  • Modules/websockets/WorkerThreadableWebSocketChannel.cpp:

(WebCore::WorkerThreadableWebSocketChannel::send):
(WebCore::WorkerThreadableWebSocketChannel::Peer::send):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::send):

  • Modules/websockets/WorkerThreadableWebSocketChannel.h:

Source/WebKit:

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::send):

  • WebProcess/Network/WebSocketChannel.h:
8:56 AM Changeset in webkit [290994] by Kate Cheney
  • 3 edits in trunk/Source/WebCore

REGRESSION (r290853): CrashTracer: com.apple.WebKit.WebContent.Development at com.apple.WebCore: WebCore::FrameLoader::clear
​https://bugs.webkit.org/show_bug.cgi?id=237565
<rdar://problem/88356074>

Reviewed by Chris Dumez.

No new tests. Fixes crashing test: accessibility/mac/value-change/value-change-user-info-textarea.html

newDocument may be the frame's document. We should make it a RefPtr
because it could get set to null in this function.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::clear):

  • loader/FrameLoader.h:
8:42 AM Changeset in webkit [290993] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Enable ThinLTO
​https://bugs.webkit.org/show_bug.cgi?id=229019
<rdar://problem/82107543>

Reviewed by Mark Lam.

It's a 1% speedup on Speedometer2 across x86 and arm64, and 0.5-1% speedup on
JetStream2 depending on the device.

  • Configurations/Base.xcconfig:
8:24 AM Changeset in webkit [290992] by Chris Dumez
  • 3 edits in trunk/LayoutTests

Unreviewed, silence console logging for http/tests/security/cookie-module-import-propagate.html
<rdar://88842347>

This is to address flakiness on the bots.

  • TestExpectations:
  • http/tests/security/cookie-module-import-propagate-expected.txt:
8:17 AM Changeset in webkit [290991] by J Pascoe
  • 3 edits in trunk/LayoutTests

[ iOS ] 2X http/wpt/webauthn/public-key-credential-create-failure-local (layout-tests) are constant text failures
​https://bugs.webkit.org/show_bug.cgi?id=237548
rdar://problem/89923849

Unreviewed test gardening.

These console messages differing is causing test failures, fixing expectations.

  • http/wpt/webauthn/public-key-credential-create-failure-local-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-local.https-expected.txt:
7:37 AM Changeset in webkit [290990] by Chris Dumez
  • 8 edits in trunk/Source/JavaScriptCore

Unreviewed, reverting r290975.

Broke the build for some configurations

Reverted changeset:

"[XCBuild] Emit a discovered dependency file from offlineasm"
​https://bugs.webkit.org/show_bug.cgi?id=237329
​https://commits.webkit.org/r290975

7:33 AM Changeset in webkit [290989] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit

Remove unneeded Async keywords in messages.in files after r290903
​https://bugs.webkit.org/show_bug.cgi?id=237574

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-08
Reviewed by Chris Dumez.

  • GPUProcess/graphics/wc/RemoteWCLayerTreeHost.messages.in:
  • Scripts/webkit/tests/TestWithSuperclass.messages.in:
  • WebProcess/glib/UserMediaCaptureManager.messages.in:
6:50 AM Changeset in webkit [290988] by commit-queue@webkit.org
  • 12 edits in trunk/Source

[GTK] Sync gtk-overlay-scrolling setting to web process
​https://bugs.webkit.org/show_bug.cgi?id=236476

Patch by Michael Catanzaro <Michael Catanzaro> on 2022-03-08
Reviewed by Adrian Perez de Castro.

Source/WebCore:

  • platform/adwaita/ScrollbarThemeAdwaita.cpp:

(WebCore::ScrollbarThemeAdwaita::usesOverlayScrollbars const):

  • platform/gtk/GtkUtilities.cpp:

(WebCore::shouldUseOverlayScrollbars):

  • platform/gtk/GtkUtilities.h:
  • platform/gtk/RenderThemeScrollbar.cpp:

(WebCore::RenderThemeScrollbar::RenderThemeScrollbar):

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::ScrollbarThemeGtk::ScrollbarThemeGtk):

Source/WebKit:

  • Shared/gtk/GtkSettingsState.cpp:

(WebKit::GtkSettingsState::encode const):
(WebKit::GtkSettingsState::decode):

  • Shared/gtk/GtkSettingsState.h:
  • UIProcess/gtk/GtkSettingsManager.cpp:

(WebKit::GtkSettingsManager::overlayScrolling const):
(WebKit::GtkSettingsManager::settingsDidChange):
(WebKit::GtkSettingsManager::GtkSettingsManager):

  • UIProcess/gtk/GtkSettingsManager.h:
  • WebProcess/gtk/GtkSettingsManagerProxy.cpp:

(WebKit::GtkSettingsManagerProxy::applySettings):

5:42 AM Changeset in webkit [290987] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/ANGLE

ANGLE display cache does not work with explicit device ids
​https://bugs.webkit.org/show_bug.cgi?id=237522

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-08
Reviewed by Kenneth Russell.
Add EGL_PLATFORM_ANGLE_DEVICE_ID_HIGH_ANGLE, EGL_PLATFORM_ANGLE_DEVICE_ID_LOW_ANGLE
to the display cache key, so that a request for a display with an explicit device does
not get resolved with a display without explicit device or with a display with another
explicit device.

WebKit tests will be added once this will be used.
ANGLE tests will be added once upstreamed.

  • src/libANGLE/Display.cpp:

(egl::Display::GetDisplayFromNativeDisplay):
(egl::Display::~Display):

5:31 AM Changeset in webkit [290986] by calvaris@igalia.com
  • 2 edits in trunk/Source/WebCore

[EME][Thunder] Disable hasBrokenEncryptedMediaAPISupportQuirk
​https://bugs.webkit.org/show_bug.cgi?id=237595

Reviewed by Philippe Normand.

Hulu and YouTube work fine with Thunder, no need for this quirk.

Patch based on one by Eugene Mutavchi <​Ievgen_Mutavchi@comcast.com>.

  • page/Quirks.cpp:

(WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const):
Return false if Thunder build is enabled.

4:24 AM Changeset in webkit [290985] by youenn@apple.com
  • 45 edits
    2 adds in trunk

Add a preference to mute video capture in case audio capture gets interrupted
​https://bugs.webkit.org/show_bug.cgi?id=237524
<rdar://78421282>

Reviewed by Eric Carlson.

Source/WebCore:

In case we detect that a microphone track source gets muted due to interruption, we mute
capture video tracks based if allowed by the new MuteCameraOnMicrophoneInterruptionEnabled setting.

Add support for mock microphone interruption and remove previous in process internals API.

Test: fast/mediastream/media-stream-video-track-interrupted-from-audio.html

  • Modules/mediastream/MediaStreamTrack.cpp:
  • Modules/mediastream/MediaStreamTrack.h:
  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:
  • platform/mediastream/mac/CoreAudioCaptureSource.h:
  • platform/mock/MockRealtimeAudioSource.cpp:

(WebCore::MockRealtimeAudioSource::setIsInterrupted):

  • platform/mock/MockRealtimeAudioSource.h:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp:

(WebCore::MockRealtimeMediaSourceCenter::setMockCaptureDevicesInterrupted):
(WebCore::MockRealtimeMediaSourceCenter::setMockCameraIsInterrupted): Deleted.

  • platform/mock/MockRealtimeMediaSourceCenter.h:

Source/WebKit:

Add support for interrupt mock microphone devices.
Send to WebProcess sources whether sources are interrupted each time the source muted value changes.
Store that value in remote sources.

  • GPUProcess/GPUProcess.cpp:
  • GPUProcess/GPUProcess.h:
  • GPUProcess/GPUProcess.messages.in:
  • UIProcess/API/C/WKPage.cpp:
  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
  • UIProcess/GPU/GPUProcessProxy.cpp:
  • UIProcess/GPU/GPUProcessProxy.h:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/cocoa/RemoteRealtimeAudioSource.h:
  • WebProcess/cocoa/RemoteRealtimeDisplaySource.h:
  • WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.cpp:
  • WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.h:
  • WebProcess/cocoa/RemoteRealtimeVideoSource.h:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:
  • WebProcess/cocoa/UserMediaCaptureManager.h:
  • WebProcess/cocoa/UserMediaCaptureManager.messages.in:

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Tools:

Add support for interrupt mock microphone devices.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:
  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:
  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

LayoutTests:

  • fast/mediastream/media-stream-video-track-interrupted-from-audio-expected.txt: Added.
  • fast/mediastream/media-stream-video-track-interrupted-from-audio.html: Added.
  • fast/mediastream/media-stream-video-track-interrupted.html: Migrated to testRunner API.
  • fast/mediastream/track-ended-while-muted.html:
  • platform/glib/TestExpectations:
4:21 AM Changeset in webkit [290984] by eocanha@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Handle gst pad error as format error
​https://bugs.webkit.org/show_bug.cgi?id=237526

Reviewed by Xabier Rodriguez-Calvar.

This patch is authored by Eugene Mutavchi <​Ievgen_Mutavchi@comcast.com>
See: ​https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/797

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
1:25 AM Changeset in webkit [290983] by commit-queue@webkit.org
  • 4 edits
    4 moves
    1 add in trunk/Source/WebCore

PDF.js content script is adding custom cocoa style unconditionally
​https://bugs.webkit.org/show_bug.cgi?id=237516

Patch by Carlos Garcia Campos <​cgarcia@igalia.com> on 2022-03-08
Reviewed by Tim Nguyen.

Add the custom style from the WebKit code instead of injected content script to make it easier to add the style
depending on the platform. Move current cocoa specific style files to a cocoa directory.

(const.PDFJSContentScript.injectStyle): Deleted.
(const.PDFJSContentScript.init): Deleted.

  • html/PDFDocument.cpp:

(WebCore::PDFDocumentEventListener::handleEvent):
(WebCore::PDFDocument::injectStyleAndContentScript):
(WebCore::PDFDocument::injectContentScript): Deleted.

  • html/PDFDocument.h:
1:13 AM Changeset in webkit [290982] by Carlos Garcia Campos
  • 3 edits in trunk/Tools

[GTK][WPE] Do not add new modules under ThirdParty to the tarball
​https://bugs.webkit.org/show_bug.cgi?id=237519

Reviewed by Michael Catanzaro.

We currently include ThirdParty and exclude individually what we don't want in the tarball. That means every
time something new is added to ThirdParty we have to manually exclude it. It's better to exclude ThirdParty and
manually add what we need instead.

  • gtk/manifest.txt.in:
  • wpe/manifest.txt.in:
1:09 AM Changeset in webkit [290981] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Remove invalid ASSERT in LocaleIDBuilder::overrideLanguageScriptRegion().
​https://bugs.webkit.org/show_bug.cgi?id=237573
<rdar://problem/83326232>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/handle-empty-localeID-in-localeIDBufferForLanguageTagWithNullTerminator.js: Added.

Source/JavaScriptCore:

The ASSERT(length) in LocaleIDBuilder::overrideLanguageScriptRegion() is simply
incorrect. The length can be 0 if uloc_forLanguageTag returns a 0 length in
localeIDBufferForLanguageTagWithNullTerminator(). LocaleIDBuilder::overrideLanguageScriptRegion()
already handles this scenario correctly. We just need to remove this incorrect ASSERT.

Also verified that we're producing the same result on the attached test case as
Chrome and Firefox produces.

  • runtime/IntlObject.cpp:

(JSC::localeIDBufferForLanguageTagWithNullTerminator):

12:55 AM Changeset in webkit [290980] by Fujii Hironori
  • 5 edits in trunk/Source/WebCore

[WinCairo] GraphicsContextGL should have one more output texture for double buffering WebGL
​https://bugs.webkit.org/show_bug.cgi?id=237460

Reviewed by Žan Doberšek.

WinCairo's GraphicsContextGL had only a single output texture. If the
page was interactive WebGL, the user interaction was causing the
rendering to the texture while the compositor is running.

Coordinated Graphics has another output texture m_compositorTexture.
This change reuses the code for WinCairo.

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLANGLE::prepareTextureImpl):

  • platform/graphics/angle/GraphicsContextGLANGLE.h:
  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:

(WebCore::GraphicsContextGLTextureMapper::platformInitialize):
(WebCore::GraphicsContextGLANGLE::~GraphicsContextGLANGLE):
(WebCore::GraphicsContextGLTextureMapper::reshapeDisplayBufferBacking):

  • platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:

(WebCore::TextureMapperGCGLPlatformLayer::paintToTextureMapper):

12:53 AM Changeset in webkit [290979] by youenn@apple.com
  • 8 edits in trunk

Improve WebRTC VPX media capabilities accuracy
​https://bugs.webkit.org/show_bug.cgi?id=237462

Reviewed by Eric Carlson.

Source/WebCore:

Reuse VPx decoder media capabilities routines for WebRTC.
Use caseless string comparison for content type.
Covered by updated tests.

  • platform/graphics/cocoa/VP9UtilitiesCocoa.h:
  • platform/graphics/cocoa/VP9UtilitiesCocoa.mm:
  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

LayoutTests:

  • webrtc/video-mute-vp8.html:
  • webrtc/vp9-expected.txt:
  • webrtc/vp9.html:
12:06 AM Changeset in webkit [290978] by sihui_liu@apple.com
  • 4 edits in trunk

Add early return for empty path in makeAllDirectories
​https://bugs.webkit.org/show_bug.cgi?id=237540
rdar://89901536

Reviewed by Chris Dumez.

Source/WTF:

  • wtf/posix/FileSystemPOSIX.cpp:

(WTF::FileSystemImpl::makeAllDirectories):

Tools:

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::TEST_F):

12:01 AM Changeset in webkit [290977] by Chris Dumez
  • 3 edits
    9 deletes in trunk/LayoutTests

Resync web-platform-tests/beacon from upstream
​https://bugs.webkit.org/show_bug.cgi?id=237536

LayoutTests/imported/w3c:

Unreviewed, drop web-platform-tests/beacon tests that are no longer upstream (as of 30d5f8f4c7687a4f2c0).

  • web-platform-tests/beacon/beacon-basic-blob-expected.txt: Removed.
  • web-platform-tests/beacon/beacon-navigate-expected.txt: Removed.
  • web-platform-tests/beacon/beacon-redirect.sub.window-expected.txt: Removed.
  • web-platform-tests/beacon/beacon-redirect.sub.window.html: Removed.
  • web-platform-tests/beacon/resources/beacon-preflight.py: Removed.

(respondToCORSPreflight): Deleted.
(main): Deleted.

  • web-platform-tests/beacon/resources/redirect.py: Removed.

(main): Deleted.

  • web-platform-tests/beacon/resources/upgrade-iframe.html: Removed.
  • web-platform-tests/beacon/upgrade-beacon.https-expected.txt: Removed.
  • web-platform-tests/beacon/upgrade-beacon.https.html: Removed.

LayoutTests:

Unreviewed, drop web-platform-tests/beacon tests that are no longer upstream.

Mar 7, 2022:

11:28 PM Changeset in webkit [290976] by Simon Fraser
  • 16 edits in trunk/Source

Rename VolatilityState to SetNonVolatileResult
​https://bugs.webkit.org/show_bug.cgi?id=237562

Reviewed by Tim Horton.

Pure rename. I want to use VolatilityState to actually reflect state.

Source/WebCore:

  • platform/graphics/ConcreteImageBuffer.h:
  • platform/graphics/ImageBuffer.h:
  • platform/graphics/ImageBufferBackend.h:

(WebCore::ImageBufferBackend::setNonVolatile):

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:

(WebCore::ImageBufferIOSurfaceBackend::setNonVolatile):

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.h:
  • platform/graphics/cocoa/IOSurface.h:
  • platform/graphics/cocoa/IOSurface.mm:

(WebCore::IOSurface::state const):
(WebCore::IOSurface::setVolatile):
(WebCore::operator<<):

Source/WebKit:

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::markSurfaceNonVolatile):
(WebKit::RemoteRenderingBackend::swapToValidFrontBuffer):

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::setBufferNonVolatile):
(WebKit::RemoteLayerBackingStore::didMakeFrontBufferNonVolatile):

  • UIProcess/ViewSnapshotStore.h:
  • UIProcess/mac/ViewSnapshotStoreMac.mm:

(WebKit::ViewSnapshot::setVolatile):
(WebKit::ViewSnapshot::asLayerContents):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::markSurfaceNonVolatile):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
11:18 PM Changeset in webkit [290975] by Elliott Williams
  • 8 edits in trunk/Source/JavaScriptCore

[XCBuild] Emit a discovered dependency file from offlineasm
​https://bugs.webkit.org/show_bug.cgi?id=237329

Reviewed by Keith Miller.

Xcode needs to know what files offlineasm uses and produces in order to schedule it
correctly in incremental builds. Rather than use generated xcfilelists like WebKit does
elsewhere in the project, emit a depfile from offlineasm based on the parse tree's source
files.

Discovered dependency files ("depfiles") are Makefile-formatted files which list the inputs
used to produce an output. They are emitting during the build to a temporary directory, and
ensure that subsequent incremental builds will re-run offlineasm when any of the included
sources change. This is the same mechanism clang uses to track header dependencies.

Unfortunately, the legacy build system will refuse to execute a script phase or rule that
emits a depfile. To work around this, convert the offlineasm pipeline to be based on build
rules, to be used by XCBuild only. The idea is that LowLevelInterpreter.asm is listed as a
source build file in JSCLLIntSettingsExtractor, JSCLLIntOffsetsExtractor, and
JavaScriptCore. Each target uses a build rule to generate its respective header from
LowLevelInterpreter.asm. Xcode schedules these rule executions before any clang tasks.

The legacy build system avoids executing the rules via EXCLUDED_SOURCE_FILE_NAMES, and
instead uses the existing build phases, which have "(Legacy)" in their names and are now
no-ops under XCBuild.

Aside from working around the legacy build system's limitations, using build rules is
probably a superior way to express what we're doing, as it gives Xcode the opportunity to
compile other objects in parallel, and could be easily extended to compile multiple discrete
asm files should the need arise.

  • Configurations/ToolExecutable.xcconfig: Build rules are XCBuild-only.
  • JavaScriptCore.xcodeproj/project.pbxproj: Add build rules, rename legacy scripts.
  • offlineasm/asm.rb: Add --depfile flag.
  • offlineasm/generate_offset_extractor.rb: Add --depfile flag.
  • offlineasm/generate_settings_extractor.rb: Add --depfile flag.
10:41 PM Changeset in webkit [290974] by achristensen@apple.com
  • 4 edits
    1 delete in trunk/Source/ThirdParty/libwebrtc

Unreviewed, reverting r290966.

Broke ews and make

Reverted changeset:

"[XCBuild] libwebrtc's headers are copied via rsync and do not
emit task outputs"
​https://bugs.webkit.org/show_bug.cgi?id=237112
​https://commits.webkit.org/r290966

9:18 PM Changeset in webkit [290973] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r290961. rdar://problem/89912760

[macCatalyst] Compilation error: WebContentProcess.xib: error: macOS xibs do not support target device type "ipad".
​https://bugs.webkit.org/show_bug.cgi?id=237549
rdar://89912760

Patch by Richard Houle <​rhoule@apple.com> on 2022-03-07
Reviewed by Alexey Proskuryakov.

Xcode for macOS 12.5 complains that we bundle Mac XIBs inside our macCatalyst builds.

  • Configurations/BaseXPCService.xcconfig:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290961 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:27 PM Changeset in webkit [290972] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the build

  • platform/graphics/GraphicsContext.h:
7:07 PM Changeset in webkit [290971] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

Remove remnants of WebKit.Plugin.64.xpc service
​https://bugs.webkit.org/show_bug.cgi?id=237555
<rdar://84485232>

Reviewed by Alexey Proskuryakov.

Although plugins have been disabled for a number of years, the actual code behind this
feature was only removed this cycle (see Bugs 232462, 234354, and 234379). I noticed a few
remaining bits of the removed plugin process that should also be cleaned up.

  • Scripts/process-entitlements.sh:
  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:

(WebKit::XPCServiceEventHandler):

  • Shared/mac/AuxiliaryProcessMac.mm:

(WebKit::sandboxDirectory):
(WebKit::applySandbox):

7:00 PM Changeset in webkit [290970] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

Fix Release builds for sanitizers by defining RELEASE_WITHOUT_OPTIMIZATIONS
<​https://webkit.org/b/237556>
<rdar://problem/89929061>

Reviewed by Kate Cheney.

  • sanitizer/sanitizer.xcconfig:

(OTHER_CFLAGS): Add -DRELEASE_WITHOUT_OPTIMIZATIONS so Release
builds at lower optimization levels don't fail.

6:12 PM Changeset in webkit [290969] by pvollan@apple.com
  • 10 edits in trunk/Source

Preconnecting after process swap is a page load time improvement on some devices
​https://bugs.webkit.org/show_bug.cgi?id=237055
<rdar://problem/89638872>

Reviewed by Geoffrey Garen.

Source/WebCore:

Export method.

  • platform/network/NetworkLoadMetrics.h:

Source/WebKit:

On some devices we see that doing a second preconnect on HTTP/1.1 is a significant page load time improvement.
This is due to the fact that most page loads on HTTP/1.1 will open several connections, and having two
preconnected connections instead of one, will speed up page load time. This patch implements this by starting
a second preconnect after the first has finished. It is important to wait until the first preconnect has
finished, otherwise the second preconnect will go to waste, since the underlying network layer does not yet
know if this is HTTP/1.1 or not. Since we do not see page load time improvement on iOS with this behavior,
it is currently only enabled for macOS. The next step is to investigate why it does not seem to be a page
load time improvement on iOS. We probably need to make sure the main resource load has started before we
start the second preconect. This will avoid that the second preconnect returns immediately.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::sendH2Ping):
(WebKit::NetworkConnectionToWebProcess::preconnectTo):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::preconnectTo):

  • NetworkProcess/PreconnectTask.cpp:

(WebKit::PreconnectTask::PreconnectTask):
(WebKit::PreconnectTask::didFinishLoading):
(WebKit::PreconnectTask::didFailLoading):
(WebKit::PreconnectTask::didFinish):

  • NetworkProcess/PreconnectTask.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:

(WebKit::NetworkCache::SpeculativeLoadManager::preconnectForSubresource):

Source/WTF:

Add ENABLE guard for this behavior.

  • wtf/PlatformEnableCocoa.h:
5:39 PM Changeset in webkit [290968] by Jean-Yves Avenard
  • 6 edits in trunk

Add ability to convert FragmentedSharedBuffer to CMBlockBuffer
​https://bugs.webkit.org/show_bug.cgi?id=237075
Source/WebCore:

rdar://89338447

Reviewed by Jer Noble.

Add FragmentedSharedBuffer::getContiguousData and
FragmentedSharedBuffer::createCMBlockBuffer methods.

API tests added for getContiguousData.
createCMBlockBuffer will be used in a follow-up patch.

  • platform/SharedBuffer.cpp:

(WebCore::FragmentedSharedBuffer::getContiguousData const):

  • platform/SharedBuffer.h:
  • platform/cocoa/SharedBufferCocoa.mm:

(WebCore::FreeSharedBuffer):
(WebCore::FragmentedSharedBuffer::createCMBlockBuffer const):

Tools:

Reviewed by Jer Noble.

  • TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp:

(TestWebKitAPI::TEST_F):

5:28 PM Changeset in webkit [290967] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r285688. rdar://problem/85307256

[macOS] Add required methods to IOKit message filter
​https://bugs.webkit.org/show_bug.cgi?id=233012
<rdar://85307256>

Reviewed by Brent Fulgham.

Add required methods to IOKit message filter on macOS.

  • WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@285688 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5:26 PM Changeset in webkit [290966] by Elliott Williams
  • 4 edits
    1 add in trunk/Source/ThirdParty/libwebrtc

[XCBuild] libwebrtc's headers are copied via rsync and do not emit task outputs
​https://bugs.webkit.org/show_bug.cgi?id=237112

Reviewed by Alexey Proskuryakov.

Reconfigure the Xcode project to copy libwebrtc's headers natively, using the same approach
as ​https://commits.webkit.org/247585@main and ​https://commits.webkit.org/247656@main.

Add a target for absl's headers, so that they can be copied and configured separately from
webrtc's headers. This target does not have any source files, so it is effectively
headers-only.

libwebrtc.xcodeproj is very messy and doesn't always align with the on-disk representation
of the project's sources, but I have combed through all the source directories to ensure
that all headers which aren't obviously testing or non-Mac-related are included.

  • Configurations/Base.xcconfig: Copy WK_WHICH_BUILD_SYSTEM from other projects.
  • Configurations/libabsl.xcconfig: Added.
  • Configurations/libwebrtc.xcconfig: Set header-related build settings.
  • libwebrtc.xcodeproj/project.pbxproj: Tons of header additions and visibility changes.
4:32 PM Changeset in webkit [290965] by Andres Gonzalez
  • 5 edits
    2 adds in trunk

Fix for <select> elements in isolated tree mode.
​https://bugs.webkit.org/show_bug.cgi?id=237483
rdar://89530022

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/dropdown-value.html

AXObjectCache was not updating the isolated tree for
AXMenuListValueChanged notifications. Added handleMenuListValueChanged()
for this purpose.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::performDeferredCacheUpdate):
(WebCore::AXObjectCache::handleMenuListValueChanged):
(WebCore::AXObjectCache::updateIsolatedTree):

  • accessibility/AXObjectCache.h:

LayoutTests:

  • accessibility/dropdown-value-expected.txt: Added.
  • accessibility/dropdown-value.html: Added.
4:00 PM Changeset in webkit [290964] by Jean-Yves Avenard
  • 9 edits
    1 add in trunk

MediaTime::invalidTime() conversion to CMTime incorrectly creates a valid time.
​https://bugs.webkit.org/show_bug.cgi?id=237473
rdar://problem/89814921

Reviewed by Jer Noble.

Source/WebCore:

Fly-by fix: update call to AVOutputContextOutputDevicesDidChangeNotification
now that the access macro got fixed.

API Test added.

  • platform/audio/ios/MediaSessionHelperIOS.mm:

(-[WebMediaSessionHelper startMonitoringAirPlayRoutes]):

  • platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.mm:

(WebCore::AVRoutePickerViewTargetPicker::outputContextInternal):
(WebCore::AVRoutePickerViewTargetPicker::routeDetector):
(WebCore::AVRoutePickerViewTargetPicker::invalidatePlaybackTargets):
(-[WebAVRoutePickerViewHelper notificationHandler:]):

Source/WebCore/PAL:

Fly-by fix: macro definition to access method
AVOutputContextOutputDevicesDidChangeNotification was incorrect.

  • pal/avfoundation/MediaTimeAVFoundation.cpp:

(PAL::toCMTime): Ensure that if the converted time was invalid. The
flag is carried accross.

  • pal/cocoa/AVFoundationSoftLink.h:

Tools:

Fly-by fixes: AVFoundationSoftLinkTest wasn't being compiled

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/cocoa/AVFoundationSoftLinkTest.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/cocoa/CoreMediaUtilities.mm: Added.

(TestWebKitAPI::TEST):

3:51 PM Changeset in webkit [290963] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.8

Tag Safari-614.1.5.8.

3:50 PM Changeset in webkit [290962] by Russell Epstein
  • 3 edits in branches/safari-614.1.5-branch/Source/WebGPU

Cherry-pick r290960. rdar://problem/89920518

Catalyst build failure in WebGPU when building with SYSTEM_CONTENT_PATH
​https://bugs.webkit.org/show_bug.cgi?id=237542

Reviewed by Saam Barati.

Updated create-symlink-to-altroot.sh to create the directory containing the output if is doesn't
exist in lieu of specifying an output file in the build step.
This is the way that other projects are configured.

  • Scripts/create-symlink-to-altroot.sh:
  • WebGPU.xcodeproj/project.pbxproj:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290960 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:47 PM Changeset in webkit [290961] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[macCatalyst] Compilation error: WebContentProcess.xib: error: macOS xibs do not support target device type "ipad".
​https://bugs.webkit.org/show_bug.cgi?id=237549
rdar://89912760

Patch by Richard Houle <​rhoule@apple.com> on 2022-03-07
Reviewed by Alexey Proskuryakov.

Xcode for macOS 12.5 complains that we bundle Mac XIBs inside our macCatalyst builds.

  • Configurations/BaseXPCService.xcconfig:
3:08 PM Changeset in webkit [290960] by msaboff@apple.com
  • 3 edits in trunk/Source/WebGPU

Catalyst build failure in WebGPU when building with SYSTEM_CONTENT_PATH
​https://bugs.webkit.org/show_bug.cgi?id=237542

Reviewed by Saam Barati.

Updated create-symlink-to-altroot.sh to create the directory containing the output if is doesn't
exist in lieu of specifying an output file in the build step.
This is the way that other projects are configured.

  • Scripts/create-symlink-to-altroot.sh:
  • WebGPU.xcodeproj/project.pbxproj:
3:07 PM Changeset in webkit [290959] by mark.lam@apple.com
  • 2 edits in trunk/LayoutTests

Remove TestExpectations for imported/w3c/web-platform-tests/IndexedDB/key-generators/reading-autoincrement-indexes-cursors.any.worker.html.
​https://bugs.webkit.org/show_bug.cgi?id=229244

Not reviewed.

TestExpectaions says this test will either pass or crash. However, the test history
at ​https://results.webkit.org/?suite=layout-tests&test=imported%2Fw3c%2Fweb-platform-tests%2FIndexedDB%2Fkey-generators%2Freading-autoincrement-indexes-cursors.any.worker.html
shows that this test hasn't crashed in a very long time.

Also local runs of the test on AppleSilicon with Debug WK1 pass with no crash.

  • platform/mac/TestExpectations:
2:32 PM Changeset in webkit [290958] by Chris Dumez
  • 7 edits in trunk

allow-custom-protocols-navigation sandbox flag.
​https://bugs.webkit.org/show_bug.cgi?id=237269
<rdar://problem/89899736>

Reviewed by Geoffrey Garen.

Source/WebCore:

Add support for allow-custom-protocols-navigation iframe sandbox flag to allow sandboxed iframes
to navigate to custom protocols, as per:

We recently started preventing sandboxed iframes from navigating to custom protocols, which broke
Microsoft Teams. We added a quirk for Microsoft Teams which we should be able to drop once they
adopt this new sandbox flag.

  • dom/SecurityContext.cpp:

(WebCore::SecurityContext::isSupportedSandboxPolicy):
(WebCore::SecurityContext::parseSandboxPolicy):

  • dom/SecurityContext.h:

Source/WebKit:

Add support for allow-custom-protocols-navigation iframe sandbox flag to allow sandboxed iframes
to navigate to custom protocols, as per:

We recently started preventing sandboxed iframes from navigating to custom protocols, which broke
Microsoft Teams. We added a quirk for Microsoft Teams which we should be able to drop once they
adopt this new sandbox flag.

  • UIProcess/WebPageProxy.cpp:

(WebKit::frameSandboxAllowsOpeningExternalCustomProtocols):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:

(TEST):

2:13 PM Changeset in webkit [290957] by Elliott Williams
  • 3 edits in trunk/Source/WebKit

DerivedSources.make: Regenerate message receiver sources on Makefile changes
​https://bugs.webkit.org/show_bug.cgi?id=237543

Reviewed by Alexey Proskuryakov.

This script depends on configuration and other sources in DerivedSources.make, so it should
regenerate when they change. Fixes one-time incremental build failures caused by r290896.

  • DerivedSources.make:
2:11 PM Changeset in webkit [290956] by Russell Epstein
  • 6 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290853. rdar://problem/88669147

about:blank iframes do not always inherit parent CSP
​https://bugs.webkit.org/show_bug.cgi?id=236347
<rdar://problem/88669147>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/security/contentSecurityPolicy/block-eval-onload-in-nested-about-blank-iframe.html

Usually we initialize CSP for window when we create a jsWindowProxy
for that frame. In this case, we load an about:blank iframe that
attempts to run eval() in the onload function of its own nested
iframe. Since we never run script in frame, we don't initialize a
jsWindowProxy and thus never propogate its CSP.

This fix checks the document's CSP in FrameLoader::clear when we
initialize a new JSGlobalObject and sets the eval value in the window
accordingly to properly enforce CSP.

  • bindings/js/ScriptController.cpp: (WebCore::ScriptController::enableEval):
  • bindings/js/ScriptController.h:
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::clear):
  • page/csp/ContentSecurityPolicy.h: (WebCore::ContentSecurityPolicy::evalErrorMessage const):

LayoutTests:

  • http/tests/security/contentSecurityPolicy/block-eval-onload-in-nested-about-blank-iframe-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-eval-onload-in-nested-about-blank-iframe.html: Added We can't use modern js-test.js and related functions because js-test.js uses eval() and loading it makes the test time out when the eval is blocked by the document's CSP. We can't specify unsafe-eval because the whole point of this test is to block eval.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290853 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:11 PM Changeset in webkit [290955] by Russell Epstein
  • 4 edits
    3 adds in branches/safari-613-branch

Cherry-pick r290812. rdar://problem/84662329

Element with position: sticky after sticking, starts to move incorrectly when scrolling
​https://bugs.webkit.org/show_bug.cgi?id=231953
<rdar://84662329>

Reviewed by Sam Weinig.

Source/WebCore:

Sometimes we'd fail to push new StickyPositionViewportConstraints to the scrolling
tree, because operator== failed to compare m_constrainingRectAtLastLayout. This breaks
the requirement that the "last committed scroll position" for the overflow scrolling
node has to be updated in the same commit as the "constraining-rect-at-last-layout"
on the sticky node.

Test: scrollingcoordinator/scrolling-tree/sticky-in-overflow-stale-constraints.html

  • page/scrolling/ScrollingConstraints.cpp: (WebCore::operator<<):
  • page/scrolling/ScrollingConstraints.h: (WebCore::StickyPositionViewportConstraints::operator== const):

LayoutTests:

  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/sticky-in-overflow-stale-constraints-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/sticky-in-overflow-stale-constraints-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/sticky-in-overflow-stale-constraints.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290812 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:11 PM Changeset in webkit [290954] by Russell Epstein
  • 13 edits in branches/safari-613-branch/Source/JavaScriptCore

Cherry-pick r290788. rdar://problem/83494949

Add a DeferTraps scope
​https://bugs.webkit.org/show_bug.cgi?id=237306
<rdar://83494949>

Reviewed by Mark Lam.

  • bytecode/CodeBlock.cpp: (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::jettison): (JSC::CodeBlock::noticeIncomingCall):
  • bytecode/CodeBlock.h:
  • bytecode/RepatchInlines.h: (JSC::linkFor): (JSC::virtualForWithFunction):
  • dfg/DFGOperations.cpp: (JSC::DFG::JSC_DEFINE_JIT_OPERATION):
  • interpreter/Interpreter.cpp: (JSC::Interpreter::executeProgram): (JSC::Interpreter::executeCall): (JSC::Interpreter::executeConstruct): (JSC::Interpreter::execute): (JSC::Interpreter::executeModuleProgram):
  • interpreter/InterpreterInlines.h: (JSC::Interpreter::execute):
  • llint/LLIntSlowPaths.cpp: (JSC::LLInt::setUpCall):
  • runtime/ExceptionScope.h:
  • runtime/ScriptExecutable.cpp: (JSC::ScriptExecutable::installCode):
  • runtime/VMTraps.cpp: (JSC::VMTraps::handleTraps): (JSC::VMTraps::takeTopPriorityTrap):
  • runtime/VMTraps.h: (JSC::VMTraps::needHandling const): (JSC::VMTraps::maybeNeedHandling const): (JSC::VMTraps::hasTrapBit): (JSC::VMTraps::setTrapBit):
  • runtime/VMTrapsInlines.h: (JSC::DeferTraps::DeferTraps): (JSC::DeferTraps::~DeferTraps):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290788 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:11 PM Changeset in webkit [290953] by Russell Epstein
  • 11 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290785. rdar://problem/66568551

nasa.gov page with fixed backgrounds paints incorrectly on scroll
​https://bugs.webkit.org/show_bug.cgi?id=237405
<rdar://66568551>

Reviewed by Antti Koivisto.
Source/WebCore:

​https://www.nasa.gov/specials/artemis/ shows an issue where elements with background-attachment:fixed
don't repaint on scroll. This page has scrollable <html> and <body>, and the elements with fixed
backgrounds are composited, so this reveals that we fail to repaint composited children
of an overflow scroll in this case.

Fix by having RenderLayerScrollableArea::scrollTo() do repaints on slow repaint objects
which are scrolled by the current scroller.

Do some unrelated cleanup in code that I was going to use in this patch but turned out
not to need: rename hasFixedBackgroundImage() to hasAnyFixedBackground() for clarity,
and share the implementation with hasAnyLocalBackground().

Test: fast/repaint/background-attachment-fixed-in-composited-scroll.html

  • rendering/RenderElement.cpp: (WebCore::RenderElement::styleWillChange): (WebCore::RenderElement::willBeDestroyed):
  • rendering/RenderLayer.cpp:
  • rendering/RenderLayerScrollableArea.cpp: (WebCore::RenderLayerScrollableArea::scrollTo):
  • rendering/style/FillLayer.cpp: (WebCore::FillLayer::hasImageWithAttachment const): (WebCore::FillLayer::hasFixedImage const): Deleted.
  • rendering/style/FillLayer.h:
  • rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::hasAnyLocalBackground const): Deleted.
  • rendering/style/RenderStyle.h: (WebCore::RenderStyle::hasBackgroundImage const): (WebCore::RenderStyle::hasAnyFixedBackground const): (WebCore::RenderStyle::hasAnyLocalBackground const): (WebCore::RenderStyle::hasFixedBackgroundImage const): Deleted.

LayoutTests:

Repaint test which is only valid for mac-wk2 (iOS does not support background-attachment:fixed).

  • TestExpectations:
  • fast/repaint/background-attachment-fixed-in-composited-scroll-expected.txt: Added.
  • fast/repaint/background-attachment-fixed-in-composited-scroll.html: Added.
  • platform/mac-wk2/TestExpectations:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290785 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:11 PM Changeset in webkit [290952] by Russell Epstein
  • 6 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290778. rdar://problem/88297045

macOS Safari 15.2 Audio Echo Issue after camera pause/unpause
​https://bugs.webkit.org/show_bug.cgi?id=235544
<rdar://problem/88297045>

Reviewed by Eric Carlson.

Source/WebCore:

After ​https://commits.webkit.org/r275600, the muted state of MediaPlayer would be set to the page muted state
without taking into consideration HTMLMediaElement.muted.
Update the call site to use effectiveMuted instead.
Add internals API to write a corresponding layout test.

Test: fast/mediastream/mediastreamtrack-audiovideo-mutepage.html

  • html/HTMLMediaElement.cpp:
  • testing/Internals.cpp:
  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • fast/mediastream/mediastreamtrack-audiovideo-mutepage-expected.txt: Added.
  • fast/mediastream/mediastreamtrack-audiovideo-mutepage.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290778 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:11 PM Changeset in webkit [290951] by Russell Epstein
  • 14 edits in branches/safari-613-branch

Cherry-pick r290765. rdar://problem/89232969

Throw proper exception on failed removeEntry() calls
​https://bugs.webkit.org/show_bug.cgi?id=237382
<rdar://89232969>

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any.worker-expected.txt:

Source/WebKit:

Updated existing tests.

  • NetworkProcess/storage/FileSystemStorageError.h: (WebKit::convertToException):
  • NetworkProcess/storage/FileSystemStorageHandle.cpp: (WebKit::FileSystemStorageHandle::removeEntry):

LayoutTests:

  • storage/filesystemaccess/handle-move-expected.txt:
  • storage/filesystemaccess/handle-move-worker-expected.txt:
  • storage/filesystemaccess/resources/handle-move.js: (async test):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290765 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:11 PM Changeset in webkit [290950] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r290758. rdar://problem/89710486

[AppSSO] Correct logging messages to avoid confusing screeners that an error has occurred
​https://bugs.webkit.org/show_bug.cgi?id=237390
<rdar://problem/89710486>

Reviewed by Simon Fraser.

The phrasing of the message in 'SOAuthorizationCoordinator::tryAuthorize' when a URL is not relevant for
AppSSO flows is:

AUTHORIZATIONCOORDINATOR_RELEASE_LOG("tryAuthorize: Cannot authorize the requested URL.");

This leads people spelunking logs to believe that the URL can't be authorized (perhaps due to an error).

Instead, we should more accurately report that the URL is not one that is mediated through an AppSSO flow,
and so no AppSSO processing is needed.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationCoordinator.mm: (WebKit::SOAuthorizationCoordinator::tryAuthorize):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290758 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:11 PM Changeset in webkit [290949] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r290755. rdar://problem/89700242

[WebAuthn] Completion handler is not called when WebAuthn invoked without proper entitlements
​https://bugs.webkit.org/show_bug.cgi?id=237380
<rdar://problem/89700242>

Reviewed by Chris Dumez.

WebAuthn is not permitted outside of Web Browser applications. When an application that lacks
the full web browser entitlement attempts to invoke WebAuthn flows, we do an early return. However,
the completion handler for this flow is bypassed, preventing applications from being informed of
this problem.

  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp: (WebKit::WebAuthenticatorCoordinator::makeCredential): (WebKit::WebAuthenticatorCoordinator::getAssertion): (WebKit::WebAuthenticatorCoordinator::isUserVerifyingPlatformAuthenticatorAvailable):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290755 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:11 PM Changeset in webkit [290948] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290706. rdar://problem/89566459

REGRESSION(r285232) ​https://alvaromontoro.github.io/almond.css/demo/ looks wrong in Safari, ok in Chrome and Firefox
​https://bugs.webkit.org/show_bug.cgi?id=237276
<rdar://problem/89566459>

Reviewed by Simon Fraser.

Source/WebCore:

r285232 introduced the isFixed() check as a resolvable preferred width type, but percent values are also resolvable as
block layout gets the horizontal constraint from the containing block chain (unlike the height percent values) -i.e. 'width: 50%' can be resolved during preferred width computation.

Test: fast/css-grid-layout/ascpect-ratio-with-percent-width.html

  • rendering/RenderBlock.cpp: (WebCore::RenderBlock::availableLogicalHeightForPercentageComputation const):

LayoutTests:

  • fast/css-grid-layout/ascpect-ratio-with-percent-width-expected.html: Added.
  • fast/css-grid-layout/ascpect-ratio-with-percent-width.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290706 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290947] by Russell Epstein
  • 5 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290671. rdar://problem/87340464

Web app fails only when dev tools is open
​https://bugs.webkit.org/show_bug.cgi?id=235017

Reviewed by Devin Rousso.

Using the ScriptExecutionContext from event.target()->scriptExecutionContext() can result the either having a
different script context from the one used when calling willHandleEvent, or the event target's context could be
nullptr. This can occur when handling the event in EventTarget::innerInvokeEventListeners results in a
context change for the event's target, like a MessagePort that has been disentangled, which sets the script
execution context to nullptr. Because we only need the script execution context to get the correct injected
script, and the correct injected script for the action below will always be the same injected script used in
willHandleEvent, we ignore the current script execution context of the event's target and use the context the
event's target had when it began invoking event listeners.

This change protects us both from the reported crash, as well as leaving an injected script in a bad state
because we did not call setEventValue and clearEventValue on matching injected scripts for a single event.

  • inspector/InspectorInstrumentation.cpp: (WebCore::InspectorInstrumentation::willHandleEventImpl): (WebCore::InspectorInstrumentation::didHandleEventImpl):
  • inspector/InspectorInstrumentation.h: (WebCore::InspectorInstrumentation::willHandleEvent): (WebCore::InspectorInstrumentation::didHandleEvent):
  • inspector/agents/InspectorDOMDebuggerAgent.cpp: (WebCore::InspectorDOMDebuggerAgent::willHandleEvent): (WebCore::InspectorDOMDebuggerAgent::didHandleEvent):
  • inspector/agents/InspectorDOMDebuggerAgent.h:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290671 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290946] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r290629. rdar://problem/88903506

[IPC] Do more hardening in WebSWServerConnection's client registration / unregistration
​https://bugs.webkit.org/show_bug.cgi?id=237290
<rdar://88903506>

Reviewed by Alex Christensen.

Validate client identifiers sent by the WebContent process via IPC to make sure that the
process identifier of the client actually matches the process identifier of the process
we're connected to.

Also validate the SecurityOriginData to make sure it is not empty. We support sending
empty SecurityOriginData objects over IPC. However, they cannot be used as keys in
HashMaps.

If validation fails, we assume the WebContent process is compromised and we terminate it.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: (WebKit::WebSWServerConnection::registerServiceWorkerClient): (WebKit::WebSWServerConnection::unregisterServiceWorkerClient):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290629 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290945] by Russell Epstein
  • 5 edits
    7 adds in branches/safari-613-branch

Cherry-pick r290606. rdar://problem/89482882

[macOS] Unable to upload ".pages" files to file inputs accepting ".pages" and ".jpeg" files
​https://bugs.webkit.org/show_bug.cgi?id=237219
rdar://89482882

Reviewed by Tim Horton and Said Abou-Hallawa.

Source/WebCore:

In r264286, WebKit began transcoding images of an unsupported format
to a supported format, for file inputs that accepted image types. For
example, selecting a HEIF image in an input that accepts JPEG images
would transcode the selected image to a JPEG image.

In order to determine when attempt transcoding, the logic added in
r264286 obtains the MIME type corresponding to the selected file's
extension, and compares that to the list of accepted MIME types.
If there is a mismatch, transcoding is attempted.

The ".pages" extension does not have a well-defined MIME type in
NSURLFileTypeMappings. This is due to the fact that a the extension
maps to both a file and a package type. Consequently, the retrieved
MIME type for ".pages" files is an empty string. Following r227051,
when the file input also accepts an image type, WebKit attempts to
transcode these files, and any others that do not have a well-defined
MIME type.

While the aforementioned behavior can be considered strange, it is not
an issue in practice, since WebKit will attempt to transcode the
image, fail to do so, and upload the original file. The failure is
detected in CGImageDestinationFinalize, which returns false if an image
was not successfully written. However, a recent regression in the
ImageIO framework is causing CGImageDestinationFinalize to return true,
even if image transcoding fails. This results in WebKit uploading a
zero byte JPEG file, when a user attempts to upload ".pages" files to
file inputs accepting ".pages" and ".jpeg" files.

Ideally, the described issue would be resolved by a fix in ImageIO.
However, a more immediate solution exists in WebKit: only attempt to
transcode files to an accepted image type, if the file selected is
image. ".pages" files are not images, and WebKit should not attempt
to transcode them. See below for further explanation of the solution.

Test: fast/forms/file/entries-api/pages-jpeg-open-panel.html

  • platform/graphics/cg/ImageUtilitiesCG.cpp: (WebCore::transcodeImage):

Prior to using ImageIO to perform transcoding, WebKit obtains a Uniform
Type Identifier for the selected file using CGImageSourceCreateWithURL
and CGImageSourceGetType. If the file is not an image, a null string is
returned. WebKit can use this information to avoid the transcoding
attempt, and avoid calls to ImageIO methods further down this method.
Specifically, this solution works around the ImageIO bug by avoiding
the call to CGImageDestinationFinalize for non-images. The solution is
also an overall improvement, as WebKit now avoids unnecessary calls to
multiple ImageIO methods, in cases where we know transcoding will fail.

LayoutTests:

Add a layout test that contains a file input that accepts ".pages" and
".jpeg" files, and attempts to upload a ".pages" file.

  • TestExpectations:
  • fast/forms/file/entries-api/pages-jpeg-open-panel-expected.txt: Added.
  • fast/forms/file/entries-api/pages-jpeg-open-panel.html: Added.
  • fast/forms/file/entries-api/pdf-jpeg-open-panel-expected.txt: Added.
  • fast/forms/file/entries-api/pdf-jpeg-open-panel.html: Added.
  • fast/forms/file/entries-api/resources/documents/document.pages: Added.
  • fast/forms/file/entries-api/resources/documents/document.pdf: Added.
  • platform/mac-wk2/TestExpectations:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290606 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290944] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290562. rdar://problem/88767033

Loading a USDZ url as the main resource renders as garbage
​https://bugs.webkit.org/show_bug.cgi?id=237240
rdar://88767033

Reviewed by Antoine Quint.

We can't render a USD document if the ModelDocument feature is not enabled.

  • platform/MIMETypeRegistry.cpp: (WebCore::MIMETypeRegistry::canShowMIMEType):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290562 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290943] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290560. rdar://problem/89526227

Use hasAttributeWithoutSynchronisation for checking inert attribute in Adjuster::adjust
​https://bugs.webkit.org/show_bug.cgi?id=237248

Reviewed by Dean Jackson.

hasAttributeWithoutSynchronisation should be slightly faster than hasAttribute.

  • style/StyleAdjuster.cpp: (WebCore::Style::Adjuster::adjust const):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290560 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290942] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290559. rdar://problem/89510628

Optimize StyleSharingResolver inert checks
​https://bugs.webkit.org/show_bug.cgi?id=237235

Reviewed by Youenn Fablet.

Source/WebCore:

inert is an boolean attribute, the only thing that matters for the StyleAdjuster
inertness adjustment is the presence of the attribute, not its value. E.g.
inert=false is the same as inert=inert or inert=true.

This saves getting and comparing values for those attributes, and also allows
inert=inert and inert=true or inert=false to start sharing style.

  • style/StyleSharingResolver.cpp: (WebCore::Style::SharingResolver::canShareStyleWithElement const):

LayoutTests:

Add small test that style sharing is not wrongly applied.

  • fast/css/inert-style-sharing-expected.html: Added.
  • fast/css/inert-style-sharing.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290559 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290941] by Russell Epstein
  • 11 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290554. rdar://problem/83757966

Remove Node::deprecatedIsInert
​https://bugs.webkit.org/show_bug.cgi?id=230845

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

This change unfortunately regresses focusability state when dynamically setting inert, due to a cached
computed style invalidation bug. This is minor in practice, since focusability usually gets queried in
user-initiated ways, when style already has fully been updated.

However, making this change will improve performance by avoiding a full DOM ancestor walk when there
is no inert attribute on the page, since we will only check a style bit after this patch.

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/remove-dialog-should-unblock-document-expected.txt:
  • web-platform-tests/inert/inert-canvas-fallback-content.tentative-expected.txt:
  • web-platform-tests/inert/inert-node-is-unfocusable.tentative-expected.txt:

Source/WebCore:

This change unfortunately regresses focusability state when dynamically setting inert, due to a cached
computed style invalidation bug. This is minor in practice, since focusability usually gets queried in
user-initiated ways, when style already has fully been updated.

However, making this change will improve performance by avoiding a full DOM ancestor walk when there
is no inert attribute on the page, since we will only check a style bit after this patch.

  • dom/Element.cpp: (WebCore::Element::isFocusable const): (WebCore::Element::isFocusableWithoutResolvingFullStyle const): (WebCore::Element::isVisibleWithoutResolvingFullStyle const): Deleted.
  • dom/Element.h:
  • dom/Node.cpp: (WebCore::Node::deprecatedIsInert const): Deleted.
  • dom/Node.h:
  • html/HTMLAreaElement.cpp: (WebCore::HTMLAreaElement::isFocusable const):

LayoutTests:

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-inert-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal-expected.txt: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290554 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290940] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290537. rdar://problem/89239935

Do not trigger didFail during FileReaderLoader Destruction
​https://bugs.webkit.org/show_bug.cgi?id=237060

Patch by Brandon Stewart <Brandon> on 2022-02-25
Reviewed by Darin Adler.

Setting cancel() instead of terminate() will prevent the didFail() method from being triggered.
This method has the unfortunate side effect of trying to allocate memory, which is not allowed when
under going a sweep event.

  • fileapi/FileReaderLoader.cpp: (WebCore::FileReaderLoader::~FileReaderLoader):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290537 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290939] by Russell Epstein
  • 4 edits in branches/safari-613-branch/Source/JavaScriptCore

Cherry-pick r290510. rdar://problem/89364487

Web Inspector: [Cocoa] Split remote inspector message data into smaller chunks for large messages
​https://bugs.webkit.org/show_bug.cgi?id=237110
<rdar://89364487>

Reviewed by Devin Rousso.

Messages over 2 MiB will now be split into multiple chunks, which allows us to not exceed any receiving daemon
process' memory limit under otherwise normal conditions. 2 MiB was chosen as a balance between not having to
split most messages at all and making sure that the messages (and any copies made during the relaying of the
messages) do not exceed the memory limits of the receiving daemon process.

In order to prevent us from sending chunked messages to a process that doesn't support them we check for a flag
to enable this functionality during connection setup.

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/RemoteInspectorConstants.h:
  • inspector/remote/cocoa/RemoteInspectorCocoa.mm: (Inspector::RemoteInspector::sendMessageToRemote): (Inspector::RemoteInspector::receivedSetupMessage):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290510 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290938] by Russell Epstein
  • 4 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290430. rdar://problem/87713597

RELEASE_ASSERT(!renderer()); in WebCore::Node::~Node() + 479 (Node.cpp:366)
​https://bugs.webkit.org/show_bug.cgi?id=235380

Patch by Frédéric Wang <​fwang@igalia.com> on 2022-02-24
Reviewed by Ryosuke Niwa.

Source/WebCore:

RenderTreeUpdater::tearDownRenderers() browse the composed tree to tear down descendants.
However, element with a shadow root are handled specially in
ComposedTreeIterator::ComposedTreeIterator(), they have to be handled specially by calling
a tearDownLeftoverShadowHostChildren(). This patch does the same for slot elements which
are also handled specially in ComposedTreeIterator(). It also makes names within
tearDownLeftoverShadowHostChildren() more generic. This in particular fixes a release assert
when a slot with pseudo elements children is torn down.

Test: fast/shadow-dom/slot-with-pseudo-element-children-renderer-teardown.html

  • rendering/updating/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::tearDownRenderers): Also call tearDownLeftoverShadowHostChildren for a slot element and add a comment pointing to the method corresponding to these special cases. (WebCore::RenderTreeUpdater::tearDownLeftoverChildrenOfComposedTree): Renamed to remove "shadow host".
  • rendering/updating/RenderTreeUpdater.h: Ditto.

LayoutTests:

Add non-regression test.

  • fast/shadow-dom/slot-with-pseudo-element-children-renderer-teardown-expected.txt: Added.
  • fast/shadow-dom/slot-with-pseudo-element-children-renderer-teardown.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290430 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290937] by Russell Epstein
  • 2 edits in branches/safari-613-branch/LayoutTests

Cherry-pick r290385. rdar://problem/70464703

[Subpixel] imported/w3c/web-platform-tests/css/css-flexbox/auto-margins-001.html fails at certain font sizes
​https://bugs.webkit.org/show_bug.cgi?id=217643
<rdar://problem/70464703>

Unreviewed gardening.

  • platform/ios-simulator-wk2/TestExpectations: It must have progressed at some point.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290385 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290936] by Russell Epstein
  • 4 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290356. rdar://problem/85765536

Crash when calling WEBGL_lose_context.loseContext() after the context has been lost
​https://bugs.webkit.org/show_bug.cgi?id=236966

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-02-23
Reviewed by Dean Jackson.

Source/WebCore:

WebGLRenderingContextBase::forceLostContext() would
try to synthesize a GL error to the underlying
m_context. However, m_context is cleared when a real
context loss happens. This happens for example when we
simulate a GPU status failure or when we create too
many contexts. The m_context is not currently cleared
when the page simulates context lost via WEBGL_lose_contexts.loseContext().

Test: webgl/lose-context-after-context-lost.html

  • html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::synthesizeGLError):

LayoutTests:

  • webgl/lose-context-after-context-lost-expected.txt: Added.
  • webgl/lose-context-after-context-lost.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290356 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290935] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r290343. rdar://problem/85811396

Further restrict received IPC boolean values to 0 or 1
​https://bugs.webkit.org/show_bug.cgi?id=236801
rdar://85811396

Patch by Simon Lewis <​simon.lewis@apple.com> on 2022-02-22
Reviewed by Chris Dumez.

Return std::nullopt if a value larger than 1 is received.

  • Platform/IPC/ArgumentCoder.h: (IPC::ArgumentCoder<bool>::decode):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290343 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290934] by Russell Epstein
  • 14 edits
    6 adds in branches/safari-613-branch

Cherry-pick r290306. rdar://problem/88352589

Make pointer-events checks for SVG take in account inert subtrees
​https://bugs.webkit.org/show_bug.cgi?id=235836

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Added tests for both inert attribute & modal dialog cases.

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-svg-hittest-expected.txt: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-svg-hittest.html: Added.
  • web-platform-tests/inert/inert-svg-hittest.tentative-expected.txt: Added.
  • web-platform-tests/inert/inert-svg-hittest.tentative.html: Added.

Source/WebCore:

Re-using visibleToHitTesting in SVG code isn't possible, because visibleToHitTesting removes visibility: hidden;
content from hit-testing, which we do not want to here, since pointer-events has values for SVG which still
allow clicking content regardless of their visibility value (pointer-events: painted/fill/stroke/all).

Instead, we add an inert-aware effectivePointerEvents, similar to effectiveUserSelect and re-use that across the codebase.

Tests: imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-svg-hittest.html

imported/w3c/web-platform-tests/inert/inert-svg-hittest.tentative.html

  • rendering/RenderElement.cpp: (WebCore::RenderElement::styleWillChange):
  • rendering/RenderElement.h: (WebCore::RenderElement::visibleToHitTesting const):
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::layerStyleChanged):
  • rendering/style/RenderStyle.h: (WebCore::RenderStyle::effectivePointerEvents const):
  • rendering/svg/LegacyRenderSVGModelObject.cpp: (WebCore::LegacyRenderSVGModelObject::checkIntersection): (WebCore::LegacyRenderSVGModelObject::checkEnclosure):
  • rendering/svg/LegacyRenderSVGShape.cpp: (WebCore::LegacyRenderSVGShape::nodeAtFloatPoint):
  • rendering/svg/RenderSVGImage.cpp: (WebCore::RenderSVGImage::nodeAtFloatPoint):
  • rendering/svg/RenderSVGModelObject.cpp: (WebCore::RenderSVGModelObject::checkIntersection): (WebCore::RenderSVGModelObject::checkEnclosure):
  • rendering/svg/RenderSVGShape.cpp: (WebCore::RenderSVGShape::nodeAtPoint):
  • rendering/svg/RenderSVGText.cpp: (WebCore::RenderSVGText::nodeAtFloatPoint):
  • rendering/svg/SVGInlineTextBox.cpp: (WebCore::SVGInlineTextBox::nodeAtPoint):

LayoutTests:

iOS doesn't support test_actions, so it needs different baselines.

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-svg-hittest-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-svg-hittest.tentative-expected.txt: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290306 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:10 PM Changeset in webkit [290933] by Russell Epstein
  • 12 edits in branches/safari-613-branch/Source

Cherry-pick r290305. rdar://problem/89287719

Rename RenderStyle::userSelectIncludingInert to RenderStyle::effectiveUserSelect
​https://bugs.webkit.org/show_bug.cgi?id=237033

Reviewed by Antti Koivisto.

This naming is consistent with other properties (effectiveDisplay/Appearance/PointerEvents/etc.).

Source/WebCore:

  • dom/Node.cpp: (WebCore::computeEditabilityFromComputedStyle): (WebCore::Node::canStartSelection const):
  • dom/Position.cpp: (WebCore::Position::nodeIsUserSelectNone): (WebCore::Position::nodeIsUserSelectAll):
  • page/EventHandler.cpp: (WebCore::EventHandler::canMouseDownStartSelect): (WebCore::EventHandler::selectCursor):
  • page/Frame.cpp: (WebCore::Frame::rangeForPoint):
  • rendering/RenderElement.cpp: (WebCore::RenderElement::selectionBackgroundColor const): (WebCore::RenderElement::selectionColor const):
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::calculateClipRects const):
  • rendering/RenderObject.cpp: (WebCore::RenderObject::collectSelectionGeometriesInternal):
  • rendering/style/RenderStyle.h: (WebCore::RenderStyle::effectiveUserSelect const): (WebCore::RenderStyle::userSelectIncludingInert const): Deleted.

Source/WebKit:

  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: (WebKit::InjectedBundleNodeHandle::isSelectableTextNode const):
  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::selectionPositionInformation):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290305 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290932] by Russell Epstein
  • 4 edits
    1 add in branches/safari-613-branch

Cherry-pick r290265. rdar://problem/88258776

[JSC] Add explicit exception check after appendWithoutSideEffects
​https://bugs.webkit.org/show_bug.cgi?id=236986
rdar://88258776

Reviewed by Saam Barati.

JSTests:

  • stress/array-to-string-oom.js: Added.

Source/JavaScriptCore:

Add exception check after JSStringJoiner::appendWithoutSideEffects call since JSString::value can throw OOM error.

  • runtime/ArrayPrototype.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION):
  • runtime/JSStringJoiner.h: (JSC::JSStringJoiner::append):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290265 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290931] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r290246. rdar://problem/85811396

Change IPC encoding of boolean type to use one bit
​https://bugs.webkit.org/show_bug.cgi?id=236801
rdar://85811396

Patch by Simon Lewis <​simon.lewis@apple.com> on 2022-02-21
Reviewed by Chris Dumez.

This patch ensures that only the lower bit is set in a boolean for IPC messages.

  • Platform/IPC/ArgumentCoder.h: (IPC::ArgumentCoder<bool>::encode): (IPC::ArgumentCoder<bool>::decode):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290246 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290930] by Russell Epstein
  • 2 edits in branches/safari-613-branch/LayoutTests/imported/w3c

Cherry-pick r290232. rdar://problem/88818132

Rebaseline inert-focus-in-frames.html after r290197.

Unreviewed test gardening.

For some reason, the rebaselining changes didn't make it in the patch.

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames-expected.txt:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290232 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290929] by Russell Epstein
  • 3 edits in branches/safari-613-branch

Cherry-pick r290197. rdar://problem/88818132

Stop propagating inertness through iframes in Node::deprecatedIsInert()
​https://bugs.webkit.org/show_bug.cgi?id=236512

Reviewed by Chris Dumez.

This is only a bug for Node::deprecatedIsInert(), so it only affects focus. Selection APIs, etc. weren't affected
before this bug.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames-expected.txt:

Source/WebCore:

Test: web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames.html

  • dom/Node.cpp: (WebCore::Node::deprecatedIsInert const):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290197 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290928] by Russell Epstein
  • 4 edits in branches/safari-613-branch/Source/bmalloc

Cherry-pick r290195. rdar://problem/88402366

[libpas] Increase scavenger period from 100ms to 125ms in Darwin x64
​https://bugs.webkit.org/show_bug.cgi?id=236873

Reviewed by Saam Barati.

Make x64 scavenger less aggressive while maintaining Membuster neutral
to make it less work.

  • libpas/src/libpas/pas_config_prefix.h:
  • libpas/src/libpas/pas_scavenger.c:
  • libpas/src/libpas/pas_utils.h:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290195 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290927] by Russell Epstein
  • 13 edits
    2 moves
    14 adds in branches/safari-613-branch/LayoutTests

Cherry-pick r290164. rdar://problem/89162532

Re-import inert and <dialog> WPT
​https://bugs.webkit.org/show_bug.cgi?id=236808

Reviewed by Simon Fraser.

Commit: ​https://github.com/web-platform-tests/wpt/commit/0d483a3bea340a2c60cb7a4add49eb63cbba2a64

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-double-nested-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-delegatesfocus-expected.txt.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-double-nested.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-delegatesfocus.html.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-label-focus.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-scroll-height.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/w3c-import.log:
  • web-platform-tests/inert/dynamic-inert-on-focused-element.tentative-expected.txt: Added.
  • web-platform-tests/inert/dynamic-inert-on-focused-element.tentative.html: Added.
  • web-platform-tests/inert/inert-canvas-fallback-content.tentative-expected.txt: Added.
  • web-platform-tests/inert/inert-canvas-fallback-content.tentative.html: Added.
  • web-platform-tests/inert/inert-iframe-hittest.tentative-expected.txt: Added.
  • web-platform-tests/inert/inert-iframe-hittest.tentative.html: Added.
  • web-platform-tests/inert/inert-iframe-tabbing.tentative-expected.txt: Added.
  • web-platform-tests/inert/inert-iframe-tabbing.tentative.html: Added.
  • web-platform-tests/inert/inert-node-is-uneditable.tentative.html:
  • web-platform-tests/inert/inert-with-modal-dialog-001.tentative-expected.txt: Added.
  • web-platform-tests/inert/inert-with-modal-dialog-001.tentative.html: Added.
  • web-platform-tests/inert/inert-with-modal-dialog-002.tentative-expected.txt: Added.
  • web-platform-tests/inert/inert-with-modal-dialog-002.tentative.html: Added.
  • web-platform-tests/inert/w3c-import.log:

LayoutTests:

  • platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-hittest.tentative-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-tabbing.tentative-expected.txt: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290164 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290926] by jonlee@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed gardening.

  • gpu-process/TestExpectations: Remove tests that were resolved by r290813.
2:09 PM Changeset in webkit [290925] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r289859. rdar://problem/88491516

Skip positioned objects and line break boxes as they have no affect on width
​https://bugs.webkit.org/show_bug.cgi?id=236514

Patch by Brandon Stewart <Brandon> on 2022-02-15
Reviewed by Myles C. Maxfield.

Align computeInlineDirectionPositionsForSegment() and computeExpansionForJustifiedText() logic.
Skipping positioned objects and line break boxes as they will not affect the width.

  • rendering/LegacyLineLayout.cpp: (WebCore::LegacyLineLayout::computeExpansionForJustifiedText):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289859 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290924] by Russell Epstein
  • 5 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r289814. rdar://problem/83101090

Do not update the fragmented flow state while internally mutating the render tree
​https://bugs.webkit.org/show_bug.cgi?id=230896

Reviewed by Darin Adler.

RenderTree mutations (like those happening when creating/destroying anonymous blocks)
should not affect the fragment state of any renderer. This means that we should not have
to deal with things like creating/restoring placeholders/spanners while doing that.

There is already a IsInternalMove flag that is being used for that. Expand its usage
to a couple more methods to improve correctness.

  • rendering/LegacyRootInlineBox.cpp: (WebCore::LegacyRootInlineBox::~LegacyRootInlineBox): Do not remove the inline box from the ContainingFragmentMap if we're deleting the tree. It was causing ASSERTs trying to retrieve the enclosing fragmented flow in some cases.
  • rendering/updating/RenderTreeBuilder.cpp: (WebCore::RenderTreeBuilder::attachToRenderElementInternal): Use the RenderTreeBuilder's m_internalTreeBuilding instead of the argument. (WebCore::RenderTreeBuilder::move): Replace passing the IsInternalMove argument by a scope where we don't update the fragmented flow state. (WebCore::RenderTreeBuilder::detachFromRenderElement): Use the RenderTreeBuilder's m_internalMovesType instead of the argument.
  • rendering/updating/RenderTreeBuilder.h:
  • rendering/updating/RenderTreeBuilderInline.cpp: (WebCore::RenderTreeBuilder::Inline::splitInlines): Wrap the method by a scope in which fragmented flow state is not updated because we consider those operations internal arrangements of the tree.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289814 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290923] by Russell Epstein
  • 4 edits
    2 adds in branches/safari-613-branch

Cherry-pick r289700. rdar://problem/85249360

WebGL2 AllowShared TypedArray should be accepted
​https://bugs.webkit.org/show_bug.cgi?id=232662

Reviewed by Dean Jackson.

Source/WebCore:

Test: webgl/webgl-allow-shared-typed-array.html

TypedArray with [AllowShared] annotation is not handled properly, which results in handling it as Sequence<T>,
invoking iteration protocol to copy them. This patch adds that as the same to [AllowShared] ArrayBuffer / ArrayBufferView.

  • bindings/IDLTypes.h:
  • bindings/js/JSDOMConvertUnion.h:

LayoutTests:

  • webgl/webgl-allow-shared-typed-array-expected.txt: Added.
  • webgl/webgl-allow-shared-typed-array.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289700 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290922] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r289597. rdar://problem/88324745

Check bidiLevels are valid before reordering
​https://bugs.webkit.org/show_bug.cgi?id=236378

Patch by Brandon Stewart <Brandon> on 2022-02-10
Reviewed by Alan Bujtas.

We were trusting that the bidiLevel was valid before calling the reorder.
If the bidiLevel ends up being greater than the MAX + 1 we end up in a situation where
the reordering will fail. The function returns void, so there is not a good way to check
for an error.

  • layout/formattingContexts/inline/InlineLineBuilder.cpp: (WebCore::Layout::LineBuilder::layoutInlineContent):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289597 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290921] by Russell Epstein
  • 6 edits
    2 adds in branches/safari-613-branch

Cherry-pick r289533. rdar://problem/88452971

Settling of a fetch promise should be delayed in case page is entering page cache
​https://bugs.webkit.org/show_bug.cgi?id=236292
<rdar://88452971>

Reviewed by Chris Dumez.

Source/WebCore:

Make sure to enqueue a task before resolving fetch promise as otherwise, page might continue running JavaScript.
Do this for worker as well for good measure.
We move signal aborted checks to two clients to handle rejecting fetch promise synchronously.

Test: http/tests/navigation/fetch-pagecache.html

  • Modules/cache/DOMCache.cpp:
  • Modules/fetch/FetchResponse.cpp:
  • Modules/fetch/FetchResponse.h:
  • Modules/fetch/WindowOrWorkerGlobalScopeFetch.cpp:
  • workers/service/FetchEvent.cpp:

LayoutTests:

  • http/tests/navigation/fetch-pagecache-expected.txt: Added.
  • http/tests/navigation/fetch-pagecache.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289533 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290920] by Russell Epstein
  • 11 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r289476. rdar://problem/88693354

AudioBuffer should take a lock while visiting m_channelWrappers
​https://bugs.webkit.org/show_bug.cgi?id=236279

Reviewed by Keith Miller.

This patch fixes AudioBuffer's m_channelWrappers concurrency bug and related issues.

  1. This patch removes problematic (and almost always wrong) move operator of JSValueInWrappedObject. To do that, we fixed AudioBuffer's concurrency issue where we access m_channelWrappers while it can be cleared concurrently in AudioBuffer::releaseMemory.
  2. MessageEvent's m_data access is broken with concurrent GC thread. We must take a lock. And we must not use JSValueInWrappedObject in std::variant if it can be changed after constructor invocation.
  3. Use JSValueInWrappedObject::clear instead of move with empty value.
  4. File ​https://bugs.webkit.org/show_bug.cgi?id=236353. AbortSignal, MessageEvent, and CustomEvent miss write-barrier, which is semantically wrong.
  • Modules/webaudio/AudioBuffer.cpp: (WebCore::AudioBuffer::AudioBuffer): (WebCore::AudioBuffer::releaseMemory): (WebCore::AudioBuffer::visitChannelWrappers):
  • Modules/webaudio/AudioBuffer.h:
  • Modules/webaudio/AudioWorkletProcessor.cpp: (WebCore::AudioWorkletProcessor::buildJSArguments):
  • bindings/js/JSMessageEventCustom.cpp: (WebCore::JSMessageEvent::data const): (WebCore::JSMessageEvent::visitAdditionalChildren):
  • bindings/js/JSValueInWrappedObject.h:
  • dom/AbortSignal.cpp: (WebCore::AbortSignal::signalAbort):
  • dom/CustomEvent.cpp: (WebCore::CustomEvent::initCustomEvent):
  • dom/MessageEvent.cpp: (WebCore::MessageEvent::MessageEvent): (WebCore::m_jsData): (WebCore::MessageEvent::initMessageEvent): (WebCore::MessageEvent::memoryCost const): (WebCore::m_ports): Deleted.
  • dom/MessageEvent.h:
  • page/History.cpp: (WebCore::History::stateObjectAdded):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289476 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290919] by Russell Epstein
  • 8 edits in branches/safari-613-branch

Cherry-pick r289255. rdar://problem/88490742

Always sync ResourceRequest isAppInitiated request with NSURLRequest attribution value
​https://bugs.webkit.org/show_bug.cgi?id=236167
<rdar://88490742>

Reviewed by Darin Adler.

Source/WebCore:

We should always keep the state of our 'isAppInitiated' flag in sync with the underlying
NSURLRequest object. This also corrects a problem where the 'setIsAppInitiated' method
does not mark the platform URL request as dirty, so it does not update with the correct
state of the flag.

Tests: New TestWebKitAPI Test (AppPrivacyReport.NSURLRequestConstructorAttribution)

  • platform/network/ResourceRequestBase.cpp: (WebCore::ResourceRequestBase::setIsAppInitiated):
  • platform/network/ResourceRequestBase.h:
  • platform/network/cf/ResourceRequest.h:
  • platform/network/cocoa/ResourceRequestCocoa.mm: (WebCore::ResourceRequest::ResourceRequest): (WebCore::ResourceRequest::doUpdatePlatformRequest): (WebCore::ResourceRequest::doUpdatePlatformHTTPBody): (WebCore::copyRequestWithStorageSession):
  • rendering/RenderThemeIOS.mm:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/xcshareddata/xcschemes/TestWebKitAPI.xcscheme:
  • TestWebKitAPI/Tests/WebKitCocoa/AppPrivacyReport.mm:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289255 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [290918] by Russell Epstein
  • 5 edits
    5 adds in branches/safari-613-branch

Cherry-pick r289121. rdar://problem/88492251

Fix App Privacy Report redirect attribution
​https://bugs.webkit.org/show_bug.cgi?id=236111

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/app-privacy-report/user-attribution-redirect.html
Test: http/tests/app-privacy-report/app-attribution-redirect.html

  • platform/network/cf/ResourceRequestCFNet.cpp: (WebCore::ResourceRequest::updateFromDelegatePreservingOldProperties):

Source/WebKit:

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):

LayoutTests:

  • http/tests/app-privacy-report/resources/redirect.js: Added.
  • http/tests/app-privacy-report/app-attribution-redirect-expected.txt: Added.
  • http/tests/app-privacy-report/app-attribution-redirect.html: Added.
  • http/tests/app-privacy-report/user-attribution-redirect-expected.txt: Added.
  • http/tests/app-privacy-report/user-attribution-redirect.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289121 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:08 PM Changeset in webkit [290917] by Russell Epstein
  • 5 edits
    7 adds in branches/safari-613-branch

Cherry-pick r289101. rdar://problem/87625596

Two bopomofo tone marks are not moved to the correct place in vertical text with a particular bopomofo font
​https://bugs.webkit.org/show_bug.cgi?id=235257
<rdar://problem/87625596>

Reviewed by Darin Adler.

.:

Thank you so much to Bobby Tung and But Ko for reporting this bug and providing a test font for it!!!

  • metadata/contributors.json:

Source/WebCore:

Turns out one of our character data tables was missing some characters.

I really dislike these kinds of fixes, because it's just perpetuating the fact that WebKit has big tables of characters
in its source code. A long-term fix would be a systemic replacement of this entire table with either Unicode property
lookup, or more ideally, removing the need for it in the first place. Unfortunately, at this point in the release cycle,
this fix probably needs to be smaller and more targetted.

Tests: fast/text/bopomofo-tone-marks-2.html

fast/text/bopomofo-tone-marks.html

  • platform/graphics/FontCascade.cpp: (WebCore::FontCascade::isCJKIdeographOrSymbol):

LayoutTests:

This can't be a WPT test because we only have permission to add the test font to the WebKit repository.

Thank you so much to Bobby Tung and But Ko for reporting this bug and providing a test font for it!!!

  • fast/text/bopomofo-tone-marks-2-expected-mismatch.html: Added.
  • fast/text/bopomofo-tone-marks-2.html: Added.
  • fast/text/bopomofo-tone-marks-expected-mismatch.html: Added.
  • fast/text/bopomofo-tone-marks.html: Added.
  • fast/text/resources/BopomofoGposSubset-Regular/BopomofoGposSubset-Regular.ttf: Added.
  • fast/text/resources/BopomofoGposSubset-Regular/LICENSE: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289101 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:08 PM Changeset in webkit [290916] by Russell Epstein
  • 3 edits in branches/safari-613-branch/Source/JavaScriptCore

Cherry-pick r289001. rdar://problem/88404556

[JSC] Crash on several pages after r287986
​https://bugs.webkit.org/show_bug.cgi?id=236033

Reviewed by Tim Horton.

I noticed that Safari crashes when opening ​https://linux.die.net/man/3/localtime.
This is happening after r287986: we are calling [self release], but the [JSValue dealloc]
cannot work if _context is nil. We should add a guard.

  • API/JSValue.mm: (-[JSValue dealloc]):
  • API/tests/testapi.mm: (testObjectiveCAPIMain):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289001 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:08 PM Changeset in webkit [290915] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WTF

Cherry-pick r288746. rdar://problem/88093198

Enable inert attribute feature flag
​https://bugs.webkit.org/show_bug.cgi?id=235668

Reviewed by Darin Adler.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@288746 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:08 PM Changeset in webkit [290914] by Russell Epstein
  • 5 edits in branches/safari-613-branch

Cherry-pick r288700. rdar://problem/86602114

Default to 32 bit refcount for CanMakeCheckedPtr
​https://bugs.webkit.org/show_bug.cgi?id=235723
rdar://86602114

Reviewed by Darin Adler.

Source/WTF:

It is currently uint16_t for no good reason. It is no unreasonable to have an object being referenced
by a large number of other objects.

We just hit the first bug caused by overrunning it (in IFC).

  • wtf/CheckedRef.h:

uint16_t -> uint32_t

Tools:

  • TestWebKitAPI/Tests/WTF/CheckedPtr.cpp: (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WTF/CheckedRef.cpp:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@288700 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:08 PM Changeset in webkit [290913] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r288450. rdar://problem/74932445

Remove customElements when transitioning documents
​https://bugs.webkit.org/show_bug.cgi?id=222727

Patch by Rob Buis <​rbuis@igalia.com> on 2022-01-24
Reviewed by Ryosuke Niwa.

Remove customElements when transitioning documents
of Window since the old document may be gone.

Test: fast/js-promise/js-promise-invalid-context-access.html

  • page/DOMWindow.cpp: (WebCore::DOMWindow::didSecureTransitionTo): (WebCore::DOMWindow::ensureCustomElementRegistry):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@288450 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:08 PM Changeset in webkit [290912] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r288413. rdar://problem/86287467

REGRESSION (Safari 15?): Blob videos slow to pause, affects CBS and CNN
​https://bugs.webkit.org/show_bug.cgi?id=234066

Reviewed by Jer Noble.

MediaPlayerPrivateMediaSourceAVFObjC::playInternal() calls [m_synchronizer setRate:],
which will make the return value of MediaPlayerPrivateMediaSourceAVFObjC::paused() change
from true to false. But it won't push the new paused value back to the Web process.

RemoteMediaPlayerProxy::play() does call sendCachedState() after calling
m_player->play(), but because MediaPlayerPrivateMediaSourceAVFObjC::playInternal() is not
called in the same run loop, sendCachedState() won't send back the updated paused value either.

In most cases, this is not an issue, because other member functions of RemoteMediaPlayerProxy
will call sendCachedState() to push the updated paused value back to the Web process later.
However, we did find some videos need the paused value to be pushed back the Web process
in a timely manner.

No new tests, manually tested.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playInternal):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@288413 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:08 PM Changeset in webkit [290911] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Tools

Cherry-pick r288310. rdar://problem/80352256

[ iOS15 ] TestWebKitAPI.WebKit.ServerTrust and TestWebKitAPI.WebKit.FastServerTrust tests timing out
​https://bugs.webkit.org/show_bug.cgi?id=231320
<rdar://80352256>

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-01-20
Reviewed by Chris Dumez.

SecTrustCopyCertificateChain returns a CFArrayRef of SecCertificateRef, not CFData.

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm: (verifyCertificateAndPublicKey): (TestWebKitAPI::TEST):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@288310 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:08 PM Changeset in webkit [290910] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r288237. rdar://problem/87275093

WebKit::AuthenticatorPresenterCoordinator() constructor falls through ASSERT_NOT_REACHED()
​https://bugs.webkit.org/show_bug.cgi?id=234991
<rdar://problem/87275093>

Reviewed by Darin Adler.

Drop unnecessary default: case in the switch statement since it handles all enum values already.

  • UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm: (WebKit::AuthenticatorPresenterCoordinator::AuthenticatorPresenterCoordinator):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@288237 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:08 PM Changeset in webkit [290909] by Russell Epstein
  • 8 edits in branches/safari-613-branch/Source

Cherry-pick r287986. rdar://problem/87489048

Fix a few Objective-C object leaks due to early returns in init
​https://bugs.webkit.org/show_bug.cgi?id=235162
<rdar://problem/87489048>

Reviewed by Wenson Hsieh.

Source/JavaScriptCore:

  • API/JSValue.mm: (-[JSValue initWithValue:inContext:]):

Source/WebCore:

  • platform/ios/WebAVPlayerController.mm: (-[WebAVPlayerController init]):

Source/WebKit:

  • UIProcess/ios/WKHoverPlatter.mm: (-[WKHoverPlatter initWithView:delegate:]):

Source/WebKitLegacy/mac:

  • Storage/WebDatabaseQuotaManager.mm: (WebCore::if):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@287986 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:08 PM Changeset in webkit [290908] by Russell Epstein
  • 14 edits in branches/safari-613-branch/LayoutTests

Cherry-pick r287898. rdar://problem/86035420

Rewrite touch and drag tests to be more robust.
​https://bugs.webkit.org/show_bug.cgi?id=235057
rdar://86035420

Reviewed by Wenson Hsieh.

Rewrite the touch-and-drag tests to check for selection changes, not specific text selections.
Specific selections and subject to small changes in font and layout, and all that is actually important is that
there have been selection changes based off of dragged touches.
The touch-event-radius test has been updated to use the screen size directly, since the radius is scaled by the screen size
internally. The output has been changed to not need to be updated when the test phone changes.

  • fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-down-to-change-selected-text-expected.txt:
  • fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-down-to-change-selected-text.html:
  • fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-up-to-change-selected-text-expected.txt:
  • fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-up-to-change-selected-text.html:
  • fast/events/touch/ios/long-press-on-editable-content-then-drag-up-to-change-selected-text.html:
  • fast/events/touch/ios/long-press-then-drag-down-to-change-selected-text-expected.txt:
  • fast/events/touch/ios/long-press-then-drag-down-to-change-selected-text.html:
  • fast/events/touch/ios/long-press-then-drag-to-select-text-expected.txt:
  • fast/events/touch/ios/long-press-then-drag-to-select-text.html:
  • fast/events/touch/ios/long-press-then-drag-up-to-change-selected-text-expected.txt:
  • fast/events/touch/ios/long-press-then-drag-up-to-change-selected-text.html:
  • fast/events/touch/ios/touch-event-radius-expected.txt:
  • fast/events/touch/ios/touch-event-radius.html:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@287898 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:55 PM Changeset in webkit [290907] by Angelos Oikonomopoulos
  • 6 edits in trunk/Source/JavaScriptCore

AssemblyHelpersSpoolers: use load/store pair on ARMv7
​https://bugs.webkit.org/show_bug.cgi?id=235112

Reviewed by Žan Doberšek.

Save ~1% code size for baseline JIT on JS2 by emitting load/store pair
instructions on 32-bit ARM.

  • assembler/ARMv7Assembler.h:

(JSC::ARMv6Assembler::vldmia):
(JSC::ARMv7Assembler::vstmia):

  • assembler/CPU.h:

(JSC::isARM):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::loadPair64):
(JSC::MacroAssemblerARMv7::storePair64):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::copyLLIntBaselineCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer):

  • jit/AssemblyHelpersSpoolers.h:

(JSC::AssemblyHelpers::LoadRegSpooler::executePair):
(JSC::AssemblyHelpers::StoreRegSpooler::executePair):
(JSC::AssemblyHelpers::CopySpooler::CopySpooler):
(JSC::AssemblyHelpers::CopySpooler::loadPair):
(JSC::AssemblyHelpers::CopySpooler::storePair):

1:19 PM Changeset in webkit [290906] by Russell Epstein
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.8

1:16 PM Changeset in webkit [290905] by Jonathan Bedard
  • 2 edits in trunk/Tools

[iOS] editing/async-clipboard/* 20 tests are flaky timeouts on iOS
​https://bugs.webkit.org/show_bug.cgi?id=237372
<rdar://problem/89689914>

Reviewed by Alexey Proskuryakov.

  • Tools/CISupport/kill-old-processes: Kill "Simulator" process (since killing Simulator.app

won't do anything), shutdown simulators before killing processes. Check that simulators
are shut down before continuing.

Canonical link: ​https://commits.webkit.org/248136@main

1:11 PM Changeset in webkit [290904] by basuke.suzuki@sony.com
  • 2 edits in trunk

Update Basuke Suzuki's status to reviewer
​https://bugs.webkit.org/show_bug.cgi?id=237545

Unreviewed.

  • metadata/contributors.json:
12:59 PM Changeset in webkit [290903] by commit-queue@webkit.org
  • 88 edits
    1 delete in trunk/Source/WebKit

Remove unnecessary Async attribute in .messages.in files
​https://bugs.webkit.org/show_bug.cgi?id=237491

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-07
Reviewed by Chris Dumez.

If there is a reply and no "Synchronous" then we can infer that it is asynchronous.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/GPUProcess.messages.in:
  • GPUProcess/media/RemoteAudioDestinationManager.messages.in:
  • GPUProcess/media/RemoteCDMFactoryProxy.h:
  • GPUProcess/media/RemoteCDMInstanceProxy.messages.in:
  • GPUProcess/media/RemoteCDMInstanceSessionProxy.messages.in:
  • GPUProcess/media/RemoteCDMProxy.messages.in:
  • GPUProcess/media/RemoteLegacyCDMFactoryProxy.h:
  • GPUProcess/media/RemoteMediaEngineConfigurationFactoryProxy.messages.in:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • GPUProcess/media/RemoteMediaResourceManager.messages.in:
  • GPUProcess/media/RemoteSourceBufferProxy.messages.in:
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.messages.in:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.messages.in:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.messages.in:
  • NetworkProcess/Cookies/WebCookieManager.messages.in:
  • NetworkProcess/NetworkBroadcastChannelRegistry.messages.in:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkSocketChannel.messages.in:
  • NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
  • NetworkProcess/WebStorage/StorageManagerSet.messages.in:
  • NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::startAsyncRevalidationIfNeeded):

  • NetworkProcess/storage/NetworkStorageManager.messages.in:
  • Scripts/webkit/messages.py:

(message_to_reply_forward_declaration):
(message_to_struct_declaration):
(forward_declarations_and_headers_for_replies):
(async_message_statement):
(sync_message_statement):
(generate_message_handler):
(generate_message_argument_description_implementation):

  • Scripts/webkit/model.py:

(generate_global_model):

  • Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in:
  • Shared/AuxiliaryProcess.messages.in:
  • Shared/Notifications/NotificationManagerMessageHandler.messages.in:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in:
  • UIProcess/Downloads/DownloadProxy.messages.in:
  • UIProcess/Media/AudioSessionRoutingArbitratorProxy.messages.in:
  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.messages.in:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/UserContent/WebUserContentControllerProxy.messages.in:
  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.messages.in:
  • UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp:
  • UIProcess/WebAuthentication/WebAuthnProcessProxy.messages.in: Removed.
  • UIProcess/WebLockRegistryProxy.messages.in:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebProcessProxy.messages.in:
  • UIProcess/XR/PlatformXRSystem.messages.in:
  • UIProcess/mac/SecItemShimProxy.messages.in:
  • WebAuthnProcess/WebAuthnConnectionToWebProcess.messages.in:
  • WebAuthnProcess/WebAuthnProcess.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Automation/WebAutomationSessionProxy.messages.in:
  • WebProcess/GPU/GPUProcessConnection.messages.in:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.messages.in:
  • WebProcess/Inspector/WebInspectorUIExtensionController.messages.in:
  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.messages.in:
  • WebProcess/Network/NetworkProcessConnection.messages.in:
  • WebProcess/Storage/WebSWClientConnection.messages.in:
  • WebProcess/Storage/WebSWContextManagerConnection.messages.in:
  • WebProcess/Storage/WebSharedWorkerObjectConnection.messages.in:
  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.messages.in:
  • WebProcess/WebPage/EventDispatcher.messages.in:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/VideoFullscreenManager.messages.in:
12:53 PM Changeset in webkit [290902] by Oriol Brufau
  • 1 edit
    4 deletes in trunk/LayoutTests

Remove duplicated platform expectations for computed-style.html, computed-style-without-renderer.html, getComputedStyle-basic.xhtml
​https://bugs.webkit.org/show_bug.cgi?id=237534

Unreviewed test gardening.

  • platform/glib/fast/css/getComputedStyle/computed-style-expected.txt: Removed.
  • platform/glib/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt: Removed.
  • platform/glib/svg/css/getComputedStyle-basic-expected.txt: Removed.
  • platform/ios/fast/css/getComputedStyle/computed-style-expected.txt: Removed.
  • platform/ios/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt: Removed.
  • platform/ios/svg/css/getComputedStyle-basic-expected.txt: Removed.
12:29 PM Changeset in webkit [290901] by Chris Dumez
  • 101 edits
    1 delete in trunk

Optimize the passing of data across threads
​https://bugs.webkit.org/show_bug.cgi?id=237502

Reviewed by Geoff Garen.

Source/WebCore:

Add more isolatedCopy() overloads that work on r-value references when the implementation
can be optimized. Also call isolatedCopy() / crossThreadCopy() on a r-value reference
whenever possible to leverage these optimizations.

  • Modules/cache/CacheQueryOptions.h:

(WebCore::CacheQueryOptions::isolatedCopy const):
(WebCore::CacheQueryOptions::isolatedCopy):

  • Modules/cache/DOMCacheEngine.cpp:

(WebCore::DOMCacheEngine::isolateCacheInfo): Deleted.
(WebCore::DOMCacheEngine::CacheInfos::isolatedCopy): Deleted.

  • Modules/cache/DOMCacheEngine.h:

(WebCore::DOMCacheEngine::CacheInfo::isolatedCopy const):
(WebCore::DOMCacheEngine::CacheInfo::isolatedCopy):
(WebCore::DOMCacheEngine::CacheInfos::isolatedCopy const):
(WebCore::DOMCacheEngine::CacheInfos::isolatedCopy):

  • Modules/cache/RetrieveRecordsOptions.h:

(WebCore::RetrieveRecordsOptions::isolatedCopy const):
(WebCore::RetrieveRecordsOptions::isolatedCopy):

  • Modules/cache/WorkerCacheStorageConnection.cpp:

(WebCore::WorkerCacheStorageConnection::retrieveCaches):
(WebCore::WorkerCacheStorageConnection::batchDeleteOperation):

  • Modules/entriesapi/DOMFileSystem.cpp:

(WebCore::ListedChild::isolatedCopy const):
(WebCore::ListedChild::isolatedCopy):
(WebCore::DOMFileSystem::listDirectory):

  • Modules/indexeddb/IDBDatabaseIdentifier.cpp:

(WebCore::IDBDatabaseIdentifier::isolatedCopy const):
(WebCore::IDBDatabaseIdentifier::isolatedCopy):

  • Modules/indexeddb/IDBDatabaseIdentifier.h:
  • Modules/indexeddb/IDBGetResult.cpp:

(WebCore::IDBGetResult::isolatedCopy):

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::requestGetAllObjectStoreRecords):
(WebCore::IDBTransaction::requestGetAllIndexRecords):

  • Modules/indexeddb/server/MemoryObjectStore.cpp:

(WebCore::IDBServer::MemoryObjectStore::populateIndexWithExistingRecords):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord):

  • Modules/indexeddb/shared/IDBDatabaseNameAndVersion.h:

(WebCore::IDBDatabaseNameAndVersion::isolatedCopy const):
(WebCore::IDBDatabaseNameAndVersion::isolatedCopy):

  • Modules/indexeddb/shared/IDBError.cpp:

(WebCore::IDBError::isolatedCopy const): Deleted.

  • Modules/indexeddb/shared/IDBError.h:

(WebCore::IDBError::isolatedCopy const):
(WebCore::IDBError::isolatedCopy):

  • Modules/indexeddb/shared/IDBIndexInfo.cpp:

(WebCore::IDBIndexInfo::isolatedCopy const):
(WebCore::IDBIndexInfo::isolatedCopy):

  • Modules/indexeddb/shared/IDBIndexInfo.h:
  • Modules/indexeddb/shared/IDBObjectStoreInfo.cpp:

(WebCore::IDBObjectStoreInfo::isolatedCopy const):
(WebCore::IDBObjectStoreInfo::isolatedCopy):

  • Modules/indexeddb/shared/IDBObjectStoreInfo.h:
  • Modules/web-locks/WebLockManagerSnapshot.h:

(WebCore::WebLockManagerSnapshot::Info::isolatedCopy const):
(WebCore::WebLockManagerSnapshot::Info::isolatedCopy):
(WebCore::WebLockManagerSnapshot::isolatedCopy const):
(WebCore::WebLockManagerSnapshot::isolatedCopy):

  • Modules/webaudio/AudioParamDescriptor.h:

(WebCore::AudioParamDescriptor::isolatedCopy const):
(WebCore::AudioParamDescriptor::isolatedCopy):

  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::registerProcessor):

  • Modules/webaudio/AudioWorkletThread.cpp:

(WebCore::AudioWorkletThread::AudioWorkletThread):

  • Modules/webaudio/AudioWorkletThread.h:

(WebCore::AudioWorkletThread::create):

  • Modules/webdatabase/DatabaseTask.cpp:

(WebCore::DatabaseOpenTask::doPerformTask):

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::origins):
(WebCore::DatabaseTracker::addOpenDatabase):
(WebCore::DatabaseTracker::originLockFor):

  • Modules/websockets/WorkerThreadableWebSocketChannel.cpp:

(WebCore::WorkerThreadableWebSocketChannel::Peer::didConnect):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • contentextensions/ContentExtensionActions.cpp:

(WebCore::ContentExtensions::ModifyHeadersAction::isolatedCopy const):
(WebCore::ContentExtensions::ModifyHeadersAction::isolatedCopy):
(WebCore::ContentExtensions::ModifyHeadersAction::ModifyHeaderInfo::isolatedCopy const):
(WebCore::ContentExtensions::ModifyHeadersAction::ModifyHeaderInfo::isolatedCopy):
(WebCore::ContentExtensions::RedirectAction::isolatedCopy const):
(WebCore::ContentExtensions::RedirectAction::isolatedCopy):
(WebCore::ContentExtensions::RedirectAction::URLTransformAction::isolatedCopy const):
(WebCore::ContentExtensions::RedirectAction::URLTransformAction::isolatedCopy):
(WebCore::ContentExtensions::RedirectAction::URLTransformAction::QueryTransform::isolatedCopy const):
(WebCore::ContentExtensions::RedirectAction::URLTransformAction::QueryTransform::isolatedCopy):
(WebCore::ContentExtensions::RedirectAction::URLTransformAction::QueryTransform::QueryKeyValue::isolatedCopy const): Deleted.

  • contentextensions/ContentExtensionActions.h:

(WebCore::ContentExtensions::ActionWithStringMetadata::isolatedCopy const):
(WebCore::ContentExtensions::ActionWithStringMetadata::isolatedCopy):

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):

  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::loadTrigger):

  • contentextensions/ContentExtensionRule.cpp:

(WebCore::ContentExtensions::Trigger::isolatedCopy const):
(WebCore::ContentExtensions::Trigger::isolatedCopy):
(WebCore::ContentExtensions::Action::isolatedCopy const):
(WebCore::ContentExtensions::Action::isolatedCopy):

  • contentextensions/ContentExtensionRule.h:

(WebCore::ContentExtensions::Trigger::checkValidity):
(WebCore::ContentExtensions::ContentExtensionRule::isolatedCopy const):
(WebCore::ContentExtensions::ContentExtensionRule::isolatedCopy):
(WebCore::ContentExtensions::Trigger::~Trigger): Deleted.

  • dom/Exception.h:

(WebCore::Exception::isolatedCopy const):
(WebCore::Exception::isolatedCopy):
(WebCore::isolatedCopy): Deleted.

  • dom/ExceptionData.cpp: Removed.

(WebCore::ExceptionData::isolatedCopy const): Deleted.

  • dom/ExceptionData.h:

(WebCore::ExceptionData::isolatedCopy const):
(WebCore::ExceptionData::isolatedCopy):

  • dom/ExceptionOr.h:

(WebCore::isolatedCopy): Deleted.

  • html/DirectoryFileListCreator.cpp:

(WebCore::FileInformation::isolatedCopy const):
(WebCore::FileInformation::isolatedCopy):

  • html/FileInputType.cpp:

(WebCore::FileInputType::receiveDroppedFilesWithImageTranscoding):

  • html/parser/HTMLPreloadScanner.cpp:

(WebCore::TokenPreloadScanner::updatePredictedBaseURL):

  • loader/CrossOriginOpenerPolicy.cpp:

(WebCore::CrossOriginOpenerPolicy::isolatedCopy const):
(WebCore::CrossOriginOpenerPolicy::isolatedCopy):

  • loader/CrossOriginOpenerPolicy.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::handleContentFilterDidBlock):

  • loader/FetchOptions.h:

(WebCore::FetchOptions::isolatedCopy const):
(WebCore::FetchOptions::isolatedCopy):

  • loader/PolicyContainer.h:

(WebCore::PolicyContainer::isolatedCopy const):
(WebCore::PolicyContainer::isolatedCopy):

  • loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::UnlinkableToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::UnlinkableToken::isolatedCopy):
(WebCore::PrivateClickMeasurement::isolatedCopy const):
(WebCore::PrivateClickMeasurement::isolatedCopy):
(WebCore::PrivateClickMeasurement::SecretToken::isolatedCopy const): Deleted.
(WebCore::PrivateClickMeasurement::SourceSecretToken::isolatedCopy const): Deleted.
(WebCore::PrivateClickMeasurement::DestinationSecretToken::isolatedCopy const): Deleted.
(WebCore::PrivateClickMeasurement::EphemeralNonce::isolatedCopy const): Deleted.
(WebCore::PrivateClickMeasurement::SourceUnlinkableToken::isolatedCopy const): Deleted.
(WebCore::PrivateClickMeasurement::DestinationUnlinkableToken::isolatedCopy const): Deleted.

  • loader/PrivateClickMeasurement.h:

(WebCore::PrivateClickMeasurement::SourceSite::isolatedCopy const):
(WebCore::PrivateClickMeasurement::SourceSite::isolatedCopy):
(WebCore::PrivateClickMeasurement::AttributionDestinationSite::isolatedCopy const):
(WebCore::PrivateClickMeasurement::AttributionDestinationSite::isolatedCopy):
(WebCore::PrivateClickMeasurement::EphemeralNonce::isolatedCopy const):
(WebCore::PrivateClickMeasurement::EphemeralNonce::isolatedCopy):
(WebCore::PrivateClickMeasurement::SourceUnlinkableToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::SourceUnlinkableToken::isolatedCopy):
(WebCore::PrivateClickMeasurement::DestinationUnlinkableToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::DestinationUnlinkableToken::isolatedCopy):
(WebCore::PrivateClickMeasurement::SecretToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::SecretToken::isolatedCopy):
(WebCore::PrivateClickMeasurement::SourceSecretToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::SourceSecretToken::isolatedCopy):
(WebCore::PrivateClickMeasurement::DestinationSecretToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::DestinationSecretToken::isolatedCopy):

  • loader/ResourceTiming.cpp:

(WebCore::ResourceTiming::isolatedCopy const):
(WebCore::ResourceTiming::isolatedCopy):

  • loader/ResourceTiming.h:
  • loader/ServerTiming.cpp:

(WebCore::ServerTiming::isolatedCopy const):
(WebCore::ServerTiming::isolatedCopy):

  • loader/ServerTiming.h:
  • loader/WorkerThreadableLoader.cpp:
  • page/ClientOrigin.h:

(WebCore::ClientOrigin::isolatedCopy const):
(WebCore::ClientOrigin::isolatedCopy):

  • page/ProcessWarming.cpp:

(WebCore::ProcessWarming::prewarmWithInformation):

  • page/ProcessWarming.h:
  • page/csp/ContentSecurityPolicyResponseHeaders.cpp:

(WebCore::ContentSecurityPolicyResponseHeaders::isolatedCopy const):
(WebCore::ContentSecurityPolicyResponseHeaders::isolatedCopy):

  • page/csp/ContentSecurityPolicyResponseHeaders.h:
  • platform/FileChooser.h:

(WebCore::FileChooserFileInfo::isolatedCopy const):
(WebCore::FileChooserFileInfo::isolatedCopy):

  • platform/MediaSelectionOption.h:

(WebCore::MediaSelectionOption::isolatedCopy const):
(WebCore::MediaSelectionOption::isolatedCopy):

  • platform/RegistrableDomain.h:

(WebCore::RegistrableDomain::isolatedCopy const):
(WebCore::RegistrableDomain::isolatedCopy):

  • platform/graphics/FontCache.cpp:

(WebCore::FontCache::prewarm):

  • platform/graphics/FontCache.h:

(WebCore::FontCache::PrewarmInformation::isolatedCopy const):
(WebCore::FontCache::PrewarmInformation::isolatedCopy):

  • platform/graphics/FontGenericFamilies.cpp:

(WebCore::FontGenericFamilies::isolatedCopy const):
(WebCore::FontGenericFamilies::isolatedCopy):

  • platform/graphics/FontGenericFamilies.h:
  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::startAsyncDecodingQueue):

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::FontDatabase::collectionForFamily):
(WebCore::FontCache::prewarm):

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(VideoFullscreenControllerContext::audioMediaSelectionOptionsChanged):
(VideoFullscreenControllerContext::legibleMediaSelectionOptionsChanged):
(isolatedCopy): Deleted.

  • platform/mediacapabilities/AudioConfiguration.h:

(WebCore::AudioConfiguration::isolatedCopy const):
(WebCore::AudioConfiguration::isolatedCopy):

  • platform/mediacapabilities/MediaConfiguration.h:

(WebCore::MediaConfiguration::isolatedCopy const):
(WebCore::MediaConfiguration::isolatedCopy):

  • platform/mediacapabilities/VideoConfiguration.h:

(WebCore::VideoConfiguration::isolatedCopy const):
(WebCore::VideoConfiguration::isolatedCopy):

  • platform/mediastream/RTCDataChannelHandler.h:

(WebCore::RTCDataChannelInit::isolatedCopy const):
(WebCore::RTCDataChannelInit::isolatedCopy):

  • platform/mediastream/mac/AVCaptureDeviceManager.mm:

(WebCore::AVCaptureDeviceManager::refreshCaptureDevices):

  • platform/network/HTTPHeaderMap.cpp:

(WebCore::HTTPHeaderMap::isolatedCopy const):
(WebCore::HTTPHeaderMap::isolatedCopy):

  • platform/network/HTTPHeaderMap.h:

(WebCore::HTTPHeaderMap::CommonHeader::isolatedCopy const):
(WebCore::HTTPHeaderMap::CommonHeader::isolatedCopy):
(WebCore::HTTPHeaderMap::UncommonHeader::isolatedCopy const):
(WebCore::HTTPHeaderMap::UncommonHeader::isolatedCopy):

  • workers/service/ServiceWorkerClients.cpp:

(WebCore::ServiceWorkerClients::claim):

  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::RegistrationDatabase::schedulePushChanges):

  • worklets/WorkletParameters.h:

(WebCore::WorkletParameters::isolatedCopy const):
(WebCore::WorkletParameters::isolatedCopy):

Source/WebKit:

Add more isolatedCopy() overloads that work on r-value references when the implementation
can be optimized. Also call isolatedCopy() / crossThreadCopy() on a r-value reference
whenever possible to leverage these optimizations.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::migrateDataToPCMDatabaseIfNecessary):

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:

(WebKit::RegistrableDomainsToBlockCookiesFor::isolatedCopy const):
(WebKit::RegistrableDomainsToBlockCookiesFor::isolatedCopy):
(WebKit::RegistrableDomainsToDeleteOrRestrictWebsiteDataFor::isolatedCopy const):
(WebKit::RegistrableDomainsToDeleteOrRestrictWebsiteDataFor::isolatedCopy):

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::closeAndDeleteDatabasesForOrigins):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDebugInfo.cpp:

(WebKit::PCM::DebugInfo::isolatedCopy const):
(WebKit::PCM::DebugInfo::isolatedCopy):
(WebKit::PCM::DebugInfo::Message::isolatedCopy const):
(WebKit::PCM::DebugInfo::Message::isolatedCopy):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDebugInfo.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.cpp:

(WebKit::PCM::Store::allAttributedPrivateClickMeasurement):

  • UIProcess/API/APIContentRuleListStore.cpp:

(API::ContentRuleListStore::compileContentRuleList):

  • UIProcess/Cocoa/ModalContainerControlClassifier.mm:

(WebKit::ModalContainerControlClassifier::classify):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::setMediaAccessibilityPreferences):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didChooseFilesForOpenPanelWithImageTranscoding):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::prewarmWithDomainInformation):

  • WebProcess/WebProcess.h:

Source/WebKitLegacy:

Add more isolatedCopy() overloads that work on r-value references when the implementation
can be optimized. Also call isolatedCopy() / crossThreadCopy() on a r-value reference
whenever possible to leverage these optimizations.

  • Storage/InProcessIDBServer.cpp:

(InProcessIDBServer::didGetAllDatabaseNamesAndVersions):

Source/WTF:

Drop isolatedCopy() on Vector since CrossThreadCopier already has logic to
isolate-copy a Vector. The logic in CrossThreadCopier has the benefit of
working on types that do not implement isolatedCopy() (e.g. a Vector of
std::optional or a Vector of std::variant).

Improve the CrossThreadCopier to optimize the case where crossThreadCopy()
is called on a r-value reference in more cases. In particular, the logic
for Vector, HashSet, HashMap, std::pair, std::variant was improved. I
also added API test coverage for those.

The API tests also found a bug where crossThreadCopy() was incorrectly
moving the source when called on a std::variant that was not a r-value
reference. This bug is fixed in this patch too.

  • wtf/CrossThreadCopier.h:
  • wtf/Vector.h:

(WTF::Malloc>::isolatedCopy const): Deleted.
(WTF::Malloc>::isolatedCopy): Deleted.

  • wtf/mac/FileSystemMac.mm:

(WTF::FileSystem::setMetadataURL):

Tools:

Expand test coverage for crossThreadCopy() and make sure the optimizations are working
when called on a r-value reference.

  • TestWebKitAPI/Tests/WTF/CrossThreadCopier.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/Vector.cpp:

(TestWebKitAPI::TEST):

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

LayoutTests/webgl/max-active-contexts-gc.html is flaky
​https://bugs.webkit.org/show_bug.cgi?id=237466

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-07
Reviewed by Alexey Proskuryakov.
The test:

  • created 16 WebGL contexts
  • unreferenced 8 WebGL contexts.
  • forced gc
  • added 9 WebGL contexts.

The test tries to test that GC removes unreferenced contexts.
To assert this, it ends up with 17 contexts, which is 1 above
the maximum active limit. This means one context is lost and the
implementation prints one line of error.

Since the GC is not exact, sometimes it would only collect 7 of the 8
unreferenced contexts. This would mean two error messages.

Fix by trying to collect each time a context is unreferenced. This seems to be
more predictable.

  • webgl/max-active-contexts-gc.html:
11:21 AM Changeset in webkit [290899] by Chris Dumez
  • 10 edits
    3 adds in trunk

Make "true" count as truthy in window.open()'s boolean features
​https://bugs.webkit.org/show_bug.cgi?id=237530

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Import WPT test coverage.

  • resources/resource-files.json:
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-is-popup-condition.html:
  • web-platform-tests/html/browsers/the-window-object/support/w3c-import.log:
  • web-platform-tests/html/browsers/the-window-object/support/windowFeature-values-target.html: Added.
  • web-platform-tests/html/browsers/the-window-object/w3c-import.log:
  • web-platform-tests/html/browsers/the-window-object/window-open-noopener.html:
  • web-platform-tests/html/browsers/the-window-object/window-open-windowfeatures-values-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/window-open-windowfeatures-values.html: Added.

Source/WebCore:

Make "true" count as truthy in window.open()'s boolean features, as per:

Test: imported/w3c/web-platform-tests/html/browsers/the-window-object/window-open-windowfeatures-values.html

  • page/WindowFeatures.cpp:

(WebCore::setWindowFeature):

LayoutTests:

  • tests-options.json:
11:13 AM Changeset in webkit [290898] by graouts@webkit.org
  • 4 edits in trunk

[web-animations] animating "fill" and "stroke" to or from "currentColor" should work
​https://bugs.webkit.org/show_bug.cgi?id=237531

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/responsive/to-color-change-expected.txt:

Source/WebCore:

Invalid colors should use the value for the "color" property on the provided RenderStyle.

  • animation/CSSPropertyAnimation.cpp:
10:18 AM Changeset in webkit [290897] by graouts@webkit.org
  • 4 edits in trunk

Transition on text-decoration-color from currentColor jumps
​https://bugs.webkit.org/show_bug.cgi?id=236992
<rdar://problem/89382835>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/responsive/to-color-change-expected.txt:

Source/WebCore:

We need to use the MaybeInvalidColor tag to identify that this property can work with currentColor.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

10:00 AM Changeset in webkit [290896] by sihui_liu@apple.com
  • 11 edits
    1 delete in trunk/Source/WebKit

Delete WebIDBServer and WebIDBConnectionToClient
​https://bugs.webkit.org/show_bug.cgi?id=237479

Reviewed by Chris Dumez.

The code is unused since r289474; remove it to avoid confusion when investigating issues including related
symbols.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp: Removed.
  • NetworkProcess/IndexedDB/WebIDBConnectionToClient.h: Removed.
  • NetworkProcess/IndexedDB/WebIDBServer.cpp: Removed.
  • NetworkProcess/IndexedDB/WebIDBServer.h: Removed.
  • NetworkProcess/IndexedDB/WebIDBServer.messages.in: Removed.
  • NetworkProcess/NetworkProcess.cpp:
  • NetworkProcess/NetworkSession.cpp:
  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/ios/NetworkProcessIOS.mm:
  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
9:53 AM Changeset in webkit [290895] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] text-emphasis shorthand should be animatable
​https://bugs.webkit.org/show_bug.cgi?id=237529

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-expected.txt:
  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::valueForTextEmphasisStyle):
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

9:52 AM Changeset in webkit [290894] by Jonathan Bedard
  • 4 edits in trunk/Tools

[git-webkit] Derive branch name from bug title (Follow-up fix)
​https://bugs.webkit.org/show_bug.cgi?id=237284
<rdar://problem/89578241>

Unreviewed follow-up fix.

  • Tools/Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/branch_unittest.py:

(TestBranch.test_basic_svn): Using an integer will attempt to find a bug number.
(TestBranch.test_basic_git): Ditto.

Canonical link: ​https://commits.webkit.org/248125@main

9:37 AM Changeset in webkit [290893] by J Pascoe
  • 7 edits in trunk/Source/WebKit

[WebAuthn] Provide global frame identifier to ASCAgent SPI
​https://bugs.webkit.org/show_bug.cgi?id=237454
rdar://problem/89782147

Reviewed by Brent Fulgham.

For purposes related to conditional mediation, the ASCAgent SPI
need to know what frame requested the assertion. This patch starts
passing that along.

  • Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h:
  • UIProcess/WebAuthentication/AuthenticatorManager.cpp:

(WebKit::AuthenticatorManager::cancelRequest):
(WebKit::AuthenticatorManager::runPanel):

  • UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.h:
  • UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.mm:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:

(WebKit::configurationAssertionRequestContext):
(WebKit::WebAuthenticatorCoordinatorProxy::contextForRequest):

  • UIProcess/WebAuthentication/WebAuthenticationRequestData.h:
9:29 AM Changeset in webkit [290892] by Peng Liu
  • 4 edits in trunk/Source

Small cleanups of media code
​https://bugs.webkit.org/show_bug.cgi?id=237496

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

No new tests. No behavior change.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::updatePlayState): schedulePlaybackControlsManagerUpdate() is
called in both branches.

Source/WebKit:

  • WebProcess/cocoa/PlaybackSessionManager.h: protected is not needed here.
9:13 AM Changeset in webkit [290891] by Chris Dumez
  • 2 edits in trunk/LayoutTests

[Catalina Release wk1] imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html is a flaky failure
​https://bugs.webkit.org/show_bug.cgi?id=230729
<rdar://problem/83469625>

Unreviewed, unskip test as the bots show no recent flakiness.

  • platform/mac-wk1/TestExpectations:
8:42 AM WebKitGTK/2.36.x edited by berto@igalia.com
Reproducible build fixes (diff)
8:37 AM Changeset in webkit [290890] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebKit

[GTK] generate-automation-atom.py breaks reproducible builds
​https://bugs.webkit.org/show_bug.cgi?id=237506

Reviewed by Carlos Garcia Campos.

  • Scripts/generate-automation-atom.py:

(append_functions): Sort utility functions to produce stable output.

7:56 AM Changeset in webkit [290889] by Jonathan Bedard
  • 18 edits in trunk

[webkitbugspy] Allow creation of new issues
​https://bugs.webkit.org/show_bug.cgi?id=237123
<rdar://problem/89388181>

Reviewed by Dewei Zhu.

  • metadata/trackers.json: Define project.
  • Tools/Scripts/libraries/webkitbugspy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/bugzilla.py:

(Tracker.projects): Return a dictionary of projects, components and versions.
(Tracker.create): Create a new bug, prompting user for product, component and version
if needed.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/github.py:

(Tracker.labels): Return a dictionary of all labels associated with the project.
(Tracker.projects): Return an empty dictionary.
(Tracker.create): Create a new issue.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/init.py: Export PROJECT data.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/base.py:

(Base.init): Mock trackers should define a project dictionary.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/bugzilla.py:

(Bugzilla.init):
(Bugzilla._product_details): Derive product details from project dictionary.
(Bugzilla._create): Create a new bug.
(Bugzilla.request): Handle requests for product details and bug creation.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/data.py:
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/github.py:

(GitHub.init):
(GitHub._labels): Return a list of project labels.
(GitHub._create): Create a new issue.
(GitHub.request): Handle requests for labels and issue creation.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/radar.py:

(RadarClient.find_components): Mock radarclient's component search API.
(RadarClient.create_radar): Mock radarclient's radar creation API.
(Radar.Component): Added.
(Radar.exceptions): Added.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/radar.py:

(Tracker):
(Tracker.Encoder.default): Pass 'projects' to radar instances.
(Tracker.init): Callers should define projects to limit component scope.
(Tracker.projects): Search radar components to provide a subset relevant to the declared projects.
(Tracker.create): Create a radar, prompting user for component and version if needed.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/tests/bugzilla_unittest.py:

(TestBugzilla.test_state_why):
(TestBugzilla):
(TestBugzilla.test_projects):
(TestBugzilla.test_create):
(TestBugzilla.test_create_prompt):

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/tests/github_unittest.py:

(TestGitHub.test_state_why):
(TestGitHub):
(TestGitHub.test_labels):
(TestGitHub.test_projects):
(TestGitHub.test_create):

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/tests/radar_unittest.py:

(TestRadar.test_state_why):
(TestRadar):
(TestRadar.test_projects):
(TestRadar.test_create):
(TestRadar.test_create_prompt):

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/tracker.py:

(Tracker.from_json): Pass 'projects' to radar instances.
(Tracker.projects): Add base-class implementation.
(Tracker.create): Ditto.

Canonical link: ​https://commits.webkit.org/248120@main

6:26 AM Changeset in webkit [290888] by graouts@webkit.org
  • 10 edits in trunk

[web-animations] text-emphasis-style should support discrete animations
​https://bugs.webkit.org/show_bug.cgi?id=237514

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-expected.txt:
  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:
  • web-platform-tests/css/css-text-decor/inheritance-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

6:24 AM Changeset in webkit [290887] by graouts@webkit.org
  • 7 edits in trunk

[web-animations] text-emphasis-color should support non-discrete animations
​https://bugs.webkit.org/show_bug.cgi?id=237518

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

This property was mistakenly added as a discrete property when it was unprefixed.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

6:22 AM Changeset in webkit [290886] by graouts@webkit.org
  • 4 edits in trunk

[web-animations] text-decoration-skip-ink should support discrete animations
​https://bugs.webkit.org/show_bug.cgi?id=237512

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

6:19 AM Changeset in webkit [290885] by graouts@webkit.org
  • 4 edits in trunk

[web-animations] line-break should support discrete animations
​https://bugs.webkit.org/show_bug.cgi?id=237520

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

6:15 AM Changeset in webkit [290884] by graouts@webkit.org
  • 15 edits in trunk

Parsing of list-style shorthand is incorrect
​https://bugs.webkit.org/show_bug.cgi?id=237515

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-lists/parsing/list-style-computed.sub-expected.txt:
  • web-platform-tests/css/css-lists/parsing/list-style-valid-expected.txt:
  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-expected.txt:
  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:
  • web-platform-tests/css/cssom/shorthand-values-expected.txt:

Source/WebCore:

The spec at ​https://drafts.csswg.org/css-lists/#list-style-property says the order of the properties

in the "list-style" shorthand is <'list-style-position'>
<'list-style-image'> <'list-style-type'>.

Additionally, the "none" value needs special handling such that it sets "list-style-type".

  • css/CSSProperties.json:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::parseShorthand):

LayoutTests:

Some non-WPT tests had the wrong assumption on the shorthand order
for list-style, so we update those tests to match the spec.

Additionally, the WPT test css/css-lists/list-style-type-string-004.html now passes.

  • fast/css/cssText-shorthand-expected.txt:
  • fast/css/cssText-shorthand.html:
  • fast/css/getComputedStyle/getComputedStyle-list-style-shorthand-expected.txt:
  • fast/css/getComputedStyle/getComputedStyle-list-style-shorthand.html:
  • platform/mac/TestExpectations:
4:43 AM Changeset in webkit [290883] by berto@igalia.com
  • 2 edits in trunk/Source/WebCore

makeprop.pl breaks reproducible builds
​https://bugs.webkit.org/show_bug.cgi?id=237521

Reviewed by Carlos Garcia Campos.

  • css/makeprop.pl: Sort hash elements so the output file is always

the same across different builds.

3:47 AM Changeset in webkit [290882] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Add missing CPU(RISCV64) guards in CTI thunk prologue, epilogue generators
​https://bugs.webkit.org/show_bug.cgi?id=237517

Unreviewed, adding missing CPU(RISCV64) guards to the CTI thunk prologue
and epilogue generators in CCallHelpers, reusing the ARM variants of the
pair push/pop calls.

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-03-07

  • jit/CCallHelpers.cpp:

(JSC::CCallHelpers::emitCTIThunkPrologue):
(JSC::CCallHelpers::emitCTIThunkEpilogue):

3:18 AM Changeset in webkit [290881] by Nikolas Zimmermann
  • 3 edits in trunk/Source/WebCore

Add hasTransformOrPerspective() helper to RenderObject
​https://bugs.webkit.org/show_bug.cgi?id=237469

Reviewed by Darin Adler.

Avoid duplicating the logic to test if a renderer is transformed in
multiple places. Currently RenderGeometryMap duplicates the logic to add
one extra condition, the presence of a 'perspective' property.

While I was at it: remove the redundant offsetPath() check in
RenderObject::hasTransform(), since RenderStyle::hasTransform()
already returns true if offsetPath() is non-null.

LBSE wants to extend hasTransform() by a new condition: hasSVGTransform().
Before this patch, the place in RenderGeometryMap was easy to miss, fix that,
by centralizing the logic in one place.

Covered by existing tests, no change in behaviour.

  • rendering/RenderGeometryMap.cpp:

(WebCore::canMapBetweenRenderersViaLayers): Use RenderObject::hasTransformOrPespective().

  • rendering/RenderObject.h:

(WebCore::RenderObject::hasTransform const): Remove redundant offsetPath() check.
(WebCore::RenderObject::hasTransformOrPespective const): Add new helper.

3:16 AM Changeset in webkit [290880] by Nikolas Zimmermann
  • 7 edits
    2 adds in trunk/Source/WebCore

[LBSE] Begin layer-aware RenderSVGTransformableContainer implementation
​https://bugs.webkit.org/show_bug.cgi?id=237024

Reviewed by Rob Buis.

Create RenderSVGContainer based on the downstream LBSE implementation.

This patch does not yet enable the creation of RenderSVGContainer
renderers if LBSE is enabled, since the derived classes, such as
RenderSVGHiddenContainer / RenderSVGViewportContainer / ..., are still
missing in LBSE.

Covered by existing tests, no change in behaviour.

  • Sources.txt: Add RenderSVGTransformableContainer.* to build.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • rendering/RenderObject.h:

(WebCore::RenderObject::isSVGTransformableContainer const):

  • rendering/svg/RenderSVGTransformableContainer.cpp: Added.

(WebCore::RenderSVGTransformableContainer::RenderSVGTransformableContainer):
(WebCore::associatedUseElement):
(WebCore::RenderSVGTransformableContainer::additionalContainerTranslation const):
(WebCore::RenderSVGTransformableContainer::calculateViewport):
(WebCore::RenderSVGTransformableContainer::layoutChildren):
(WebCore::RenderSVGTransformableContainer::updateFromStyle):
(WebCore::RenderSVGTransformableContainer::applyTransform const):
(WebCore::RenderSVGTransformableContainer::styleWillChange):
(WebCore::RenderSVGTransformableContainer::graphicsElement const):

  • rendering/svg/RenderSVGTransformableContainer.h: Added.
  • rendering/svg/SVGContainerLayout.cpp:

(WebCore::SVGContainerLayout::transformToRootChanged):

  • svg/SVGElement.cpp: Create renderer for <g> elements in LBSE mode.

(WebCore::createSVGLayerAwareElementSet):

  • svg/SVGGElement.cpp: Ditto.

(WebCore::SVGGElement::createElementRenderer):

2:19 AM Changeset in webkit [290879] by Matt Woodrow
  • 9 edits
    2 adds in trunk

Compute correct containing block override size for items that are subgridden in one dimension only.
​https://bugs.webkit.org/show_bug.cgi?id=236951

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Added new WPT similar to auto-track-sizing-001 which adds new variations
with nested subgrids and varying whether the other axis is subgridded.

  • web-platform-tests/css/css-grid/subgrid/auto-track-sizing-002-expected.html: Added.
  • web-platform-tests/css/css-grid/subgrid/auto-track-sizing-002.html: Added.

Source/WebCore:

Items that are subgridded in one dimension will be included in the track sizing algorithm of the
outer grid for that dimension. When measuring their size in the subgridded dimension, we need to
set their containing block size in the other (non-subgridded) dimension, which is only available
from the subgrid's track sizing, not the outer track sizes.

This recurses up to set the override size on the subgrid element instead, and forces a layout
there, which should copy down subgrid track sizes and compute the other dimension, making it
available on the inner item we need.

Test: imported/w3c/web-platform-tests/css/css-grid/subgrid/auto-track-sizing-002.html

  • rendering/GridLayoutFunctions.cpp:

(WebCore::GridLayoutFunctions::extraMarginForSubgridAncestors):

  • rendering/GridLayoutFunctions.h:
  • rendering/GridTrackSizingAlgorithm.cpp:

(WebCore::GridTrackSizingAlgorithmStrategy::updateOverridingContainingBlockContentSizeForChild const):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::isSubgridOf):

  • rendering/RenderGrid.h:

LayoutTests:

Marked existing WPT as passing.

2:17 AM Changeset in webkit [290878] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Release_Assert | WebCore::Document::addTopLayerElement()
​https://bugs.webkit.org/show_bug.cgi?id=237307

Patch by Frédéric Wang <​fwang@igalia.com> on 2022-03-07
Reviewed by Chris Dumez.

setBooleanAttribute() call in HTMLDialogElement::showModal() dispatches a DOMSubtreeModified
event. Postpone it so that listeners cannot disconnect the dialog element.

  • html/HTMLDialogElement.cpp:

(WebCore::HTMLDialogElement::showModal): Add a queue to postpone event.

Mar 6, 2022:

10:43 PM Changeset in webkit [290877] by mmaxfield@apple.com
  • 28 edits in trunk/Source/WebGPU

[WebGPU] Use C++ references instead of pointers where applicable
​https://bugs.webkit.org/show_bug.cgi?id=237508

Reviewed by Tim Horton.

The header we're implementing uses pointers because it's a C header.
Our internal implementation can use references instead.

  • WebGPU/Adapter.h:
  • WebGPU/Adapter.mm:

(WebGPU::Adapter::getLimits):
(WebGPU::Adapter::getProperties):
(WebGPU::Adapter::requestDevice):
(wgpuAdapterGetLimits):
(wgpuAdapterGetProperties):
(wgpuAdapterRequestDevice):
(wgpuAdapterRequestDeviceWithBlock):

  • WebGPU/BindGroup.mm:

(WebGPU::Device::createBindGroup):

  • WebGPU/BindGroupLayout.mm:

(WebGPU::Device::createBindGroupLayout):

  • WebGPU/Buffer.mm:

(WebGPU::Device::createBuffer):

  • WebGPU/CommandEncoder.h:
  • WebGPU/CommandEncoder.mm:

(WebGPU::Device::createCommandEncoder):
(WebGPU::CommandEncoder::beginComputePass):
(WebGPU::CommandEncoder::beginRenderPass):
(WebGPU::CommandEncoder::copyBufferToTexture):
(WebGPU::CommandEncoder::copyTextureToBuffer):
(WebGPU::CommandEncoder::copyTextureToTexture):
(WebGPU::CommandEncoder::finish):
(wgpuCommandEncoderBeginComputePass):
(wgpuCommandEncoderBeginRenderPass):
(wgpuCommandEncoderCopyBufferToTexture):
(wgpuCommandEncoderCopyTextureToBuffer):
(wgpuCommandEncoderCopyTextureToTexture):
(wgpuCommandEncoderFinish):

  • WebGPU/ComputePipeline.mm:

(WebGPU::Device::createComputePipeline):
(WebGPU::Device::createComputePipelineAsync):

  • WebGPU/Device.h:
  • WebGPU/Device.mm:

(WebGPU::Device::getLimits):
(wgpuDeviceCreateBindGroup):
(wgpuDeviceCreateBindGroupLayout):
(wgpuDeviceCreateBuffer):
(wgpuDeviceCreateCommandEncoder):
(wgpuDeviceCreateComputePipeline):
(wgpuDeviceCreateComputePipelineAsync):
(wgpuDeviceCreateComputePipelineAsyncWithBlock):
(wgpuDeviceCreatePipelineLayout):
(wgpuDeviceCreateQuerySet):
(wgpuDeviceCreateRenderBundleEncoder):
(wgpuDeviceCreateRenderPipeline):
(wgpuDeviceCreateRenderPipelineAsync):
(wgpuDeviceCreateRenderPipelineAsyncWithBlock):
(wgpuDeviceCreateSampler):
(wgpuDeviceCreateShaderModule):
(wgpuDeviceCreateSwapChain):
(wgpuDeviceCreateTexture):
(wgpuDeviceGetLimits):

  • WebGPU/Instance.h:
  • WebGPU/Instance.mm:

(WebGPU::Instance::create):
(WebGPU::Instance::createSurface):
(WebGPU::Instance::requestAdapter):
(wgpuCreateInstance):
(wgpuInstanceCreateSurface):
(wgpuInstanceRequestAdapter):
(wgpuInstanceRequestAdapterWithBlock):

  • WebGPU/PipelineLayout.mm:

(WebGPU::Device::createPipelineLayout):

  • WebGPU/QuerySet.mm:

(WebGPU::Device::createQuerySet):

  • WebGPU/Queue.h:
  • WebGPU/Queue.mm:

(WebGPU::Queue::writeTexture):
(wgpuQueueWriteTexture):

  • WebGPU/RenderBundleEncoder.h:
  • WebGPU/RenderBundleEncoder.mm:

(WebGPU::Device::createRenderBundleEncoder):
(WebGPU::RenderBundleEncoder::finish):
(wgpuRenderBundleEncoderFinish):

  • WebGPU/RenderPassEncoder.h:
  • WebGPU/RenderPassEncoder.mm:

(WebGPU::RenderPassEncoder::setBlendConstant):
(wgpuRenderPassEncoderSetBlendConstant):

  • WebGPU/RenderPipeline.mm:

(WebGPU::Device::createRenderPipeline):
(WebGPU::Device::createRenderPipelineAsync):

  • WebGPU/Sampler.mm:

(WebGPU::Device::createSampler):

  • WebGPU/ShaderModule.h:
  • WebGPU/ShaderModule.mm:

(WebGPU::findShaderModuleParameters):
(WebGPU::Device::createShaderModule):
(WebGPU::ShaderModule::getCompilationInfo):
(wgpuShaderModuleGetCompilationInfo):
(wgpuShaderModuleGetCompilationInfoWithBlock):

  • WebGPU/SwapChain.mm:

(WebGPU::Device::createSwapChain):

  • WebGPU/Texture.h:
  • WebGPU/Texture.mm:

(WebGPU::Device::createTexture):
(WebGPU::Texture::createView):
(wgpuTextureCreateView):

7:52 PM Changeset in webkit [290876] by Lauro Moura
  • 2 edits in trunk/Tools

[Flatpak SDK] Fix key expired treatment with Python3
​https://bugs.webkit.org/show_bug.cgi?id=237509

Reviewed by Fujii Hironori.

  • flatpak/flatpakutils.py:

(FlatpakObject.flatpak_update):

9:39 AM Changeset in webkit [290875] by Wenson Hsieh
  • 4 edits
    1 add in trunk

[iOS] Layer tree can get indefinitely frozen if WKWebView is unparented underneath -[UIWindow dealloc]
​https://bugs.webkit.org/show_bug.cgi?id=237505
rdar://85563958

Reviewed by Tim Horton.

Source/WebKit:

It's currently possible for the web page to get permanently stuck in frozen state, due to the
BackgroundApplication layer tree freeze reason; this occurs when the web view is unparented from the view
hierarchy underneath the scope of UIWindow's -dealloc method.

During -[UIWindow dealloc], the backpointer underlying the implementation of -[UIView window] is set to nil
immediately before the subclassing method hook -willMoveToWindow: is invoked on the view hierarchy. This means
that when -willMoveToWindow: is invoked, self.window will return nil. This, in turn, puts
WKApplicationStateTrackingView in a bad state because we bail early before resetting _applicationStateTracker
in the early return below, since we (erroneously) believe that we've already been unparented from the view
hierarchy, so we don't need to do anything.

`

if (!self._contentView.window
newWindow)

return;

`

As a result, if the same web view is eventually moved back into another visible window, -didMoveToWindow bails
before setting up the _applicationStateTracker again, since it already exists from when the previous window
was still active. This means -_applicationWillEnterForeground is never called when the web view is
reintroduced to the view hierarchy, so LayerTreeFreezeReason::BackgroundApplication is never lifted.

To address this, we simply remove the debug assertion for _applicationStateTracker, and instead check whether
the application state tracker exists or not for the logic of the early return. Doing so also makes the early
return in -willMoveToWindow: consistent with the logic in one in -didMoveToWindow, which already consults
_applicationStateTracker:

`

  • (void)didMoveToWindow

{

if (!self._contentView.window
_applicationStateTracker)

return;

`

Test: ApplicationStateTracking.WindowDeallocDoesNotPermanentlyFreezeLayerTree

  • UIProcess/ios/WKApplicationStateTrackingView.mm:

(-[WKApplicationStateTrackingView willMoveToWindow:]): See above.

Tools:

Add an API test to exercise the bug. This API test is comprised of the following series of steps:

  1. Create the web view and add it under window #1.
  2. Post a "did enter background" notification.
  3. Deallocate window #1 (thereby unparenting the web view in the process).
  4. Post a "will enter foreground" notification.
  5. Add the web view under window #2.
  6. Load some HTML content and wait for a presentation update.

Before the fix, this test times out because the layer tree is permanently frozen after step (3), due to the
BackgroundApplication reason, so the presentation update in step (6) never finishes.

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

(TestWebKitAPI::TEST):

9:28 AM Changeset in webkit [290874] by eric.carlson@apple.com
  • 14 edits in trunk/Source

Push HTMLMediaElement renderer's contentBox rect to GPU process
​https://bugs.webkit.org/show_bug.cgi?id=237444
rdar://84869202

Reviewed by Jer Noble.

Source/WebCore:

No new tests. This is a speculative fix, with new logging, for an issue I haven't
been able to reproduce.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::updateRenderer): Push mediaPlayerContentBoxRect to the
media player.

  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::playerContentBoxRectChanged): Pass rect to platform player.

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::playerContentBoxRectChanged):

Source/WebKit:

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::RemoteMediaPlayerProxy): Configuration now has
playerContentBoxRect.
(WebKit::RemoteMediaPlayerProxy::mediaPlayerContentBoxRect const):
(WebKit::RemoteMediaPlayerProxy::playerContentBoxRectChanged): Update playerContentBoxRect.

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • GPUProcess/media/RemoteMediaPlayerProxyConfiguration.h:

(WebKit::RemoteMediaPlayerProxyConfiguration::encode const):
(WebKit::RemoteMediaPlayerProxyConfiguration::decode):

  • GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:

(WebKit::RemoteMediaPlayerProxy::setVideoInlineSizeIfPossible): Convert from static
function so we can log.
(WebKit::RemoteMediaPlayerProxy::mediaPlayerFirstVideoFrameAvailable): Add logging.
(WebKit::RemoteMediaPlayerProxy::mediaPlayerRenderingModeChanged): Ditto.
(WebKit::RemoteMediaPlayerProxy::setVideoInlineSizeFenced): Ditto.
(WebKit::setVideoInlineSizeIfPossible): Deleted.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::playerContentBoxRectChanged):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::createRemoteMediaPlayer):

Mar 5, 2022:

10:59 PM Changeset in webkit [290873] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix JITOperationList::addPointers() to support JIT_OPERATION_VALIDATION_ASSERT_ENABLED.
​https://bugs.webkit.org/show_bug.cgi?id=237504
<rdar://problem/89770507>

Reviewed by Saam Barati.

According to tagJSCCodePtrImpl(), we will only use an operation's validation entry
if Options::useJITCage(). Make JITOperationList::addPointers() conform to this.

  • assembler/JITOperationList.cpp:

(JSC::JITOperationList::addPointers):

10:50 PM Changeset in webkit [290872] by Simon Fraser
  • 13 edits
    1 delete in trunk/Source/WebCore

Replace IntRectExtent with RectEdges<int>
​https://bugs.webkit.org/show_bug.cgi?id=237495

Reviewed by Sam Weinig.

IntRectExtent was just like RectEdges<int>, so remove it.

Add operator+= for RectEdges<>, and helpers to convert from RectEdges<int> to RectEdges<LayoutUnit>.

Code that previously added a IntRectExtent to a rect now uses .expand().

For some reason initializing a RectEdges<T> with arguments std::max<T> fails to
compile, so use intermediate variables in two places.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/LengthBox.cpp:

(WebCore::operator<<):

  • platform/LengthBox.h:

(WebCore::toLayoutBoxExtent):

  • platform/RectEdges.h:

(WebCore::RectEdges::isZero const):
(WebCore::operator+=):

  • platform/graphics/IntRectExtent.h: Removed.
  • platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::outsets const):

  • platform/graphics/filters/FilterFunction.h:
  • platform/graphics/filters/FilterOperations.cpp:

(WebCore::FilterOperations::outsets const):

  • platform/graphics/filters/FilterOperations.h:
  • rendering/CSSFilter.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::setFilterBackendNeedsRepaintingInRect):
(WebCore::transparencyClipBox):
(WebCore::RenderLayer::calculateClipRects const):

  • rendering/RenderLayerFilters.cpp:

(WebCore::RenderLayerFilters::beginFilterEffect):

1:55 PM Changeset in webkit [290871] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Optimize VMTraps::maybeNeedHandling().
​https://bugs.webkit.org/show_bug.cgi?id=237503

Reviewed by Saam Barati.

There's no need for VMTraps::maybeNeedHandling() to mask the VMTraps bits for
events. Under normal circumstances, there are no traps firing and the traps bits
are 0 anyway. We should optimize for this and do away with the masking. Clients
who use VMTraps::maybeNeedHandling() should and current do call VMTraps::needHandling()
to get the real story on whether there are actually traps to handle or not. Hence,
the masking in VMTraps::maybeNeedHandling() is also not needed for correctness.

We know from experience that changes in RETURN_IN_EXCEPTION can have an impact on
performance. Perhaps this change can also help performance.

  • runtime/ExceptionScope.h:
  • runtime/VMTraps.h:

(JSC::VMTraps::maybeNeedHandling const):

1:24 PM Changeset in webkit [290870] by Alan Bujtas
  • 4 edits in trunk

Remove non-standard display:block UA stylesheet rule for <layer>
​https://bugs.webkit.org/show_bug.cgi?id=236730
<rdar://problem/89372670>

Reviewed by Antti Koivisto.

Source/WebCore:

This looks to be an old WebKit (khtml?) quirk.
See also ​https://bugs.chromium.org/p/chromium/issues/detail?id=1298197

  • css/html.css:

(address, article, aside, div, footer, header, hgroup, main, nav, section):
(address, article, aside, div, footer, header, hgroup, layer, main, nav, section): Deleted.

LayoutTests:

  • inspector/css/shadow-scoped-style-expected.txt:
10:55 AM Changeset in webkit [290869] by mark.lam@apple.com
  • 8 edits in trunk/Source

Fix broken SuspendExceptionScope and remove redundant VM::DeferExceptionScope.
​https://bugs.webkit.org/show_bug.cgi?id=237441
<rdar://problem/89769627>

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

SuspendExceptionScope was meant to do exactly the same thing that VM::DeferExceptionScope
does, except that SuspendExceptionScope hasn't been updated to handle exception
handling via VMTraps bits.

This patch will fix SuspendExceptionScope to work like VM::DeferExceptionScope,
and remove the now redundant VM::DeferExceptionScope. SuspendExceptionScope is
the better name here because the scope actually suspends any pending exception.
This is different from other Defer scopes where we prevent some new event from
arising and defer the event to a later time.

  • interpreter/FrameTracers.h:

(JSC::SuspendExceptionScope::SuspendExceptionScope):
(JSC::SuspendExceptionScope::~SuspendExceptionScope):

  • interpreter/Interpreter.cpp:

(JSC::UnwindFunctor::notifyDebuggerOfUnwinding):

  • runtime/TypeProfilerLog.cpp:

(JSC::TypeProfilerLog::processLogEntries):

  • runtime/VM.h:

(JSC::VM::restorePreviousException): Deleted.
(JSC::VM::DeferExceptionScope::DeferExceptionScope): Deleted.
(JSC::VM::DeferExceptionScope::~DeferExceptionScope): Deleted.

Source/WebCore:

  • inspector/InspectorFrontendAPIDispatcher.cpp:

(WebCore::InspectorFrontendAPIDispatcher::evaluateExpression):

  • inspector/InspectorFrontendHost.cpp:

(WebCore::InspectorFrontendHost::evaluateScriptInExtensionTab):

9:18 AM Changeset in webkit [290868] by Alan Bujtas
  • 5 edits in trunk

[IFC][Integration] Do not bail out on IFC content with floats inside.
​https://bugs.webkit.org/show_bug.cgi?id=237494

Reviewed by Antti Koivisto.

Source/WebCore:

We have support for such content now.
(This gives a noticeable coverage boost on PLT5 content.)

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForChild):

LayoutTests:

  • platform/ios/css2.1/t0905-c5525-fltcont-00-d-g-expected.txt:
  • platform/mac/css2.1/t0905-c5525-fltcont-00-d-g-expected.txt:
8:57 AM Changeset in webkit [290867] by Antti Koivisto
  • 24 edits in trunk

Resolve ::first-line style eagerly
​https://bugs.webkit.org/show_bug.cgi?id=237362

Reviewed by Alan Bujtas.

Source/WebCore:

Compute ::first-line style during style resolution instead of lazily in render tree.
This fixes bugs and clarifies the architecture in ways that a helpful for features like
container queries.

As a side effect it also makes ::first-line style animatable.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::firstLineBlock const): Deleted.

  • rendering/RenderBlock.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::RenderElement):
(WebCore::RenderElement::firstLineStyle const):
(WebCore::RenderElement::styleWillChange):
(WebCore::RenderElement::computeFirstLineStyle const): Deleted.
(WebCore::RenderElement::invalidateCachedFirstLineStyle): Deleted.

  • rendering/RenderElement.h:
  • rendering/RenderObject.cpp:

(WebCore::RenderObject::firstLineBlock const): Deleted.

  • rendering/RenderObject.h:
  • rendering/RenderRubyRun.cpp:

(WebCore::RenderRubyRun::firstLineBlock const): Deleted.

  • rendering/RenderRubyRun.h:
  • rendering/RenderTable.cpp:

(WebCore::RenderTable::firstLineBlock const): Deleted.

  • rendering/RenderTable.h:
  • rendering/RenderText.cpp:

(WebCore::RenderText::findByDisplayContentsInlineWrapperCandidate): Deleted.

  • rendering/RenderText.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::getCachedPseudoStyle const):

  • rendering/style/RenderStyle.h:

(WebCore::generatesBox):

  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::firstLineBlock const): Deleted.

  • rendering/svg/RenderSVGText.h:
  • rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:

(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveElement):
(WebCore::Style::TreeResolver::resolvePseudoElement):
(WebCore::Style::TreeResolver::resolveInheritedFirstLinePseudoElement):
(WebCore::Style::TreeResolver::makeResolutionContextForInheritedFirstLine):
(WebCore::Style::TreeResolver::boxGeneratingParent const const):
(WebCore::Style::TreeResolver::parentBoxStyle const):
(WebCore::Style::TreeResolver::resolveComposedTree):
(WebCore::Style::TreeResolver::resolvePseudoStyle): Deleted.

  • style/StyleTreeResolver.h:

LayoutTests:

8:26 AM Changeset in webkit [290866] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] RenderInline should use ADD_REASONS_AND_RETURN_IF_NEEDED
​https://bugs.webkit.org/show_bug.cgi?id=237492

Reviewed by Antti Koivisto.

Content inside RenderInline should be accounted for when collecting coverage information.
(This patch also has a bit of a printModernLineLayoutCoverage&co refactoring.)

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::printTextForSubtree):
(WebCore::LayoutIntegration::contentLengthForSubtreeStayWithinBlockFlow):
(WebCore::LayoutIntegration::contentLengthForBlockFlow):
(WebCore::LayoutIntegration::printModernLineLayoutBlockList):
(WebCore::LayoutIntegration::printModernLineLayoutCoverage):
(WebCore::LayoutIntegration::canUseForChild):
(WebCore::LayoutIntegration::textLengthForSubtree): Deleted.
(WebCore::LayoutIntegration::collectNonEmptyLeafRenderBlockFlows): Deleted.
(WebCore::LayoutIntegration::collectNonEmptyLeafRenderBlockFlowsForCurrentPage): Deleted.

3:33 AM Changeset in webkit [290865] by youenn@apple.com
  • 5 edits in trunk

Implement remote-inbound-rtp packetsLost
​https://bugs.webkit.org/show_bug.cgi?id=237443

Reviewed by Eric Carlson.

Source/WebCore:

Take benefit of latest backend to expose RemoteInboundRtpStreamStats values inherited from ReceivedRtpStreamStats.
Covered by updated test.

  • Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:

(WebCore::fillReceivedRtpStreamStats):
(WebCore::fillInboundRtpStreamStats):
(WebCore::fillRemoteInboundRtpStreamStats):

LayoutTests:

  • platform/mac/TestExpectations:
  • webrtc/video-stats.html:
3:18 AM Changeset in webkit [290864] by Oriol Brufau
  • 3 edits
    2 adds in trunk

[css-cascade] Let 'revert-layer' in lowest layer roll back to user styles
​https://bugs.webkit.org/show_bug.cgi?id=237486

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Add test. It still has some remaining failures due to bug 236272.

  • web-platform-tests/css/css-cascade/all-prop-revert-layer-noop-expected.txt: Added.
  • web-platform-tests/css/css-cascade/all-prop-revert-layer-noop.html: Added.

Source/WebCore:

When 'revert-layer' was used in the lowest @layer, then it would behave
as 'unset'. This patch fixes ensureRollbackCascadeForRevertLayer() to
not return nullptr and instead return ensureRollbackCascadeForRevert()
in that case. This imples that 'revert-layer' will behave like 'revert'
and roll back to user (or UA) styles.

Test: imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-noop.html

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::ensureRollbackCascadeForRevertLayer):

Mar 4, 2022:

11:22 PM Changeset in webkit [290863] by sihui_liu@apple.com
  • 3 edits in trunk/Source/WebKit

Stop setting NSURLIsExcludedFromBackupKey attribute for localSorageDirectory in UI process
​https://bugs.webkit.org/show_bug.cgi?id=237447

Reviewed by Chris Dumez.

Let's do that on storage thread in network process when the directory is used.

Covered by existing test: WKWebView.LocalStorageDirectoryExcludedFromBackup.

  • NetworkProcess/storage/OriginStorageManager.cpp:

(WebKit::OriginStorageManager::StorageBucket::resolvedLocalStoragePath):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):

10:48 PM Clangd edited by Brandon
(diff)
10:02 PM Changeset in webkit [290862] by sihui_liu@apple.com
  • 4 edits in trunk

Add null check for path in makeAllDirectories
​https://bugs.webkit.org/show_bug.cgi?id=237477

Reviewed by Darin Adler.

Source/WTF:

  • wtf/posix/FileSystemPOSIX.cpp:

(WTF::FileSystemImpl::makeAllDirectories):

Tools:

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::TEST_F):

9:39 PM Changeset in webkit [290861] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Optimize the padding in StyleRareInheritedData
​https://bugs.webkit.org/show_bug.cgi?id=237488

Reviewed by Cameron McCormack.

Shrink StyleRareInheritedData from 280 bytes to 264 bytes on macOS.

Also fix a missing comparison of wordSpacing in operator==.

  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator== const):

  • rendering/style/StyleRareInheritedData.h:
6:38 PM Changeset in webkit [290860] by Tyler Wilcock
  • 2 edits in trunk/Source/WebCore

AX: Protect incoming object with Ref in AXObjectCache::textChanged
​https://bugs.webkit.org/show_bug.cgi?id=237475

Reviewed by Chris Fleizach.

This is better practice as ascending the hierarchy could cause
the object to get deleted.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::textChanged):

6:21 PM Changeset in webkit [290859] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Change app launch scheme
​https://bugs.webkit.org/show_bug.cgi?id=237480
rdar://89781553

Patch by Harrison Weinerman <​hweinerman@apple.com> on 2022-03-04
Reviewed by Brady Eidson.

We need to change the app launch scheme and remove an entitlement that is no longer required.

  • Scripts/process-entitlements.sh:
  • webpushd/WebPushDaemon.mm:

(WebPushD::Daemon::notifyClientPushMessageIsAvailable):

6:03 PM Changeset in webkit [290858] by Tyler Wilcock
  • 9 edits
    3 adds in trunk

AX: [WebAccessibilityObjectWrapperMac AXAttributeStringSetFont] crashes when given a font with a nil postscript name, font family, or display name
​https://bugs.webkit.org/show_bug.cgi?id=237373

Reviewed by Chris Fleizach and Andres Gonzalez.

Source/WebCore:

[WebAccessibilityObjectWrapperMac AXAttributeStringSetFont] crashes when given a font with a
nil postscript name, font family, or display name. This can be
triggered with a custom SVG @font-face -- for example:

@font-face {

font-family: 'Litherum';
src: url("resources/Litherum.svg") format(svg);

}

  • { font-family: 'Litherum'; }

We fix this by checking if these values are nil before trying to add
them to a dictionary.

This patch also centralizes application of fonts to attributed strings
by moving AXAttributeStringSetFont to the base wrapper. In doing so,
we fix a bug where if [WebAccessibilityObjectWrapperBase AXAttributeStringSetStyle] was
called from a Mac-context, it set iOS font properties (e.g.
UIAccessibilityTokenFontFamily instead of NSAccessibilityFontFamilyKey).

Test: accessibility/svg-font-face.html

  • accessibility/mac/WebAccessibilityObjectWrapperBase.h:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(AXAttributedStringRangeIsValid): Added.
(AXAttributedStringSetFont): Added.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(AXAttributeStringSetStyle):
(AXAttributedStringAppendText):
(AXAttributedStringRangeIsValid):
Moved to base wrapper.
(AXAttributeStringSetFont):
Moved to base wrapper.

LayoutTests:

  • accessibility/resources/Litherum.svg: Added.
  • accessibility/svg-font-face-expected.txt: Added.
  • accessibility/svg-font-face.html: Added.
  • platform/glib/TestExpectations: Skip new test.
  • platform/ios/TestExpectations: Enable new test.
  • platform/win/TestExpectations: Skip new test.
  • platform/mac/accessibility/element-line-rects-and-text-expected.txt:

Before this patch, [WebAccessibilityObjectWrapperBase AXAttributeStringSetStyle] called the iOS
version of AXAttributeStringSetFont. This patch fixes this. The expectation for this test is updated as a result.

5:44 PM Changeset in webkit [290857] by Russell Epstein
  • 18 edits
    2 deletes in branches/safari-613-branch/Source/bmalloc

Apply patch. rdar://problem/89071706

5:06 PM Changeset in webkit [290856] by Patrick Angle
  • 16 edits in trunk/Source

REGRESSION (r284472): [ Monterey ] http/tests/websocket/tests/hybi/inspector/send-and-recieve-debugger.html is failing
​https://bugs.webkit.org/show_bug.cgi?id=237280

Reviewed by Devin Rousso.

Source/WebCore:

Covered by existing http/tests/websocket/tests/hybi/inspector/* test cases.

On macOS Monterey we use NSURLSession-based WebSockets by default, unlike earlier versions of macOS. The channel
for these sockets is implemented in WebKit::WebSocketChannel. The non-NSURLSession WebSockets channel (at
least on Cocoa platforms) is implemented in WebCore::WebSocketChannel.

As of r284472 the logic to delay the dispatch of received WebSocket message on platforms using
NSURLSession-based WebSockets is handled by WebCore::WebSocket, not the WebKit::WebSocketChannel.
WebKit::WebSocketChannel now immediately does the work it needs to, and only the delegated work to WebSocket
is queued and taken care of when the socket has resumed. This resulted in some of the instrumentation in
WebKit::WebSocketChannel being able to be called while the socket was suspended leading to events being logged
in the frontend "in the future" (e.g. before the paused script would have been able to be aware of them). To
correct this the WebKit::WebSocketChannel now provides a hook into its helper WebSocketChannelInspector
object to allow the WebCore::WebSocket to notify Web Inspector of events at the same time it is being
logically handled by the page.

Other ThreadableWebSocketChannel implementations will instead provide nullptr in place of a pointer to a
WebInspectorChannelInspector. WebCore::WebSocketChannel was not affected by the changes in r284472 as it has
a different way to guarantee that the methods containing InspectorInstrumentation were not called while the
channel was suspended (and enforced with numerous ASSERT(!m_suspended) checks).

  • Modules/websockets/ThreadableWebSocketChannel.h:

(WebCore::ThreadableWebSocketChannel::channelInspector const):

  • Modules/websockets/WebSocketChannelClient.h:
  • Add reason for error messages so they can be sent to Web Inspector.
  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::didReceiveMessage):
(WebCore::WebSocket::didReceiveBinaryData):
(WebCore::WebSocket::didReceiveMessageError):
(WebCore::WebSocket::didClose):

  • Modules/websockets/WebSocket.h:
  • Move inspector instrumentation calls from WebKit::WebSocketChannel to here so that they are not called until

the socket is resumed.

  • We also now wrap these instrumentation calls in an unlikely check for frontends to avoid allocating the

simulated call frames when Web Inspector isn't even open.

  • Modules/websockets/WebSocketChannelInspector.cpp:

(WebCore::WebSocketChannelInspector::WebSocketChannelInspector):
(WebCore::WebSocketChannelInspector::didCreateWebSocket const):
(WebCore::WebSocketChannelInspector::willSendWebSocketHandshakeRequest const):
(WebCore::WebSocketChannelInspector::didReceiveWebSocketHandshakeResponse const):
(WebCore::WebSocketChannelInspector::didCloseWebSocket const):
(WebCore::WebSocketChannelInspector::didReceiveWebSocketFrame const):
(WebCore::WebSocketChannelInspector::didSendWebSocketFrame const):
(WebCore::WebSocketChannelInspector::didReceiveWebSocketFrameError const):
(WebCore::WebSocketChannelInspector::createFrame):
(WebCore::WebSocketChannelInspector::didCreateWebSocket): Deleted.
(WebCore::WebSocketChannelInspector::willSendWebSocketHandshakeRequest): Deleted.
(WebCore::WebSocketChannelInspector::didReceiveWebSocketHandshakeResponse): Deleted.
(WebCore::WebSocketChannelInspector::didCloseWebSocket): Deleted.
(WebCore::WebSocketChannelInspector::didReceiveWebSocketFrame): Deleted.
(WebCore::WebSocketChannelInspector::didSendWebSocketFrame): Deleted.
(WebCore::WebSocketChannelInspector::didReceiveWebSocketFrameError): Deleted.

  • Modules/websockets/WebSocketChannelInspector.h:
  • Update to keep a WeakRef to the Document to reduce the amount of plumbing necessary to call these methods

from WebSocket.

  • Move static utility method createFrame here from WebKit::WebSocketChannel since it is only used for

inspector instrumentation.

  • Modules/websockets/WorkerThreadableWebSocketChannel.cpp:

(WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessageError):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::connect):

  • Modules/websockets/WorkerThreadableWebSocketChannel.h:
  • Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:

(WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessageError):

  • Modules/websockets/ThreadableWebSocketChannelClientWrapper.h:
  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::fail):
(WebCore::WebSocketChannel::didFailSocketStream):

  • Modules/websockets/WebSocketChannel.h:
  • Update these classes to pass along a reason, if available, for errors.

Source/WebKit:

Move inspector instrumentation for things that should be delayed until the websocket has resumed (in general,
these are instrumentation points for receiving messages) into WebCore::WebSocket so that they are sent at the
expected time in the frontend, not "in the future" when script execution is suspended (e.g. while debugging).

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::notifySendFrame):
(WebKit::WebSocketChannel::connect):
(WebKit::WebSocketChannel::close):
(WebKit::WebSocketChannel::fail):
(WebKit::WebSocketChannel::disconnect):
(WebKit::WebSocketChannel::didReceiveText):
(WebKit::WebSocketChannel::didReceiveBinaryData):
(WebKit::WebSocketChannel::didClose):
(WebKit::WebSocketChannel::didReceiveMessageError):
(WebKit::WebSocketChannel::didSendHandshakeRequest):
(WebKit::WebSocketChannel::didReceiveHandshakeResponse):
(WebKit::createWebSocketFrameForWebInspector): Deleted.

  • WebProcess/Network/WebSocketChannel.h:
5:01 PM Changeset in webkit [290855] by Patrick Angle
  • 2 edits in trunk/Source/WebKit

Web Inspector: [Cocoa] Continually opening and closing Web Inspector sometimes crashes
​https://bugs.webkit.org/show_bug.cgi?id=237484

Reviewed by Darin Adler.

We need to handle operations on the main queue because webView:stopURLSchemeTask: will be called from the main
queue, and we must not be in middle the operation when we get the request to stop said operation, otherwise we
may attempt to call [urlSchemeTask did*], which is not permitted after we have been asked to stop that task.
If we add the operation for the WKURLSchemeTask to a different queue it is possible we will have already
started the operation on a background queue while at the same time are receiving a request to stop that same
WKURLSchemeTask.

  • UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:

(-[WKInspectorResourceURLSchemeHandler webView:startURLSchemeTask:]):
(-[WKInspectorResourceURLSchemeHandler webView:stopURLSchemeTask:]):

4:48 PM Changeset in webkit [290854] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Modernize OriginLock
​https://bugs.webkit.org/show_bug.cgi?id=237485

Reviewed by Darin Adler.

OriginLock subclasses ThreadSafeRefCounted. As a result, it should have a create()
factory function instead of an error-prone public constructor. Its functions should
also take String parameters by const reference instead of by value.

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::originLockFor):

  • Modules/webdatabase/DatabaseTracker.h:
  • Modules/webdatabase/OriginLock.cpp:

(WebCore::lockFileNameForPath):
(WebCore::OriginLock::OriginLock):
(WebCore::OriginLock::deleteLockFile):
(WebCore::OriginLock::lockFileNameForPath): Deleted.

  • Modules/webdatabase/OriginLock.h:

(WebCore::OriginLock::create):

3:45 PM Changeset in webkit [290853] by Kate Cheney
  • 6 edits
    2 adds in trunk

about:blank iframes do not always inherit parent CSP
​https://bugs.webkit.org/show_bug.cgi?id=236347
<rdar://problem/88669147>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/security/contentSecurityPolicy/block-eval-onload-in-nested-about-blank-iframe.html

Usually we initialize CSP for window when we create a jsWindowProxy
for that frame. In this case, we load an about:blank iframe that
attempts to run eval() in the onload function of its own nested
iframe. Since we never run script in frame, we don't initialize a
jsWindowProxy and thus never propogate its CSP.

This fix checks the document's CSP in FrameLoader::clear when we
initialize a new JSGlobalObject and sets the eval value in the window
accordingly to properly enforce CSP.

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::enableEval):

  • bindings/js/ScriptController.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::clear):

  • page/csp/ContentSecurityPolicy.h:

(WebCore::ContentSecurityPolicy::evalErrorMessage const):

LayoutTests:

  • http/tests/security/contentSecurityPolicy/block-eval-onload-in-nested-about-blank-iframe-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-eval-onload-in-nested-about-blank-iframe.html: Added

We can't use modern js-test.js and related functions because
js-test.js uses eval() and loading it makes the test time out when the
eval is blocked by the document's CSP. We can't specify unsafe-eval
because the whole point of this test is to block eval.

3:31 PM Changeset in webkit [290852] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Update WPT css-scroll-snap tests
​https://bugs.webkit.org/show_bug.cgi?id=237358

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
3:30 PM Changeset in webkit [290851] by Russell Epstein
  • 9 edits in branches/safari-613-branch/Source

Versioning.

WebKit-7613.2.2

3:08 PM Changeset in webkit [290850] by mmaxfield@apple.com
  • 11 edits in trunk

[iOS] Books ASSERTs upon opening a book with a debug build of WebKit
​https://bugs.webkit.org/show_bug.cgi?id=237445
<rdar://problem/89776531>

Reviewed by Alex Christensen.

Source/WebCore:

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::open):

Source/WebKit:

  • NetworkProcess/cache/NetworkCacheBlobStorage.cpp:

(WebKit::NetworkCache::BlobStorage::add):

  • UIProcess/API/APIContentRuleListStore.cpp:

(API::openAndMapContentRuleList):
(API::compiledToFile):

Source/WTF:

makeSafeToUseMemoryMapForPath() runs an ASSERT() that it was successful.
However, it's not always successful, so this ASSERT() was getting hit when
trying to open a book in Books. So, this patch makes the function return a
bool to indicate success, and updates callers to do something sensible if
it failed.

Test: FileSystemTest.makeSafeToUseMemoryMapForPath

  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::makeSafeToUseMemoryMapForPath):
(WTF::FileSystemImpl::mapToFile):

  • wtf/FileSystem.h:
  • wtf/cocoa/FileSystemCocoa.mm:

(WTF::FileSystemImpl::makeSafeToUseMemoryMapForPath):

Tools:

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::TEST_F):

2:57 PM Changeset in webkit [290849] by Chris Dumez
  • 21 edits
    2 adds in trunk

Home link on weather.gov is not working
​https://bugs.webkit.org/show_bug.cgi?id=237451
<rdar://60409277>

Reviewed by Geoff Garen.

LayoutTests/imported/w3c:

  • web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/anchor-fragment-history-back-on-click-expected.txt: Added.
  • web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/anchor-fragment-history-back-on-click.html: Added.

Add layout test coverage (already upstreamed to WPT).

  • web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-nav-expected.txt:
  • web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-nav-expected.txt:

Rebaseline a couple of WPT tests that are now failing. I have verified that these tests are fully failing (and in the same way) in Blink.
In Gecko, only the second subtest in each of these tests is failing.

Source/WebCore:

According to the HTML specification [1], when history.back() is called, we are supposed to
resolve the history entry based on the delta (-1), then we're supposed to queue a task to
traverse the history to that particular entry.

However, WebKit was merely scheduling a task to navigate the history with a delta of -1.
We only resolve the target history entry once the scheduled task runs asynchronously.
As a result, we could end up navigating to a different history entry than we'd expect if
the history list changes between the call to history.back() and the actual execution of
the task to traverse the history list. In particular, fragment navigations can cause
synchronous navigations and thus add new history entries.

On weather.gov, the "HOME" anchor looks like so:
<a href="#" onclick="history.back();">HOME</a>

Per the DOM specification, when clicking the anchor, we'd first call history.back() and
then run the anchor activation behavior that would do a fragment navigation to "#".
The history.back() call would schedule to task to navigate back, then we'd navigate to
"#" synchronously, which would add a new history entry. Once the task to navigate back
would run asynchronously, we would navigate back to the same page (but without the fragment)
instead of going back to the home page.

[1] ​https://html.spec.whatwg.org/multipage/history.html#traverse-the-history-by-a-delta

Test: imported/w3c/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/anchor-fragment-history-back-on-click.html

  • history/BackForwardClient.h:
  • history/BackForwardController.cpp:

(WebCore::BackForwardController::containsItem const):

  • history/BackForwardController.h:
  • loader/EmptyClients.cpp:
  • loader/NavigationScheduler.cpp:

(WebCore::ScheduledHistoryNavigation::ScheduledHistoryNavigation):
(WebCore::NavigationScheduler::scheduleHistoryNavigation):

Source/WebKit:

  • WebProcess/WebPage/WebBackForwardListProxy.cpp:

(WebKit::WebBackForwardListProxy::removeItem):
(WebKit::WebBackForwardListProxy::containsItem const):

  • WebProcess/WebPage/WebBackForwardListProxy.h:

Source/WebKitLegacy/mac:

  • History/BackForwardList.h:
  • History/BackForwardList.mm:

(BackForwardList::containsItem const):
(BackForwardList::containsItem): Deleted.

Source/WebKitLegacy/win:

  • BackForwardList.cpp:

(BackForwardList::containsItem):

  • BackForwardList.h:
  • WebBackForwardList.cpp:

(WebBackForwardList::containsItem):

LayoutTests:

Skip WPT tests that is timing out. I have verified that this WPT test is timing out in Blink as well.

2:43 PM Changeset in webkit [290848] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Use an OptionSet<> for GraphicsContextCGFlags
​https://bugs.webkit.org/show_bug.cgi?id=237482

Reviewed by Wenson Hsieh.

Mechanical change to use an OptionSet<> for GraphicsContextCG::m_contextFlags.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContextCG::setIsCALayerContext):
(WebCore::GraphicsContextCG::isCALayerContext const):
(WebCore::GraphicsContextCG::setIsAcceleratedContext):
(WebCore::GraphicsContextCG::renderingMode const):

  • platform/graphics/cg/GraphicsContextPlatformPrivateCG.h:

(WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
(): Deleted.

2:12 PM Changeset in webkit [290847] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Crash under ScrollingCoordinatorMac::hasNodeWithAnimatedScrollChanged()
​https://bugs.webkit.org/show_bug.cgi?id=237478
<rdar://89072235>

Reviewed by Alan Bujtas.

Crash data show that r290109 failed to fix this crash; the actual cause of the crash is a
null m_page on TiledCoreAnimationScrollingCoordinator, diagnosed by noting that the crash
offset corresponds to the offset of m_renderingUpdateRemainingSteps in Page.

  • WebProcess/WebPage/mac/TiledCoreAnimationScrollingCoordinator.mm:

(WebKit::TiledCoreAnimationScrollingCoordinator::hasNodeWithAnimatedScrollChanged):

2:10 PM Changeset in webkit [290846] by Chris Dumez
  • 4 edits in trunk

URL's isolatedCopy() optimization when called on a r-value reference doesn't work
​https://bugs.webkit.org/show_bug.cgi?id=237481

Reviewed by Geoffrey Garen.

Source/WTF:

URL has an isolatedCopy() implementation that attempts to optimize the case where
it is called on a r-value reference. The idea is to rely on the String's
isolatedCopy() implementation which is optimized when called on a r-value reference.

Note that there are some specific conditions under which the String implementation
is able to avoid the copy (see String::isSafeToSendToAnotherThread()).
Namely, the StringImpl's refcount needs to be 1 and it cannot be backed by an
AtomStringImpl.

The issue was that URL::isolatedCopy() would first copy the URL, which would copy
its m_string and thus bump its refcount. As a result, m_string's refcount could
never be 1 and the optimization could never kick in.

  • wtf/URL.cpp:

(WTF::URL::isolatedCopy):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WTF/URL.cpp:

(TestWebKitAPI::TEST_F):

2:08 PM Changeset in webkit [290845] by commit-queue@webkit.org
  • 6 edits
    3 adds in trunk/Source/WebCore

Support constants in IDL namespaces.
​https://bugs.webkit.org/show_bug.cgi?id=232557
<radr://problem/85142162>

Patch by Dan Glastonbury <​djg@apple.com> on 2022-03-04
Reviewed by Sam Weinig.

Test: bindings/script/test/TestNamespaceConst.idl

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateConstructorHelperMethods):
If namespace contains only constants, globalObject is unused
produces a compile error. Add UNUSED_PARAM to quiet error.

  • bindings/scripts/IDLAttributes.json:
  • bindings/scripts/IDLParser.pm:

(convertNamespaceToInterface): Copy namespace constants to new interface.
(applyTypedefs): Apply typedefs to namespace constants.
(parseNamespace): Added parsed constants to namespace's list of constants.
(parseNamespaceMember): Accept constants as namespace members.

  • bindings/scripts/test/BindingTestGlobalConstructors.idl:
  • bindings/scripts/test/JS/*: Updated.
  • bindings/scripts/test/SupplementalDependencies.dep:
  • bindings/scripts/test/TestNamespaceConst.idl: Added.
1:58 PM Changeset in webkit [290844] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.7

Tag Safari-614.1.5.7.

1:44 PM Changeset in webkit [290843] by Russell Epstein
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.7

1:00 PM Changeset in webkit [290842] by Russell Epstein
  • 1 copy in tags/Safari-613.2.1

Tag Safari-613.2.1.

12:35 PM Changeset in webkit [290841] by Chris Dumez
  • 8 edits
    2 adds in trunk

Load event never firing after form is submitted
​https://bugs.webkit.org/show_bug.cgi?id=235407
<rdar://problem/87831049>

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT tests that are no longer timing out.

  • web-platform-tests/html/semantics/forms/form-submission-target/rel-base-target-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-target/rel-button-target-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-target/rel-form-target-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-target/rel-input-target-expected.txt:

Source/WebCore:

In Document::implicitClose(), we early return (and thus don't fire the load
event) if there is a location change pending. To determine if there is a
location change pending, we rely on NavigationScheduler::locationChangePending()
which checks if there is a schedule navigation or not. This usually works fine.

However, when a form gets submitted with a target that is "_blank",
FrameLoader::submitForm() is not able to find the target frame (since we'll need
to create one) and it ends up using the current frame's scheduler. The idea is
that once the navigation actually triggers, FrameLoader::loadFrameRequest() will
check the target and create the new Frame.

The issue is that as a result of this, NavigationScheduler::locationChangePending()
returns true for the submitter's frame while such form submission is scheduled,
even though the navigation will actually happen in another (new) frame. To address
the issue, I updated NavigationScheduler::locationChangePending() to check that
the pending navigation is actually for the current frame.

Test: http/tests/loading/form-submission-no-load-event.html

  • loader/NavigationScheduler.cpp:

(WebCore::ScheduledNavigation::targetIsCurrentFrame const):
(WebCore::NavigationScheduler::locationChangePending):
(WebCore::ScheduledFormSubmission::ScheduledFormSubmission): Deleted.

LayoutTests:

Add layout test coverage (Based on reduction from Sam Sneddon).

  • http/tests/loading/form-submission-no-load-event-expected.txt: Added.
  • http/tests/loading/form-submission-no-load-event.html: Added.
12:33 PM Changeset in webkit [290840] by J Pascoe
  • 2 edits in trunk/Source/WebKit

[WebAuthn] Don't use decidePolicyForLocalAuthenticator for Web Authentication Modern
​https://bugs.webkit.org/show_bug.cgi?id=225646
rdar://78147681

Reviewed by Brent Fulgham.

decidePolicyForLocalAuthenticator is not implemented for the _WKWebAuthenticationPanelDelegate
used for modern because the prompt to allow Touch/FaceID comes earlier in the process.

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticator::makeCredential):

11:40 AM Changeset in webkit [290839] by Said Abou-Hallawa
  • 5 edits in trunk

[GPU Process] Canvas compositing buffer should be created through its GraphicsContext
​https://bugs.webkit.org/show_bug.cgi?id=237260
rdar://89196918

Reviewed by Simon Fraser.

Source/WebCore:

If the backend of the underlying ImageBuffer of the canvas is remote the
compositing ImageBuffer will also be remote. This will transfer the whole
compositing operation to GPUProcess.

The layout test fast/canvas/canvas-composite-canvas.html crashes because
of this bug on the GPUP layout bots.

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::fullCanvasCompositedDrawImage):
(WebCore::CanvasRenderingContext2DBase::createCompositingBuffer): Deleted.

  • html/canvas/CanvasRenderingContext2DBase.h:

LayoutTests:

  • gpu-process/TestExpectations:
11:15 AM Changeset in webkit [290838] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

"OffscreenCanvas" in IDLs doesn't seem to be able to be compiled
​https://bugs.webkit.org/show_bug.cgi?id=232733
<rdar://problem/85318653>

Patch by Dan Glastonbury <​djg@apple.com> on 2022-03-04
Reviewed by Sam Weinig.

OffscreenCanvas is controlled by ENABLE flags. Add conditional
compilation to handle OffscreenCanvas to the WebGPU IDL bindings
when the OffscreenCanvas feature is enabled.

  • Modules/WebGPU/GPUCanvasContext.cpp:

(WebCore::GPUCanvasContext::canvas):

  • Modules/WebGPU/GPUCanvasContext.h:
  • Modules/WebGPU/GPUCanvasContext.idl:

Add OffscreenCanvas to canvas attribute when it is enabled.

  • Modules/WebGPU/GPUImageCopyExternalImage.h:
  • Modules/WebGPU/GPUImageCopyExternalImage.idl:

Add OffscreenCanvas to source attribute when it is enabled.

10:46 AM Changeset in webkit [290837] by eric.carlson@apple.com
  • 5 edits in trunk/Source/WebCore

[Cocoa] Crash in MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL
​https://bugs.webkit.org/show_bug.cgi?id=237456
rdar://80407863

Reviewed by Jer Noble.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::enableInheritURIQueryComponent const): Create
and use a static, never destroyed, AtomString instead of creating one every time
a AVURLAsset is created. New method used by both AVF media players.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::MediaPlayerPrivateAVFoundationCF::createAVAssetForURL): Call enableInheritURIQueryComponent.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL): Ditto.

10:03 AM Changeset in webkit [290836] by sihui_liu@apple.com
  • 5 edits in trunk/Source/WebCore

IDB serialization thread should pass isolated copy of IndexIDToIndexKeyMap to storage thread
​https://bugs.webkit.org/show_bug.cgi?id=237455

Reviewed by Chris Dumez.

  • Modules/indexeddb/server/MemoryObjectStore.cpp:

(WebCore::IDBServer::MemoryObjectStore::addRecord):

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):

  • bindings/js/IDBBindingUtilities.cpp:

(WebCore::generateIndexKeyMapForValueIsolatedCopy):
(WebCore::generateIndexKeyMapForValue): Deleted.

  • bindings/js/IDBBindingUtilities.h:
9:44 AM Changeset in webkit [290835] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[iOS] Hard link AVPictureInPictureController
​https://bugs.webkit.org/show_bug.cgi?id=237227

Reviewed by Brent Fulgham.

Hard linking instead of soft linking should be a small performance improvement.

  • Configurations/WebKit.xcconfig:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

9:16 AM Changeset in webkit [290834] by Aditya Keerthi
  • 5 edits in trunk

[iOS] Unable to scroll to a found text range when there is an existing selection
​https://bugs.webkit.org/show_bug.cgi?id=237407
rdar://89653213

Reviewed by Wenson Hsieh.

Source/WebCore:

Scrolling to a found text range is performed by creating a
TemporarySelectionChange and using the RevealSelectionBounds
TemporarySelectionOption. When a TemporarySelectionChange is
destroyed, the original selection is restored.

Currently, the selection is restored using the same set of selection
options used to make the temporary selection. Consequently, whenever a
"reveal" option is specified, WebKit scrolls to reveal the temporary
selection, and then scrolls again to reveal the original selection.
This behavior means that an attempt to scroll to a found text range
will fail if the document has an existing selection.

To fix, do not add any of the "reveal" options to the set of selection
options when restoring the original selection during a
TemporarySelectionChange. The only other features that use
TemporarySelectionChange with "reveal" options are App Highlights
and Scroll To Text Fragment. Neither of these features require WebKit
to scroll to the original selection.

  • editing/Editor.cpp:

(WebCore::TemporarySelectionChange::TemporarySelectionChange):
(WebCore::TemporarySelectionChange::~TemporarySelectionChange):
(WebCore::TemporarySelectionChange::setSelection):

  • editing/Editor.h:

Tools:

Add an API test that sets a selection in the document, finds some
text outside the viewport, and scrolls to make the found text
visible.

  • TestWebKitAPI/Tests/WebKitCocoa/FindInPage.mm:

(-[TestScrollViewDelegate init]):
(-[TestScrollViewDelegate scrollViewDidEndScrollingAnimation:]):
(TEST):

8:51 AM Changeset in webkit [290833] by Tyler Wilcock
  • 3 edits in trunk/Source/WebCore

AX ITM: Updating m_pendingLoadingProgress can cause deadlock on AXIsolatedTree::m_changeLogLock
​https://bugs.webkit.org/show_bug.cgi?id=237402

Reviewed by Chris Fleizach.

AXIsolatedTree::m_pendingLoadingProgress is currently guarded by
AXIsolatedTree::m_changeLogLock. Because loading can happen at any time,
deadlocks can happen in this sequence:

  1. AXIsolatedTree::updateLoadingProgress is called on the main thread while the secondary thread holds the lock
  2. The secondary thread is holding the lock to service an AX request, and said AX request does something to call into the main thread (e.g. AXLOGs an isolated object, which causes a dispatch to the main thread as part of AXIsolatedObject::outerHTML).
  3. Deadlock

This patch fixes this by making m_loadingProgress threadsafe
via std::atomic<double> and removing m_pendingLoadingProgress.

This patch also removes an unnecessary acquisition of m_changeLogLock
in AXIsolatedTree::focusedNode(). This function is only called on the
secondary-thread, and only accesses secondary-thread safe functions
and member variables (nodeForID, m_focusedNodeID), so we don't need the lock.

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::focusedNode):
Removed unnecessary m_changeLogLock acquisition.
(WebCore::AXIsolatedTree::updateLoadingProgress):
Update m_loadingProgress directly instead of the now deleted intermediary
m_pendingLoadingProgress.
(WebCore::AXIsolatedTree::applyPendingChanges):

  • accessibility/isolatedtree/AXIsolatedTree.h:

Remove m_pendingLoadingProgress.

7:49 AM Changeset in webkit [290832] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Top layers should not be moved
​https://bugs.webkit.org/show_bug.cgi?id=237305

Patch by Rob Buis <​rbuis@igalia.com> on 2022-03-04
Reviewed by Tim Nguyen.

Top layers are always children of RenderView and should not be moved.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::moveLayers):

7:42 AM Changeset in webkit [290831] by graouts@webkit.org
  • 4 edits in trunk

[web-animations] "inherit" values should trigger keyframe recomputation if any previous effect has changed that property
​https://bugs.webkit.org/show_bug.cgi?id=237471

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/responsive/textIndent-expected.txt:

Source/WebCore:

When we fixed 237371 we only looked at the unanimated style, but we should account for any previous keyframe effect
modifying a property set to "inherit" for the current effect.

  • animation/KeyframeEffectStack.cpp:

(WebCore::KeyframeEffectStack::applyKeyframeEffects):

7:11 AM Changeset in webkit [290830] by Kate Cheney
  • 4 edits
    2 adds in trunk

CSP report does not get sent to the document in the case of a detached element
​https://bugs.webkit.org/show_bug.cgi?id=237440
<rdar://problem/89081463>

Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/security/contentSecurityPolicy/report-violation-to-document-after-element-has-been-detached.html

Only send a violation report to the element if it is connected. Check
right before dispatching in case the element gets detached after the
security policy violation has been created. If the element is not
connected in this case, we send the report to the document.

  • dom/Element.cpp:

(WebCore::Element::enqueueSecurityPolicyViolationEvent):

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::reportViolation const):
Also sets the composed value on the violation event as per the spec.

LayoutTests:

  • http/tests/security/contentSecurityPolicy/report-violation-to-document-after-element-has-been-detached-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/report-violation-to-document-after-element-has-been-detached.html: Added.
5:22 AM Changeset in webkit [290829] by youenn@apple.com
  • 3 edits in trunk/Source/WebKit

LibWebRTCCodecs::setEncodeRates should send LibWebRTCCodecsProxy::SetEncodeRates only when the encoder is live
​https://bugs.webkit.org/show_bug.cgi?id=237421

Reviewed by Darin Adler.

We were previously not asserting in LibWebRTCCodecsProxy::setEncodeRates and we were missing some encode rate orders.
This is due to the fact that when creating an encoder, we are hopping to main thread, then to work queue to send the message to create an encoder.
In LibWebRTCCodecs::setEncodeRates, we were hopping to main thread if needed.
If the encoder connection is null, we are now hopping to main thread, then to work queue as done when creating an encoder.
Since there is a time where LibWebRTCCodecsProxy::setEncodeRates might have sent encode rates, we bail out early to not set based on old bitrates.

Covered by existing tests not crashing in LibWebRTCCodecsProxy::setEncodeRates.

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::LibWebRTCCodecs::setEncodeRates):

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
5:16 AM Changeset in webkit [290828] by Angelos Oikonomopoulos
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Improve reuse of known register values on ARMv7
​https://bugs.webkit.org/show_bug.cgi?id=237424

Reviewed by Žan Doberšek.

Reduce the generated code size by introducing and pervasively using
setupArmAddress(AbsoluteAddress address, ...). This effectively
replaces sequences of e.g.

movw r6, cst1
movt r6, cst2
strd r0, r1, [r6]

with

strd r0, r1, [r6, offset]

when a close enough address is already available in r6.

While here, change short_move to only emit an add/sub if this results in an
actual reduction in code size. When the add/sub would be neutral,
prefer loading an immediate as that doesn't introduce a data dependency
between the instructions.

This results in a measurable but small (< 1%) reduction in the
generated code size on JS2.

Hat tip to Geza Lore for the suggestions.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::add32):
(JSC::MacroAssemblerARMv7::add64):
(JSC::MacroAssemblerARMv7::or8):
(JSC::MacroAssemblerARMv7::or16):
(JSC::MacroAssemblerARMv7::or32):
(JSC::MacroAssemblerARMv7::sub32):
(JSC::MacroAssemblerARMv7::load32):
(JSC::MacroAssemblerARMv7::load8):
(JSC::MacroAssemblerARMv7::load16):
(JSC::MacroAssemblerARMv7::store32):
(JSC::MacroAssemblerARMv7::store8):
(JSC::MacroAssemblerARMv7::store16):
(JSC::MacroAssemblerARMv7::storePair32):
(JSC::MacroAssemblerARMv7::short_move):
(JSC::MacroAssemblerARMv7::add32Impl):
(JSC::MacroAssemblerARMv7::branch8):
(JSC::MacroAssemblerARMv7::branchTest32):
(JSC::MacroAssemblerARMv7::branchTest8):
(JSC::MacroAssemblerARMv7::branchTest16):
(JSC::MacroAssemblerARMv7::farJump):
(JSC::MacroAssemblerARMv7::absoluteAddressWithinShortOffset):
(JSC::MacroAssemblerARMv7::setupArmAddress):

4:01 AM Changeset in webkit [290827] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Iteration to search for least active WebGLRenderingContextBase could use min_element
​https://bugs.webkit.org/show_bug.cgi?id=237464

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-04
Reviewed by Antti Koivisto.

Apply review comments after landing bug 222411 r290816.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::addActiveContext):

3:55 AM Changeset in webkit [290826] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[Flatpak SDK] Upgrade from llvm12 to llvm13
​https://bugs.webkit.org/show_bug.cgi?id=237430

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-04
Reviewed by Adrian Perez de Castro.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.run_in_sandbox):
(WebkitFlatpak._get_dependency_packages):

3:37 AM Changeset in webkit [290825] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Documentation for webkit_web_context_set_spell_checking_languages() is incomplete
​https://bugs.webkit.org/show_bug.cgi?id=237465

Reviewed by Carlos Garcia Campos.

  • UIProcess/API/glib/WebKitWebContext.cpp: Improve documentation.
1:15 AM Changeset in webkit [290824] by youenn@apple.com
  • 16 edits in trunk/Source/WebKit

Introduce routines to exchange SharedVideoFrame::Buffer directly
​https://bugs.webkit.org/show_bug.cgi?id=237267

Reviewed by Eric Carlson.

Define explictly SharedVideoFrame::Buffer as Variant of the various buffer representations.
This allows to move more code in SharedVideoFrame for instance by adding direct support of sending webrtc::VideoFrame buffers in SharedVideoFrame.
Reuse that code in LibWebRTCCodecs as a refactoring/simplification.
Reuse that code in RemoteVideoFrameObjectHeap which allows to exchange IOSurfaces in case WebProcess can use them.
This is used when encoding such frames using software encoders.

Covered by existing tests.

  • GPUProcess/media/RemoteVideoFrameObjectHeap.cpp:
  • GPUProcess/media/RemoteVideoFrameObjectHeap.h:
  • GPUProcess/media/RemoteVideoFrameObjectHeap.messages.in:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.messages.in:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/media/RemoteVideoFrameProxy.cpp:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:
  • WebProcess/GPU/webrtc/RemoteVideoFrameObjectHeapProxy.h:
  • WebProcess/GPU/webrtc/RemoteVideoFrameObjectHeapProxyProcessor.cpp:
  • WebProcess/GPU/webrtc/RemoteVideoFrameObjectHeapProxyProcessor.h:
  • WebProcess/GPU/webrtc/RemoteVideoFrameObjectHeapProxyProcessor.messages.in:
  • WebProcess/GPU/webrtc/SharedVideoFrame.cpp:
  • WebProcess/GPU/webrtc/SharedVideoFrame.h:
12:53 AM Changeset in webkit [290823] by graouts@webkit.org
  • 8 edits in trunk

[web-animations] keyframe values set to "inherit" should recompute their values when the inherited value changes
​https://bugs.webkit.org/show_bug.cgi?id=237371

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/responsive/lineHeight-expected.txt:
  • web-platform-tests/web-animations/responsive/opacity-expected.txt:
  • web-platform-tests/web-animations/responsive/textIndent-expected.txt:

Source/WebCore:

We now keep track of properties set to "inherit" in keyframes such that we may determine when the
computed value may have changed when resolving animations.

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::processKeyframes):

  • animation/KeyframeEffect.h:

(WebCore::KeyframeEffect::inheritedProperties const):

  • animation/KeyframeEffectStack.cpp:

(WebCore::KeyframeEffectStack::applyKeyframeEffects):

12:42 AM Changeset in webkit [290822] by sihui_liu@apple.com
  • 3 edits in trunk/Source/WebCore

SQLiteDatabase::open should return early if journal mode cannot be set
​https://bugs.webkit.org/show_bug.cgi?id=237130
<rdar://83130954>

Reviewed by Darin Adler.

Add early return in SQLiteDatabase::open if key operation fails; also make sure error is properly set and
database is closed in the case.

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::open):
(WebCore::SQLiteDatabase::useWALJournalMode):
(WebCore::SQLiteDatabase::close):

  • platform/sql/SQLiteDatabase.h:
12:10 AM Changeset in webkit [290821] by youenn@apple.com
  • 5 edits in trunk

webrtc/canvas-to-peer-connection.html is flakily failing a test assertion
​https://bugs.webkit.org/show_bug.cgi?id=237423

Reviewed by Eric Carlson.

Source/WebCore:

Make sure the rotation session size is matching the buffer size.
Covered by updated test.

  • platform/graphics/cocoa/GraphicsContextGLCocoa.h:
  • platform/graphics/cocoa/GraphicsContextGLCocoa.mm:

(WebCore::GraphicsContextGLCocoa::paintCompositedResultsToMediaSample):

LayoutTests:

WebRTC pipeline is lossy so frames might disappear.
For that reason, we need to send multiple times the same frame to ensure we can read the expected frame.
To ensure we are not reading a previous test frame, what we do is changing the size of the canvas before doing the test.
This patch reduces the number of iterations to ensure the test is not too long to run.

  • webrtc/canvas-to-peer-connection.html:
12:07 AM Changeset in webkit [290820] by youenn@apple.com
  • 4 edits in trunk/Source/WebCore

AVVideoCaptureSource should reuse CaptureDevice label
​https://bugs.webkit.org/show_bug.cgi?id=237363
<rdar://88301613>

Reviewed by Eric Carlson.

We are getting AV device name through AVCaptureDevice.localizedName, first in UIProcess, then in GPUProcess.
To make sure we always use the ones from UIProcess (which are the ones exposed through mediaDevices.enumerateDevices),
We make sure to use CaptureDevice.label when creating an AVVideoCaptureSource.

Manually tested.

  • platform/mediastream/mac/AVVideoCaptureSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::create):
(WebCore::AVVideoCaptureSource::AVVideoCaptureSource):

  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

Mar 3, 2022:

11:55 PM Changeset in webkit [290819] by youenn@apple.com
  • 4 edits in trunk/LayoutTests

fast/mediastream/getUserMedia-to-canvas-1.html and fast/mediastream/getUserMedia-to-canvas-2.html are failing on MacOS when remote video frame flag is enabled
​https://bugs.webkit.org/show_bug.cgi?id=237042
<rdar://problem/89298601>

Reviewed by Eric Carlson.

Video element videoWidth/videoHeight are updated when track settings are changed,
and not when video frames being received.

This does not guarantee that videoWidth/videoHeight (main thread) are fully in sync
with the actual video frames (background thread) when there is a change of size.

We might be able to tighten this in MediaPlayerPrivateMediaStreamAVFObjC by only resorting on video frames.
In the meantime, we update the test to use requestVideoFrameCallback which provides accurate per frame metadata.

  • fast/mediastream/getUserMedia-to-canvas-1.html:
  • fast/mediastream/getUserMedia-to-canvas-2.html:
  • webrtc/routines.js:
10:58 PM Changeset in webkit [290818] by beidson@apple.com
  • 13 edits in trunk/Source/WebKit

Add a new "Daemon -> Client" message type to webpushd
​https://bugs.webkit.org/show_bug.cgi?id=237391

Reviewed by Alex Christensen.

Future work will need more messages like this.
So let's add the mechanism in a small standalone patch that uses it for debug messages.

No behavior change for now.

  • NetworkProcess/Notifications/Cocoa/WebPushDaemonConnectionCocoa.mm:

(WebKit::WebPushD::handleWebPushDaemonMessage):
(WebKit::WebPushD::Connection::connectionReceivedEvent):
(WebKit::WebPushD::Connection::connectionReceivedEvent const): Deleted.

  • NetworkProcess/Notifications/WebPushDaemonConnection.cpp:

(WebKit::WebPushD::Connection::debugMessage):

  • NetworkProcess/Notifications/WebPushDaemonConnection.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementConnection.h:
  • NetworkProcess/PrivateClickMeasurement/cocoa/PrivateClickMeasurementConnectionCocoa.mm:

(WebKit::PCM::Connection::connectionReceivedEvent):
(WebKit::PCM::Connection::connectionReceivedEvent const): Deleted.

  • Platform/IPC/DaemonConnection.h:
  • Shared/WebPushDaemonConstants.h:

(WebKit::WebPushD::daemonMessageTypeSendsReply):

  • webpushd/ICAppBundle.mm:

(WebPushD::broadcastDebugMessage):

  • webpushd/PushClientConnection.h:
  • webpushd/PushClientConnection.mm:

(WebPushD::ClientConnection::broadcastDebugMessage):
(WebPushD::ClientConnection::sendDebugMessage):
(WebPushD::ClientConnection::sendDaemonMessage const):

  • webpushd/WebPushDaemon.h:
  • webpushd/WebPushDaemon.mm:

(WebPushD::Daemon::broadcastDebugMessage):
(WebPushD::Daemon::broadcastAllConnectionIdentities):
(WebPushD::Daemon::connectionAdded):

10:38 PM Changeset in webkit [290817] by Ross Kirsling
  • 2 edits in trunk/Source/WebKit

REGRESSION(r290815): Fix even more incorrect #if ENABLE(SERVICE_WORKER) usage in NetworkProcess
​https://bugs.webkit.org/show_bug.cgi?id=237461

Unreviewed build fix.

  • NetworkProcess/NetworkProcess.cpp:

The existence of NetworkProcess::{getPendingPushMessages, processPushMessages} depend on ENABLE(SERVICE_WORKER);
it is only when they exist that their implementation depends on ENABLE(BUILT_IN_NOTIFICATIONS).

10:02 PM Changeset in webkit [290816] by commit-queue@webkit.org
  • 14 edits
    2 deletes in trunk

WebGL context count is not limited for GPU process
​https://bugs.webkit.org/show_bug.cgi?id=222411

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-03
Reviewed by Kenneth Russell.

Source/WebCore:

Move the context limit from the GraphicsContextGL implementation
level to WebGLRenderingContext level. This way the limit
is applied to the GPUP implementation too.

Recycle the context with the earliest activity (draw, readpixels)
instead of the creation order.

Stores the WebGL contexts to per-thread set and limits the size of the set.
The set is per-thread to support WebGL contexts in DOM as well as
offscreen canvas use-cases. Offscreen canvas is not implemented for Cocoa
but other ports may enable it.

Tested by:
LayoutTests/webgl/lose-context-after-context-lost.html
LayoutTests/webgl/many-contexts-access-after-loss.html
LayoutTests/webgl/many-contexts.html
LayoutTests/webgl/max-active-contexts-console-warning.html
LayoutTests/webgl/max-active-contexts-gc.html
LayoutTests/webgl/max-active-contexts-oldest-context-lost.html
LayoutTests/webgl/max-active-contexts-webglcontextlost-prevent-default.html

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::activeContexts):
(WebCore::addActiveContext):
(WebCore::removeActiveContext):
(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::setGraphicsContextGL):
(WebCore::WebGLRenderingContextBase::destroyGraphicsContextGL):
(WebCore::WebGLRenderingContextBase::clearIfComposited):
(WebCore::WebGLRenderingContextBase::maybeRestoreContext):
(WebCore::WebGLRenderingContextBase::updateActiveOrdinal):

  • html/canvas/WebGLRenderingContextBase.h:

(WebCore::WebGLRenderingContextBase::activeOrdinal const):

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:
  • platform/graphics/cocoa/GraphicsContextGLCocoa.mm:

(WebCore::GraphicsContextGLANGLE::~GraphicsContextGLANGLE):

  • platform/graphics/cocoa/WebProcessGraphicsContextGLCocoa.mm:

(WebCore::createWebProcessGraphicsContextGL):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL):

  • platform/graphics/opengl/GraphicsContextGLOpenGLManager.cpp: Removed.
  • platform/graphics/opengl/GraphicsContextGLOpenGLManager.h: Removed.
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:

(WebCore::createWebProcessGraphicsContextGL):

  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:

(WebCore::GraphicsContextGLANGLE::~GraphicsContextGLANGLE):

LayoutTests:

  • platform/ios-wk2/TestExpectations:
9:28 PM Changeset in webkit [290815] by Ben Nham
  • 28 edits
    2 adds in trunk

Enforce silent push quota
​https://bugs.webkit.org/show_bug.cgi?id=236863

Reviewed by Brady Eidson.

Source/WebCore:

All PushSubscriptions are created with the userVisibleOnly flag set. This means that all
push events should result in a user-facing notification.

To enforce this, we use a quota system. A push subscription can process up to three silent
pushes. After three silent pushes, we remove the push subscription. To continue to receive
pushes, the user must navigate back to the website and the site must request permission to
send pushes again.

Originally we were going to use a more complicated quota system that moved subscriptions
from waking to non-waking before finally unsubscribing, but this seemed like it could lead
to subscriptions being in a partially-working state that would be hard to explain and reason
about. As a result, I've removed the wakeState column from PushDatabase and replaced it
a silentPushCount column.

To track whether or not a service worker has shown a notification while processing a push
event, we use a boolean flag on ServiceWorkerGlobalScope. This should be sufficient because
we currently only process one push event at a time.

Covered by existing and new API tests.

  • Modules/push-api/PushDatabase.cpp:

(WebCore::PushRecord::isolatedCopy const):
(WebCore::PushRecord::isolatedCopy):
(WebCore::PushDatabase::insertRecord):
(WebCore::makePushRecordFromRow):
(WebCore::PushDatabase::getRecordByTopic):
(WebCore::PushDatabase::getRecordByBundleIdentifierAndScope):
(WebCore::PushDatabase::getTopics):
(WebCore::PushDatabase::incrementSilentPushCount):
(WebCore::PushDatabase::removeRecordsByBundleIdentifierAndSecurityOrigin):

  • Modules/push-api/PushDatabase.h:
  • workers/service/ServiceWorkerGlobalScope.h:
  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::showNotification):

  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::queueTaskToFirePushEvent):

Source/WebKit:

  • If a push event doesn't result in a notification or if the associated promise rejects, then we increment the silent push count associated with that origin.
  • PushService now removes a subscription if the origin has reached its quota of silent pushes.

Covered by existing and new API tests.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::processPushMessage):

  • NetworkProcess/Notifications/NetworkNotificationManager.cpp:

(WebKit::NetworkNotificationManager::incrementSilentPushCount):
(WebKit::ReplyCaller<int>::callReply):

  • Shared/WebPushDaemonConstants.h:

(WebKit::WebPushD::messageTypeSendsReply):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _notificationManagerForTesting]):

  • webpushd/PushService.mm:

(WebPushD::updateTopicLists):
(WebPushD::PushService::incrementSilentPushCount):

  • webpushd/WebPushDaemon.mm:

(WebPushD::MessageInfo::incrementSilentPushCount::encodeReply):
(WebPushD::Daemon::decodeAndHandleMessage):
(WebPushD::Daemon::incrementSilentPushCount):

Tools:

Modified existing push tests to show a notification. Added a new test case to make sure that
subscriptions are removed when an origin reaches its quota of silent pushes.

  • TestWebKitAPI/TestNotificationProvider.cpp:

(TestWebKitAPI::notificationPermissions):
(TestWebKitAPI::TestNotificationProvider::TestNotificationProvider):
(TestWebKitAPI::TestNotificationProvider::~TestNotificationProvider):
(TestWebKitAPI::TestNotificationProvider::notificationPermissions):
(TestWebKitAPI::TestNotificationProvider::setPermission):

  • TestWebKitAPI/Tests/WebCore/PushDatabase.cpp:

(TestWebKitAPI::makeTemporaryDatabasePath):
(TestWebKitAPI::getTopicsSync):
(TestWebKitAPI::PushDatabaseTest::getTopics):
(TestWebKitAPI::PushDatabaseTest::removeRecordsByBundleIdentifierAndSecurityOrigin):
(TestWebKitAPI::PushDatabaseTest::incrementSilentPushCount):
(TestWebKitAPI::operator==):
(TestWebKitAPI::TEST_F):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/HTTPServer.mm:

(TestWebKitAPI::HTTPServer::origin const):

LayoutTests:

Update PushEvent tests to check that notifications are displayed.

  • http/wpt/push-api/pushEvent.any.js:

(promise_test.async const):
(promise_test.async if):

  • http/wpt/push-api/pushEvent.any.serviceworker-expected.txt:
8:40 PM Changeset in webkit [290814] by Ben Nham
  • 2 edits in trunk/Source/WebKit

Allow webpushd to launch browser in background
​https://bugs.webkit.org/show_bug.cgi?id=237114

Reviewed by Brady Eidson.

Now that webpushd is sandboxed on Mac (r289566), the LaunchServices SPI call to launch
Safari is now failing, because LaunchServices goes down a different path when there is a
sandboxed caller. In particular, it fails to launch Safari because Safari doesn't register
for the webkit-app-launch scheme. Safari also doesn't want to list this scheme in its plist.

For now, to unblock our testing, we're giving ourselves an entitlement to restore the
pre-sandboxed behavior of being able to launch Safari even though it doesn't register for
the webkit-app-launch scheme. We are still in discussions with LaunchServices and Safari
about if there is a better and more restrictive way of granting ourselves this ability.

  • Scripts/process-entitlements.sh:
8:08 PM Changeset in webkit [290813] by Devin Rousso
  • 35 edits
    5 adds in trunk/Source

[GPU Process] dont load Apple Pay button/logo PDFs in the WebProcess
​https://bugs.webkit.org/show_bug.cgi?id=237177

Reviewed by Simon Fraser.

Source/WebCore:

  • platform/graphics/SystemImage.h: Added.

(WebCore::SystemImage::draw const):
(WebCore::SystemImage::SystemImage):
Introduce a new extendable class SystemImage that represents a collection of arguments
and methodology (that uses those arguments) to draw something from the system.
This patch introduces two concrete uses:

  • ApplePayButtonSystemImage uses PassKit SPI to draw an Apple Pay button.
  • ApplePayLogoSystemImage loads a PDF file of the Apple Pay logo from inside PassKit.

This architecture was chosen so that GraphicsContext doesn't have to know about Apple Pay
specific things, instead only dealing with a very generic interface (whos subclasses know
more specifically what to do with the data they're given).

  • Modules/applepay/ApplePayButtonSystemImage.h: Added.

(WebCore::ApplePayButtonSystemImage::create):
(WebCore::ApplePayButtonSystemImage::ApplePayButtonSystemImage):
(WebCore::ApplePayButtonSystemImage::encode const):
(WebCore::ApplePayButtonSystemImage::decode):
(isType):

  • Modules/applepay/ApplePayButtonSystemImage.mm: Added.

(WebCore::toPKPaymentButtonType):
(WebCore::toPKPaymentButtonStyle):
(WebCore::ApplePayButtonSystemImage::draw const):

  • css/CSSPrimitiveValueMappings.h:
  • rendering/style/RenderStyle.h:
  • rendering/style/RenderStyleConstants.cpp:
  • rendering/style/RenderStyleConstants.h:

Drive-by: Move ApplePayButtonStyle and ApplePayButtonType to ApplePayButtonSystemImage.h
so they can be used elsewhere (e.g. GPUProcess) without having to include everything else.

  • Modules/applepay/ApplePayLogoSystemImage.h: Added.

(WebCore::ApplePayLogoSystemImage::create):
(WebCore::ApplePayLogoSystemImage::ApplePayLogoSystemImage):
(WebCore::ApplePayLogoSystemImage::encode const):
(WebCore::ApplePayLogoSystemImage::decode):
(isType):

  • Modules/applepay/ApplePayLogoSystemImage.mm: Added.

(WebCore::passKitBundle):
(WebCore::loadPassKitPDFPage):
(WebCore::applePayLogoWhite):
(WebCore::applePayLogoBlack):
(WebCore::applePayLogoForStyle):
(WebCore::ApplePayLogoSystemImage::draw const):
Add a new ApplePayLogoStyle so that the WebProcess isn't able to provide an arbitrary PDF
to load when rendering -webkit-named-image(apple-pay-logo-[white,black]).

  • platform/cocoa/ThemeCocoa.mm:

(WebCore::ThemeCocoa::drawNamedImage const):
(WebCore::fitContextToBox): Deleted.
(WebCore::passKitBundle): Deleted.
(WebCore::loadPassKitPDFPage): Deleted.
(WebCore::applePayButtonLogoBlack): Deleted.
(WebCore::applePayButtonLogoWhite): Deleted.
(WebCore::drawApplePayButton): Deleted.

  • rendering/RenderThemeCocoa.mm:

(WebCore::RenderThemeCocoa::paintApplePayButton):
(WebCore::toPKPaymentButtonStyle): Deleted.
(WebCore::toPKPaymentButtonType): Deleted.
Move the logic that draws the Apple Pay button to a method on GraphicsContext so that it
can hook into the various GPUProcess flags/systems.

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawSystemImage): Added.

  • platform/graphics/BifurcatedGraphicsContext.h:
  • platform/graphics/BifurcatedGraphicsContext.cpp:

(WebCore::BifurcatedGraphicsContext::drawSystemImage): Added.

  • platform/graphics/NullGraphicsContext.h:

(WebCore::NullGraphicsContext::drawSystemImage): Added.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::append):

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::safeCopy const):

  • platform/graphics/displaylists/DisplayListItemType.h:
  • platform/graphics/displaylists/DisplayListItemType.cpp:

(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawSystemImage::DrawSystemImage): Added.
(WebCore::DisplayList::DrawSystemImage::systemImage const): Added.
(WebCore::DisplayList::DrawSystemImage::destination const): Added.
(WebCore::DisplayList::DrawSystemImage::globalBounds const): Added.
(WebCore::DisplayList::DrawSystemImage::localBounds const): Added.
(WebCore::DisplayList::DrawSystemImage::encode const): Added.
(WebCore::DisplayList::DrawSystemImage::decode): Added.

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::DrawSystemImage::apply const): Added.
(WebCore::DisplayList::operator<<):

  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::drawSystemImage): Added.

  • platform/graphics/displaylists/DisplayListRecorderImpl.h:
  • platform/graphics/displaylists/DisplayListRecorderImpl.cpp:

(WebCore::DisplayList::RecorderImpl::recordDrawSystemImage): Added.
Add new DrawSystemImage display list item to handle GPUProcess drawing of SystemImage.

  • Headers.cmake:
  • Sources.txt:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • Modules/model-element/scenekit/SceneKitModelLoaderUSD.mm:

Drive-by: Unified sources build fix.

Source/WebKit:

See Source/WebCore/ChangeLog for an explanation of SystemImage.

  • Shared/WebCoreArgumentCoders.h:
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Ref<SystemImage>>::encode): Added.
(IPC::ArgumentCoder<Ref<SystemImage>>::decode): Added.
Support sending SystemImage (technically Ref<SystemImage>) across processes.

  • GPUProcess/graphics/RemoteDisplayListRecorder.messages.in:
  • GPUProcess/graphics/RemoteDisplayListRecorder.h:
  • GPUProcess/graphics/RemoteDisplayListRecorder.cpp:

(WebKit::RemoteDisplayListRecorder::drawSystemImage): Added.

  • WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
  • WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:

(WebKit::RemoteDisplayListRecorderProxy::recordDrawSystemImage): Addded.
Add new DrawSystemImage display list item.

  • Scripts/webkit/messages.py:

(class_template_headers):
Add support for Ref<T> in IPC messages.

6:54 PM Changeset in webkit [290812] by Simon Fraser
  • 4 edits
    3 adds in trunk

Element with position: sticky after sticking, starts to move incorrectly when scrolling
​https://bugs.webkit.org/show_bug.cgi?id=231953
<rdar://84662329>

Reviewed by Sam Weinig.

Source/WebCore:

Sometimes we'd fail to push new StickyPositionViewportConstraints to the scrolling
tree, because operator== failed to compare m_constrainingRectAtLastLayout. This breaks
the requirement that the "last committed scroll position" for the overflow scrolling
node has to be updated in the same commit as the "constraining-rect-at-last-layout"
on the sticky node.

Test: scrollingcoordinator/scrolling-tree/sticky-in-overflow-stale-constraints.html

  • page/scrolling/ScrollingConstraints.cpp:

(WebCore::operator<<):

  • page/scrolling/ScrollingConstraints.h:

(WebCore::StickyPositionViewportConstraints::operator== const):

LayoutTests:

  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/sticky-in-overflow-stale-constraints-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/sticky-in-overflow-stale-constraints-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/sticky-in-overflow-stale-constraints.html: Added.
6:40 PM Changeset in webkit [290811] by Dewei Zhu
  • 10 edits in trunk/Tools

'run-benchmark' script should log http requests during benchmark run.
​https://bugs.webkit.org/show_bug.cgi?id=237076
<rdar://89270825>

Reviewed by Jonathan Bedard.

Relanding 290583 with fix.
Add support to log http requests during benchmark run for diagnostic purpose.
AutoInstall sets 'AUTOINSTALL_CA_CERT_PATH' to environment variables when certificate is specified,
and uses 'AUTOINSTALL_CA_CERT_PATH' when it's present in environment variables. This ensures scripts invoked
from subprocess can use autoinstalled correcctly.

  • Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py:

(AutoInstall):
(AutoInstall.set_index):

  • Scripts/webkitpy/init.py: Update 'attr' package version to 20.3.0 so match upgraded twisted version
  • Scripts/webkitpy/autoinstalled/twisted.py: Upgrade twisted version to latest python2 & python3 compatibile

version with specified implicit dependencies.

  • Scripts/webkitpy/benchmark_runner/benchmark_runner.py: Ensure benchmark diagnostic directory is created.

(BenchmarkRunner.init):

  • Scripts/webkitpy/benchmark_runner/http_server_driver/http_server/twisted_http_server.py: Add '--log-path'

arugment to allow specify logging output and it defaults to '/tmp/run-benchmark-http.log'

  • Scripts/webkitpy/benchmark_runner/http_server_driver/http_server_driver.py:

(HTTPServerDriver.set_device_id):
(HTTPServerDriver):
(HTTPServerDriver.set_http_log):

  • Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py: Pass http log path to

twisted http server if specified.
(SimpleHTTPServerDriver.init):
(SimpleHTTPServerDriver.serve):
(SimpleHTTPServerDriver.set_http_log):

  • Scripts/webkitpy/benchmark_runner/run_benchmark.py: Fix a tiny bug that default_diagnose_dir() is involked twice in

argument parser help message.
(config_argument_parser):

  • Scripts/webkitpy/benchmark_runner/webserver_benchmark_runner.py: Set http request log path if diagnostic directory

is specified.
(WebServerBenchmarkRunner.init):

Canonical link: ​https://commits.webkit.org/248047@main

6:19 PM Changeset in webkit [290810] by Jonathan Bedard
  • 4 edits in trunk/Tools

[git-webkit] Handle new PR with old branch name
​https://bugs.webkit.org/show_bug.cgi?id=237457
<rdar://problem/89788939>

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):

Canonical link: ​https://commits.webkit.org/248046@main

5:38 PM Changeset in webkit [290809] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.6

Tag Safari-614.1.5.6.

5:38 PM Changeset in webkit [290808] by Russell Epstein
  • 1 delete in tags/Safari-614.1.5.6

Remove tag.

5:36 PM Changeset in webkit [290807] by Russell Epstein
  • 26 edits
    12 adds in branches/safari-614.1.5-branch/Source

Cherry-pick r290805. rdar://problem/89053248

Copy WebKit frameworks and XPC processes to Secondary Path
​https://bugs.webkit.org/show_bug.cgi?id=237394

Reviewed by Saam Barati.

Source/JavaScriptCore:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • Configurations/Base.xcconfig:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Scripts/copy-frameworks-to-secondary-path.sh: Added.

Source/ThirdParty/ANGLE:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • ANGLE.xcodeproj/project.pbxproj:
  • Configurations/ANGLE-dynamic.xcconfig:
  • scripts/copy-frameworks-to-secondary-path.sh: Added.

Source/ThirdParty/libwebrtc:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • Configurations/libwebrtc.xcconfig:
  • Scripts/copy-frameworks-to-secondary-path.sh: Added.
  • libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • Configurations/WebCore.xcconfig:
  • Scripts/copy-frameworks-to-secondary-path.sh: Added.
  • WebCore.xcodeproj/project.pbxproj:

Source/WebGPU:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • Configurations/WebGPU.xcconfig:
  • Scripts/copy-frameworks-to-secondary-path.sh: Added.
  • WebGPU.xcodeproj/project.pbxproj:

Source/WebInspectorUI:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • Configurations/WebInspectorUIFramework.xcconfig:
  • Scripts/copy-frameworks-to-secondary-path.sh: Added.
  • WebInspectorUI.xcodeproj/project.pbxproj:

Source/WebKit:

Added build configuration variables and scripts to copy the built Framework as well as the XPC services
to the SYSTEM_SECONDARY_CONTENT_PATH when it is set. When copying the XPC services, we update the XPC
binaries to reference the frameworks from the SYSTEM_SECONDARY_CONTENT_PATH by updating
DYLD_VERSIONED_FRAMEWORK_PATH.

  • Configurations/Base.xcconfig:
  • Configurations/WebKitSwift.xcconfig:
  • Scripts/copy-frameworks-to-secondary-path.sh: Added.
  • Scripts/copy-xpc-services-to-secondary-path.sh: Added.
  • Scripts/update-dyld-environment-load-command: Added.
  • Scripts/webkitpy: Added.
  • Scripts/webkitpy/mach_o.py: Added. (_utf8_bytes_to_str): (_mach_o_int_field): (_mach_o_int_field._get_mach_o_int_field): (_mach_o_int_field._set_mach_o_int_field): (_mach_o_int_field._set_mach_o_int_field.func): (_mach_o_chararray_field): (_mach_o_chararray_field._get_mach_o_chararray_field): (_mach_o_chararray_field._set_mach_o_chararray_field): (_mach_o_chararray_field._set_mach_o_chararray_field.func): (_mach_o_varchar_field): (_mach_o_varchar_field._get_mach_o_varchar_field): (_mach_o_varchar_field._set_mach_o_varchar_field): (_mach_o_varchar_field._set_mach_o_varchar_field.func): (MachOCommand): (MachOCommand.init): (MachOSourceVersionCommand): (MachOSourceVersionCommand.version_str): (MachOSection): (MachOSection.init): (MachOSegmentCommand): (MachOSection32): (MachOSegment32Command): (MachOSegment32Command.init): (MachOSection64): (MachOSegment64Command): (MachOSegment64Command.init): (MachOLoadDylibCommand): (MachOLoadDylibCommand._version_str): (MachOLoadDylibCommand.compatibility_version_str): (MachOLoadDylibCommand.current_version_str): (MachODyldEnvironmentCommand): (MachODyldEnvironmentCommand.variable): (MachODyldEnvironmentCommand.value): (MachODyldEnvironmentCommand.build): (MachOIDDylibCommand): (MachOHeader): (MachOHeader.init): (MachOHeader.used_header_size): (MachOHeader.total_header_size): (MachOHeader.available_header_size): (MachOHeader.architecture_name): (MachOHeader.id_command): (MachOHeader.dyld_env_commands): (MachOHeader.dyld_versioned_framework_paths): (MachOHeader.filter_commands): (MachOHeader.update_file): (MachOHeader.parse_command): (MachOHeader32LE): (MachOHeader32LE.init): (MachOHeader64LE): (MachOHeader64LE.init): (MachOFile): (MachOFile.init): (is_macho_bytes): (is_macho_file): (enumerate_macho_files):
  • WebKit.xcodeproj/project.pbxproj:

Source/WebKitLegacy:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • WebKitLegacy.xcodeproj/project.pbxproj:
  • scripts/copy-frameworks-to-secondary-path.sh: Added.

Source/WebKitLegacy/mac:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • Configurations/Base.xcconfig:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290805 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5:32 PM Changeset in webkit [290806] by sihui_liu@apple.com
  • 9 edits in trunk

Text manipulation does not observe updated title element
​https://bugs.webkit.org/show_bug.cgi?id=237435
rdar://87318842

Reviewed by Wenson Hsieh.

Source/WebCore:

TextManipulationController now monitors two types of nodes (after first-time manipulation):
(1) manipulated nodes with content update
(2) non-manipulated nodes (newly displayed or newly added)
We should make sure title element gets added to set (1) if it's newly created, and gets added to set (2) if its
text content is updated.

New test: TextManipulation.CompleteTextManipulationForTitleElement

  • dom/Document.cpp:

(WebCore::Document::setTitle):

  • dom/Text.cpp:

(WebCore::Text::setDataAndUpdate):

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::didUpdateContentForNode):
(WebCore::TextManipulationController::didAddOrCreateRendererForNode):
(WebCore::TextManipulationController::scheduleObservationUpdate):
(WebCore::TextManipulationController::replace):
(WebCore::TextManipulationController::didCreateRendererForElement): Deleted.
(WebCore::TextManipulationController::didUpdateContentForText): Deleted.
(WebCore::TextManipulationController::didCreateRendererForTextNode): Deleted.

  • editing/TextManipulationController.h:
  • html/HTMLTitleElement.cpp:
  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::createRenderer):
(WebCore::RenderTreeUpdater::createTextRenderer):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:

(TestWebKitAPI::TEST):

5:26 PM Changeset in webkit [290805] by msaboff@apple.com
  • 26 edits
    14 adds in trunk/Source

Copy WebKit frameworks and XPC processes to Secondary Path
​https://bugs.webkit.org/show_bug.cgi?id=237394

Reviewed by Saam Barati.

Source/JavaScriptCore:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • Configurations/Base.xcconfig:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Scripts/copy-frameworks-to-secondary-path.sh: Added.

Source/ThirdParty/ANGLE:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • ANGLE.xcodeproj/project.pbxproj:
  • Configurations/ANGLE-dynamic.xcconfig:
  • scripts/copy-frameworks-to-secondary-path.sh: Added.

Source/ThirdParty/libwebrtc:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • Configurations/libwebrtc.xcconfig:
  • Scripts/copy-frameworks-to-secondary-path.sh: Added.
  • libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • Configurations/WebCore.xcconfig:
  • Scripts/copy-frameworks-to-secondary-path.sh: Added.
  • WebCore.xcodeproj/project.pbxproj:

Source/WebGPU:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • Configurations/WebGPU.xcconfig:
  • Scripts/copy-frameworks-to-secondary-path.sh: Added.
  • WebGPU.xcodeproj/project.pbxproj:

Source/WebInspectorUI:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • Configurations/WebInspectorUIFramework.xcconfig:
  • Scripts/copy-frameworks-to-secondary-path.sh: Added.
  • WebInspectorUI.xcodeproj/project.pbxproj:

Source/WebKit:

Added build configuration variables and scripts to copy the built Framework as well as the XPC services
to the SYSTEM_SECONDARY_CONTENT_PATH when it is set. When copying the XPC services, we update the XPC
binaries to reference the frameworks from the SYSTEM_SECONDARY_CONTENT_PATH by updating
DYLD_VERSIONED_FRAMEWORK_PATH.

  • Configurations/Base.xcconfig:
  • Configurations/WebKitSwift.xcconfig:
  • Scripts/copy-frameworks-to-secondary-path.sh: Added.
  • Scripts/copy-xpc-services-to-secondary-path.sh: Added.
  • Scripts/update-dyld-environment-load-command: Added.
  • Scripts/webkitpy: Added.
  • Scripts/webkitpy/mach_o.py: Added.

(_utf8_bytes_to_str):
(_mach_o_int_field):
(_mach_o_int_field._get_mach_o_int_field):
(_mach_o_int_field._set_mach_o_int_field):
(_mach_o_int_field._set_mach_o_int_field.func):
(_mach_o_chararray_field):
(_mach_o_chararray_field._get_mach_o_chararray_field):
(_mach_o_chararray_field._set_mach_o_chararray_field):
(_mach_o_chararray_field._set_mach_o_chararray_field.func):
(_mach_o_varchar_field):
(_mach_o_varchar_field._get_mach_o_varchar_field):
(_mach_o_varchar_field._set_mach_o_varchar_field):
(_mach_o_varchar_field._set_mach_o_varchar_field.func):
(MachOCommand):
(MachOCommand.init):
(MachOSourceVersionCommand):
(MachOSourceVersionCommand.version_str):
(MachOSection):
(MachOSection.init):
(MachOSegmentCommand):
(MachOSection32):
(MachOSegment32Command):
(MachOSegment32Command.init):
(MachOSection64):
(MachOSegment64Command):
(MachOSegment64Command.init):
(MachOLoadDylibCommand):
(MachOLoadDylibCommand._version_str):
(MachOLoadDylibCommand.compatibility_version_str):
(MachOLoadDylibCommand.current_version_str):
(MachODyldEnvironmentCommand):
(MachODyldEnvironmentCommand.variable):
(MachODyldEnvironmentCommand.value):
(MachODyldEnvironmentCommand.build):
(MachOIDDylibCommand):
(MachOHeader):
(MachOHeader.init):
(MachOHeader.used_header_size):
(MachOHeader.total_header_size):
(MachOHeader.available_header_size):
(MachOHeader.architecture_name):
(MachOHeader.id_command):
(MachOHeader.dyld_env_commands):
(MachOHeader.dyld_versioned_framework_paths):
(MachOHeader.filter_commands):
(MachOHeader.update_file):
(MachOHeader.parse_command):
(MachOHeader32LE):
(MachOHeader32LE.init):
(MachOHeader64LE):
(MachOHeader64LE.init):
(MachOFile):
(MachOFile.init):
(is_macho_bytes):
(is_macho_file):
(enumerate_macho_files):

  • WebKit.xcodeproj/project.pbxproj:

Source/WebKitLegacy:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • WebKitLegacy.xcodeproj/project.pbxproj:
  • scripts/copy-frameworks-to-secondary-path.sh: Added.

Source/WebKitLegacy/mac:

Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH
when it is set.

  • Configurations/Base.xcconfig:
5:21 PM Changeset in webkit [290804] by Alan Coon
  • 1 copy in tags/Safari-614.1.5.6

Tag Safari-614.1.5.6.

5:08 PM Changeset in webkit [290803] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Allow [SecureContext] extended attribute on namespaces.
​https://bugs.webkit.org/show_bug.cgi?id=237401

Patch by Dan Glastonbury <​djg@apple.com> on 2022-03-03
Reviewed by Alexey Shvayka.

  • bindings/scripts/IDLAttributes.json:

Enable SecureContext as a valid extended attribute on namespace.

  • bindings/scripts/test/BindingTestGlobalConstructors.idl:
  • bindings/scripts/test/JS/*: Updated
  • bindings/scripts/test/TestNamespaceObject.idl:

Added [SecureContext] to namespace

5:06 PM Changeset in webkit [290802] by commit-queue@webkit.org
  • 6 edits in trunk

[JSC] Update wasm branch hinting
​https://bugs.webkit.org/show_bug.cgi?id=237411

Patch by Tom Tartarin <​tom@leaningtech.com> on 2022-03-03
Reviewed by Yusuke Suzuki.

JSTests:

Simplify the module tested with the updated format.

  • wasm/branch-hints/branchHintsModule.wasm:
  • wasm/branch-hints/branchHintsSection.js:

Source/JavaScriptCore:

Change the section's name.
Clarify semantics in the parser.

  • wasm/WasmBranchHintsSectionParser.cpp:

(JSC::Wasm::BranchHintsSectionParser::parse):

  • wasm/WasmSectionParser.cpp:

(JSC::Wasm::SectionParser::parseCustom):

5:04 PM Changeset in webkit [290801] by commit-queue@webkit.org
  • 2 edits in trunk

Add Dan Glastonbury's name to contributors.json
​https://bugs.webkit.org/show_bug.cgi?id=237453

Patch by Dan Glastonbury <​djg@apple.com> on 2022-03-03
Reviewed by Alan Bujtas.

  • metadata/contributors.json:
4:57 PM Changeset in webkit [290800] by commit-queue@webkit.org
  • 2 edits in trunk

Add myself (Anjali Kumar) to contributors.json
​https://bugs.webkit.org/show_bug.cgi?id=237449

Patch by Anjali Kumar <​anjalik_22@apple.com> on 2022-03-03
Reviewed by Patrick Angle.

  • metadata/contributors.json: Added myself.
4:53 PM Changeset in webkit [290799] by Lauro Moura
  • 7 edits in trunk/Tools

[Python3] Switch a few more glib scripts to Python3
​https://bugs.webkit.org/show_bug.cgi?id=237442

Reviewed by Adrian Perez de Castro.

  • Scripts/check-for-global-bss-symbols-in-webkitgtk-libs: Update

shebang.
(bss_symbols): Decode Popen bytes output.

  • gtk/jhbuildrc: Update shebang.
  • gtk/ycm_extra_conf.py: Ditto.
  • jhbuild/jhbuild-wrapper: Ditto.

(jhbuild_at_expected_revision): Decode Popen bytes output.

  • jhbuild/jhbuildrc_common.py: Remove uneeded shebang.
  • wpe/jhbuildrc: Update shebang.
3:46 PM Changeset in webkit [290798] by Robert Jenner
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r290752.

r290752 broke mutliple tests, slowing down the iOS15 EWS
queue.

Reverted changeset:

"[iOS] Hard link AVPictureInPictureController"
​https://bugs.webkit.org/show_bug.cgi?id=237227
​https://commits.webkit.org/r290752

3:25 PM Changeset in webkit [290797] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

WKContentView should explicitly request the system pointer in the fallback case
​https://bugs.webkit.org/show_bug.cgi?id=237410
<rdar://79198381>

Reviewed by Anders Carlsson.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView pointerRegionForPositionInformation:point:]):
(-[WKContentView pointerInteraction:styleForRegion:]):
Instead of assuming a nil region and nil style will provide the system
pointer, provide a region the size of the WKContentView and explicitly
request the system pointer shape.

Also, drive-by adopt the API systemPointerStyle instead of the
deprecated SPI version.

2:51 PM Changeset in webkit [290796] by Jonathan Bedard
  • 7 edits in trunk/Tools

[webkitcorepy] Disable prompt when saving credentials
​https://bugs.webkit.org/show_bug.cgi?id=237438
<rdar://problem/89764417>

Reviewed by Aakash Jain.

  • Tools/Scripts/libraries/webkitbugspy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/github.py:

(Tracker.credentials): Pass 'save' to webkitcorepy.credentials.

  • Tools/Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitcorepy/webkitcorepy/credentials.py:

(credentials): Unless caller explicitly disables saving, assume that all credentials
should be saved to a system's keyring.

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

(Setup.github): Automatically save any prompted credentials.
(Setup.git): Ditto.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:

(GitHub.credentials): Pass 'save' to github.Tracker.credentials.

Canonical link: ​https://commits.webkit.org/248036@main

2:38 PM Changeset in webkit [290795] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

[macOS] WebContent processes crash with XPC_EXIT_REASON_SIGTERM_TIMEOUT when logging out
​https://bugs.webkit.org/show_bug.cgi?id=237398
<rdar://88940229>

Reviewed by Darin Adler.

Because we don't use RunningBoard on macOS, we leak an OS transaction to control the lifetime of our XPC
services ourselves. However, one of the side effects of leaking this transaction is that the default SIGTERM
handler doesn't cleanly exit our XPC services when logging out or rebooting. This led to crashes with
XPC_EXIT_REASON_SIGTERM_TIMEOUT as termination reason (rdar://88940229).

To address the issue, we now set our own SIGTERM handler that releases the OS transaction and calls the
default SIGTERM handler to exit cleanly. In the future, we should likely adopt RunningBoard on macOS and
control our lifetime via process assertions instead of leaking this OS transaction.

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:

(WebKit::XPCServiceInitializer):

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm:

(WebKit::setOSTransaction):
(WebKit::XPCServiceExit):
(WebKit::osTransaction): Deleted.

2:07 PM Changeset in webkit [290794] by Wenson Hsieh
  • 9 edits in trunk/Source/WebKit

[iOS] Further reduce hangs underneath -[WKContentView requestAutocorrectionContextWithCompletionHandler:]
​https://bugs.webkit.org/show_bug.cgi?id=237387
rdar://89654600

Reviewed by Tim Horton.

Tweak the mitigations landed in r288925 to be even more aggressive. Currently, we preemptively send an
autocorrection context from the web process to the UI process after receiving an IPC message from the UI process
indicating that an input view has been shown. However, this message might arrive too late in cases where the web
process hangs immediately after we're done setting element focus, within the very same runloop; in such a
scenario, we'll still end up hanging underneath the sync autocorrection request underneath -_elementDidFocus:
in the UI process.

We can instead make this mitigation even more aggressive, by setting a flag on WebPage when we're about to
propagate an ElementDidFocus message to the UI process that (in lieu of the WebKit client) would normally
cause the keyboard to appear. During the next DOM selection change, we then consult this flag and preemptively
send an autocorrection context to the UI process.

Additionally, remove another safeguard in the original change in r288925 which effectively invalidated the
cached autocorrection context after the end of the runloop by setting _autocorrectionContextNeedsUpdate. This
was only done to narrow the scope of the fix to just the scenario where UIKit requests autocorrection contexts
multiple times in the same runloop iteration. However, this appears to be insufficient to tackle more scenarios
where UIKit frequently requests autocorrection contexts even though the selection has not changed; hopefully, by
leaving _autocorrectionContextNeedsUpdate := NO, we can mitigate some of these other cases.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView requestAutocorrectionContextWithCompletionHandler:]):

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::notifySelectionChanged):

  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::WebEditorClient::respondToChangedSelection):

  • WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:

(WebKit::WebChromeClient::notifyRevealedSelectionByScrollingFrame):
(WebKit::WebChromeClient::didLayout):

  • WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:

(WebKit::WebEditorClient::overflowScrollPositionChanged):
(WebKit::WebEditorClient::subFrameScrollPositionChanged):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didScrollSelection):
(WebKit::WebPage::didChangeSelection):

Split didChangeSelection into two methods: didScrollSelection, which is invoked from codepaths where we're
scheduling an editor state after overflow or mainframe scrolling, and didChangeSelection, which now takes a
Frame indicating the frame that contains the changed selection. On iOS, we handle this by both scheduling an
editor state update, but also preemptively sending the autocorrection context to the UI process if we've just
focused an element that will probably cause the keyboard to appear (unless the client explicitly prevents it).

Note that we must check the frame containing the changed selection and bail if the render tree is in the
middle of being destroyed, so that we don't end up triggering layout (and release asserting) in the case where
we're clearing the selection during document teardown.

(WebKit::WebPage::resetFocusedElementForFrame):
(WebKit::WebPage::elementDidFocus):
(WebKit::WebPage::elementDidBlur):
(WebKit::WebPage::didCommitLoad):
(WebKit::WebPage::didChangeOverflowScrollPosition): Deleted.

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::setIsShowingInputViewForFocusedElement):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::updateSelectionAppearance):

Pass in frame to didChangeSelection.

(WebKit::WebPage::setIsShowingInputViewForFocusedElement): Deleted.

Move this back into the header, now that it's a straightforward setter again.

1:51 PM Changeset in webkit [290793] by Jonathan Bedard
  • 7 edits in trunk/Tools

[git-webkit] Open pre-populated GitHub page for new tokens
​https://bugs.webkit.org/show_bug.cgi?id=237436
<rdar://problem/89763053>

Reviewed by Ryan Haddad.

GitHub gives us a way to pre-populate its token generation web page. We should
open this page with appropriate arguments during setup.

  • Tools/Scripts/libraries/webkitbugspy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/github.py:

(Tracker.credentials): Make 'prompt' into a function, allowing us to open a url
and change the prompt based on the success of opening the url.

  • Tools/Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitcorepy/webkitcorepy/credentials.py:

(credentials): Allow 'prompt' to be callable.

Canonical link: ​https://commits.webkit.org/248033@main

1:19 PM Changeset in webkit [290792] by Lauro Moura
  • 3 edits in trunk/Tools

[build.webkit.org] Add GTK queue using clang
​https://bugs.webkit.org/show_bug.cgi?id=229637

Reviewed by Michael Catanzaro.

This commit adds a specific queue to build with clang in place of GCC.
It will help cover both toolchains and catch bugs and warnings
that happen to be raised by/to affect only clang.

Initially, it'll be a build-only queue, moving to a complete build and
tester in the future. It'll use clang-12, the version available in the
current SDK used by GTK and WPE.

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

(TestExpectedBuildSteps):

1:02 PM Changeset in webkit [290791] by mmaxfield@apple.com
  • 40 edits in trunk/Source/WebGPU

[WebGPU] Abide by the WebKit Style Guide
​https://bugs.webkit.org/show_bug.cgi?id=237437

Reviewed by Darin Adler.

The style guide says "Do not place a space between the type name and the protocol name."

  • WebGPU/Adapter.h:

(WebGPU::Adapter::create):

  • WebGPU/Adapter.mm:

(WebGPU::Adapter::Adapter):
(WebGPU::deviceMeetsRequiredLimits):

  • WebGPU/BindGroup.h:

(WebGPU::BindGroup::create):
(WebGPU::BindGroup::vertexArgumentBuffer const):
(WebGPU::BindGroup::fragmentArgumentBuffer const):
(WebGPU::BindGroup::computeArgumentBuffer const):

  • WebGPU/BindGroup.mm:

(WebGPU::Device::createBindGroup):
(WebGPU::BindGroup::BindGroup):

  • WebGPU/BindGroupLayout.h:

(WebGPU::BindGroupLayout::create):
(WebGPU::BindGroupLayout::vertexArgumentEncoder const):
(WebGPU::BindGroupLayout::fragmentArgumentEncoder const):
(WebGPU::BindGroupLayout::computeArgumentEncoder const):

  • WebGPU/BindGroupLayout.mm:

(WebGPU::Device::createBindGroupLayout):
(WebGPU::BindGroupLayout::BindGroupLayout):

  • WebGPU/Buffer.h:

(WebGPU::Buffer::create):
(WebGPU::Buffer::buffer const):

  • WebGPU/Buffer.mm:

(WebGPU::Buffer::Buffer):

  • WebGPU/CommandBuffer.h:

(WebGPU::CommandBuffer::create):
(WebGPU::CommandBuffer::commandBuffer const):

  • WebGPU/CommandBuffer.mm:

(WebGPU::CommandBuffer::CommandBuffer):

  • WebGPU/CommandEncoder.h:

(WebGPU::CommandEncoder::create):

  • WebGPU/CommandEncoder.mm:

(WebGPU::CommandEncoder::CommandEncoder):

  • WebGPU/ComputePassEncoder.h:

(WebGPU::ComputePassEncoder::create):

  • WebGPU/ComputePassEncoder.mm:

(WebGPU::ComputePassEncoder::ComputePassEncoder):

  • WebGPU/ComputePipeline.h:

(WebGPU::ComputePipeline::create):
(WebGPU::ComputePipeline::computePipelineState const):

  • WebGPU/ComputePipeline.mm:

(WebGPU::createLibrary):
(WebGPU::createFunction):
(WebGPU::createComputePipelineState):
(WebGPU::ComputePipeline::ComputePipeline):

  • WebGPU/Device.h:
  • WebGPU/Device.mm:

(WebGPU::Device::create):
(WebGPU::Device::Device):

  • WebGPU/Instance.mm:

(WebGPU::sortedDevices):
(WebGPU::Instance::requestAdapter):

  • WebGPU/QuerySet.h:

(WebGPU::QuerySet::create):
(WebGPU::QuerySet::counterSampleBuffer const):

  • WebGPU/QuerySet.mm:

(WebGPU::QuerySet::QuerySet):

  • WebGPU/Queue.h:

(WebGPU::Queue::create):

  • WebGPU/Queue.mm:

(WebGPU::Queue::Queue):

  • WebGPU/RenderBundle.h:

(WebGPU::RenderBundle::create):
(WebGPU::RenderBundle::indirectCommandBuffer const):

  • WebGPU/RenderBundle.mm:

(WebGPU::RenderBundle::RenderBundle):

  • WebGPU/RenderBundleEncoder.h:

(WebGPU::RenderBundleEncoder::create):

  • WebGPU/RenderBundleEncoder.mm:

(WebGPU::RenderBundleEncoder::RenderBundleEncoder):

  • WebGPU/RenderPassEncoder.h:

(WebGPU::RenderPassEncoder::create):

  • WebGPU/RenderPassEncoder.mm:

(WebGPU::RenderPassEncoder::RenderPassEncoder):

  • WebGPU/RenderPipeline.h:

(WebGPU::RenderPipeline::create):
(WebGPU::RenderPipeline::renderPipelineState const):

  • WebGPU/RenderPipeline.mm:

(WebGPU::RenderPipeline::RenderPipeline):

  • WebGPU/Sampler.h:

(WebGPU::Sampler::create):
(WebGPU::Sampler::samplerState const):

  • WebGPU/Sampler.mm:

(WebGPU::Sampler::Sampler):

  • WebGPU/ShaderModule.h:

(WebGPU::ShaderModule::create):
(WebGPU::ShaderModule::library const):

  • WebGPU/ShaderModule.mm:

(WebGPU::ShaderModule::createLibrary):
(WebGPU::earlyCompileShaderModule):
(WebGPU::ShaderModule::ShaderModule):

  • WebGPU/Texture.h:

(WebGPU::Texture::create):
(WebGPU::Texture::texture const):

  • WebGPU/Texture.mm:

(WebGPU::Texture::Texture):

  • WebGPU/TextureView.h:

(WebGPU::TextureView::create):
(WebGPU::TextureView::texture const):

  • WebGPU/TextureView.mm:

(WebGPU::TextureView::TextureView):

12:22 PM Changeset in webkit [290790] by Russell Epstein
  • 9 edits in branches/safari-613-branch/Source

Versioning.

WebKit-7613.2.1

12:21 PM Changeset in webkit [290789] by Russell Epstein
  • 3 edits in branches/safari-613-branch/Source/JavaScriptCore

Cherry-pick r288363. rdar://problem/88995092

Fix build when using Visual Studio 2022
​https://bugs.webkit.org/show_bug.cgi?id=235440

Reviewed by Antti Koivisto.

It doesn't like having a switch with a default but no cases.
This is cleaner with if statements anyways.
Also make members const because I can.

  • jit/JITCode.cpp: (JSC::JITCode::calleeSaveRegisters const):
  • jit/JITCode.h:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@288363 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:51 AM Changeset in webkit [290788] by sbarati@apple.com
  • 13 edits in trunk/Source/JavaScriptCore

Add a DeferTraps scope
​https://bugs.webkit.org/show_bug.cgi?id=237306
<rdar://83494949>

Reviewed by Mark Lam.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::jettison):
(JSC::CodeBlock::noticeIncomingCall):

  • bytecode/CodeBlock.h:
  • bytecode/RepatchInlines.h:

(JSC::linkFor):
(JSC::virtualForWithFunction):

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeProgram):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeModuleProgram):

  • interpreter/InterpreterInlines.h:

(JSC::Interpreter::execute):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::setUpCall):

  • runtime/ExceptionScope.h:
  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::installCode):

  • runtime/VMTraps.cpp:

(JSC::VMTraps::handleTraps):
(JSC::VMTraps::takeTopPriorityTrap):

  • runtime/VMTraps.h:

(JSC::VMTraps::needHandling const):
(JSC::VMTraps::maybeNeedHandling const):
(JSC::VMTraps::hasTrapBit):
(JSC::VMTraps::setTrapBit):

  • runtime/VMTrapsInlines.h:

(JSC::DeferTraps::DeferTraps):
(JSC::DeferTraps::~DeferTraps):

11:04 AM Changeset in webkit [290787] by Russell Epstein
  • 8 edits
    2 adds in branches/safari-614.1.5-branch

Cherry-pick r290512. rdar://problem/89765722

[Tables] Incorrect table sizing when colgroup comes after tbody
​https://bugs.webkit.org/show_bug.cgi?id=237205
<rdar://86582214>

Reviewed by Antti Koivisto.

Source/WebCore:

Let's use the colgroup for table sizing even when it comes after any thead, tbody, tfoot, and tr elements.
This makes WebKit match other rendering engines (see ​https://src.chromium.org/viewvc/blink?revision=159442&view=revision)

Test: fast/table/table-sizing-fails-when-colgroup-comes-after-content.html

  • rendering/RenderTable.cpp: (WebCore::RenderTable::firstColumn const):
  • rendering/RenderTableCol.cpp: (WebCore::RenderTableCol::nextColumn const):

LayoutTests:

  • fast/table/table-sizing-fails-when-colgroup-comes-after-content-expected.html: Added.
  • fast/table/table-sizing-fails-when-colgroup-comes-after-content.html: Added.
  • platform/mac/tables/mozilla_expected_failures/dom/appendCol1-expected.txt: Progression.
  • platform/mac/tables/mozilla_expected_failures/dom/appendColGroup1-expected.txt: Progression.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290512 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:00 AM Changeset in webkit [290786] by Russell Epstein
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.6

10:25 AM Changeset in webkit [290785] by Simon Fraser
  • 11 edits
    2 adds in trunk

nasa.gov page with fixed backgrounds paints incorrectly on scroll
​https://bugs.webkit.org/show_bug.cgi?id=237405
<rdar://66568551>

Reviewed by Antti Koivisto.
Source/WebCore:

​https://www.nasa.gov/specials/artemis/ shows an issue where elements with background-attachment:fixed
don't repaint on scroll. This page has scrollable <html> and <body>, and the elements with fixed
backgrounds are composited, so this reveals that we fail to repaint composited children
of an overflow scroll in this case.

Fix by having RenderLayerScrollableArea::scrollTo() do repaints on slow repaint objects
which are scrolled by the current scroller.

Do some unrelated cleanup in code that I was going to use in this patch but turned out
not to need: rename hasFixedBackgroundImage() to hasAnyFixedBackground() for clarity,
and share the implementation with hasAnyLocalBackground().

Test: fast/repaint/background-attachment-fixed-in-composited-scroll.html

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::styleWillChange):
(WebCore::RenderElement::willBeDestroyed):

  • rendering/RenderLayer.cpp:
  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::scrollTo):

  • rendering/style/FillLayer.cpp:

(WebCore::FillLayer::hasImageWithAttachment const):
(WebCore::FillLayer::hasFixedImage const): Deleted.

  • rendering/style/FillLayer.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::hasAnyLocalBackground const): Deleted.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::hasBackgroundImage const):
(WebCore::RenderStyle::hasAnyFixedBackground const):
(WebCore::RenderStyle::hasAnyLocalBackground const):
(WebCore::RenderStyle::hasFixedBackgroundImage const): Deleted.

LayoutTests:

Repaint test which is only valid for mac-wk2 (iOS does not support background-attachment:fixed).

  • TestExpectations:
  • fast/repaint/background-attachment-fixed-in-composited-scroll-expected.txt: Added.
  • fast/repaint/background-attachment-fixed-in-composited-scroll.html: Added.
  • platform/mac-wk2/TestExpectations:
10:20 AM Changeset in webkit [290784] by mmaxfield@apple.com
  • 4 edits in trunk

[Style] Forbid spaces between type names and protocol names in Objective-C
​https://bugs.webkit.org/show_bug.cgi?id=237406

Reviewed by Darin Adler.

According to ​https://lists.webkit.org/pipermail/webkit-dev/2022-February/032130.html.

Tools:

Because the style checker uses regexes, we don't know what's a type name and what's
a protocol name, so the checker simplifies the problem and just checks for "id <".

  • Scripts/webkitpy/style/checkers/cpp.py:

(check_objc_protocol):
(check_style):

Websites/webkit.org:

  • code-style.md:
10:01 AM Changeset in webkit [290783] by jonlee@apple.com
  • 3 edits in trunk/LayoutTests

Unreviewed test gardening.

  • gpu-process/TestExpectations:
  • platform/ios/TestExpectations:
9:56 AM Changeset in webkit [290782] by Alan Bujtas
  • 3 edits
    2 adds in trunk

A text node longer than 65,535 characters following another text node is invisible in a scrolling context
​https://bugs.webkit.org/show_bug.cgi?id=237330
<rdar://problem/89645522>

Reviewed by Antti Koivisto.

Source/WebCore:

  1. We split text content at 65536 characters (see Text::createWithLengthLimit)
  2. InlineTextBox can only hold up to 65534 (max short unsigned) characters (unsigned short m_len { 0 };)

Arithmetic overflow produces 0 length inline text boxes and they get removed at
LegacyLineLayout::computeBlockDirectionPositionsForLine as redundant boxes.

Test: fast/text/text-overflow-over-64k.html

  • rendering/LegacyInlineTextBox.h: Let's just use unsigned. At this point we don't have that many

legacy inline text boxes anyway.

LayoutTests:

  • fast/text/text-overflow-over-64k-expected.html: Added.
  • fast/text/text-overflow-over-64k.html: Added.
9:30 AM Changeset in webkit [290781] by Ross Kirsling
  • 2 edits in trunk/Source/WebKit

REGRESSION(r290776): NetworkSession::swServer depends on ENABLE(SERVICE_WORKER)
​https://bugs.webkit.org/show_bug.cgi?id=237432

Unreviewed build fix.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::terminateRemoteWorkerContextConnectionWhenPossible):

9:25 AM Changeset in webkit [290780] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Update IDLParser to support trailing commas in enums.
​https://bugs.webkit.org/show_bug.cgi?id=232607
<rdar://problem/85189036>

Patch by Dan Glastonbury <​djg@apple.com> on 2022-03-03
Reviewed by Sam Weinig.

Now compatible with the grammar specified by [1].

[1] ​https://webidl.spec.whatwg.org/#prod-EnumValueListComma

  • bindings/scripts/IDLParser.pm:

(parseEnumValues):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::convertEnumerationToString):
(WebCore::convertEnumerationToJS):
(WebCore::parseEnumeration<TestObj::EnumTrailingComma>):
(WebCore::expectedEnumerationValues<TestObj::EnumTrailingComma>):

  • bindings/scripts/test/JS/JSTestObj.h:
  • bindings/scripts/test/TestObj.idl:
9:24 AM Changeset in webkit [290779] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

Simplify pseudo element resolution
​https://bugs.webkit.org/show_bug.cgi?id=237413

Reviewed by Antoine Quint.

Remove ElementUpdates struct with a map that contains pseudo element updates.
Instead use a single ElementUpdate struct and pass the pseudo element styles
as cached pseudo styles of the element RenderStyle. Previously RenderTreeUpdater
would move them there.

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::Parent::Parent):
(WebCore::RenderTreeUpdater::updateRenderTree):
(WebCore::RenderTreeUpdater::pushParent):
(WebCore::RenderTreeUpdater::popParent):
(WebCore::RenderTreeUpdater::updateBeforeDescendants):
(WebCore::RenderTreeUpdater::updateAfterDescendants):
(WebCore::RenderTreeUpdater::updateElementRenderer):

  • rendering/updating/RenderTreeUpdater.h:
  • rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:

(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):
(WebCore::RenderTreeUpdater::GeneratedContent::needsPseudoElement):

  • rendering/updating/RenderTreeUpdaterGeneratedContent.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::computeDescendantsToResolve):
(WebCore::Style::TreeResolver::resolveElement):
(WebCore::Style::TreeResolver::shouldResolveElement):
(WebCore::Style::TreeResolver::resetDescendantStyleRelations):
(WebCore::Style::TreeResolver::resolveComposedTree):
(WebCore::Style::computeDescendantsToResolve): Deleted.
(WebCore::Style::shouldResolveElement): Deleted.
(WebCore::Style::resetDescendantStyleRelations): Deleted.

  • style/StyleTreeResolver.h:
  • style/StyleUpdate.cpp:

(WebCore::Style::Update::elementUpdate const):
(WebCore::Style::Update::elementUpdate):
(WebCore::Style::Update::elementStyle const):
(WebCore::Style::Update::elementStyle):
(WebCore::Style::Update::addElement):
(WebCore::Style::Update::elementUpdates const): Deleted.
(WebCore::Style::Update::elementUpdates): Deleted.

  • style/StyleUpdate.h:
8:57 AM Changeset in webkit [290778] by youenn@apple.com
  • 6 edits
    2 adds in trunk

macOS Safari 15.2 Audio Echo Issue after camera pause/unpause
​https://bugs.webkit.org/show_bug.cgi?id=235544
<rdar://problem/88297045>

Reviewed by Eric Carlson.

Source/WebCore:

After ​https://commits.webkit.org/r275600, the muted state of MediaPlayer would be set to the page muted state
without taking into consideration HTMLMediaElement.muted.
Update the call site to use effectiveMuted instead.
Add internals API to write a corresponding layout test.

Test: fast/mediastream/mediastreamtrack-audiovideo-mutepage.html

  • html/HTMLMediaElement.cpp:
  • testing/Internals.cpp:
  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • fast/mediastream/mediastreamtrack-audiovideo-mutepage-expected.txt: Added.
  • fast/mediastream/mediastreamtrack-audiovideo-mutepage.html: Added.
8:53 AM Changeset in webkit [290777] by Jonathan Bedard
  • 3 edits in trunk/Tools

[Python-3] Invoke webkit-patch with Python 3 by default (Follow-up fix)
​https://bugs.webkit.org/show_bug.cgi?id=231591
<rdar://problem/84153640>

Unreviewed follow-up fix.

  • Scripts/webkitpy/tool/commands/download.py:

(AbstractRevertPrepCommand._prepare_state): Reason may be spread accross multiple arguments.

  • Scripts/webkitpy/tool/commands/download_unittest.py:
8:09 AM Changeset in webkit [290776] by Chris Dumez
  • 22 edits in trunk

REGRESSION(r290356-r290351?): [ iOS EWS ] 3 imported/w3c/web-platform-tests/service-workers/service-worker/* tests are constant text failures.
​https://bugs.webkit.org/show_bug.cgi?id=237160
<rdar://problem/89440067>

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline test that is now passing.

  • web-platform-tests/service-workers/service-worker/fetch-request-no-freshness-headers.https-expected.txt:

Source/WebCore:

In r290352, I made a change so that the service worker is more likely to launch in the WebContent
process that caused it to launch. This is beneficial for performance and memory usage.

The partitioned-service-worker*.html service worker tests are relying on an ID variable that is
randomly generated inside the service worker and they expect this ID to not change during the
duration of the test. This means that if the service worker exits / relaunches, those tests start
failing because the ID changes.

The issue is that we have logic in WebProcessProxy::didStartProvisionalLoadForMainFrame() that
terminates the service workers running inside the WebProcess if a new eTLD+1 page is loaded inside
the process. We do so to try and achieve better process isolation between different sites. The
issue is that those tests launch a service worker and then open a new cross-site popup. When the
cross-site popup loads inside the same process, we'd make the decision to terminate the service
workers in this process and relaunch them in a new clean one, causing the tests to fail.

While it is true per the specification that service workers can be terminated / relaunched at
almost any point, there are exceptions. In particular, we should keep a service worker running
if it still has pending extendable events. For this reason, the tests rely on FetchEvent.waitUntil()
to keep the service worker running. Sadly, we would not obey that in this case.

To address the issue, we no longer unconditionally close the service worker context connection
when a WebProcess loads a new eTLD+1. Instead, we tell the network process to close that connection
as soon as possible. When the network process receives this IPC, it terminates the context
connection ONLY if the service workers using the connection have no pending events. If we cannot
close the context connection right away, we set a flag on the context connection to indicate that
we should close it as soon as possible. Currently, this flag is only used to close the connection
right away (no 10 second delay) once the connection no longer has any clients. I think that, ideally,
we'd close the connection as soon as the service workers no longer have pending events. However,
this adds complexity and is error-prone so I didn't implement it in this patch and merely added a
FIXME comment. As it stands, my patch STILL relaunches service workers in origin-clean processes
in the common case. It only fails to do so in the case where there are pending service worker
events which is a case where we had the correctness bug anyway.

No new tests, unskipped existing tests.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::forEachServiceWorker const):
(WebCore::SWServer::terminateContextConnectionWhenPossible):
(WebCore::SWServer::unregisterServiceWorkerClient):

  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerToContextConnection.cpp:

(WebCore::SWServerToContextConnection::SWServerToContextConnection):
(WebCore::SWServerToContextConnection::server const):
(WebCore::SWServerToContextConnection::terminateWhenPossible):

  • workers/service/server/SWServerToContextConnection.h:

(WebCore::SWServerToContextConnection::shouldTerminateWhenPossible const):

Source/WebKit:

In r290352, I made a change so that the service worker is more likely to launch in the WebContent
process that caused it to launch. This is beneficial for performance and memory usage.

The partitioned-service-worker*.html service worker tests are relying on an ID variable that is
randomly generated inside the service worker and they expect this ID to not change during the
duration of the test. This means that if the service worker exits / relaunches, those tests start
failing because the ID changes.

The issue is that we have logic in WebProcessProxy::didStartProvisionalLoadForMainFrame() that
terminates the service workers running inside the WebProcess if a new eTLD+1 page is loaded inside
the process. We do so to try and achieve better process isolation between different sites. The
issue is that those tests launch a service worker and then open a new cross-site popup. When the
cross-site popup loads inside the same process, we'd make the decision to terminate the service
workers in this process and relaunch them in a new clean one, causing the tests to fail.

While it is true per the specification that service workers can be terminated / relaunched at
almost any point, there are exceptions. In particular, we should keep a service worker running
if it still has pending extendable events. For this reason, the tests rely on FetchEvent.waitUntil()
to keep the service worker running. Sadly, we would not obey that in this case.

To address the issue, we no longer unconditionally close the service worker context connection
when a WebProcess loads a new eTLD+1. Instead, we tell the network process to close that connection
as soon as possible. When the network process receives this IPC, it terminates the context
connection ONLY if the service workers using the connection have no pending events. If we cannot
close the context connection right away, we set a flag on the context connection to indicate that
we should close it as soon as possible. Currently, this flag is only used to close the connection
right away (no 10 second delay) once the connection no longer has any clients. I think that, ideally,
we'd close the connection as soon as the service workers no longer have pending events. However,
this adds complexity and is error-prone so I didn't implement it in this patch and merely added a
FIXME comment. As it stands, my patch STILL relaunches service workers in origin-clean processes
in the common case. It only fails to do so in the case where there are pending service worker
events which is a case where we had the correctness bug anyway.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::terminateRemoteWorkerContextConnectionWhenPossible):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:

(WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):
(WebKit::WebSWServerToContextConnection::~WebSWServerToContextConnection):
(WebKit::WebSWServerToContextConnection::postMessageToServiceWorkerClient):
(WebKit::WebSWServerToContextConnection::close):

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
  • NetworkProcess/SharedWorker/WebSharedWorkerServer.cpp:

(WebKit::WebSharedWorkerServer::terminateContextConnectionWhenPossible):

  • NetworkProcess/SharedWorker/WebSharedWorkerServer.h:
  • NetworkProcess/SharedWorker/WebSharedWorkerServerToContextConnection.cpp:

(WebKit::WebSharedWorkerServerToContextConnection::removeSharedWorkerObject):

  • NetworkProcess/SharedWorker/WebSharedWorkerServerToContextConnection.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::terminateRemoteWorkerContextConnectionWhenPossible):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didStartProvisionalLoadForMainFrame):

LayoutTests:

Unskip tests that are no longer failing.

  • platform/ios/TestExpectations:
7:22 AM Changeset in webkit [290775] by Adrian Perez de Castro
  • 7 edits in trunk/Source

Non-unified build fixes, early March 2022 edition
​https://bugs.webkit.org/show_bug.cgi?id=237420

Unreviewed non-unified build fixes.

Source/JavaScriptCore:

  • llint/LLIntExceptions.h: Add forward declaration for WasmInstruction.

Source/WebCore:

  • inspector/agents/InspectorDOMDebuggerAgent.h: Add forward declaration for ScriptExecutionContext.

Source/WebKit:

  • UIProcess/API/APIDataTask.cpp: Add missing inclusion of DataReference.h, remove

"#pragma once" from non-header file.

  • UIProcess/API/APIDataTaskClient.h: Add missing inclusion of DataReference.h.
5:09 AM Changeset in webkit [290774] by Martin Robinson
  • 9 edits
    21 adds in trunk/LayoutTests

Update WPT css-scroll-snap tests
​https://bugs.webkit.org/show_bug.cgi?id=237358

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/css/css-scroll-snap/capturing-snap-positions-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/capturing-snap-positions.html: Added.
  • web-platform-tests/css/css-scroll-snap/input/keyboard.html:
  • web-platform-tests/css/css-scroll-snap/input/mouse-wheel-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/input/mouse-wheel.html: Added.
  • web-platform-tests/css/css-scroll-snap/input/snap-area-overflow-boundary-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/input/snap-area-overflow-boundary.html: Added.
  • web-platform-tests/css/css-scroll-snap/input/w3c-import.log:
  • web-platform-tests/css/css-scroll-snap/no-red-ref.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-root-001-ref.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-root-002-ref.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-001-ref.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-005-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-005.html: Added.
  • web-platform-tests/css/css-scroll-snap/selection-target-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/selection-target.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-writing-mode-000-ref.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/w3c-import.log:
  • web-platform-tests/css/css-scroll-snap/support/common.js:

(waitForAnimationEnd.):
(waitForAnimationEnd):
(waitForWheelEvent):
(waitForScrollEnd):
(waitForScrollTo):

  • web-platform-tests/css/css-scroll-snap/w3c-import.log:

LayoutTests:

  • platform/glib/imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-target-margin-005-expected.txt: Added.
  • platform/mac-wk1/imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-target-margin-005-expected.txt: Added.
3:06 AM Changeset in webkit [290773] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

REGRESSION (r290512): imported/blink/fast/table/crash-output-element-as-column-group.html asserts sometimes
​https://bugs.webkit.org/show_bug.cgi?id=237393

Reviewed by Simon Fraser.

Merging ​https://chromium.googlesource.com/chromium/src/+/1cfc9b9c37f43567529b09a9824d6d3a7bd9abb6%5E%21/#F2
The reason why crash-output-element-as-column-group.html crashes after r290512 is because
now we allow colgroup after the table content (thead, tbody) -prior to r290512, this test was pretty much a no-op.

  • rendering/RenderTableCol.cpp:

(WebCore::RenderTableCol::updateFromElement):

2:08 AM Changeset in webkit [290772] by commit-queue@webkit.org
  • 39 edits
    6 copies
    2 adds in trunk

Unreviewed, reverting r290756.
​https://bugs.webkit.org/show_bug.cgi?id=237412

Speedometer2

Reverted changeset:

"[css] Implement 'text-decoration' as a shorthand."
​https://bugs.webkit.org/show_bug.cgi?id=237175
​https://commits.webkit.org/r290756

1:51 AM Changeset in webkit [290771] by commit-queue@webkit.org
  • 7 edits in trunk/Tools

[Python3] Switch a couple glib/flatpak scripts to Python3
​https://bugs.webkit.org/show_bug.cgi?id=237377

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-03-03
Reviewed by Carlos Garcia Campos.

  • Scripts/update-webkit-flatpak: Update shebang to Python3.
  • Scripts/webkit-flatpak: Ditto.
  • glib/api_test_runner.py: Ditto.
  • glib/common.py: Remove useless shebang.
  • glib/generate-inspector-gresource-manifest.py: Update shebang to Python3.
  • glib/svn-revision: Ditto.

Mar 2, 2022:

11:31 PM Changeset in webkit [290770] by commit-queue@webkit.org
  • 4 edits in trunk

Treat empty intersection correctly in RenderLayer::getRectToExpose
​https://bugs.webkit.org/show_bug.cgi?id=237189

Patch by Rob Buis <​rbuis@igalia.com> on 2022-03-02
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-contain/content-visibility/content-visibility-050-expected.txt:

Source/WebCore:

The case where the target rect to reveal had zero height and was outside of the visible rect, the
classification was wrongly that the target was visible, fix this to classify as hidden instead.

Test: imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-050.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::getRectToExpose const):

11:08 PM Changeset in webkit [290769] by commit-queue@webkit.org
  • 12 edits in trunk/Source/JavaScriptCore

Unreviewed, reverting r290717.
​https://bugs.webkit.org/show_bug.cgi?id=237409

Speedometer2

Reverted changeset:

"Add a DeferTraps scope"
​https://bugs.webkit.org/show_bug.cgi?id=237306
​https://commits.webkit.org/r290717

10:49 PM Changeset in webkit [290768] by Justin Michaud
  • 93 edits in trunk/Source/JavaScriptCore

Refactor OpcodeTraits to support the possibility of having 2-byte WASM opcode ids in bytecode streams
​https://bugs.webkit.org/show_bug.cgi?id=237347

The number of WASM opcodes will increase beyond 255 when WASM SIMD is implemented, and so this patch
changes OpcodeTraits to allow for the possibility of having two-byte WASM opcodes without regressing
JS. We have to thread these OpcodeTraits everywhere that they are used so that code can read the
correct value when decoding an instruction stream. This patch does not change the size of WASM opcodes
yet, although I have tested that the test suite still passes if we do increase the opcode size.

Reviewed by Keith Miller.

  • bytecode/BytecodeBasicBlock.cpp:

(JSC::BytecodeBasicBlock<OpcodeTraits>::BytecodeBasicBlock):
(JSC::BytecodeBasicBlock<OpcodeTraits>::addLength):
(JSC::BytecodeBasicBlock<OpcodeTraits>::shrinkToFit):
(JSC::isJumpTarget):
(JSC::BytecodeBasicBlock<OpcodeTraits>::computeImpl):
(JSC::BytecodeBasicBlock<JSOpcodeTraits>::compute):
(JSC::BytecodeBasicBlock::BytecodeBasicBlock): Deleted.
(JSC::BytecodeBasicBlock::addLength): Deleted.
(JSC::BytecodeBasicBlock::shrinkToFit): Deleted.
(JSC::BytecodeBasicBlock::computeImpl): Deleted.
(JSC::BytecodeBasicBlock::compute): Deleted.

  • bytecode/BytecodeBasicBlock.h:

(JSC::BytecodeBasicBlock::addSuccessor):

  • bytecode/BytecodeDumper.cpp:

(JSC::BytecodeDumperBase<InstructionStreamType>::printLocationAndOp):
(JSC::BytecodeDumperBase<InstructionStreamType>::dumpValue):
(JSC::BytecodeDumper<Block>::outOfLineJumpOffset const):
(JSC::BytecodeDumper<Block>::dumpBytecode):
(JSC::dumpHeader):
(JSC::CodeBlockBytecodeDumper<Block>::dumpBlock):
(JSC::CodeBlockBytecodeDumper<Block>::dumpGraph):
(JSC::Wasm::BytecodeDumper::dumpBlock):
(JSC::Wasm::BytecodeDumper::registerName const):
(JSC::Wasm::BytecodeDumper::outOfLineJumpOffset const):
(JSC::BytecodeDumperBase::printLocationAndOp): Deleted.
(JSC::BytecodeDumperBase::dumpValue): Deleted.

  • bytecode/BytecodeDumper.h:
  • bytecode/BytecodeGeneratorification.cpp:

(JSC::BytecodeGeneratorification::BytecodeGeneratorification):
(JSC::BytecodeGeneratorification::enterPoint const):
(JSC::BytecodeGeneratorification::instructions const):
(JSC::GeneratorLivenessAnalysis::run):
(JSC::performGeneratorification):

  • bytecode/BytecodeGeneratorification.h:
  • bytecode/BytecodeGraph.h:

(JSC::BytecodeGraph::blockContainsBytecodeOffset):
(JSC::BytecodeGraph::findBasicBlockForBytecodeOffset):
(JSC::BytecodeGraph::findBasicBlockWithLeaderOffset):
(JSC::BytecodeGraph::at const):
(JSC::BytecodeGraph::operator[] const):
(JSC::BytecodeGraph::first):
(JSC::BytecodeGraph::last):
(JSC::BytecodeGraph::dump):
(JSC::BytecodeGraph::BytecodeGraph):

  • bytecode/BytecodeLivenessAnalysis.cpp:

(JSC::BytecodeLivenessAnalysis::computeFullLiveness):
(JSC::BytecodeLivenessAnalysis::dumpResults):

  • bytecode/BytecodeLivenessAnalysis.h:
  • bytecode/BytecodeLivenessAnalysisInlines.h:

(JSC::BytecodeLivenessPropagation::stepOverBytecodeIndexDef):
(JSC::BytecodeLivenessPropagation::stepOverBytecodeIndexUse):
(JSC::BytecodeLivenessPropagation::stepOverBytecodeIndexUseInExceptionHandler):
(JSC::BytecodeLivenessPropagation::stepOverBytecodeIndex):
(JSC::BytecodeLivenessPropagation::stepOverInstruction):
(JSC::BytecodeLivenessPropagation::computeLocalLivenessForInstruction):
(JSC::BytecodeLivenessPropagation::computeLocalLivenessForBlock):
(JSC::BytecodeLivenessPropagation::getLivenessInfoAtInstruction):
(JSC::BytecodeLivenessPropagation::runLivenessFixpoint):

  • bytecode/BytecodeRewriter.cpp:

(JSC::BytecodeRewriter::insertImpl):
(JSC::BytecodeRewriter::adjustJumpTargets):

  • bytecode/BytecodeRewriter.h:

(JSC::BytecodeRewriter::InsertionPoint::InsertionPoint):
(JSC::BytecodeRewriter::Fragment::Fragment):
(JSC::BytecodeRewriter::BytecodeRewriter):
(JSC::BytecodeRewriter::insertFragmentBefore):
(JSC::BytecodeRewriter::insertFragmentAfter):
(JSC::BytecodeRewriter::replaceBytecodeWithFragment):
(JSC::BytecodeRewriter::adjustAbsoluteOffset):
(JSC::BytecodeRewriter::adjustJumpTarget):

  • bytecode/BytecodeUseDef.cpp:

(JSC::computeUsesForBytecodeIndexImpl):
(JSC::computeDefsForBytecodeIndexImpl):

  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeIndex):
(JSC::computeDefsForBytecodeIndex):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::hasOpDebugForLineAndColumn):
(JSC::CodeBlock::notifyLexicalBindingUpdate):
(JSC::CodeBlock::validate):
(JSC::CodeBlock::outOfLineJumpOffset):
(JSC::CodeBlock::outOfLineJumpTarget):
(JSC::CodeBlock::binaryArithProfileForPC):
(JSC::CodeBlock::unaryArithProfileForPC):
(JSC::CodeBlock::insertBasicBlockBoundariesForControlFlowProfiler):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::outOfLineJumpOffset):
(JSC::CodeBlock::bytecodeOffset):
(JSC::CodeBlock::bytecodeIndex):
(JSC::CodeBlock::instructions const):
(JSC::CodeBlock::instructionAt const):

  • bytecode/Instruction.h:

(JSC::BaseInstruction::opcodeID const):
(JSC::BaseInstruction::name const):
(JSC::BaseInstruction::isWide16 const):
(JSC::BaseInstruction::isWide32 const):
(JSC::BaseInstruction::width const):
(JSC::BaseInstruction::hasMetadata const):
(JSC::BaseInstruction::hasCheckpoints const):
(JSC::BaseInstruction::numberOfCheckpoints const):
(JSC::BaseInstruction::sizeShiftAmount const):
(JSC::BaseInstruction::opcodeIDWidth const):
(JSC::BaseInstruction::opcodeIDBytes const):
(JSC::BaseInstruction::size const):
(JSC::BaseInstruction::is const):
(JSC::BaseInstruction::as const):
(JSC::BaseInstruction::asKnownWidth const):
(JSC::BaseInstruction::cast):
(JSC::BaseInstruction::cast const):
(JSC::BaseInstruction::wide16 const):
(JSC::BaseInstruction::wide32 const):

  • bytecode/InstructionStream.cpp:

(JSC::InstructionStream::InstructionStream): Deleted.
(JSC::InstructionStream::sizeInBytes const): Deleted.
(JSC::InstructionStream::contains const): Deleted.

  • bytecode/InstructionStream.h:

(JSC::InstructionStream::sizeInBytes const):
(JSC::InstructionStream::BaseRef::operator-> const):
(JSC::InstructionStream::BaseRef::ptr const):
(JSC::InstructionStream::BaseRef::unwrap const):
(JSC::InstructionStream::MutableRef::operator->):
(JSC::InstructionStream::MutableRef::operator-> const):
(JSC::InstructionStream::MutableRef::ptr):
(JSC::InstructionStream::MutableRef::ptr const):
(JSC::InstructionStream::MutableRef::unwrap):
(JSC::InstructionStream::MutableRef::unwrap const):
(JSC::InstructionStream::iterator::operator++):
(JSC::InstructionStream::contains const):
(JSC::InstructionStream::InstructionStream):
(JSC::InstructionStreamWriter::InstructionStreamWriter):
(JSC::InstructionStreamWriter::finalize):
(JSC::InstructionStreamWriter::swap):
(JSC::InstructionStreamWriter::iterator::operator++):

  • bytecode/Opcode.h:
  • bytecode/OpcodeInlines.h:

(JSC::isOpcodeShape):

  • bytecode/OpcodeSize.h:
  • bytecode/PreciseJumpTargets.cpp:

(JSC::getJumpTargetsForInstruction):
(JSC::computePreciseJumpTargetsInternal):
(JSC::computePreciseJumpTargets):
(JSC::recomputePreciseJumpTargets):
(JSC::findJumpTargetsForInstruction):

  • bytecode/PreciseJumpTargets.h:
  • bytecode/PreciseJumpTargetsInlines.h:

(JSC::jumpTargetForInstruction):
(JSC::extractStoredJumpTargetsForInstruction):
(JSC::updateStoredJumpTargetsForInstruction):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::dumpLineColumnEntry):
(JSC::UnlinkedCodeBlock::instructions const):
(JSC::UnlinkedCodeBlock::outOfLineJumpOffset):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::instructionAt const):
(JSC::UnlinkedCodeBlock::bytecodeOffset):
(JSC::UnlinkedCodeBlock::opProfileControlFlowBytecodeOffsets const):
(JSC::UnlinkedCodeBlock::outOfLineJumpOffset):

  • bytecode/UnlinkedCodeBlockGenerator.cpp:

(JSC::UnlinkedCodeBlockGenerator::finalize):
(JSC::UnlinkedCodeBlockGenerator::applyModification):
(JSC::UnlinkedCodeBlockGenerator::addOutOfLineJumpTarget):
(JSC::UnlinkedCodeBlockGenerator::outOfLineJumpOffset):

  • bytecode/UnlinkedCodeBlockGenerator.h:

(JSC::UnlinkedCodeBlockGenerator::addOpProfileControlFlowBytecodeOffset):
(JSC::UnlinkedCodeBlockGenerator::outOfLineJumpOffset):

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::instructions const):
(JSC::BytecodeGenerator::withWriter):

  • bytecompiler/BytecodeGeneratorBase.h:
  • bytecompiler/BytecodeGeneratorBaseInlines.h:

(JSC::BytecodeGeneratorBase<Traits>::recordOpcode):
(JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode16):
(JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode32):

  • bytecompiler/StaticPropertyAnalysis.h:

(JSC::StaticPropertyAnalysis::create):
(JSC::StaticPropertyAnalysis::StaticPropertyAnalysis):

  • bytecompiler/StaticPropertyAnalyzer.h:

(JSC::StaticPropertyAnalyzer::createThis):
(JSC::StaticPropertyAnalyzer::newObject):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleCall):
(JSC::DFG::ByteCodeParser::handleVarargsCall):
(JSC::DFG::ByteCodeParser::handleRecursiveTailCall):
(JSC::DFG::ByteCodeParser::inlineCall):
(JSC::DFG::ByteCodeParser::parseGetById):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::parseCodeBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGCapabilities.h:

(JSC::DFG::capabilityLevel):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::compileExit):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::callerReturnPC):
(JSC::DFG::adjustAndJumpToTarget):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileLoopHint):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileStub):

  • ftl/FTLOperations.cpp:

(JSC::FTL::JSC_DEFINE_JIT_OPERATION):

  • generator/Argument.rb:
  • generator/DSL.rb:
  • generator/Opcode.rb:
  • interpreter/AbstractPC.h:
  • interpreter/CallFrame.cpp:

(JSC::CallFrame::currentVPC const):
(JSC::CallFrame::setCurrentVPC):

  • interpreter/CallFrame.h:
  • interpreter/Interpreter.cpp:

(JSC::CatchInfo::CatchInfo):

  • interpreter/Interpreter.h:
  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):

  • jit/JIT.h:
  • jit/JITArithmetic.cpp:

(JSC::JIT::emit_op_jless):
(JSC::JIT::emit_op_jlesseq):
(JSC::JIT::emit_op_jgreater):
(JSC::JIT::emit_op_jgreatereq):
(JSC::JIT::emit_op_jnless):
(JSC::JIT::emit_op_jnlesseq):
(JSC::JIT::emit_op_jngreater):
(JSC::JIT::emit_op_jngreatereq):
(JSC::JIT::emitSlow_op_jless):
(JSC::JIT::emitSlow_op_jlesseq):
(JSC::JIT::emitSlow_op_jgreater):
(JSC::JIT::emitSlow_op_jgreatereq):
(JSC::JIT::emitSlow_op_jnless):
(JSC::JIT::emitSlow_op_jnlesseq):
(JSC::JIT::emitSlow_op_jngreater):
(JSC::JIT::emitSlow_op_jngreatereq):
(JSC::JIT::emit_op_below):
(JSC::JIT::emit_op_beloweq):
(JSC::JIT::emit_op_jbelow):
(JSC::JIT::emit_op_jbeloweq):
(JSC::JIT::emit_op_unsigned):
(JSC::JIT::emit_compareAndJump):
(JSC::JIT::emit_compareUnsignedAndJump):
(JSC::JIT::emit_compareUnsigned):
(JSC::JIT::emit_compareAndJumpSlow):
(JSC::JIT::emit_op_inc):
(JSC::JIT::emit_op_dec):
(JSC::JIT::emit_op_mod):
(JSC::JIT::emitSlow_op_mod):
(JSC::JIT::emit_op_pow):
(JSC::JIT::emitSlow_op_pow):
(JSC::JIT::emit_op_negate):
(JSC::JIT::emitSlow_op_negate):
(JSC::JIT::emitBitBinaryOpFastPath):
(JSC::JIT::emit_op_bitnot):
(JSC::JIT::emit_op_bitand):
(JSC::JIT::emit_op_bitor):
(JSC::JIT::emit_op_bitxor):
(JSC::JIT::emit_op_lshift):
(JSC::JIT::emitRightShiftFastPath):
(JSC::JIT::emit_op_rshift):
(JSC::JIT::emit_op_urshift):
(JSC::JIT::emit_op_add):
(JSC::JIT::emitSlow_op_add):
(JSC::JIT::emitMathICFast):
(JSC::JIT::emitMathICSlow):
(JSC::JIT::emit_op_div):
(JSC::JIT::emit_op_mul):
(JSC::JIT::emitSlow_op_mul):
(JSC::JIT::emit_op_sub):
(JSC::JIT::emitSlow_op_sub):

  • jit/JITCall.cpp:

(JSC::JIT::emit_op_ret):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):
(JSC::JIT::emit_op_call):
(JSC::JIT::emit_op_tail_call):
(JSC::JIT::emit_op_call_eval):
(JSC::JIT::emit_op_call_varargs):
(JSC::JIT::emit_op_tail_call_varargs):
(JSC::JIT::emit_op_tail_call_forward_arguments):
(JSC::JIT::emit_op_construct_varargs):
(JSC::JIT::emit_op_construct):
(JSC::JIT::emitSlow_op_call):
(JSC::JIT::emitSlow_op_tail_call):
(JSC::JIT::emitSlow_op_call_eval):
(JSC::JIT::emitSlow_op_call_varargs):
(JSC::JIT::emitSlow_op_tail_call_varargs):
(JSC::JIT::emitSlow_op_tail_call_forward_arguments):
(JSC::JIT::emitSlow_op_construct_varargs):
(JSC::JIT::emitSlow_op_construct):
(JSC::JIT::emit_op_iterator_open):
(JSC::JIT::emitSlow_op_iterator_open):
(JSC::JIT::emit_op_iterator_next):
(JSC::JIT::emitSlow_op_iterator_next):

  • jit/JITExceptions.cpp:

(JSC::genericUnwind):

  • jit/JITInlines.h:

(JSC::JIT::fastPathResumePoint const):
(JSC::JIT::jumpTarget):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_mov):
(JSC::JIT::emit_op_end):
(JSC::JIT::emit_op_jmp):
(JSC::JIT::emit_op_new_object):
(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emit_op_overrides_has_instance):
(JSC::JIT::emit_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof):
(JSC::JIT::emit_op_is_empty):
(JSC::JIT::emit_op_typeof_is_undefined):
(JSC::JIT::emit_op_is_undefined_or_null):
(JSC::JIT::emit_op_is_boolean):
(JSC::JIT::emit_op_is_number):
(JSC::JIT::emit_op_is_big_int):
(JSC::JIT::emit_op_is_cell_with_type):
(JSC::JIT::emit_op_is_object):
(JSC::JIT::emit_op_to_primitive):
(JSC::JIT::emit_op_to_property_key):
(JSC::JIT::emit_op_set_function_name):
(JSC::JIT::emit_op_not):
(JSC::JIT::emit_op_jfalse):
(JSC::JIT::emit_op_jeq_null):
(JSC::JIT::emit_op_jneq_null):
(JSC::JIT::emit_op_jundefined_or_null):
(JSC::JIT::emit_op_jnundefined_or_null):
(JSC::JIT::emit_op_jeq_ptr):
(JSC::JIT::emit_op_jneq_ptr):
(JSC::JIT::emit_op_eq):
(JSC::JIT::emit_op_jeq):
(JSC::JIT::emit_op_jtrue):
(JSC::JIT::emit_op_neq):
(JSC::JIT::emit_op_jneq):
(JSC::JIT::emit_op_throw):
(JSC::JIT::compileOpStrictEq):
(JSC::JIT::emit_op_stricteq):
(JSC::JIT::emit_op_nstricteq):
(JSC::JIT::compileOpStrictEqJump):
(JSC::JIT::emit_op_jstricteq):
(JSC::JIT::emit_op_jnstricteq):
(JSC::JIT::emitSlow_op_jstricteq):
(JSC::JIT::emitSlow_op_jnstricteq):
(JSC::JIT::emit_op_to_number):
(JSC::JIT::emit_op_to_numeric):
(JSC::JIT::emit_op_to_string):
(JSC::JIT::emit_op_to_object):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_identity_with_profile):
(JSC::JIT::emit_op_get_parent_scope):
(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emit_op_switch_char):
(JSC::JIT::emit_op_switch_string):
(JSC::JIT::emit_op_eq_null):
(JSC::JIT::emit_op_neq_null):
(JSC::JIT::emit_op_enter):
(JSC::JIT::emit_op_get_scope):
(JSC::JIT::emit_op_to_this):
(JSC::JIT::emit_op_create_this):
(JSC::JIT::emit_op_check_tdz):
(JSC::JIT::emitSlow_op_eq):
(JSC::JIT::emitSlow_op_neq):
(JSC::JIT::emitSlow_op_jeq):
(JSC::JIT::emitSlow_op_jneq):
(JSC::JIT::emit_op_debug):
(JSC::JIT::emit_op_loop_hint):
(JSC::JIT::emitSlow_op_loop_hint):
(JSC::JIT::emit_op_check_traps):
(JSC::JIT::emit_op_nop):
(JSC::JIT::emit_op_super_sampler_begin):
(JSC::JIT::emit_op_super_sampler_end):
(JSC::JIT::emitSlow_op_check_traps):
(JSC::JIT::emit_op_new_regexp):
(JSC::JIT::emitNewFuncCommon):
(JSC::JIT::emit_op_new_func):
(JSC::JIT::emit_op_new_generator_func):
(JSC::JIT::emit_op_new_async_generator_func):
(JSC::JIT::emit_op_new_async_func):
(JSC::JIT::emitNewFuncExprCommon):
(JSC::JIT::emit_op_new_func_exp):
(JSC::JIT::emit_op_new_generator_func_exp):
(JSC::JIT::emit_op_new_async_func_exp):
(JSC::JIT::emit_op_new_async_generator_func_exp):
(JSC::JIT::emit_op_new_array):
(JSC::JIT::emit_op_new_array_with_size):
(JSC::JIT::emit_op_profile_type):
(JSC::JIT::emit_op_log_shadow_chicken_prologue):
(JSC::JIT::emit_op_log_shadow_chicken_tail):
(JSC::JIT::emit_op_profile_control_flow):
(JSC::JIT::emit_op_argument_count):
(JSC::JIT::emit_op_get_rest_length):
(JSC::JIT::emit_op_get_argument):
(JSC::JIT::emit_op_get_prototype_of):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_eq):
(JSC::JIT::emit_op_neq):
(JSC::JIT::emit_op_jeq):
(JSC::JIT::emit_op_jneq):
(JSC::JIT::emitSlow_op_eq):
(JSC::JIT::emitSlow_op_neq):
(JSC::JIT::emitSlow_op_jeq):
(JSC::JIT::emitSlow_op_jneq):
(JSC::JIT::emit_op_stricteq):
(JSC::JIT::emit_op_nstricteq):
(JSC::JIT::emit_op_jstricteq):
(JSC::JIT::emit_op_jnstricteq):
(JSC::JIT::emitSlow_op_jstricteq):
(JSC::JIT::emitSlow_op_jnstricteq):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

  • jit/JITOperations.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emitSlow_op_get_by_val):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emitSlow_op_get_private_name):
(JSC::JIT::emit_op_set_private_brand):
(JSC::JIT::emitSlow_op_set_private_brand):
(JSC::JIT::emit_op_check_private_brand):
(JSC::JIT::emitSlow_op_check_private_brand):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emit_op_put_by_val_direct):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emitSlow_op_put_private_name):
(JSC::JIT::emit_op_put_getter_by_id):
(JSC::JIT::emit_op_put_setter_by_id):
(JSC::JIT::emit_op_put_getter_setter_by_id):
(JSC::JIT::emit_op_put_getter_by_val):
(JSC::JIT::emit_op_put_setter_by_val):
(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emitSlow_op_del_by_id):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_val):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::emit_op_in_by_id):
(JSC::JIT::emitSlow_op_in_by_id):
(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emitSlow_op_in_by_val):
(JSC::JIT::emit_op_has_private_name):
(JSC::JIT::emitSlow_op_has_private_name):
(JSC::JIT::emit_op_has_private_brand):
(JSC::JIT::emitSlow_op_has_private_brand):
(JSC::JIT::emit_op_resolve_scope):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emitSlow_op_put_to_scope):
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_put_to_arguments):
(JSC::JIT::emit_op_get_internal_field):
(JSC::JIT::emit_op_put_internal_field):
(JSC::JIT::emit_op_get_property_enumerator):
(JSC::JIT::emit_op_enumerator_next):
(JSC::JIT::emit_op_enumerator_get_by_val):
(JSC::JIT::emitSlow_op_enumerator_get_by_val):
(JSC::JIT::emit_op_enumerator_in_by_val):
(JSC::JIT::emit_op_enumerator_has_own_property):

  • llint/LLIntData.cpp:

(JSC::LLInt::initialize):

  • llint/LLIntData.h:

(JSC::LLInt::exceptionInstructions):
(JSC::LLInt::wasmExceptionInstructions):

  • llint/LLIntExceptions.cpp:

(JSC::LLInt::returnToThrow):
(JSC::LLInt::wasmReturnToThrow):

  • llint/LLIntExceptions.h:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::llint_trace_operand):
(JSC::LLInt::llint_trace_value):
(JSC::LLInt::setupGetByIdPrototypeCache):
(JSC::LLInt::performLLIntGetByID):
(JSC::LLInt::varargsSetup):
(JSC::LLInt::commonCallEval):
(JSC::LLInt::dispatchToNextInstructionDuringExit):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter.cpp:

(JSC::CLoopRegister::operator const JSInstruction*):
(JSC::CLoop::execute):
(JSC::CLoopRegister::operator const Instruction*): Deleted.

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • llint/WebAssembly.asm:
  • runtime/CachedTypes.cpp:

(JSC::CachedInstructionStream::encode):
(JSC::CachedInstructionStream::decode const):
(JSC::CachedCodeBlock::instructions const):

  • runtime/CommonSlowPaths.cpp:

(JSC::updateArithProfileForBinaryArithOp):
(JSC::iteratorOpenTryFastImpl):
(JSC::iteratorNextTryFastImpl):

  • runtime/CommonSlowPaths.h:
  • runtime/JSCConfig.h:
  • runtime/JSCJSValue.h:
  • runtime/SlowPathFunction.h:
  • runtime/VM.cpp:

(JSC::VM::addLoopHintExecutionCounter):
(JSC::VM::getLoopHintExecutionCounter):
(JSC::VM::removeLoopHintExecutionCounter):

  • runtime/VM.h:
  • wasm/WasmCallee.cpp:

(JSC::Wasm::LLIntCallee::LLIntCallee):
(JSC::Wasm::LLIntCallee::outOfLineJumpOffset):
(JSC::Wasm::LLIntCallee::outOfLineJumpTarget):

  • wasm/WasmCallee.h:
  • wasm/WasmFunctionCodeBlockGenerator.cpp:

(JSC::Wasm::FunctionCodeBlockGenerator::setInstructions):
(JSC::Wasm::FunctionCodeBlockGenerator::addOutOfLineJumpTarget):
(JSC::Wasm::FunctionCodeBlockGenerator::outOfLineJumpOffset):

  • wasm/WasmFunctionCodeBlockGenerator.h:

(JSC::Wasm::FunctionCodeBlockGenerator::constantRegisters const):
(JSC::Wasm::FunctionCodeBlockGenerator::instructions const):
(JSC::Wasm::FunctionCodeBlockGenerator::addJumpTarget):
(JSC::Wasm::FunctionCodeBlockGenerator::numberOfJumpTargets):
(JSC::Wasm::FunctionCodeBlockGenerator::lastJumpTarget):
(JSC::Wasm::FunctionCodeBlockGenerator::outOfLineJumpOffset):
(JSC::Wasm::FunctionCodeBlockGenerator::bytecodeOffset):
(JSC::Wasm::FunctionCodeBlockGenerator::tierUpCounter):

  • wasm/WasmGeneratorTraits.h:
  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::addSwitch):
(JSC::GenericLabel<Wasm::GeneratorTraits>::setLocation):

  • wasm/WasmLLIntTierUpCounter.cpp:

(JSC::Wasm::LLIntTierUpCounter::addOSREntryDataForLoop):
(JSC::Wasm::LLIntTierUpCounter::osrEntryDataForLoop const const):

  • wasm/WasmLLIntTierUpCounter.h:

(JSC::Wasm::LLIntTierUpCounter::LLIntTierUpCounter):

  • wasm/WasmSlowPaths.cpp:

(JSC::LLInt::WASM_SLOW_PATH_DECL):
(JSC::LLInt::slow_path_wasm_throw_exception):
(JSC::LLInt::slow_path_wasm_popcount):
(JSC::LLInt::slow_path_wasm_popcountll):

  • wasm/WasmSlowPaths.h:
10:23 PM Changeset in webkit [290767] by Lauro Moura
  • 2 edits in trunk/Tools

[Tools] Fix linux_get_crash_log.py error logging with python3
​https://bugs.webkit.org/show_bug.cgi?id=237404

Reviewed by Fujii Hironori.

Avoid issues generating error logs after 247736@main defaulted to
python3.

  • Scripts/webkitpy/port/linux_get_crash_log.py:

(GDBCrashLogGenerator._get_gdb_output): Encode returncode before
appending to bytes.

9:08 PM Changeset in webkit [290766] by sihui_liu@apple.com
  • 20 edits
    4 deletes in trunk/Source/WebKit

REGRESSION (r289474): cacheStoragePath is empty in NetworkStorageManager::localOriginStorageManager
​https://bugs.webkit.org/show_bug.cgi?id=237335

Reviewed by Chris Dumez.

CacheStorage::Engine::storagePath returns emptyString if salt file under rootDirectory cannot be read or
written, so we need to make sure sandbox extension for rootDirectory is consumed before calling storagePath
(in createNetworkStorageManager of NetworkSession).

This patch also refactors code about adding session in network process. Now we would create
NetworkStorageManager when NetworkSession is created.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::updateQuotaBasedOnSpaceUsageForTesting):
(WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFilesForIndexedDB):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
(WebKit::NetworkProcess::addStorageSession):
(WebKit::NetworkProcess::addWebsiteDataStore):
(WebKit::NetworkProcess::hasLocalStorage):
(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains):
(WebKit::NetworkProcess::registrableDomainsWithWebsiteData):
(WebKit::NetworkProcess::prepareToSuspend):
(WebKit::NetworkProcess::resume):
(WebKit::NetworkProcess::syncLocalStorage):
(WebKit::NetworkProcess::resetQuota):
(WebKit::NetworkProcess::clearStorage):
(WebKit::NetworkProcess::didIncreaseQuota):
(WebKit::NetworkProcess::renameOriginInWebsiteData):
(WebKit::NetworkProcess::uiProcessBundleIdentifier):
(WebKit::NetworkProcess::connectionToWebProcessClosed):
(WebKit::NetworkProcess::ensureSession): Deleted.

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::uiProcessBundleIdentifier const): Deleted.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::createNetworkStorageManager):
(WebKit::NetworkSession::NetworkSession):
(WebKit::NetworkSession::invalidateAndCancel):
(WebKit::NetworkSession::lowMemoryHandler):
(WebKit::NetworkSession::addServiceWorkerSession): Deleted.
(WebKit::NetworkSession::addStorageManagerSession): Deleted.

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::storageManager):

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/RemoteNetworkingContext.h: Removed.
  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::requestSpace):

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::uiProcessBundleIdentifier):

  • NetworkProcess/curl/RemoteNetworkingContextCurl.cpp: Removed.
  • NetworkProcess/mac/RemoteNetworkingContext.mm: Removed.
  • NetworkProcess/soup/RemoteNetworkingContextSoup.cpp: Removed.
  • PlatformPlayStation.cmake:
  • PlatformWin.cmake:
  • Shared/WebsiteDataStoreParameters.cpp:

(WebKit::WebsiteDataStoreParameters::encode const):
(WebKit::WebsiteDataStoreParameters::decode):
(WebKit::WebsiteDataStoreParameters::~WebsiteDataStoreParameters): Deleted.

  • Shared/WebsiteDataStoreParameters.h:

(): Deleted.

  • SourcesCocoa.txt:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::addSession):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::resolvedIndexedDBDirectory const):
(WebKit::WebsiteDataStore::resolvedIndexedDatabaseDirectory const): Deleted.

9:05 PM Changeset in webkit [290765] by sihui_liu@apple.com
  • 14 edits in trunk

Throw proper exception on failed removeEntry() calls
​https://bugs.webkit.org/show_bug.cgi?id=237382
<rdar://89232969>

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any.worker-expected.txt:

Source/WebKit:

Updated existing tests.

  • NetworkProcess/storage/FileSystemStorageError.h:

(WebKit::convertToException):

  • NetworkProcess/storage/FileSystemStorageHandle.cpp:

(WebKit::FileSystemStorageHandle::removeEntry):

LayoutTests:

  • storage/filesystemaccess/handle-move-expected.txt:
  • storage/filesystemaccess/handle-move-worker-expected.txt:
  • storage/filesystemaccess/resources/handle-move.js:

(async test):

6:56 PM Changeset in webkit [290764] by Robert Jenner
  • 2 edits in trunk/LayoutTests

WindowServer returned not alive with context:,unresponsive work processor(s)
<rdar://86037417>

Unreviewed test gardening. Skipping tests on iOS due to tests causing WindowServer to crash.

  • platform/ios-wk2/TestExpectations:
6:44 PM Changeset in webkit [290763] by Robert Jenner
  • 4 edits in trunk/LayoutTests

Unreviewed, reverting r290658.

r290658 broke two tests for iOS, slowing down EWS.

Reverted changeset:

"fast/mediastream/getUserMedia-to-canvas-1.html and
fast/mediastream/getUserMedia-to-canvas-2.html are failing on
MacOS when remote video frame flag is enabled"
​https://bugs.webkit.org/show_bug.cgi?id=237042
​https://commits.webkit.org/r290658

5:03 PM Changeset in webkit [290762] by Andres Gonzalez
  • 5 edits in trunk/Source/WebCore

ITM: Checkbox state change is not updated in isolated tree
​https://bugs.webkit.org/show_bug.cgi?id=237381
rdar://89529486

Reviewed by Chris Fleizach.

Fixes the following test in isolated tree mode:
accessibility/mac/checked-status-tree-items.html
accessibility/aria-switch-checked.html

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):
Properly initializes the properties SupportsCheckedState, IsChecked and
ButtonState.
(WebCore::AXIsolatedObject::getOrRetrievePropertyValue):
Uses the new template method propertyValue(PropertyName).

  • accessibility/isolatedtree/AXIsolatedObject.h:

(WebCore::AXIsolatedObject::propertyValue const):

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::updateNodeProperty):
Updates both IsChecked and ButtonState.

  • accessibility/isolatedtree/AXIsolatedTree.h:
4:29 PM Changeset in webkit [290761] by commit-queue@webkit.org
  • 8 edits in trunk/Source

[WebGPU] Implement GPUDeviceDescriptor.requiredLimits
​https://bugs.webkit.org/show_bug.cgi?id=232741
Source/WebCore:

<rdar://problem/85325316>

Patch by Dan Glastonbury <​djg@apple.com> on 2022-03-02
Reviewed by Myles C. Maxfield.

Implement IDL bindings for requiredLimits attribute of
GPUDeviceDescriptor.

  • Modules/WebGPU/GPUDeviceDescriptor.h:

(WebCore::GPUDeviceDescriptor::convertToBacking const):

  • Modules/WebGPU/GPUDeviceDescriptor.idl:

Source/WebCore/PAL:

<rdar://problem/85325316>

Patch by Dan Glastonbury <​djg@apple.com> on 2022-03-02
Reviewed by Myles C. Maxfield.

Implement IDL bindings for requiredLimits attribute of
GPUDeviceDescriptor.

  • pal/graphics/WebGPU/WebGPUDeviceDescriptor.h:

Source/WebKit:

rdar://problem/85325316

Patch by Dan Glastonbury <​djg@apple.com> on 2022-03-02
Reviewed by Myles C. Maxfield.

Implement IDL bindings for requiredLimits attribute of
GPUDeviceDescriptor.

  • Shared/WebGPU/WebGPUDeviceDescriptor.cpp:

(WebKit::WebGPU::ConvertToBackingContext::convertToBacking):
(WebKit::WebGPU::ConvertFromBackingContext::convertFromBacking):

  • Shared/WebGPU/WebGPUDeviceDescriptor.h:

(WebKit::WebGPU::DeviceDescriptor::encode const):
(WebKit::WebGPU::DeviceDescriptor::decode):

4:08 PM Changeset in webkit [290760] by Simon Fraser
  • 5 edits
    2 adds in trunk

Rendering issues with many dynamically-added sticky elements inside overflow scroll
​https://bugs.webkit.org/show_bug.cgi?id=237378
<rdar://83745510>

Reviewed by Cameron McCormack.

Source/WebCore:

A bug was filed describing a symptom where position:sticky elements would eventually
fail to render when many of them were dynamically added inside a non-stacking context
overflow scroll.

Debugging showed that CALayers were accumulating, causing us to hit per-process IOSurface
limits, at which point content fails to render (this is being fixed via rdar://89640915).
Further debugging showed that these layers were unparented, and being entrained by
ScrollingStateStickyNodes, which were accumulating in ScrollingStateTree's m_unparentedNodes.

This happened because with this scrolling configuration, each ScrollingStateStickyNode
is parented via a ScrollingStateOverflowScrollProxyNode which is referenced by entries
in RenderLayerBacking's m_ancestorClippingStack. On cleanup, the ScrollingStateOverflowScrollProxyNode
was unparented first, leaving the ScrollingStateStickyNode in m_unparentedNodes.

The fix is to have ScrollingStateTree::unparentChildrenAndDestroyNode() remove nodes
from m_unparentedNodes.

To test, add a m_unparentedNodes count to scrollingStateTreeAsText output, which means
having scrollingStateTreeAsText() as a member function on ScrollingStateTree.

Test: scrollingcoordinator/scrolling-tree/accumulated-unparented-sticky-nodes.html

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::scrollingStateTreeAsText const):

  • page/scrolling/ScrollingStateTree.cpp:

(WebCore::ScrollingStateTree::unparentChildrenAndDestroyNode):
(WebCore::ScrollingStateTree::scrollingStateTreeAsText const):

  • page/scrolling/ScrollingStateTree.h:

LayoutTests:

  • scrollingcoordinator/scrolling-tree/accumulated-unparented-sticky-nodes-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/accumulated-unparented-sticky-nodes.html: Added.
3:59 PM Changeset in webkit [290759] by Jonathan Bedard
  • 7 edits in trunk/Tools

[webkitcorepy] Add Terminal.open_url
​https://bugs.webkit.org/show_bug.cgi?id=237386
<rdar://problem/89703756>

Reviewed by Don Olmstead.

Different platforms have different commands to open URLs.

  • Tools/Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py:

(Terminal): Add list of valid URL prefixes.
(Terminal.open_url): If terminal is interactive, open the provided URL.

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

(Setup.main): Invoke Terminal.open_url.

Canonical link: ​https://commits.webkit.org/248003@main

3:25 PM Changeset in webkit [290758] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[AppSSO] Correct logging messages to avoid confusing screeners that an error has occurred
​https://bugs.webkit.org/show_bug.cgi?id=237390
<rdar://problem/89710486>

Reviewed by Simon Fraser.

The phrasing of the message in 'SOAuthorizationCoordinator::tryAuthorize' when a URL is not relevant for
AppSSO flows is:

AUTHORIZATIONCOORDINATOR_RELEASE_LOG("tryAuthorize: Cannot authorize the requested URL.");

This leads people spelunking logs to believe that the URL can't be authorized (perhaps due to an error).

Instead, we should more accurately report that the URL is not one that is mediated through an AppSSO flow,
and so no AppSSO processing is needed.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationCoordinator.mm:

(WebKit::SOAuthorizationCoordinator::tryAuthorize):

3:09 PM Changeset in webkit [290757] by Chris Dumez
  • 2 edits in trunk/Tools

Unreviewed, address post-landing feedback from Darin on r290743

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(WTR::EventSenderProxy::mouseMoveTo):

2:28 PM Changeset in webkit [290756] by Oriol Brufau
  • 39 edits
    4 deletes in trunk

[css] Implement 'text-decoration' as a shorthand.
​https://bugs.webkit.org/show_bug.cgi?id=237175

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update tests to take into account that 'text-decoration' is a shorthand.

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • web-platform-tests/css/css-variables/variable-presentation-attribute-expected.txt:
  • web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:

Source/WebCore:

The 'text-decoration' property was considered to be a longhand, sharing
a computed value with 'text-decoration-line'.

This patch switches 'text-decoration' into a shorthand of the following
longhands: 'text-decoration-line', 'text-decoration-thickness',
'text-decoration-style' and 'text-decoration-color'. This is according
to ​https://www.w3.org/TR/css-text-decor-4/#text-decoration-property

For now I'm keeping the grammar as-is, so 'text-decoration' will only
accept values that are valid in 'text-decoration-line', but will set
the other longhands to the initial value. This should probably change
in a follow-up.

I'm also keeping '-webkit-text-decoration' as-is, as a shorthand of
'text-decoration-{line,style,color}', not including thickness for some
obscure reason. '-webkit-text-decoration' should probably be removed
anyways.

There is a bunch of editing code that was getting/setting/removing
'text-decoration' as a longhand, so I'm switching that to:

  • Use 'text-decoration-line' when getting values.
  • Use 'text-decoration' when setting values, and use a string for the value, this parses it and sets each longhand to the correct value.
  • Use 'text-decoration' get removing declarations, effectively removing all longhands.

This preserves the previous behavior as much as possible.

Tests: fast/css/getComputedStyle/computed-style.html

fast/css/getComputedStyle/computed-style-without-renderer.html
fast/css/getComputedStyle/getComputedStyle-text-decoration.html
fast/css/style-enumerate-properties.html
fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-shorthand.html
fast/css3-text/css3-text-decoration/text-decoration-dashed.html
fast/css3-text/css3-text-decoration/text-decoration-dotted-dashed.html
fast/css3-text/css3-text-decoration/text-decoration-dotted.html
imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml.html
imported/w3c/web-platform-tests/css/css-variables/variable-presentation-attribute.html
imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html
svg/css/getComputedStyle-basic.xhtml

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json:
  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue const):
(WebCore::StyleProperties::asText const):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::CSSPropertyParser::parseShorthand):

  • editing/EditingStyle.cpp:

(WebCore::EditingStyle::styleWithResolvedTextDecorations const):
(WebCore::EditingStyle::collapseTextDecorationProperties):
(WebCore::textDecorationValueList):
(WebCore::EditingStyle::conflictsWithInlineStyleOfElement const):
(WebCore::EditingStyle::styleIsPresentInComputedStyleOfNode const):
(WebCore::EditingStyle::mergeStyle):
(WebCore::EditingStyle::removeEquivalentProperties):
(WebCore::reconcileTextDecorationProperties):
(WebCore::StyleChange::StyleChange):
(WebCore::setTextDecorationProperty):
(WebCore::StyleChange::extractTextStyles):
(WebCore::diffTextDecorations):
(WebCore::extractPropertiesNotIn):

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverterCaches::propertyValueForNode):
(HTMLConverter::computedAttributesForElement):

  • editing/markup.cpp:

(WebCore::serializePreservingVisualAppearanceInternal):

  • style/PropertyAllowlist.cpp:

(WebCore::Style::isValidCueStyleProperty):

LayoutTests:

Update tests to take into account that 'text-decoration' is a shorthand.

  • editing/pasteboard/data-transfer-get-data-on-drop-rich-text-expected.txt:
  • fast/css/getComputedStyle/computed-style-expected.txt:
  • fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • fast/css/getComputedStyle/getComputedStyle-text-decoration-expected.txt:
  • fast/css/getComputedStyle/getComputedStyle-text-decoration.html:
  • fast/css/getComputedStyle/resources/property-names.js:
  • fast/css/style-enumerate-properties-expected.txt:
  • fast/css/style-enumerate-properties.html:
  • fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-shorthand-expected.txt:
  • fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-shorthand.html:
  • fast/css3-text/css3-text-decoration/text-decoration-dashed-expected-mismatch.html:
  • fast/css3-text/css3-text-decoration/text-decoration-dashed.html:
  • fast/css3-text/css3-text-decoration/text-decoration-dotted-dashed-expected-mismatch.html:
  • fast/css3-text/css3-text-decoration/text-decoration-dotted-dashed.html:
  • fast/css3-text/css3-text-decoration/text-decoration-dotted-expected-mismatch.html:
  • fast/css3-text/css3-text-decoration/text-decoration-dotted.html:
  • fast/events/input-events-paste-rich-datatransfer-expected.txt:
  • platform/glib/fast/css/getComputedStyle/computed-style-expected.txt: Removed.
  • platform/glib/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt: Removed.
  • platform/glib/svg/css/getComputedStyle-basic-expected.txt: Removed.
  • platform/gtk/fast/events/input-events-paste-rich-datatransfer-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
  • platform/ios/fast/css/getComputedStyle/computed-style-expected.txt: Removed.
  • platform/ios/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt: Removed.
  • platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
  • platform/ios/svg/css/getComputedStyle-basic-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
  • svg/css/getComputedStyle-basic-expected.txt:
2:07 PM Changeset in webkit [290755] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[WebAuthn] Completion handler is not called when WebAuthn invoked without proper entitlements
​https://bugs.webkit.org/show_bug.cgi?id=237380
<rdar://problem/89700242>

Reviewed by Chris Dumez.

WebAuthn is not permitted outside of Web Browser applications. When an application that lacks
the full web browser entitlement attempts to invoke WebAuthn flows, we do an early return. However,
the completion handler for this flow is bypassed, preventing applications from being informed of
this problem.

  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:

(WebKit::WebAuthenticatorCoordinator::makeCredential):
(WebKit::WebAuthenticatorCoordinator::getAssertion):
(WebKit::WebAuthenticatorCoordinator::isUserVerifyingPlatformAuthenticatorAvailable):

1:25 PM Changeset in webkit [290754] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Seatbelt sandbox profile entitlement is deprecated
​https://bugs.webkit.org/show_bug.cgi?id=237374

Reviewed by Brent Fulgham.

Replace with new entitlement.

  • Scripts/process-entitlements.sh:
1:12 PM Changeset in webkit [290753] by Jonathan Bedard
  • 2 edits in trunk/Tools

[Python-3] Invoke webkit-patch with Python 3 by default
​https://bugs.webkit.org/show_bug.cgi?id=231591
<rdar://problem/84153640>

Reviewed by Ryan Haddad.

  • Scripts/webkit-patch: Change shebang to Python 3.
1:10 PM Changeset in webkit [290752] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[iOS] Hard link AVPictureInPictureController
​https://bugs.webkit.org/show_bug.cgi?id=237227

Reviewed by Brent Fulgham.

Hard linking instead of soft linking should be a small performance improvement.

  • Configurations/WebKit.xcconfig:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

1:04 PM Changeset in webkit [290751] by J Pascoe
  • 5 edits in trunk/LayoutTests

[WebAuthn] Remove obsolete failed attestation tests
​https://bugs.webkit.org/show_bug.cgi?id=237346
rdar://problem/89647260

Reviewed by Brent Fulgham.

The removed items tested that creation fails whenever attestation fails, however
we've changed behavior such that creation succeeds with 'none' attestation in this
case, making these failure tests obsolete.

  • http/wpt/webauthn/public-key-credential-create-failure-local-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-local-silent.https.html:
  • http/wpt/webauthn/public-key-credential-create-failure-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-local.https.html:
12:59 PM Changeset in webkit [290750] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ iOS Debug ] editing/async-clipboard/* 20 tests are flaky timeouts on iOS.
​https://bugs.webkit.org/show_bug.cgi?id=237372

Unreviewed test gardening.

Patch by Matteo Flores <Matteo Flores> on 2022-03-02

  • platform/ios-wk2/TestExpectations:
12:56 PM Changeset in webkit [290749] by Robert Jenner
  • 2 edits in trunk/LayoutTests

REGRESSION(r290539): [ iOS ] 2X http/wpt/webauthn/public-key-credential-create-failure-local (layout-tests) are constant text failures
​https://bugs.webkit.org/show_bug.cgi?id=237346

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
12:53 PM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
12:53 PM Changeset in webkit [290748] by Jonathan Bedard
  • 5 edits in trunk/Tools

[git-webkit] Derive branch name from bug title
​https://bugs.webkit.org/show_bug.cgi?id=237284
<rdar://problem/89578241 >

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/branch.py:

(Branch.to_branch_name): Convert string (particularly a bug title) to potential branch name.
(Branch.main): If provided branch name is actually a bug number or URL, use the title
of that bug as the branch name.

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

(TestBranch):
(TestBranch.test_prompt_git):
(TestBranch.test_prompt_number):
(TestBranch.test_prompt_url):
(TestBranch.test_invalid_branch):
(TestBranch.test_to_branch_name):

Canonical link: ​https://commits.webkit.org/247992@main

12:41 PM Changeset in webkit [290747] by Jonathan Bedard
  • 9 edits in trunk

[git-webkit] Sync personal fork by default
​https://bugs.webkit.org/show_bug.cgi?id=237324
<rdar://problem/89618617>

Reviewed by Dewei Zhu.

  • metadata/project_config: Add webkitscmpy.update-fork option.
  • Tools/Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git): Add new webkitscmpy.update-fork option.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/pull_request.py:

(PullRequest.main): If we are rebasing the source branch, we should push that synced branch
to a user's personal fork, if such a fork exists.

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

Canonical link: ​https://commits.webkit.org/247991@main

12:18 PM Changeset in webkit [290746] by Wenson Hsieh
  • 15 edits in trunk

[iOS] Copy context menu action should be titled "Copy Link" when long pressing a non-image link
​https://bugs.webkit.org/show_bug.cgi?id=237367
rdar://77397886

Reviewed by Devin Rousso.

Source/WebCore:

Add a localizable string for "Copy Link". See WebKit/ChangeLog for more details.

  • en.lproj/Localizable.strings:

Source/WebKit:

Change the current title of the "Copy" context menu action to "Copy Link", when showing the context menu for a
non-image link. See below for more details.

Tests: fast/events/touch/ios/long-press-on-link.html

fast/events/touch/ios/long-press-on-image.html

  • UIProcess/API/Cocoa/_WKActivatedElementInfo.mm:

(-[_WKActivatedElementInfo _initWithInteractionInformationAtPosition:userInfo:]):
(-[_WKActivatedElementInfo _isImage]):

Add a helper method to return whether or not the activated element represents an image. Crucially, this will
return YES in the case of image links, even though the activated element type is _WKActivatedElementTypeLink.
We consult this below to still show "Copy" in the case of image links, instead of "Copy Link".

  • UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h:
  • UIProcess/API/Cocoa/_WKElementAction.mm:

(+[_WKElementAction _elementActionWithType:customTitle:assistant:]):
(+[_WKElementAction _elementActionWithType:info:assistant:]):

Add a _WKActivatedElementInfo argument to -_elementActionWithType:assistant:, and use this to set a custom
title for the menu action in the case of the Copy action for non-image links.

(+[_WKElementAction _elementActionWithType:assistant:]): Deleted.

  • UIProcess/API/Cocoa/_WKElementActionInternal.h:
  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant _appendOpenActionsForURL:actions:elementInfo:]):
(-[WKActionSheetAssistant defaultActionsForLinkSheet:]):
(-[WKActionSheetAssistant defaultActionsForImageSheet:]):

Additionally use -_isImage instead of -image here when supplying several default Visual Look Up-related
items; -image is misleading here, since it returns a non-null result even in the case of non-image elements,
if a node snapshot was requested by the client. It's also a bit wasteful, since it means we currently create an
image from the bitmap data while performing this check, when we really only need to know whether the hit-tested
element was an image element.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _simulateElementAction:atLocation:]):
(-[WKContentView _contentsOfUserInterfaceItem:]):
(-[WKContentView _contextMenuInteraction:configurationForMenuAtLocation:completion:]):

Include the titles of all visible menu items as an additional argument in the "contents of user interface item"
dictionary, in the case of context menus. To do this, we take advantage of the -updateVisibleMenuWithBlock:
API, which passes the currently visible UIMenu, to collect the titles of each visible menu item, and then
simply return the visible menu as-is.

See adjusted layout tests for more information.

(-[WKContentView contextMenuInteraction:willDisplayMenuForConfiguration:animator:]):

Move the call to -_didShowContextMenu to the animation completion block, such that we invoke the testing
completion handler for didShowContextMenuCallback after the menu is actually visible. Importantly, this allows
us to query the list of visible menu item titles above, by calling -updateVisibleMenuWithBlock:.

  • UIProcess/mac/DisplayCaptureSessionManager.mm:

(WebKit::alertForWindowSelection):

Drive-by fix: add quotes around the description argument to the UI string macro to fix an error when running
the update-webkit-localizable-strings script.

LayoutTests:

Adjust a couple of layout tests to check for items labeled "Copy" (in the case of an image) and "Copy Link" (in
the case of a link).

  • fast/events/touch/ios/long-press-on-image-expected.txt:
  • fast/events/touch/ios/long-press-on-image.html:
  • fast/events/touch/ios/long-press-on-link-expected.txt:
  • fast/events/touch/ios/long-press-on-link.html:
11:58 AM Changeset in webkit [290745] by mmaxfield@apple.com
  • 4 edits
    2 adds in trunk/LayoutTests

[Cocoa] The behavior of navigator-language-ru changed in Monterey / iOS 15
​https://bugs.webkit.org/show_bug.cgi?id=237384
<rdar://problem/80335706>

Unreviewed test gardening.

Add a new test for the new behavior, but keep the old one too for older OSes.

  • fast/text/international/system-language/navigator-language/navigator-language-ru-2-expected.txt: Added.
  • fast/text/international/system-language/navigator-language/navigator-language-ru-2.html: Added.
  • platform/ios-14/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk2/TestExpectations:
11:47 AM Changeset in webkit [290744] by J Pascoe
  • 2 edits in trunk/Source/WebKit

[WebAuthn] Ensure presenter gets dismissed on iOS
​https://bugs.webkit.org/show_bug.cgi?id=237336
rdar://81609371

Reviewed by Brent Fulgham.

Always call [m_presenter dismissWithError] to ensure presenter gets dismissed.

  • UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:

(WebKit::AuthenticatorPresenterCoordinator::dimissPresenter):

11:39 AM Changeset in webkit [290743] by Chris Dumez
  • 13 edits in trunk

Mousemove events double-firing in Safari
​https://bugs.webkit.org/show_bug.cgi?id=237342
<rdar://88025610>

Reviewed by Wenson Hsieh.

Source/WebKit:

When we constructed a WebViewImpl, we would add a mouse tracking area to the view,
so that mouseMoved/mouseEntered/mouseExited would get called and we would be able
to forward these mouse events to the WebContent process. However, when the view
becomes first responder, an implicit mouse tracking area also gets added. As a
result, we would get duplicate calls to mouseMoved/mouseEntered/mouseExited.

We consulted with the AppKit team and their recommendation was to use a different
owner object for our mouse tracking area and have that object forward the
mouseMoved/mouseEntered/mouseExited calls to our WebViewImpl. In doing so, we
can stop forwarding mouseMoved/mouseEntered/mouseExited calls from WKWebView &
WKView, which are NOT for our mouse tracking area.

No new tests, I tried but wasn't able to write an API test for this.
I had trouble making the test window key so that the view would receive
the (duplicate) mousemove events. I validated via logging that we are no longer
getting duplicate mousemove events. I also checked on
​https://www.vsynctester.com/testing/mouse.html that the output now looks correct.

  • UIProcess/API/Cocoa/WKViewPrivate.h:
  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/mac/WKView.mm:

(-[WKView _simulateMouseMove:]):
(-[WKView mouseMoved:]): Deleted.
(-[WKView mouseEntered:]): Deleted.
(-[WKView mouseExited:]): Deleted.

  • UIProcess/API/mac/WKWebViewMac.mm:

(-[WKWebView _simulateMouseMove:]):
(-[WKWebView mouseMoved:]): Deleted.
(-[WKWebView mouseEntered:]): Deleted.
(-[WKWebView mouseExited:]): Deleted.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(-[WKMouseTrackingObserver initWithViewImpl:]):
(-[WKMouseTrackingObserver mouseMoved:]):
(-[WKMouseTrackingObserver mouseEntered:]):
(-[WKMouseTrackingObserver mouseExited:]):
(WebKit::WebViewImpl::WebViewImpl):
(WebKit::WebViewImpl::updatePrimaryTrackingAreaOptions):
(WebKit::WebViewImpl::setPrimaryTrackingArea): Deleted.

  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::recommendedScrollbarStyleDidChange):

Tools:

Call [WKWebView _simulateMouseMove:] SPI instead of calling [WKWebView mouseMoved:]
since the latter calls are now being ignored.

  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebView mouseMoveToPoint:withFlags:]):

  • TestWebKitAPI/mac/PlatformWebViewMac.mm:

(TestWebKitAPI::PlatformWebView::simulateMouseMove):

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(WTR::EventSenderProxy::mouseMoveTo):

11:26 AM Changeset in webkit [290742] by Russell Epstein
  • 1 copy in tags/Safari-614.1.3.8

Tag Safari-614.1.3.8.

11:21 AM Changeset in webkit [290741] by graouts@webkit.org
  • 5 edits in trunk

[web-animations] setting the composite property on a keyframe effect should invalidate the target style
​https://bugs.webkit.org/show_bug.cgi?id=237356

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-context-filling-expected.txt:

Source/WebCore:

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::setComposite):

  • animation/KeyframeEffect.h:

(WebCore::KeyframeEffect::setComposite): Deleted.

11:06 AM Changeset in webkit [290740] by Russell Epstein
  • 9 edits in branches/safari-614.1.3-branch/Source

Versioning.

WebKit-7614.1.3.8

10:59 AM Changeset in webkit [290739] by sihui_liu@apple.com
  • 10 edits in trunk

Add assertion that no two sessions share the same general storage directory
​https://bugs.webkit.org/show_bug.cgi?id=236844
<rdar://problem/89178566>

Reviewed by Chris Dumez.

Source/WebKit:

rdar://89190571 shows that there can be two WebsiteDataStores using the same general storage directory, when
initializing network process. This can lead to corruption because storage code of each session runs on its own
WorkQueue (or thread) in network process. If two sessions (WebsiteDataStores) use the same directory, the
directory and its files may be accessed concurrently. The correct usage is creating different persistent
sessions with different paths. Let's add an assertion to help find problematic use case.

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::sendCreationParametersToNewProcess):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::cacheStorageDirectory const):
(WebKit::WebsiteDataStore::resolvedGeneralStorageDirectory const):
(WebKit::WebsiteDataStore::generalStorageDirectory const): Deleted.

Tools:

Update the tests where two WebsiteDataStores are created with the same general storage directory.

  • TestWebKitAPI/Tests/WebKitCocoa/PrivateClickMeasurement.mm:

(emptyObservationsDBPath):
(emptyPcmDBPath):
(cleanUp):

  • TestWebKitAPI/Tests/WebKitCocoa/PushAPI.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:

(runWebsiteDataStoreCustomPaths):

10:53 AM Changeset in webkit [290738] by Tyler Wilcock
  • 2 edits in trunk/Source/WebCore

AX: Handle null FileList in RenderFileUploadControl::fileTextValue()
​https://bugs.webkit.org/show_bug.cgi?id=237349

Reviewed by Chris Fleizach.

In rare circumstances, it's possible for the FileList associated
with RenderFileUploadControl::inputElement (HTMLInputElement::files())
to be null. This causes a crash in RenderFileUploadControl::fileTextValue().

In this patch, we avoid this crash by handling a null FileList
and returning a null String.

  • rendering/RenderFileUploadControl.cpp:

(WebCore::RenderFileUploadControl::fileTextValue const):
Handle null input.files() and return a null String rather than ASSERTing.

10:52 AM Changeset in webkit [290737] by Alan Coon
  • 1 copy in branches/safari-test-branch

New branch.

10:48 AM Changeset in webkit [290736] by sihui_liu@apple.com
  • 2 edits in trunk/Tools

Add test coverage for deleting FileSystem data when file is being written
​https://bugs.webkit.org/show_bug.cgi?id=237353

Reviewed by Chris Dumez.

Verify that file can be removed from disk, and active FileSystemSyncAccessHandle is invalidated in this case.

  • TestWebKitAPI/Tests/WebKitCocoa/FileSystemAccess.mm:
10:47 AM Changeset in webkit [290735] by graouts@webkit.org
  • 3 edits
    2 adds in trunk

Outline-width with transition don't animate correctly
​https://bugs.webkit.org/show_bug.cgi?id=173708

Reviewed by Antti Koivisto.

Source/WebCore:

Account for a change in outline size when checking whether a style change affects
visual overflow.

No new test for this, I'm not sure how to write one since the issue is failing to
repaint during an animation but WKTR seems to force a repaint for reftests.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeAffectsVisualOverflow const):

LayoutTests:

Add a repaint test that checks that the outline is accounted for during the transition.

  • fast/repaint/outline-transition-expected.txt: Added.
  • fast/repaint/outline-transition.html: Added.
9:09 AM Changeset in webkit [290734] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[RTL] Image alt text has incorrect bidi reordering
​https://bugs.webkit.org/show_bug.cgi?id=237366
<rdar://problem/89687229>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/images/alt-text-with-right-to-left-inline-direction-reordering.html

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintReplaced): Enable bidi reordering.

LayoutTests:

  • fast/images/alt-text-with-right-to-left-inline-direction-reordering-expected-mismatch.html: Added.
  • fast/images/alt-text-with-right-to-left-inline-direction-reordering.html: Added.
9:07 AM Changeset in webkit [290733] by youenn@apple.com
  • 11 edits in trunk/Source

Rename MediaSampleAVFObjC::createImageSample to MediaSampleAVFObjC::createFromPixelBuffer
​https://bugs.webkit.org/show_bug.cgi?id=237354

Reviewed by Eric Carlson.

Source/WebCore:

No change of behavior, this is a renaming.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::toMediaSample):

  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:

(WebCore::MediaSampleAVFObjC::createFromPixelBuffer):
(WebCore::MediaSampleAVFObjC::createImageSample): Deleted.

  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:

(WebCore::MediaSampleAVFObjC::createFromPixelBuffer):
(WebCore::MediaSampleAVFObjC::createImageSample): Deleted.

  • platform/graphics/cocoa/GraphicsContextGLCocoa.mm:

(WebCore::GraphicsContextGLCocoa::paintCompositedResultsToMediaSample):

  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::RealtimeVideoSource::adaptVideoSample):

Source/WebKit:

  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:

(WebKit::LibWebRTCCodecsProxy::createDecoderCallback):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::SourceProxy::rotateVideoFrameIfNeeded):

  • WebProcess/GPU/webrtc/SharedVideoFrame.cpp:

(WebKit::SharedVideoFrameReader::read):

  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

(WebKit::RemoteCaptureSampleManager::RemoteVideo::videoSampleAvailable):

8:59 AM Changeset in webkit [290732] by commit-queue@webkit.org
  • 13 edits in trunk/Source/WebKit

IPC_TESTING_API MessageArgumentDescriptions.cpp is slow to compile
​https://bugs.webkit.org/show_bug.cgi?id=237195

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-02
Reviewed by Antti Koivisto.
Reland after revert:
Add missing includes to JSC inlines, needed for ASAN build. Compile
failure was hidden my unified build.

IPC testing API needs convert message data buffer, IPC::Decoder, to
JSValue. This is a run-time operation.
IPC message decoding is based on templates, a compile time operation.
IPC generator generates MessageArgumentDescriptions.cpp with
a big switch. The switch has a case for each message name. The case would
call templated jsValueForDecodedArguments<Arguments>, where the Arguments
is the type tuple for the message arguments.

The above would mean that MessageArgumentDescriptions would need to
include all the headers for all the messages in WebKit in order
to populate the Arguments tuple for particular message.
This would cause MessageArgumentDescriptions to be slow to compile because
it would need all the headers in Source/WebKit related to message parameter types.

This would show up as slow compiles that would consume much memory (5-6gb) and do a
lot of work.

It would also have to compile the MessageArgumentDescriptions each time
any of the headers were touched.

Change this so that the big switch calls a declared but not defined
template jsValueForDecodedMessage<MessageName> for each MessageName case in the
switch.

Instantiate the template for each message in the *MessageReceiver.cpp file
that each message receiver has. This file already has to include all the
headers used for that particular message receiver. These files are small and compile
fast.

After this change MessageArgumentDescriptions.cpp only includes the message
definition headers, does not use much more than the standard 1gb+ of memory
while compiling and is relatively fast to compile. Also if any of the dependent
headers are touched, only the corresponding small *MessageReceiver.cpp files are compiled.

This change is needed for further improve the JS testing API implementation.
Adding new operations that employ the same strategy, eg. switch and a complex
template instantiation, would possibly just make the matter worse. New operations
that are needed are message sends, which use templates similarly to the message
decode case that is implement here.

This change regenerates the checked-in test content that can be used to review
what kind of changes the real MessageArgumentDescriptions.cpp and MessageReceiver.cpps
get.

  • Platform/IPC/JSIPCBinding.h:
  • Scripts/webkit/messages.py:

(generate_message_handler):
(generate_js_value_conversion_function):
(generate_message_argument_description_implementation):

  • Scripts/webkit/tests/MessageArgumentDescriptions.cpp:

(IPC::jsValueForArguments):
(IPC::jsValueForReplyArguments):

  • Scripts/webkit/tests/TestWithCVPixelBufferMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithCVPixelBuffer_SendCVPixelBuffer>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithCVPixelBuffer_ReceiveCVPixelBuffer>):

  • Scripts/webkit/tests/TestWithIfMessageMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithIfMessage_LoadURL>):

  • Scripts/webkit/tests/TestWithImageDataMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithImageData_SendImageData>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithImageData_ReceiveImageData>):

  • Scripts/webkit/tests/TestWithLegacyReceiverMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_LoadURL>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_LoadSomething>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_TouchEvent>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_AddEvent>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_LoadSomethingElse>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_DidReceivePolicyDecision>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_Close>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_PreferencesDidChange>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_SendDoubleAndFloat>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_SendInts>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_CreatePlugin>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_RunJavaScriptAlert>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_GetPlugins>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_GetPluginProcessConnection>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithLegacyReceiver_GetPluginProcessConnection>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_TestMultipleAttributes>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithLegacyReceiver_TestMultipleAttributes>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_TestParameterAttributes>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_TemplateTest>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_SetVideoLayerID>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_DidCreateWebProcessConnection>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_InterpretKeyEvent>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_DeprecatedOperation>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_ExperimentalOperation>):

  • Scripts/webkit/tests/TestWithSemaphoreMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithSemaphore_SendSemaphore>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSemaphore_ReceiveSemaphore>):

  • Scripts/webkit/tests/TestWithStreamBufferMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithStreamBuffer_SendStreamBuffer>):

  • Scripts/webkit/tests/TestWithStreamMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithStream_SendString>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithStream_SendStringSynchronized>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithStream_SendMachSendRight>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithStream_ReceiveMachSendRight>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithStream_SendAndReceiveMachSendRight>):

  • Scripts/webkit/tests/TestWithSuperclassMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_LoadURL>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_TestAsyncMessage>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithSuperclass_TestAsyncMessage>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_TestAsyncMessageWithNoArguments>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithSuperclass_TestAsyncMessageWithNoArguments>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArguments>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArguments>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_TestAsyncMessageWithConnection>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithSuperclass_TestAsyncMessageWithConnection>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_TestSyncMessage>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithSuperclass_TestSyncMessage>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_TestSynchronousMessage>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithSuperclass_TestSynchronousMessage>):

  • Scripts/webkit/tests/TestWithoutAttributesMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_LoadURL>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_LoadSomething>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_TouchEvent>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_AddEvent>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_LoadSomethingElse>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_DidReceivePolicyDecision>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_Close>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_PreferencesDidChange>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_SendDoubleAndFloat>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_SendInts>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_CreatePlugin>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_RunJavaScriptAlert>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_GetPlugins>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_GetPluginProcessConnection>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithoutAttributes_GetPluginProcessConnection>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_TestMultipleAttributes>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithoutAttributes_TestMultipleAttributes>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_TestParameterAttributes>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_TemplateTest>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_SetVideoLayerID>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_DidCreateWebProcessConnection>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_InterpretKeyEvent>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_DeprecatedOperation>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_ExperimentalOperation>):

8:45 AM Changeset in webkit [290731] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS][WP] Stop generating certain sandbox violation reports
​https://bugs.webkit.org/show_bug.cgi?id=237364

Reviewed by Chris Dumez.

Stop generating certain common sandbox violation reports in the WebContent process on iOS, since that
can improve performance. We will still get telemetry for these violations.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
7:27 AM Changeset in webkit [290730] by graouts@webkit.org
  • 15 edits in trunk

[web-animations] changes to font-size should recompute keyframes
​https://bugs.webkit.org/show_bug.cgi?id=237357

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-animations/responsive/column-width-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-context-expected.txt:
  • web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-context-filling-expected.txt:
  • web-platform-tests/web-animations/responsive/fontSize-expected.txt:
  • web-platform-tests/web-animations/responsive/perspective-expected.txt:
  • web-platform-tests/web-animations/responsive/textIndent-expected.txt:
  • web-platform-tests/web-animations/responsive/to-style-change-expected.txt:

Source/WebCore:

When we compute keyframes, it's possible that some values are specified using "em" units
and thus dependent on the current value for font-size. If the font-size changes over time,
we must recompute keyframes to ensure that any such value is updated.

To ensure that we correctly determine when the font-size changed, we pass a pointer to the
style seen when we last udpated animations so that we only consider a change in font-size
provided we've ever resolved animations.

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::propertyAffectingKeyframeResolutionDidChange):
(WebCore::KeyframeEffect::propertyAffectingLogicalPropertiesDidChange): Deleted.

  • animation/KeyframeEffect.h:
  • animation/KeyframeEffectStack.cpp:

(WebCore::KeyframeEffectStack::applyKeyframeEffects):

  • animation/KeyframeEffectStack.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::createAnimatedElementUpdate):

  • style/Styleable.h:

(WebCore::Styleable::applyKeyframeEffects const):

7:23 AM Changeset in webkit [290729] by Oriol Brufau
  • 6 edits in trunk

[css-cascade] Support 'revert-layer' in @keyframes
​https://bugs.webkit.org/show_bug.cgi?id=237152

Reviewed by Antti Koivisto.

Source/WebCore:

In @keyframes, 'revert-layer' should roll back the cascaded value to
author origin. Resolver::styleForKeyframe already has the base style of
the element, so we only need to avoid applying properties with the
'revert-layer' value.

Test: imported/w3c/web-platform-tests/css/css-cascade/revert-layer-010.html.html

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::applyProperty):

  • style/StyleBuilderState.h:

(WebCore::Style::BuilderState::setIsBuildingKeyframeStyle):

  • style/StyleResolver.cpp:

(WebCore::Style::Resolver::styleForKeyframe):

LayoutTests:

Expect test to pass.

7:06 AM Changeset in webkit [290728] by commit-queue@webkit.org
  • 15 edits in trunk/Source

[GTK] setDragImage ignores offset
​https://bugs.webkit.org/show_bug.cgi?id=237292

Patch by Michael Catanzaro <Michael Catanzaro> on 2022-03-02
Reviewed by Carlos Garcia Campos.

Source/WebCore:

To fix this, I need DataTransfer to expose its dragLocation, which is the offset passed to
setDragImage.

  • dom/DataTransfer.h:

(WebCore::DataTransfer::dragLocation const):

Source/WebKit:

Plumb the offset from the last place we have access to a DataTransfer object down to
DragSource, where it's ultimately used. This allows web content to properly position the
drag image under the mouse cursor.

  • UIProcess/API/gtk/DragSource.h:
  • UIProcess/API/gtk/DragSourceGtk3.cpp:

(WebKit::DragSource::begin):

  • UIProcess/API/gtk/DragSourceGtk4.cpp:

(WebKit::DragSource::begin):

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::startDrag):

  • UIProcess/API/gtk/PageClientImpl.h:
  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseStartDrag):

  • UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::startDrag):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:

(WebKit::WebDragClient::startDrag):

7:03 AM Changeset in webkit [290727] by Adrian Perez de Castro
  • 2 edits in trunk

[CMake] Build failure with libstdc++ (>= 6) when cross-compiling (fatal error: stdlib.h: No such file or directory)
​https://bugs.webkit.org/show_bug.cgi?id=161697
<rdar://problem/89613152>

Reviewed by Carlos Garcia Campos.

  • Source/cmake/WebKitCompilerFlags.cmake: Go through CMake instead of the plain "env"

program for the sake of portability.

6:49 AM Changeset in webkit [290726] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[RTL] Incorrect alt text position in right to left context
​https://bugs.webkit.org/show_bug.cgi?id=237352
<rdar://problem/89657704>

Reviewed by Simon Fraser.

Source/WebCore:

Take the inline direction into account when computing the alt text location.

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintReplaced): This is mostly moving things around/modernizing it.

LayoutTests:

  • fast/images/alt-text-with-right-to-left-inline-direction-expected-mismatch.html: Added.
  • fast/images/alt-text-with-right-to-left-inline-direction.html: Added.
5:49 AM Changeset in webkit [290725] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Annotate LibWebRTC with thread safety macros
​https://bugs.webkit.org/show_bug.cgi?id=237321
<rdar://problem/89625577>

Unreviewed, addressing post commit style change.
No change of behavior.

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
12:50 AM Changeset in webkit [290724] by Carlos Garcia Campos
  • 6 edits in trunk

REGRESSION(r216096): [GTK] Test accessibility/gtk/menu-list-unfocused-notifications.html is failing since r216096
​https://bugs.webkit.org/show_bug.cgi?id=171598

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Enable accessibility when a WTR observer is added.

  • accessibility/atspi/AccessibilityAtspi.cpp:

(WebCore::AccessibilityAtspi::addNotificationObserver):

LayoutTests:

Since r216096 the notification for menu list changes is deffered, so we need to wait one run loop cycle to get
the notifications. Also update the test to ignore notifications that are not interesting like AXLoadComplete and
AXElementBusyChanged, and update expectations for the new behavior with ATSPI where the notification is emitted
on the menu and not the combo.

  • accessibility/gtk/menu-list-unfocused-notifications-expected.txt:
  • accessibility/gtk/menu-list-unfocused-notifications.html:
  • platform/gtk/TestExpectations:
12:49 AM Changeset in webkit [290723] by Carlos Garcia Campos
  • 3 edits in trunk/LayoutTests

[ATSPI] Test accessibility/select-element-at-index.html is failing
​https://bugs.webkit.org/show_bug.cgi?id=237315

Reviewed by Adrian Perez de Castro.

This is because the test contains platform specific behavior for ATK that was migrated to ATSPI by mistake. We
should behave like all other ports now.

  • accessibility/select-element-at-index.html:
  • platform/glib/TestExpectations:
12:09 AM Changeset in webkit [290722] by commit-queue@webkit.org
  • 31 edits
    7 copies
    3 adds in trunk

Add SPI _WKDataTask
​https://bugs.webkit.org/show_bug.cgi?id=237234

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-02
Reviewed by Tim Horton.

Source/WebKit:

When I added WKWebView._requestResource:completionHandler: I overlooked a few things.
First, it is unable to support HTTPS because I didn't hook up authentication challenge handling to it.
Second, it is unable to have a maximum accepted response length, which is a requirement for an adopter.
To make these possible, I made _WKDataTask which is related to WKDownload and NSURLSessionDataTask.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::dataTaskWithRequest):
(WebKit::NetworkProcess::cancelDataTask):
(WebKit::NetworkProcess::requestResource): Deleted.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::dataTaskWithRequest):
(WebKit::NetworkSession::cancelDataTask):
(WebKit::NetworkSession::requestResource): Deleted.

  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::dataTaskWithRequest):
(WebKit::NetworkSessionCocoa::cancelDataTask):
(WebKit::NetworkSessionCocoa::removeDataTask):
(WebKit::NetworkSessionCocoa::requestResource): Deleted.

  • NetworkProcess/cocoa/WKURLSessionTaskDelegate.h: Copied from Source/WebKit/Shared/Authentication/cocoa/AuthenticationChallengeDispositionCocoa.h.
  • NetworkProcess/cocoa/WKURLSessionTaskDelegate.mm: Added.

(-[WKURLSessionTaskDelegate initWithIdentifier:session:]):
(-[WKURLSessionTaskDelegate connection]):
(-[WKURLSessionTaskDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
(-[WKURLSessionTaskDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKURLSessionTaskDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
(-[WKURLSessionTaskDelegate URLSession:dataTask:didReceiveData:]):
(-[WKURLSessionTaskDelegate URLSession:task:didCompleteWithError:]):

  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):

  • Shared/API/APIObject.h:
  • Shared/Authentication/cocoa/AuthenticationChallengeDispositionCocoa.h:
  • Shared/Authentication/cocoa/AuthenticationChallengeDispositionCocoa.mm:

(WebKit::fromAuthenticationChallengeDisposition):

  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • Shared/DataTaskIdentifier.h: Copied from Source/WebKit/Shared/Authentication/cocoa/AuthenticationChallengeDispositionCocoa.h.
  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/API/APIDataTask.cpp: Copied from Source/WebKit/UIProcess/API/APIInspectorExtensionClient.h.

(API::DataTask::setClient):
(API::DataTask::cancel):
(API::DataTask::DataTask):

  • UIProcess/API/APIDataTask.h: Copied from Source/WebKit/UIProcess/API/APIInspectorExtensionClient.h.

(API::DataTask::create):
(API::DataTask::page):
(API::DataTask::client const):

  • UIProcess/API/APIDataTaskClient.h: Copied from Source/WebKit/UIProcess/API/APIInspectorExtensionClient.h.

(API::DataTaskClient::create):
(API::DataTaskClient::~DataTaskClient):
(API::DataTaskClient::didReceiveChallenge const):
(API::DataTaskClient::willPerformHTTPRedirection const):
(API::DataTaskClient::didReceiveResponse const):
(API::DataTaskClient::didReceiveData const):
(API::DataTaskClient::didCompleteWithError const):

  • UIProcess/API/APIInspectorExtensionClient.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _dataTaskWithRequest:completionHandler:]):
(-[WKWebView _requestResource:completionHandler:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/_WKDataTask.h: Copied from Source/WebKit/UIProcess/API/APIInspectorExtensionClient.h.
  • UIProcess/API/Cocoa/_WKDataTask.mm: Added.

(-[_WKDataTask cancel]):
(-[_WKDataTask webView]):
(-[_WKDataTask delegate]):
(-[_WKDataTask setDelegate:]):
(-[_WKDataTask dealloc]):
(-[_WKDataTask _apiObject]):

  • UIProcess/API/Cocoa/_WKDataTaskDelegate.h: Added.
  • UIProcess/API/Cocoa/_WKDataTaskInternal.h: Copied from Source/WebKit/Shared/Authentication/cocoa/AuthenticationChallengeDispositionCocoa.h.
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::dataTaskWithRequest):
(WebKit::NetworkProcessProxy::dataTaskReceivedChallenge):
(WebKit::NetworkProcessProxy::dataTaskWillPerformHTTPRedirection):
(WebKit::NetworkProcessProxy::dataTaskDidReceiveResponse):
(WebKit::NetworkProcessProxy::dataTaskDidReceiveData):
(WebKit::NetworkProcessProxy::dataTaskDidCompleteWithError):
(WebKit::NetworkProcessProxy::requestResource): Deleted.

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::dataTaskWithRequest):
(WebKit::WebPageProxy::requestResource): Deleted.

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:

  • wtf/PlatformHave.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm:

(-[TestDataTaskDelegate dataTask:didReceiveAuthenticationChallenge:completionHandler:]):
(-[TestDataTaskDelegate dataTask:didReceiveResponse:decisionHandler:]):
(-[TestDataTaskDelegate dataTask:didReceiveData:]):
(-[TestDataTaskDelegate dataTask:didCompleteWithError:]):
(TEST):

Mar 1, 2022:

11:08 PM Changeset in webkit [290721] by youenn@apple.com
  • 17 edits in trunk/Source

Remove RemoteVideoSample support from ImageTransferSessionVT
​https://bugs.webkit.org/show_bug.cgi?id=237318

Reviewed by Eric Carlson.

Source/WebCore:

No change of behavior.

  • platform/graphics/cv/ImageTransferSessionVT.h:
  • platform/graphics/cv/ImageTransferSessionVT.mm:
  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeVideoCaptureSource.cpp:

Source/WebKit:

Remove no longer needed forward declaration or include of RemoteVideoSample.
Remove ImageTransferSessionVT::createMediaSample(RemoteVideoSample&&) and replace it with direct use of MediaSampleAVFObjC.

No change of behavior.

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:
  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:
  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.cpp:
  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:
  • WebProcess/cocoa/RemoteCaptureSampleManager.h:
  • WebProcess/cocoa/RemoteRealtimeAudioSource.h:
  • WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.h:
  • WebProcess/cocoa/UserMediaCaptureManager.h:
10:42 PM Changeset in webkit [290720] by Devin Rousso
  • 13 edits
    2 adds in trunk

Web Inspector: add a switch to control whether breakpoint evaluations (condition, ignore count, actions) are also affected by script blackboxing
​https://bugs.webkit.org/show_bug.cgi?id=235274

Reviewed by Patrick Angle.

Source/JavaScriptCore:

Being able to defer breakpoint evaluations until the next actual pause can sometimes be far
more useful than doing the breakpoint evaluations at the breakpoint's original location.

As an example, configuring the All Events breakpoint with a console.trace() action and
auto-continue enabled would not provide much useful information without also blackboxing
breakpoint evaluations as the original pause location of the All Events breakpoint is on the
first line of the event handler, meaning that if the script containing the event handler is
blackboxed then the console.trace() would still only show that location even though the
Sources Tab would show the first line of code outside of that script (due to the blackbox).
Being able to also blackbox breakpoint evaluations would instead cause the console.trace()
action to have the same output as the Sources Tab, since it's evaluation would be deferred
until execution actually paused, which is further inside the event handler.

  • debugger/Debugger.cpp:

(JSC::Debugger::Debugger):
(JSC::Debugger::didHitBreakpoint):
(JSC::Debugger::evaluateBreakpointCondition):
(JSC::Debugger::continueProgram):
(JSC::Debugger::pauseIfNeeded):
(JSC::Debugger::didExecuteProgram):
(JSC::Debugger::setBlackboxBreakpointEvaluations): Added.
Keep track of every Breakpoint wants to pause but is deferred due to blackboxing.
Depending on whether breakpoint evaluations are also blackboxed (based on the flag set via
the piping code/logic below), check if the script attempting to be paused in is blackboxed
before or after handling breakpoint evaluations.
Side effects of this change are:

  • breakpoint conditions are now evaluated right before that breakpoint's actions, instead of evaluating all breakpoint conditions before all breakpoint actions
  • if breakpoint evaluations are blackboxed, more than two breakpoints can now be evaluated

during a single pause attempt depending on how may deferrals (with breakpoints) happened

  • debugger/Debugger.h:

(JSC::Debugger::Observer::didDeferBreakpointPause): Added.
Add a way to notify InspectorDebuggerAgent of deferred breakpoint pauses so that the
correct originalReason will be used after a deferred pause.

  • inspector/protocol/Debugger.json:
  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::setBlackboxBreakpointEvaluations): Added.
(Inspector::InspectorDebuggerAgent::didDeferBreakpointPause): Added.
Add a setBlackboxBreakpointEvaluations command that passes directly to Debugger.

Source/WebInspectorUI:

Being able to defer breakpoint evaluations until the next actual pause can sometimes be far
more useful than doing the breakpoint evaluations at the breakpoint's original location.

As an example, configuring the All Events breakpoint with a console.trace() action and
auto-continue enabled would not provide much useful information without also blackboxing
breakpoint evaluations as the original pause location of the All Events breakpoint is on the
first line of the event handler, meaning that if the script containing the event handler is
blackboxed then the console.trace() would still only show that location even though the
Sources Tab would show the first line of code outside of that script (due to the blackbox).
Being able to also blackbox breakpoint evaluations would instead cause the console.trace()
action to have the same output as the Sources Tab, since it's evaluation would be deferred
until execution actually paused, which is further inside the event handler

  • UserInterface/Base/Setting.js:
  • UserInterface/Controllers/DebuggerManager.js:

(WI.DebuggerManager.supportsBlackboxingBreakpointEvaluations): Added.
(WI.DebuggerManager.prototype.async initializeTarget):
(WI.DebuggerManager.prototype._setBlackboxBreakpointEvaluations): Added.
(WI.DebuggerManager.prototype._handleBlackboxBreakpointEvaluationsChange): Added.
Create a global WI.Setting for this feature and handle changes from the code below.

  • UserInterface/Views/BlackboxSettingsView.js:

(WI.BlackboxSettingsView.prototype.initialLayout):

  • UserInterface/Views/BlackboxSettingsView.css:

(.settings-view.blackbox > p > label): Added.
(.settings-view.blackbox > p > label > input): Added.
(.settings-view.blackbox > p > label > span): Added.
Add a checkbox and explanation of this new feature in the Blackbox pane of the Settings Tab.

  • Localizations/en.lproj/localizedStrings.js:

LayoutTests:

  • inspector/debugger/setBlackboxBreakpointEvaluations.html: Added.
  • inspector/debugger/setBlackboxBreakpointEvaluations-expected.txt: Added.
10:05 PM Changeset in webkit [290719] by basuke.suzuki@sony.com
  • 2 edits in trunk/Source/bmalloc

[libpas] Add missing PlayStation implementation.
​https://bugs.webkit.org/show_bug.cgi?id=237341

Reviewed by Yusuke Suzuki.

  • libpas/src/libpas/pas_monotonic_time.c:

(pas_get_current_monotonic_time_nanoseconds):

10:03 PM Changeset in webkit [290718] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

Fix deprecations for ERB.new in GenerateSettings.rb
​https://bugs.webkit.org/show_bug.cgi?id=237237

Reviewed by Don Olmstead.

Ruby 3.1.0 reported the following warning:

GenerateSettings.rb:283: warning: Passing safe_level with the 2nd argument of ERB.new is deprecated. Do not use it, and specify other arguments as keyword arguments.
GenerateSettings.rb:283: warning: Passing trim_mode with the 3rd argument of ERB.new is deprecated. Use keyword argument like ERB.new(str, trim_mode: ...) instead.

r290104 and r290331 fixed the same problem for
GeneratePreferences.rb, but forgot GenerateSettings.rb.

  • Scripts/GenerateSettings.rb: Use the keyword argument for ERB.new for Ruby 2.6+.
7:42 PM Changeset in webkit [290717] by sbarati@apple.com
  • 12 edits in trunk/Source/JavaScriptCore

Add a DeferTraps scope
​https://bugs.webkit.org/show_bug.cgi?id=237306
<rdar://83494949>

Reviewed by Mark Lam.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::jettison):
(JSC::CodeBlock::noticeIncomingCall):

  • bytecode/CodeBlock.h:
  • bytecode/RepatchInlines.h:

(JSC::linkFor):
(JSC::virtualForWithFunction):

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeProgram):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeModuleProgram):

  • interpreter/InterpreterInlines.h:

(JSC::Interpreter::execute):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::setUpCall):

  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::installCode):

  • runtime/VMTraps.cpp:

(JSC::VMTraps::handleTraps):
(JSC::VMTraps::takeTopPriorityTrap):

  • runtime/VMTraps.h:

(JSC::VMTraps::needHandling const):
(JSC::VMTraps::hasTrapBit):
(JSC::VMTraps::setTrapBit):

  • runtime/VMTrapsInlines.h:

(JSC::DeferTraps::DeferTraps):
(JSC::DeferTraps::~DeferTraps):

6:11 PM Changeset in webkit [290716] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ iOS ] pointerevents/mouse/* 10 pointer event tests are constant timeouts or failures on iOS.
​https://bugs.webkit.org/show_bug.cgi?id=237348

Unreviewed test gardening.

Patch by Matteo Flores <Matteo Flores> on 2022-03-01

  • platform/ios-wk2/TestExpectations:
6:03 PM Changeset in webkit [290715] by Andres Gonzalez
  • 2 edits in trunk/Source/WebCore

Unnecessary copy of Vector of children IDs in AXIsolatedTree::updateChildren.
​https://bugs.webkit.org/show_bug.cgi?id=237338
<rdar://problem/89633856>

Reviewed by Chris Fleizach.

Changed the copy of this Vector to a move.

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::updateChildren):

5:53 PM Changeset in webkit [290714] by Robert Jenner
  • 13 edits in trunk/Source/WebKit

Unreviewed, reverting r290588.

Patch r290588 caused ASAN build to fail on macOS

Reverted changeset:

"IPC_TESTING_API MessageArgumentDescriptions.cpp is slow to
compile"
​https://bugs.webkit.org/show_bug.cgi?id=237195
​https://commits.webkit.org/r290588

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

Fix clean build

  • UnifiedSources-output.xcfilelist:
5:07 PM Changeset in webkit [290712] by Wenson Hsieh
  • 8 edits in trunk

Clipboard Paste dialog doesn't show on external monitors
​https://bugs.webkit.org/show_bug.cgi?id=236395
rdar://88943577

Reviewed by Tim Horton.

Source/WebKit:

Fix the bug by aligning the way we generate synthetic mouse click NSEvents in WebKit2 macOS, when:

  1. Showing the standard web content context menu
  2. Showing the DOM paste menu
  3. Showing the context menu for PDFs

Critically, this makes AppKit choose the correct NSScreen when presenting the popup menu when showing the DOM
paste menu, if the last mouse down event is nil upon presenting the menu.

Covered by adding a debug assertion to verify that we aren't trying to present popup menus from a nil event
during DOM paste.

  • UIProcess/API/mac/WKWebViewTestingMac.mm:

(-[WKWebView _activeMenu]):

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::requestDOMPasteAccess):

  • UIProcess/WebPageProxy.h:
  • UIProcess/mac/WebContextMenuProxyMac.mm:

(WebKit::WebContextMenuProxyMac::showContextMenuWithItems):

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::showPDFContextMenu):
(WebKit::WebPageProxy::activeContextMenu const):

Renamed from platformActiveContextMenu. The "platform" prefix in front of this method was unnecessary, since
this is only invoked from macOS-only code that expects an NSMenu anyways.

(WebKit::WebPageProxy::createSyntheticEventForContextMenu const):

Add a helper method to create a synthetic NSEvent at the given location that's suitable for presenting a context
menu; use this new helper in the three places described above.

(WebKit::WebPageProxy::platformActiveContextMenu const): Deleted.

Tools:

Adjust the swizzled implementation of -popUpContextMenu:withEvent:forView: to additionally verify that the
NSEvent we're presenting the menu with isn't nil.

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::swizzledPopUpContextMenu):

4:41 PM Changeset in webkit [290711] by jonlee@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed gardening.

  • gpu-process/TestExpectations: r290542 fixed a number of crashing tests.
4:29 PM Changeset in webkit [290710] by jonlee@apple.com
  • 3 edits in trunk/LayoutTests

Unreviewed gardening.

  • gpu-process/TestExpectations:
  • platform/ios/TestExpectations: r290438 fixed a test failure.
4:27 PM Changeset in webkit [290709] by Alan Coon
  • 1 edit in branches/safari-613-branch/Source/WTF/Scripts/Preferences/WebPreferences.yaml

Apply patch. rdar://problem/89126114

4:27 PM Changeset in webkit [290708] by Alan Coon
  • 14 edits
    2 deletes in branches/safari-613-branch

Revert r289282. rdar://problem/88876661

4:20 PM Changeset in webkit [290707] by jonlee@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed gardening.

  • gpu-process/TestExpectations: r290542 fixed a number of crashing tests.
3:59 PM Changeset in webkit [290706] by Alan Bujtas
  • 3 edits
    2 adds in trunk

REGRESSION(r285232) ​https://alvaromontoro.github.io/almond.css/demo/ looks wrong in Safari, ok in Chrome and Firefox
​https://bugs.webkit.org/show_bug.cgi?id=237276
<rdar://problem/89566459>

Reviewed by Simon Fraser.

Source/WebCore:

r285232 introduced the isFixed() check as a resolvable preferred width type, but percent values are also resolvable as
block layout gets the horizontal constraint from the containing block chain (unlike the height percent values) -i.e. 'width: 50%' can be resolved during preferred width computation.

Test: fast/css-grid-layout/ascpect-ratio-with-percent-width.html

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::availableLogicalHeightForPercentageComputation const):

LayoutTests:

  • fast/css-grid-layout/ascpect-ratio-with-percent-width-expected.html: Added.
  • fast/css-grid-layout/ascpect-ratio-with-percent-width.html: Added.
3:51 PM Changeset in webkit [290705] by Fujii Hironori
  • 12 edits in trunk

WTF::SentinelLinkedList::iterator should have operator++ for range-for loop
​https://bugs.webkit.org/show_bug.cgi?id=237265

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

SentinelLinkedList::iterator isn't a pointer of node now, it
should be deferenced before comparing with a pointer.

  • bytecode/Watchpoint.cpp:

(JSC::WatchpointSet::fireAllWatchpoints):

  • heap/HandleSet.cpp:

(JSC::HandleSet::visitStrongHandles):
(JSC::HandleSet::protectedGlobalObjectCount):

  • heap/HandleSet.h:

(JSC::HandleSet::forEachStrongHandle):

  • heap/IsoSubspace.cpp:

(JSC::IsoSubspace::tryAllocateFromLowerTier):

  • heap/SubspaceInlines.h:

(JSC::Subspace::forEachPreciseAllocation):

  • jsc.cpp:

(Workers::broadcast):

Source/WTF:

SentinelLinkedList had three problems.

  1. Even though it has begin() and end(), using SentinelLinkedList with range-for loop resulted in a broken node because iterator::operator++ didn't work as expected.
  2. If I used a SentinelLinkedList in a movable type, the sentinel pointer gets stale after moving the object. move-ctor should be deleted.
  3. It didn't have const_iterator.
  • wtf/OrderMaker.h:

(WTF::OrderMaker::iterator::iterator):
(WTF::OrderMaker::iterator::operator*):
(WTF::OrderMaker::iterator::operator++):
(WTF::OrderMaker::iterator::operator== const):

  • wtf/SentinelLinkedList.h:

(WTF::BasicRawSentinelNode::prev const):
(WTF::BasicRawSentinelNode::next const):
(WTF::SentinelLinkedList::BaseIterator::BaseIterator):
(WTF::SentinelLinkedList::BaseIterator::operator* const):
(WTF::SentinelLinkedList::BaseIterator::operator-> const):
(WTF::SentinelLinkedList::BaseIterator::operator++):
(WTF::SentinelLinkedList::BaseIterator::operator--):
(WTF::SentinelLinkedList::BaseIterator::operator== const):
(WTF::SentinelLinkedList::BaseIterator::operator!= const):
(WTF::SentinelLinkedList::forEach):
(WTF::RawNode>::begin):
(WTF::RawNode>::end):
(WTF::RawNode>::begin const):
(WTF::RawNode>::end const):
(WTF::BasicRawSentinelNode::prev): Deleted.
(WTF::BasicRawSentinelNode::next): Deleted.

Tools:

  • TestWebKitAPI/Tests/WTF/SentinelLinkedList.cpp:

(TestWebKitAPI::TEST):

3:50 PM Changeset in webkit [290704] by Alan Coon
  • 4 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290087. rdar://problem/88713302

Source/ThirdParty/ANGLE:
Metal ANGLE: vertex array does not correctly observe contents of data buffers
​https://bugs.webkit.org/show_bug.cgi?id=236733
<rdar://problem/88713302>
<rdar://problem/88499073>

Patch by Kyle Piddington <Kyle Piddington> on 2022-02-17
Reviewed by Dean Jackson.

Similar to previous bug (236427), we were not correctly observing changes to the
vertex buffer data. This caused us to miss rebinding vertex buffers
when data was updated without causing conversion

  • src/libANGLE/renderer/metal/VertexArrayMtl.h:
  • src/libANGLE/renderer/metal/VertexArrayMtl.mm: (rx::VertexArrayMtl::syncState): (rx::VertexArrayMtl::setupDraw): (rx::VertexArrayMtl::syncDirtyAttrib):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290087 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:50 PM Changeset in webkit [290703] by Alan Coon
  • 3 edits in branches/safari-613-branch/Source/ThirdParty/ANGLE

Apply patch. rdar://problem/87136345

3:50 PM Changeset in webkit [290702] by Alan Coon
  • 6 edits in branches/safari-613-branch

Apply patch. rdar://problem/89009881

3:50 PM Changeset in webkit [290701] by Alan Coon
  • 8 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290512. rdar://problem/86582214

[Tables] Incorrect table sizing when colgroup comes after tbody
​https://bugs.webkit.org/show_bug.cgi?id=237205
<rdar://86582214>

Reviewed by Antti Koivisto.

Source/WebCore:

Let's use the colgroup for table sizing even when it comes after any thead, tbody, tfoot, and tr elements.
This makes WebKit match other rendering engines (see ​https://src.chromium.org/viewvc/blink?revision=159442&view=revision)

Test: fast/table/table-sizing-fails-when-colgroup-comes-after-content.html

  • rendering/RenderTable.cpp: (WebCore::RenderTable::firstColumn const):
  • rendering/RenderTableCol.cpp: (WebCore::RenderTableCol::nextColumn const):

LayoutTests:

  • fast/table/table-sizing-fails-when-colgroup-comes-after-content-expected.html: Added.
  • fast/table/table-sizing-fails-when-colgroup-comes-after-content.html: Added.
  • platform/mac/tables/mozilla_expected_failures/dom/appendCol1-expected.txt: Progression.
  • platform/mac/tables/mozilla_expected_failures/dom/appendColGroup1-expected.txt: Progression.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290512 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290700] by Alan Coon
  • 3 edits
    6 adds in branches/safari-613-branch

Cherry-pick r290156. rdar://problem/89154452

ServiceWorkerGlobalScope+PushAPI requires PushAPIEnabled
​https://bugs.webkit.org/show_bug.cgi?id=236846

Patch by Sam Sneddon <Sam Sneddon> on 2022-02-18
Reviewed by Chris Dumez.

Source/WebCore:

Tests: http/wpt/push-api/onpush-disabled.html

http/wpt/push-api/onpush-enabled.html

  • Modules/push-api/ServiceWorkerGlobalScope+PushAPI.idl:

LayoutTests:

  • http/wpt/push-api/onpush-disabled-expected.txt: Added.
  • http/wpt/push-api/onpush-disabled.html: Added.
  • http/wpt/push-api/onpush-disabled.js: Added. (test):
  • http/wpt/push-api/onpush-enabled-expected.txt: Added.
  • http/wpt/push-api/onpush-enabled.html: Added.
  • http/wpt/push-api/onpush-enabled.js: Added. (test):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290156 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290699] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290152. rdar://problem/88327814

Keep promise in scope when calling DeferredPromise::reject
​https://bugs.webkit.org/show_bug.cgi?id=236454

Patch by Gabriel Nava Marino <​gnavamarino@apple.com> on 2022-02-18
Reviewed by Darin Adler.

Keep promise in scope when calling DeferredPromise::reject, as createDOMException
could go through a path that invokes GC on its owner and the promise.

  • Modules/fetch/FetchBodyConsumer.cpp: (WebCore::FetchBodyConsumer::resolveWithFormData):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290152 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290698] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290109. rdar://problem/89072235

Crash under ScrollingCoordinatorMac::hasNodeWithAnimatedScrollChanged()
​https://bugs.webkit.org/show_bug.cgi?id=236810
<rdar://89072235>

Reviewed by Dean Jackson.

Crash data suggests that r288933 didn't fix the crash entirely.

Although the code paths I can find appear to hold the lock, there may be an
opportunity for m_scrollingCoordinator to get nulled out after we null-check it
but before the copy for the main thread dispatch.

So make a RefPtr on the stack, null-check it, and then move it into the callback.

  • page/scrolling/ThreadedScrollingTree.cpp: (WebCore::ThreadedScrollingTree::reportSynchronousScrollingReasonsChanged): (WebCore::ThreadedScrollingTree::reportExposedUnfilledArea): (WebCore::ThreadedScrollingTree::currentSnapPointIndicesDidChange): (WebCore::ThreadedScrollingTree::handleWheelEventPhase): (WebCore::ThreadedScrollingTree::setActiveScrollSnapIndices): (WebCore::ThreadedScrollingTree::hasNodeWithAnimatedScrollChanged):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290109 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290697] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r290066. rdar://problem/89072361

[macOS][WP] Add required syscall to sandbox
​https://bugs.webkit.org/show_bug.cgi?id=236781
<rdar://89072361>

Reviewed by Chris Dumez.

Add required syscall to the WebContent process' sandbox on macOS. This patch also adds back a set of
syscalls that were removed in ​https://commits.webkit.org/r286778 for current and previous versions
of macOS. These syscalls will be denied going forward.

  • WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290066 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290696] by Alan Coon
  • 3 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290054. rdar://problem/89093315

[macOS] Light appearance text fields are invisible in Increased Contrast mode
​https://bugs.webkit.org/show_bug.cgi?id=236753
rdar://89093315

Reviewed by Wenson Hsieh.

In Big Sur, the artwork for many form controls, including text fields, was
changed at the system level. When painting native text fields, WebKit has
long used the "borders only" option to support painting custom background
colors. System-level changes in Big Sur broke the behavior of light appearance
"borders only" text fields in Increased Contrast mode.

Until the artwork is updated at the system-level, work around the issue
in WebKit by painting our own borders for text fields under the necessary
conditions.

No new tests, as tests that change system preferences are often unreliable,
and we do not have existing hooks to toggle Increased Contrast mode.

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::shouldPaintCustomTextField const): (WebCore::RenderThemeMac::paintTextField):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290054 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290695] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/ThirdParty/ANGLE

Cherry-pick r290011. rdar://problem/89024095

REGRESSION (iOS 15.4b3): Catastrophic (20x) performance regression in texImage2D from mp4 video
​https://bugs.webkit.org/show_bug.cgi?id=236699

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-02-17
Reviewed by Darin Adler.

Disable the validation for IOSurface pixel formats.
We might pass non-public formats that do not have sensible IOSurfaceGetBytesPerElementOfPlane
to verify with this logic.

Will add test in bug 236759.

Previous bugs of the same:
EAGL:
Textures Fail to Render in WebGL from HLS Stream on iPhone 12 [iOS 14.2]
bug 218637, r273582, 234632@main
CGL:
REGRESSION(Safari 15, BigSur): Poor video texture upload performance with MacBook M1, ANGLE OpenGL backend
bug 232235, r286960, 245183@main

  • src/libANGLE/renderer/metal/IOSurfaceSurfaceMtl.mm: (rx::IOSurfaceSurfaceMtl::ValidateAttributes):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290011 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290694] by Alan Coon
  • 18 edits in branches/safari-613-branch/Source

Cherry-pick r290005. rdar://problem/87596724

CrashTracer: com.apple.WebKit.WebContent at JavaScriptCore: bmalloc_allocate_impl_impl_slow
​https://bugs.webkit.org/show_bug.cgi?id=236695
rdar://87596724

Reviewed by Jer Noble.

Source/WebCore:

When a new FragmentedSharedBuffer is received from the network process, it is proactively coalesced
into a SharedBuffer during each call to CachedResource::updateBuffer(). This causes a large number
of re-allocations and copies; essentially re-allocating each time the resource's buffer receives
one more chunk of data.
Instead we only flatten the data buffer once all data have been received.

Running speedtest.net with a gigabit link, we see a reduction of peak
memory use in the content process by about 40% (from 740MB to under 440MB of
physical memory, 1.7GB of memory allocation vs 535MB)

Covered by existing tests.

  • editing/ios/EditorIOS.mm: (WebCore::Editor::writeImageToPasteboard):
  • editing/mac/EditorMac.mm: (WebCore::Editor::writeImageToPasteboard):
  • loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::didFinishLoading):
  • loader/cache/CachedApplicationManifest.cpp: (WebCore::CachedApplicationManifest::finishLoading):
  • loader/cache/CachedCSSStyleSheet.cpp: (WebCore::CachedCSSStyleSheet::finishLoading):
  • loader/cache/CachedFont.cpp: (WebCore::CachedFont::ensureCustomFontData):
  • loader/cache/CachedImage.cpp: (WebCore::CachedImage::updateImageData):
  • loader/cache/CachedRawResource.cpp: (WebCore::CachedRawResource::calculateIncrementalDataChunk const): (WebCore::CachedRawResource::updateBuffer): (WebCore::CachedRawResource::finishLoading):
  • loader/cache/CachedRawResource.h:
  • loader/cache/CachedResource.h: (WebCore::CachedResource::resourceBuffer const):
  • loader/cache/CachedScript.cpp: (WebCore::CachedScript::script):
  • loader/cache/CachedXSLStyleSheet.cpp: (WebCore::CachedXSLStyleSheet::finishLoading):

Source/WebKit:

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::finishedLoading): Fly-by fix, the IPC::DataReference would reference a SharedBuffer going out of scope before it was sent over IPC.

Source/WebKitLegacy/mac:

  • WebView/WebHTMLView.mm: (-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290005 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290693] by Alan Coon
  • 3 edits
    2 adds in branches/safari-613-branch

Cherry-pick r289995. rdar://problem/87462825

REGRESSION(r285885) Unable to exit Trip Details in Amtrak app
​https://bugs.webkit.org/show_bug.cgi?id=236732
<rdar://87462825>

Reviewed by Simon Fraser.

Source/WebCore:

Starting from r285885 an (effective)”overflow: clip” value is set on any block box with “contain: paint”.
It is supposed to ensure we don’t paint outside of the box’s border box (note that "contain: paint", as the name implies, should only affect painting).

However this effective value trickles in to layout affecting certain layout constraints.
In case of flex, it makes the flex layout think that the box is really a clipped box and it starts flexing it accordingly producing incorrect size.
What it means is that the minimum preferred size ends up being 0px because now with "let's clip all the overflow content"
0px is indeed the smallest size a box could take that does not produce overflow (while with the initial, “overflow: visible” value,
its minimum width would likely be > 0px -provided it has some content. Also note that setting “overflow: clip” on the box in the markup
(so it becomes an explicit clip value and not just an “effective” implicit clip through “contain: paint”) produces
the exact same rendering meaning that this effective property value does affect layout).

This is a partial revert of r285885 (focusing on where the flex algorithm consults with the flex items' overflow values).

Test: fast/flexbox/incorrect-min-size-with-paint-contain.html

  • rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::mainAxisOverflowForChild const): (WebCore::RenderFlexibleBox::crossAxisOverflowForChild const):

LayoutTests:

  • fast/flexbox/incorrect-min-size-with-paint-contain-expected.html: Added.
  • fast/flexbox/incorrect-min-size-with-paint-contain.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289995 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290692] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WTF

Cherry-pick r289974. rdar://problem/89008799

Unreviewed, reverting r286874.
​https://bugs.webkit.org/show_bug.cgi?id=236734

Broke Apple Music pages which use the resolution media query

Reverted changeset:

"Enable the 'resolution' media query by default"
​https://bugs.webkit.org/show_bug.cgi?id=78087
​https://commits.webkit.org/r286874

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289974 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290691] by Alan Coon
  • 4 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r289942. rdar://problem/88827167

[Cocoa] Update audio session category before setting NowPlaying status
​https://bugs.webkit.org/show_bug.cgi?id=236620
rdar://88827167

Reviewed by Jer Noble.

NowPlaying doesn't update correctly when the audio category changes from Ambient
to Playback after becoming active, so always set the category first.

Tested manually.

  • platform/audio/PlatformMediaSession.cpp: (WebCore::PlatformMediaSession::clientWillBeginPlayback): Set "preparingToPlay" before calling sessionWillBeginPlayback so updateSessionState can tell that playback is about to begin.
  • platform/audio/PlatformMediaSession.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm: (WebCore::MediaSessionManagerCocoa::updateSessionState): Consider a session to potentially have audio if it is preparing to play.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289942 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290690] by Alan Coon
  • 7 edits
    2 adds in branches/safari-613-branch

Cherry-pick r289693. rdar://problem/88264857

Suppress style invalidation when matching :checked
​https://bugs.webkit.org/show_bug.cgi?id=235910

Patch by Rob Buis <​rbuis@igalia.com> on 2022-02-12
Reviewed by Antti Koivisto.

Source/WebCore:

Suppress style invalidation when matching :checked for option elements.

Test: fast/selectors/has-select-option-crash.html

  • css/SelectorCheckerTestFunctions.h: (WebCore::isChecked):
  • html/HTMLOptionElement.cpp: (WebCore::HTMLOptionElement::selected const): (WebCore::HTMLOptionElement::setSelectedState):
  • html/HTMLOptionElement.h:
  • html/HTMLSelectElement.cpp: (WebCore::HTMLSelectElement::updateListItemSelectedStates): (WebCore::HTMLSelectElement::recalcListItems const):
  • html/HTMLSelectElement.h:

LayoutTests:

  • fast/selectors/has-select-option-crash-expected.txt: Added.
  • fast/selectors/has-select-option-crash.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289693 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290689] by Alan Coon
  • 6 edits
    2 adds in branches/safari-613-branch

Cherry-pick r289526. rdar://problem/87061239

[:has() pseudo-class] Nullptr crash with non-function :has
​https://bugs.webkit.org/show_bug.cgi?id=236431
rdar://87061239

Reviewed by Cameron McCormack.

LayoutTests/imported/w3c:

  • web-platform-tests/css/selectors/parsing/parse-has-expected.txt:
  • web-platform-tests/css/selectors/parsing/parse-has.html:

Source/WebCore:

Test: fast/selectors/malformed-has.html

  • css/parser/CSSSelectorParser.cpp: (WebCore::isOnlyPseudoClassFunction):

:has() is legal, plain :has is not.

LayoutTests:

  • fast/selectors/malformed-has-expected.txt: Added.
  • fast/selectors/malformed-has.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289526 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290688] by Alan Coon
  • 4 edits in branches/safari-613-branch

Cherry-pick r289502. rdar://problem/88528286

WKWebView: WKURLSchemeHandler “request to the end of the resource” produces an invalid header
​https://bugs.webkit.org/show_bug.cgi?id=236401
rdar://88528286

Reviewed by Brent Fulgham.

Source/WebCore:

​https://webkit.org/b/203302 added support for Range requests to AVAssetResourceLoadingDataRequest,
but it incorrectly used '*' instead of for "last-byte-pos:" for a request to the end of the resource.

API test URLSchemeHandler.Ranges was updated.

  • platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm: (WebCore::WebCoreAVFResourceLoader::startLoading):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289502 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290687] by Alan Coon
  • 4 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r289493. rdar://problem/88321921

Register strings in CSSTokenizer created from preprocessing
​https://bugs.webkit.org/show_bug.cgi?id=236309

Patch by Gabriel Nava Marino <​gnavamarino@apple.com> on 2022-02-09
Reviewed by Michael Saboff.

Register strings in CSSTokenizer created from preprocessing. This will align with
what is currently done for strings with escapes in CSSTokenizer::consumeName().

  • css/parser/CSSTokenizer.cpp: (WebCore::CSSTokenizer::preprocessString): (WebCore::CSSTokenizer::tryCreate): (WebCore::CSSTokenizer::CSSTokenizer): (WebCore::preprocessString): Deleted.
  • css/parser/CSSTokenizer.h:
  • css/parser/CSSTokenizerInputStream.h:

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289493 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:49 PM Changeset in webkit [290686] by Alan Coon
  • 14 edits
    2 adds in branches/safari-613-branch

Cherry-pick r289462. rdar://problem/88580935

Don't return an empty value from AbortController.signal.reason and make it harder to return empty values from JSValueInWrappedObject
​https://bugs.webkit.org/show_bug.cgi?id=236318
<rdar://88580935>

Reviewed by Mark Lam.

Source/WebCore:

This patch makes it so we might not accidentally return the empty value to
JavaScript code from JSValueInWrappedObject. Previously, JSValueInWrappedObject
had an "operator JSValue()" method. This patch removes that, adds a new
conversion method for converting between JSValueInWrappedObject and JSValue,
and makes JSValueInWrappedObject return undefined inside this method
when it used to return the empty value. This fixes a crash where we'd return
the empty value to JS JIT code, and crash dereferencing a nullptr. It's never
valid for a JS function call (or getter, etc) to return the empty value.

Test: fast/dom/AbortSignal-reason-crash-2.html

  • Modules/webaudio/AudioBuffer.cpp: (WebCore::AudioBuffer::getChannelData):
  • Modules/webaudio/AudioWorkletProcessor.cpp: (WebCore::toJSArray): (WebCore::toJSObject): (WebCore::AudioWorkletProcessor::buildJSArguments):
  • bindings/js/JSCustomEventCustom.cpp: (WebCore::JSCustomEvent::detail const):
  • bindings/js/JSDOMConvertAny.h: (WebCore::JSConverter<IDLAny>::convert):
  • bindings/js/JSMessageEventCustom.cpp: (WebCore::JSMessageEvent::data const):
  • bindings/js/JSPaymentMethodChangeEventCustom.cpp: (WebCore::JSPaymentMethodChangeEvent::methodDetails const):
  • bindings/js/JSPopStateEventCustom.cpp: (WebCore::JSPopStateEvent::state const):
  • bindings/js/JSValueInWrappedObject.h: (WebCore::JSValueInWrappedObject::getValue const): (WebCore::JSValueInWrappedObject::operator bool const): (WebCore::cachedPropertyValue): (WebCore::JSValueInWrappedObject::operator JSC::JSValue const): Deleted.
  • dom/AbortSignal.cpp: (WebCore::AbortSignal::signalFollow): (WebCore::AbortSignal::throwIfAborted):
  • dom/ErrorEvent.cpp: (WebCore::ErrorEvent::error): (WebCore::ErrorEvent::trySerializeError):
  • dom/PopStateEvent.cpp: (WebCore::PopStateEvent::trySerializeState):
  • page/History.cpp: (WebCore::History::cachedState):

LayoutTests:

  • fast/dom/AbortSignal-reason-crash-2-expected.txt: Added.
  • fast/dom/AbortSignal-reason-crash-2.html: Added.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289462 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:48 PM Changeset in webkit [290685] by Alan Coon
  • 3 edits
    2 adds in branches/safari-613-branch

Cherry-pick r289443. rdar://problem/88593617

REGRESSION (15.4): Angular virtual scrollers no longer work (because of contain:strict)
​https://bugs.webkit.org/show_bug.cgi?id=236260

Patch by Rob Buis <​rbuis@igalia.com> on 2022-02-08
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-contain/contain-paint-049-expected.txt: Added.
  • web-platform-tests/css/css-contain/contain-paint-049.html: Added.

Source/WebCore:

Paint containment did not allow collecting scrollable overflow, breaking scrolling
of the container contents, this patch fixes that.

Test: imported/w3c/web-platform-tests/css/css-contain/contain-paint-049.html

  • rendering/RenderBox.cpp: (WebCore::RenderBox::addOverflowFromChild):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289443 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:48 PM Changeset in webkit [290684] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r289380. rdar://problem/86904276

Reduce allocations and increase thread safety of constructedPath
​https://bugs.webkit.org/show_bug.cgi?id=236286
<rdar://86904276>

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-02-08
Reviewed by Chris Dumez.

  • UIProcess/API/APIContentRuleListStore.cpp: (API::constructedPathPrefix): (API::ContentRuleListStore::getAvailableContentRuleListIdentifiers):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289380 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:48 PM Changeset in webkit [290683] by Alan Coon
  • 6 edits in branches/safari-613-branch

Cherry-pick r289377. rdar://problem/88178304

Return 'none' for the computed style of mask when there are no mask images
​https://bugs.webkit.org/show_bug.cgi?id=236265
<rdar://88178304>

Patch by Matt Woodrow <Matt Woodrow> on 2022-02-08
Reviewed by Dean Jackson.

Source/WebCore:

Rather than returning all the longhand properties, return 'none' if there are no
mask images. This no longer matches the behaviour of the 'background' property, but
better matches what other UAs do.

Ideally we'd return the smallest possible canonical representation of the non-initial
property values, but this is a much simpler change to fix a compat regression.

Test: fast/masking/parsing-mask.html
Updates expected results to match new behavior.

  • css/CSSComputedStyleDeclaration.cpp: (WebCore::ComputedStyleExtractor::getLayerCount): (WebCore::ComputedStyleExtractor::getFillLayerPropertyShorthandValue): (WebCore::ComputedStyleExtractor::getBackgroundShorthandValue): (WebCore::ComputedStyleExtractor::getMaskShorthandValue):
  • css/CSSComputedStyleDeclaration.h:

LayoutTests:

  • fast/masking/parsing-mask-expected.txt:
  • fast/masking/parsing-mask.html:

Updated expected results to expect 'none' for all cases where there isn't an actual mask
image.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@289377 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:47 PM Changeset in webkit [290682] by Fujii Hironori
  • 2 edits in trunk/Tools

[WinCairo][pywebsocket3] UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 640: character maps to <undefined>
​https://bugs.webkit.org/show_bug.cgi?id=237339

Reviewed by Jonathan Bedard.

After r290580 started to use pywebsocket3 and Python 3, Windows
Python couldn't start WebSocket server due to UnicodeDecodeError.

  • Scripts/webkitpy/port/win.py:

(WinPort.setup_environ_for_server): Added PYTHONUTF8 environment variable.

3:46 PM WebKitGTK/2.36.x edited by Michael Catanzaro
(diff)
3:35 PM Changeset in webkit [290681] by commit-queue@webkit.org
  • 13 edits in trunk/Source

Misc compiler warnings, late Feb 2022 edition
​https://bugs.webkit.org/show_bug.cgi?id=237275

Patch by Michael Catanzaro <Michael Catanzaro> on 2022-03-01
Reviewed by Adrian Perez de Castro.

Source/JavaScriptCore:

Suppress suspected false-positive -Wstringop-overflow and -Wformat-overflow warnings. Also,
remove an unused variable.

  • API/tests/MultithreadedMultiVMExecutionTest.cpp:

(startMultithreadedMultiVMExecutionTest):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • ftl/FTLOSRExit.cpp:

(JSC::FTL::OSRExitDescriptor::prepareOSRExitHandle):

  • yarr/YarrJIT.cpp:

Source/WebCore:

Remove a redundant move. Sprinkle RELEASE_ASSERT_NOT_REACHED() as required to avoid
-Wreturn-type warnings.

  • Modules/push-api/PushDatabase.cpp:

(WebCore::openAndMigrateDatabaseImpl):

  • style/ContainerQueryEvaluator.cpp:

(WebCore::Style::ContainerQueryEvaluator::evaluateCondition const):
(WebCore::Style::ContainerQueryEvaluator::evaluateSizeFeature const):

  • style/ContainerQueryEvaluator.h:

(WebCore::Style::operator!):

  • style/StyleScope.cpp:

(WebCore::Style::Scope::updateQueryContainerState):

Source/WebKit:

Delete an unused function. Remove a redundant move.

  • Shared/AuxiliaryProcess.cpp:

(WebKit::applySandboxProfileForDaemon): Deleted.

  • Shared/WebFoundTextRange.cpp:

(WebKit::WebFoundTextRange::decode):

3:30 PM Changeset in webkit [290680] by achristensen@apple.com
  • 4 edits in trunk/Source/WebKit

Prepare to add more files to WebKit
​https://bugs.webkit.org/show_bug.cgi?id=237343

Reviewed by Chris Dumez.

This fixes the build after bug 237234, and it's unrelated so I pulled it into a different patch.

  • Scripts/generate-unified-sources.sh:
  • UIProcess/Cocoa/WebURLSchemeHandlerCocoa.mm:
  • WebKit.xcodeproj/project.pbxproj:
3:16 PM Changeset in webkit [290679] by Said Abou-Hallawa
  • 32 edits
    2 adds in trunk

Source/WebCore:
[macOS][REGRESSION] (r289518): Form controls are scaled twice on Retina display
​https://bugs.webkit.org/show_bug.cgi?id=237128
rdar://89064642

Reviewed by Darin Adler.

Using the name GraphicsContext::createImageBuffer() for different behaviors
was a mistake in r289518. To clean this up, the createImageBuffer() version
which scales the GraphicsContext of the ImageBuffer will be renamed
createScaledImageBuffer(). and the existing createCompatibleImageBuffer()
will be renamed createAlignedImageBuffer(). So we will have these three
methods in GraphicsContext:

1) createImageBuffer(): The default behavior of this method is to create

an ImageBuffer similar to the underlying ImageBuffer of GraphicsContext.
But it gives ability to change the renderingMode and the renderingMethod.
It can be forced to create a non-accelerated local ImageBuffer for example.

The caller of this method usually uses a framework to draw some custom
drawing and it just needs a scratch buffer to be drawn in the place of
a render object. The caller does not require any transformation to be
applied to the GraphicsContext of the ImageBuffer before starting its
custom drawing. Drawing the form controls using AppKit is an example
of such case.

2) createScaledImageBuffer(): This is similar to createImageBuffer() but

it always creates the ImageBuffer with resolutionScale = 1 so it has
to scale the size by the scaleFactor before calling createImageBuffer().
It also scales the GraphicsContext of the created ImageBuffer with the
scaleFactor and it translates its coordinates origin for the FloatRect
version. It also handles the clamping if needed.

This method is suitable for cases when the overall scaleFatcor
(device ScaleFactor + clamping ScaleFactor) has be known to the caller
in advance. No clamping will be required in this case. SVG filter,
masker, clipper and gradient are the callers to this function.

3) createAlignedImageBuffer(): This is similar to createScaledImageBuffer()

but it does not take a scaling factor argument. It inherits it from
the GraphicsContext.

Usually the purpose of this method is to transfer the drawing from a
layer to a scratch ImageBuffer temporarily then draw the scratch
ImageBuffer in the place of the original drawing. Drawing a PDFDocument
image, for example, requires using this method.

To fix this bug:

Form controls have to use the first version of createImageBuffer() which
still has the same name instead of using the second version which will
be renamed createScaledImageBuffer().

Another cleaning is to pass RenderingMethod as an std::optional argument
the three methods. This means we do not need the value "Default" since
passing std::nullopt will have the same meaning.

Test: fast/hidpi/hidpi-form-controls-drawing-size.html

  • html/CustomPaintCanvas.cpp:

(WebCore::CustomPaintCanvas::replayDisplayList const):

  • html/CustomPaintImage.cpp:

(WebCore::CustomPaintImage::drawPattern):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::drawImage):
(WebCore::CanvasRenderingContext2DBase::drawTextUnchecked):

  • platform/cocoa/ThemeCocoa.mm:

(WebCore::drawApplePayButton):

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::drawPattern):

  • platform/graphics/GradientImage.cpp:

(WebCore::GradientImage::drawPattern):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::createImageBuffer const):
(WebCore::GraphicsContext::createScaledImageBuffer const):
(WebCore::GraphicsContext::createAlignedImageBuffer const):
(WebCore::GraphicsContext::createCompatibleImageBuffer const): Deleted.

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::createScaledImageBuffer):
(WebCore::GraphicsContext::createImageBuffer): Deleted.

  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::clone const):

  • platform/graphics/NamedImageGeneratedImage.cpp:

(WebCore::NamedImageGeneratedImage::drawPattern):

  • platform/graphics/cg/PDFDocumentImage.cpp:

(WebCore::PDFDocumentImage::updateCachedImageIfNeeded):
(WebCore::PDFDocumentImage::draw):

  • platform/graphics/coretext/DrawGlyphsRecorderCoreText.cpp:

(WebCore::DrawGlyphsRecorder::drawOTSVGRun):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::createImageBuffer const):

  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/mac/ThemeMac.mm:

(WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderLayerBacking.cpp:

(WebCore::patternForDescription):

  • rendering/RenderLayerFilters.cpp:

(WebCore::RenderLayerFilters::allocateBackingStoreIfNeeded):

  • rendering/RenderThemeCocoa.mm:

(WebCore::RenderThemeCocoa::paintApplePayButton):

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::paintListButtonForInput):
(WebCore::RenderThemeMac::paintProgressBar):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::applyClippingToContext):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::applyResource):

  • rendering/svg/RenderSVGResourceGradient.cpp:

(WebCore::createMaskAndSwapContextForTextGradient):

  • rendering/svg/RenderSVGResourceMasker.cpp:

(WebCore::RenderSVGResourceMasker::applyResource):

  • rendering/svg/RenderSVGResourcePattern.cpp:

(WebCore::RenderSVGResourcePattern::createTileImage const):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::bufferForeground):

Source/WebKit:
[macOS][REGRESSION] (rr289518): Form controls are scaled twice on Retina display
​https://bugs.webkit.org/show_bug.cgi?id=237128
rdar://89064642

Reviewed by Darin Adler.

  • WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:

(WebKit::RemoteDisplayListRecorderProxy::createImageBuffer const):
(WebKit::RemoteDisplayListRecorderProxy::createAlignedImageBuffer const):
(WebKit::RemoteDisplayListRecorderProxy::createCompatibleImageBuffer const): Deleted.

  • WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:

LayoutTests:
[macOS][REGRESSION] (rr289518): Form controls are scaled twice on Retina display
​https://bugs.webkit.org/show_bug.cgi?id=237128
rdar://89064642

Reviewed by Darin Adler.

  • fast/hidpi/hidpi-form-controls-drawing-size-expected.html: Added.
  • fast/hidpi/hidpi-form-controls-drawing-size.html: Added.
3:07 PM Changeset in webkit [290678] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ Win ] 4X imported/mozilla/svg/blend(layout-tests) are constant Image Only Failures
​https://bugs.webkit.org/show_bug.cgi?id=237344

Unreviewed test gardening. Skipping, for Windows instead of adding an expectation.

  • platform/win/TestExpectations:
3:03 PM Changeset in webkit [290677] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ Win ] 4X imported/mozilla/svg/blend(layout-tests) are constant Image Only Failures
​https://bugs.webkit.org/show_bug.cgi?id=237344

Unreviewed test gardening.

  • platform/win/TestExpectations:
2:27 PM Changeset in webkit [290676] by eric.carlson@apple.com
  • 7 edits
    4 adds in trunk

[Cocoa] HLS stream currentTime sometimes jumps backwards
​https://bugs.webkit.org/show_bug.cgi?id=235087
rdar://83831093

Reviewed by Dean Jackson.

Source/WebCore:

Test: http/tests/media/hls/hls-non-zero-start-time.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::updateActiveTextTrackCues): Drive-by: pass log identifier
to lambda so the method name will be logged correctly.
(WebCore::HTMLMediaElement::currentMediaTime const): Remove LOG_CACHED_TIME_WARNINGS
build flag, always log time drift warnings when log level is DEBUG.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer): Log when periodic
time observer is passed unexpected values.
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem): Use
NSKeyValueObservingOptionInitial KVO option for "@duration" property because we
sometimes don't get a duration changed event for HLS streams, so m_cachedDuration
remains invalid.
(WebCore::MediaPlayerPrivateAVFoundationObjC::currentMediaTimeDidChange const):
Drive-by: fix use-after-move.

Source/WebKit:

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::currentTimeChanged): Always notify player when
time jumps backwards.

LayoutTests:

  • http/tests/media/hls/hls-non-zero-start-time-expected.txt: Added.
  • http/tests/media/hls/hls-non-zero-start-time.html: Added.
  • http/tests/media/resources/hls/bip-bop-live.m3u8: Added.
  • http/tests/media/resources/hls/bipbop/start-offset.m3u8: Added.
  • http/tests/media/resources/hls/bipbop/start-offset.ts: Added.
2:06 PM Changeset in webkit [290675] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

Remove release assert when UI process is blocking IOSurface IOKit access
​https://bugs.webkit.org/show_bug.cgi?id=237278
<rdar://problem/89585043>

Unreviewed, address review comments.

Log error instead of creating CrashTracer reports.

  • platform/graphics/cocoa/IOSurface.mm:

(WebCore::IOSurface::bytesPerRowAlignment):

1:57 PM Changeset in webkit [290674] by Matt Woodrow
  • 4 edits in trunk

Use static position relative to parent for abs-pos items within nested grids.
​https://bugs.webkit.org/show_bug.cgi?id=236957

Reviewed by Dean Jackson.

Source/WebCore:

In the case where an absolutely positioned element's parent and containing block
are both grid container, but they are not the same grid container, then the static position
of the abs-pos item should be relative to the parent, not the CB.

Existing subgrid tests marked as passing.

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::setLogicalOffsetForChild const):

LayoutTests:

Existing subgrid tests marked as passing.

1:44 PM Changeset in webkit [290673] by Andres Gonzalez
  • 4 edits in trunk

Make accessibility/aria-hidden-false-works-in-subtrees.html async to pass in isolated tree mode.
​https://bugs.webkit.org/show_bug.cgi?id=237051
<rdar://problem/89312156>

Reviewed by Chris Fleizach.

Tools:

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:

(WTR::AccessibilityController::accessibleElementById):
Convert the JSStringRef to NSString on the main thread and capture the
NSString to be used on the AX secondary thread. This may be safer since
JSStringRefs are supposed to be used on the main thread.

LayoutTests:

  • accessibility/aria-hidden-false-works-in-subtrees.html:

Made both the main script and the iframe onload function async to pass
in isolated tree mode.

1:28 PM Changeset in webkit [290672] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[IFC][Integration] Add InlineIterator::Box::visualRect
​https://bugs.webkit.org/show_bug.cgi?id=237309

Reviewed by Antti Koivisto.

This is the final, flipped version of the box rect.

  • layout/integration/InlineIteratorBox.h:

(WebCore::InlineIterator::Box::visualRect const):

  • rendering/InlineBoxPainter.cpp:

(WebCore::InlineBoxPainter::paintMask):
(WebCore::InlineBoxPainter::paintDecorations):

  • rendering/TextBoxPainter.cpp:

(WebCore::TextBoxPainter::computePaintRect):

1:19 PM Changeset in webkit [290671] by Patrick Angle
  • 5 edits in trunk/Source/WebCore

Web app fails only when dev tools is open
​https://bugs.webkit.org/show_bug.cgi?id=235017

Reviewed by Devin Rousso.

Using the ScriptExecutionContext from event.target()->scriptExecutionContext() can result the either having a
different script context from the one used when calling willHandleEvent, or the event target's context could be
nullptr. This can occur when handling the event in EventTarget::innerInvokeEventListeners results in a
context change for the event's target, like a MessagePort that has been disentangled, which sets the script
execution context to nullptr. Because we only need the script execution context to get the correct injected
script, and the correct injected script for the action below will always be the same injected script used in
willHandleEvent, we ignore the current script execution context of the event's target and use the context the
event's target had when it began invoking event listeners.

This change protects us both from the reported crash, as well as leaving an injected script in a bad state
because we did not call setEventValue and clearEventValue on matching injected scripts for a single event.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::willHandleEventImpl):
(WebCore::InspectorInstrumentation::didHandleEventImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::willHandleEvent):
(WebCore::InspectorInstrumentation::didHandleEvent):

  • inspector/agents/InspectorDOMDebuggerAgent.cpp:

(WebCore::InspectorDOMDebuggerAgent::willHandleEvent):
(WebCore::InspectorDOMDebuggerAgent::didHandleEvent):

  • inspector/agents/InspectorDOMDebuggerAgent.h:
1:02 PM Changeset in webkit [290670] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ Monterey wk2 ] http/tests/media/video-webm-stall.html is a constant text failure
​https://bugs.webkit.org/show_bug.cgi?id=236788

Unreviewed test gardening.

Patch by Matteo Flores <Matteo Flores> on 2022-03-01

  • platform/mac-wk2/TestExpectations:
12:57 PM Changeset in webkit [290669] by sihui_liu@apple.com
  • 3 edits in trunk/Source/WebKit

Move StorageBucket function definitions outside the class definition
​https://bugs.webkit.org/show_bug.cgi?id=237300

Reviewed by Chris Dumez.

  • NetworkProcess/storage/NetworkStorageManager.h:
  • NetworkProcess/storage/OriginStorageManager.cpp:

(WebKit::OriginStorageManager::StorageBucket::mode const):
(WebKit::OriginStorageManager::StorageBucket::setMode):
(WebKit::OriginStorageManager::StorageBucket::StorageBucket):
(WebKit::OriginStorageManager::StorageBucket::connectionClosed):
(WebKit::OriginStorageManager::StorageBucket::toStorageIdentifier const):
(WebKit::OriginStorageManager::StorageBucket::typeStoragePath const):
(WebKit::OriginStorageManager::StorageBucket::fileSystemStorageManager):
(WebKit::OriginStorageManager::StorageBucket::localStorageManager):
(WebKit::OriginStorageManager::StorageBucket::existingLocalStorageManager):
(WebKit::OriginStorageManager::StorageBucket::sessionStorageManager):
(WebKit::OriginStorageManager::StorageBucket::existingSessionStorageManager):
(WebKit::OriginStorageManager::StorageBucket::idbStorageManager):
(WebKit::OriginStorageManager::StorageBucket::existingIDBStorageManager):
(WebKit::OriginStorageManager::StorageBucket::isActive const):
(WebKit::OriginStorageManager::StorageBucket::isEmpty):
(WebKit::OriginStorageManager::StorageBucket::fetchDataTypesInList):
(WebKit::OriginStorageManager::StorageBucket::fetchDataTypesInListFromMemory):
(WebKit::OriginStorageManager::StorageBucket::fetchDataTypesInListFromDisk):
(WebKit::OriginStorageManager::StorageBucket::deleteData):
(WebKit::OriginStorageManager::StorageBucket::deleteFileSystemStorageData):
(WebKit::OriginStorageManager::StorageBucket::deleteLocalStorageData):
(WebKit::OriginStorageManager::StorageBucket::deleteSessionStorageData):
(WebKit::OriginStorageManager::StorageBucket::deleteIDBStorageData):
(WebKit::OriginStorageManager::StorageBucket::moveData):
(WebKit::OriginStorageManager::StorageBucket::resolvedLocalStoragePath):
(WebKit::OriginStorageManager::StorageBucket::resolvedIDBStoragePath):
(WebKit::OriginStorageManager::StorageBucket::toWebsiteDataType): Deleted.
(WebKit::OriginStorageManager::StorageBucket::toStorageIdentifier): Deleted.

12:08 PM Changeset in webkit [290668] by Russell Epstein
  • 1 copy in tags/Safari-614.1.3.7

Tag Safari-614.1.3.7.

12:01 PM Changeset in webkit [290667] by Martin Robinson
  • 19 edits in trunk

When interpolating between transform lists partial prefix matches should not use matrix interpolation
​https://bugs.webkit.org/show_bug.cgi?id=235757
<rdar://problem/88477922>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-transforms/animation/list-interpolation-expected.txt: Mark subtests as passing.
  • web-platform-tests/css/css-transforms/animation/transform-composition-expected.txt: Ditto.
  • web-platform-tests/css/css-transforms/animation/transform-interpolation-004-expected.txt: Ditto.

Source/WebCore:

No new tests. This is covered by existing WPT tests.

When interpolation between keyframes in transform animations, interpolate prefixes of
compatible transform functions directly. For instance if there are three keyframes:

  1. transform: rotateX(...) translateY(...) skew(...)
  2. transform: rotateY(...) translateY(...)
  3. transform: rotateZ(...) translateZ(...) matrix3d(...)

There will be a directly interpolated rotation animation, a directly interpolated
translation animation, and finally a matrix animation for the remaining functions.
This is important for preserving transforms (such as full rotations) that are lost
during matrix decompose and recompose operations.

This change adds a new helper class SharedPrimitivesPrefix which is used to calculate
the prefix of shared primitives that are shared between keyframes.

Currently, the Core Animation backend only supports animation transformation primitives
across the entire animation, so shared primitive prefixes must span the entire animation
if an animation is accelerated. In the case that an animation is rendered in software,
this prefix can simply be between the current next and previous keyframes.

TransformOperations::blend is extended to blend any two TransformationOperations, which
makes it the only blend function necessary for software animations, computed CSS values,
and for the Nicosia backend, simplifying the interpolation code path.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):

  • animation/CSSPropertyBlendingClient.h:
  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::checkForMatchingTransformFunctionLists):
(WebCore::KeyframeEffect::computeExtentOfTransformAnimation const):

  • animation/KeyframeEffect.h:
  • platform/graphics/GraphicsLayer.cpp:

(WebCore::operationsAt): Deleted.
(WebCore::GraphicsLayer::getSharedPrimitivesForTransformKeyframes): Deleted.

  • platform/graphics/GraphicsLayer.h:
  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::appendToUncommittedAnimations):
(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
(WebCore::GraphicsLayerCA::setTransformAnimationKeyframes):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/graphics/nicosia/NicosiaAnimation.cpp:

(Nicosia::applyTransformAnimation):
(Nicosia::Animation::Animation):
(Nicosia::Animation::operator=):
(Nicosia::Animation::applyInternal):

  • platform/graphics/nicosia/NicosiaAnimation.h:
  • platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:

(WebCore::GraphicsLayerTextureMapper::addAnimation):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::addAnimation):

  • platform/graphics/transforms/TransformOperations.cpp:

(WebCore::SharedPrimitivesPrefix::update):
(WebCore::TransformOperations::blend const):
(WebCore::TransformOperations::createBlendedMatrixOperationFromOperationsSuffix const):
(WebCore::TransformOperations::operationsMatch const): Deleted.
(WebCore::TransformOperations::updateSharedPrimitives const): Deleted.
(WebCore::TransformOperations::blendByMatchingOperations const): Deleted.
(WebCore::TransformOperations::blendByUsingMatrixInterpolation const): Deleted.

  • platform/graphics/transforms/TransformOperations.h:

(WebCore::TransformOperations::apply const):
(WebCore::SharedPrimitivesPrefix::hadIncompatibleTransformFunctions):
(WebCore::SharedPrimitivesPrefix::primitives):

11:53 AM Changeset in webkit [290666] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Monterey ] webaudio/decode-audio-data-webm-vorbis.html is constantly failing
​https://bugs.webkit.org/show_bug.cgi?id=236328

Unreviewed test gardening.

Patch by Matteo Flores <Matteo Flores> on 2022-03-01

  • platform/mac-wk2/TestExpectations:
11:42 AM Changeset in webkit [290665] by Robert Jenner
  • 2 edits in trunk/LayoutTests

WindowServer returned not alive with context:,unresponsive work processor(s)
<rdar://86037417>

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:38 AM Changeset in webkit [290664] by ysuzuki@apple.com
  • 15 edits in trunk/PerformanceTests

Fix Speedometer's setTimeout throttling issue
​https://bugs.webkit.org/show_bug.cgi?id=237303
rdar://89444976

Reviewed by Geoffrey Garen.

Speedometer is driving each test via setTimeout. Because we are using setTimeout to
measure async time in each subtest of Speedometer, our measurement included 4ms
throttle introduced due to nested setTimeout. This is happening in the test
harness (not test itself), and the intention of this test harness is not measuring
the throttle time. In this patch, we fix this nesting level propagation by inserting
window.requestAnimationFrame for each test run and BenchmarkRunner.prototype.waitForElement
so that we can reset nesting level count of setTimeout, which prevents the rendering
engine to insert 4ms throttle.

Since this affects on the score of async measurement, we bump the version number from 2.0 to 2.1

  • Speedometer/InteractiveRunner.html:
  • Speedometer/index.html:
  • Speedometer/resources/benchmark-runner.js:

(resolveIfReady):
(BenchmarkRunner.prototype.waitForElement):
(BenchmarkRunner.prototype._runTest):

  • Speedometer/resources/todomvc/architecture-examples/angular/README.md:
  • Speedometer/resources/todomvc/architecture-examples/angularjs/readme.md:
  • Speedometer/resources/todomvc/architecture-examples/backbone/readme.md:
  • Speedometer/resources/todomvc/architecture-examples/emberjs/README.md:
  • Speedometer/resources/todomvc/architecture-examples/preact/README.md:
  • Speedometer/resources/todomvc/architecture-examples/react-redux/README.md:
  • Speedometer/resources/todomvc/architecture-examples/react/README.md:
  • Speedometer/resources/todomvc/architecture-examples/vuejs-cli/README.md:
  • Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/README.md:
  • Speedometer/resources/todomvc/vanilla-examples/es2015/README.md:
  • Speedometer/resources/todomvc/vanilla-examples/vanillajs/readme.md:
11:34 AM Changeset in webkit [290663] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Unreviewed, reverting r290619.
​https://bugs.webkit.org/show_bug.cgi?id=237337

Introduced build failure

Reverted changeset:

"[iOS] Weak link AVPictureInPictureController"
​https://bugs.webkit.org/show_bug.cgi?id=237227
​https://commits.webkit.org/r290619

11:29 AM Changeset in webkit [290662] by graouts@webkit.org
  • 5 edits in trunk

[web-animations] ::placeholder should not be a valid pseudo-element for a KeyframeEffect target
​https://bugs.webkit.org/show_bug.cgi?id=237334

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt:

Source/WebCore:

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::setPseudoElement):

11:07 AM Changeset in webkit [290661] by Jonathan Bedard
  • 5 edits in trunk/Tools

[git-webkit] Gate information URL on initial setup
​https://bugs.webkit.org/show_bug.cgi?id=237325
<rdar://problem/89620175>

Reviewed by Aakash Jain.

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

(Setup.main): Offer to open documentation URL if repository has not been setup.

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

(TestSetup.test_github):

Canonical link: ​https://commits.webkit.org/247932@main

11:06 AM Changeset in webkit [290660] by youenn@apple.com
  • 2 edits in trunk/Source/WTF

Enable WebRTCRemoteVideoFrameEnabled by default on Cocoa ports
​https://bugs.webkit.org/show_bug.cgi?id=237201

Reviewed by Eric Carlson.

  • Scripts/Preferences/WebPreferencesInternal.yaml:
10:43 AM Changeset in webkit [290659] by commit-queue@webkit.org
  • 17 edits in trunk/Source

If the main resource was loaded over private relay, load all sub resources over private relay
​https://bugs.webkit.org/show_bug.cgi?id=237296

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-01
Reviewed by Geoffrey Garen.

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

I manually verified that this fixes rdar://88965550 when using the CFNetwork change in the related bug.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::createSocketChannel):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::transferToNewWebProcess):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::createWebSocketTask):

  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/NetworkSocketChannel.cpp:

(WebKit::NetworkSocketChannel::create):
(WebKit::NetworkSocketChannel::NetworkSocketChannel):

  • NetworkProcess/NetworkSocketChannel.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):

  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
(WebKit::NetworkSessionCocoa::createWebSocketTask):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::connect):

10:34 AM Changeset in webkit [290658] by youenn@apple.com
  • 4 edits in trunk/LayoutTests

fast/mediastream/getUserMedia-to-canvas-1.html and fast/mediastream/getUserMedia-to-canvas-2.html are failing on MacOS when remote video frame flag is enabled
​https://bugs.webkit.org/show_bug.cgi?id=237042
<rdar://problem/89298601>

Reviewed by Eric Carlson.

Video element videoWidth/videoHeight are updated when track settings are changed,
and not when video frames being received.

This does not guarantee that videoWidth/videoHeight (main thread) are fully in sync
with the actual video frames (background thread) when there is a change of size.

We might be able to tighten this in MediaPlayerPrivateMediaStreamAVFObjC by only resorting on video frames.
In the meantime, we update the test to set the orientation before creating the source.
This makes sure the video frames have the expected size and rotation.

  • fast/mediastream/getUserMedia-to-canvas-1.html:
  • fast/mediastream/getUserMedia-to-canvas-2.html:
  • fast/mediastream/resources/getUserMedia-to-canvas.js:
10:34 AM Changeset in webkit [290657] by Russell Epstein
  • 9 edits in branches/safari-614.1.3-branch/Source

Versioning.

WebKit-7614.1.3.7

10:22 AM Changeset in webkit [290656] by commit-queue@webkit.org
  • 8 edits in trunk/Source

[AppleWin] Start using Visual Studio 2022
​https://bugs.webkit.org/show_bug.cgi?id=234933

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-03-01
Reviewed by Maciej Stachowiak.

Source/JavaScriptCore:

Source/WebCore:

  • WebCore.vcxproj/WebCore.proj:

Source/WebKitLegacy:

  • WebKitLegacy.vcxproj/WebKitLegacy.proj:

Source/WTF:

  • WTF.vcxproj/WTF.proj:
10:14 AM Changeset in webkit [290655] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] add support for passing an optional timeline to Element.animate()
​https://bugs.webkit.org/show_bug.cgi?id=237312

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt:

Source/WebCore:

  • animation/KeyframeAnimationOptions.h:
  • animation/KeyframeAnimationOptions.idl:
  • dom/Element.cpp:

(WebCore::Element::animate):

10:12 AM Changeset in webkit [290654] by jer.noble@apple.com
  • 6 edits
    3 adds in trunk/Source/WebKit

[Cocoa] Allow logging to be configured by NSDefaults (without regressing launch time)
​https://bugs.webkit.org/show_bug.cgi?id=237183

Reviewed by Darin Adler.

In r220780, code was added to WebProcessPoolCocoa to explicitly pass the results of a NSUserDefaults
to newly created WebContent processes to determine log channel levels. Later, in r232158, NSUserDefaults
were removed from the default logLevelString() implementations in WTF, WebCore, and WebKit to improve
process launch time performance. In r279796, the same technique sued in WebProcessPoolCocoa was added
to GPUProcessProxyCocoa to pass those log level strings to the GPUProcess. And then in r286484, all the
uses of NSUserDefaults were removed from WebProcessPoolCocoa and GPUProcessProxyCocoa were removed,
removing the ability to increase the log channel levels at runtime through NSUserDefualts.

Add back in the ability to define log levels for the UIProcess and all AuxiliaryProcesses without
regressing launch time by only checking the NSUserDefault once, only in the UIProcess, storing the result
in a static variable, and passing the results of that check to all AuxiliaryProcesses at creation time.

  • UIProcess/AuxiliaryProcessProxy.cpp:

(WebKit::AuxiliaryProcessProxy::auxiliaryProcessParameters):

  • UIProcess/Cocoa/UIProcessLogInitializationCocoa.mm: Added.

(WebKit::UIProcess::wtfLogLevelString):
(WebKit::UIProcess::webCoreLogLevelString):
(WebKit::UIProcess::webKitLogLevelString):

  • UIProcess/UIProcessLogInitialization.cpp: Added.

(WebKit::UIProcess::initializeLoggingIfNecessary):
(WebKit::UIProcess::wtfLogLevelString):
(WebKit::UIProcess::webCoreLogLevelString):
(WebKit::UIProcess::webKitLogLevelString):

  • UIProcess/UIProcessLogInitialization.h: Added.
  • UIProcess/WebProcessPool.cpp:
9:56 AM Changeset in webkit [290653] by youenn@apple.com
  • 3 edits in trunk/Source/WebKit

Annotate LibWebRTC with thread safety macros
​https://bugs.webkit.org/show_bug.cgi?id=237321

Reviewed by Eric Carlson.

LibWebRTCCodecs works with 3 threads and we add macros to make it clear where each thread is used:

  • the main thread to get its GPU process connection (isMainRunLoop()).
  • the libwebrtc thread where it gets orders to decode/encode frames (!isMainRunLoop())
  • the work queue thread where it is receiving encode/decode results (assertIsCurrent(workQueue())).

Rename m_encodersLock to m_encodersConnectionLock to make it clear this is about locking the encoder connection and not the encoder map.
Both decoder and encoder maps should only be touched on the workQueue thread.

Introduce encoderConnection/setEncoderConnection and decoderConnection/setDecoderConnection routines.
These methods are guarded by corresponding locks.
This requires adding some additional locks when accessing connections in workQueue thread.
Fix a potential issue when creating the encoder: we lock the encoderConnection lock earlier when setting the connection.

Covered by existing tests.

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::LibWebRTCCodecs::gpuProcessConnectionMayNoLongerBeNeeded):
(WebKit::LibWebRTCCodecs::createDecoder):
(WebKit::LibWebRTCCodecs::releaseDecoder):
(WebKit::LibWebRTCCodecs::decodeFrame):
(WebKit::LibWebRTCCodecs::registerDecodeFrameCallback):
(WebKit::LibWebRTCCodecs::failedDecoding):
(WebKit::LibWebRTCCodecs::completedDecoding):
(WebKit::LibWebRTCCodecs::completedDecodingCV):
(WebKit::LibWebRTCCodecs::createEncoder):
(WebKit::LibWebRTCCodecs::releaseEncoder):
(WebKit::LibWebRTCCodecs::initializeEncoder):
(WebKit::LibWebRTCCodecs::copySharedVideoFrame):
(WebKit::LibWebRTCCodecs::encodeFrame):
(WebKit::LibWebRTCCodecs::registerEncodeFrameCallback):
(WebKit::LibWebRTCCodecs::setEncodeRates):
(WebKit::LibWebRTCCodecs::completedEncoding):
(WebKit::LibWebRTCCodecs::gpuProcessConnectionDidClose):
(WebKit::LibWebRTCCodecs::encoderConnection):
(WebKit::LibWebRTCCodecs::setEncoderConnection):
(WebKit::LibWebRTCCodecs::decoderConnection):
(WebKit::LibWebRTCCodecs::setDecoderConnection):
(WebKit::copySharedVideoFrame): Deleted.

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:

(WebKit::LibWebRTCCodecs::workQueue const):

9:40 AM Changeset in webkit [290652] by J Pascoe
  • 2 edits in trunk/Tools

REGRESSION(r290539-r290538): [ iOS ] 3 TestWebKitAPI.WebAuthenticationPanel.* tests are constantly failing/crashing.
​https://bugs.webkit.org/show_bug.cgi?id=237285
rdar://problem/89579460

Reviewed by Brent Fulgham.

Remove obsolete API test and ensure another has clean state.

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST):

9:17 AM Changeset in webkit [290651] by Jonathan Bedard
  • 1 edit
    200 deletes in trunk/LayoutTests/imported/w3c

[Python 3] Delete old pywebsocket
​https://bugs.webkit.org/show_bug.cgi?id=237274
<rdar://problem/89558809>

Rubber-stamped by Aakash Jain.

  • LayoutTests/imported/w3c/web-platform-tests/tools/pywebsocket: Removed.

Canonical link: ​https://commits.webkit.org/247924@main

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

Unreviewed, reverting r290325.
​https://bugs.webkit.org/show_bug.cgi?id=237326

Broken patch

Reverted changeset:

"[GStreamer] Switch media player to playbin3"
​https://bugs.webkit.org/show_bug.cgi?id=236884
​https://commits.webkit.org/r290325

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

[IFC][Integration] InlineIterator::Box::rect() returns the unflipped visual rect
​https://bugs.webkit.org/show_bug.cgi?id=237304

Reviewed by Antti Koivisto.

Rename InlineIterator::Box::rect() to visualRectIgnoringBlockDirection().
This is the unflipped version of the visual rect. It's no longer logical but
when the writing mode sets right-to-left/bottom-to-top block direction, it's not yet visual either.
It'll help to indentify callsites where we actually need the flipped version of this visual rect.

  • layout/formattingContexts/inline/display/InlineDisplayBox.h:

(WebCore::InlineDisplay::Box::unflippedVisualRect const):
(WebCore::InlineDisplay::Box::top const):
(WebCore::InlineDisplay::Box::bottom const):
(WebCore::InlineDisplay::Box::left const):
(WebCore::InlineDisplay::Box::right const):
(WebCore::InlineDisplay::Box::width const):
(WebCore::InlineDisplay::Box::height const):
(WebCore::InlineDisplay::Box::moveVertically):
(WebCore::InlineDisplay::Box::moveHorizontally):
(WebCore::InlineDisplay::Box::setLeft):
(WebCore::InlineDisplay::Box::setRight):
(WebCore::InlineDisplay::Box::setTop):
(WebCore::InlineDisplay::Box::setBottom):
(WebCore::InlineDisplay::Box::setRect):
(WebCore::InlineDisplay::Box::Box):
(WebCore::InlineDisplay::Box::truncate):
(WebCore::InlineDisplay::Box::rect const): Deleted.

  • layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::adjustVisualGeometryForDisplayBox):

  • layout/integration/InlineIteratorBox.h:

(WebCore::InlineIterator::Box::logicalTop const):
(WebCore::InlineIterator::Box::logicalBottom const):
(WebCore::InlineIterator::Box::logicalLeft const):
(WebCore::InlineIterator::Box::logicalRight const):
(WebCore::InlineIterator::Box::logicalWidth const):
(WebCore::InlineIterator::Box::logicalHeight const):
(WebCore::InlineIterator::Box::unflippedVisualRect const):
(WebCore::InlineIterator::Box::rect const): Deleted.

  • layout/integration/InlineIteratorBoxLegacyPath.h:

(WebCore::InlineIterator::BoxLegacyPath::unflippedVisualRect const):
(WebCore::InlineIterator::BoxLegacyPath::rect const): Deleted.

  • layout/integration/InlineIteratorBoxModernPath.h:

(WebCore::InlineIterator::BoxModernPath::unflippedVisualRect const):
(WebCore::InlineIterator::BoxModernPath::createTextRun const):
(WebCore::InlineIterator::BoxModernPath::rect const): Deleted.

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::showInlineContent):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::firstInlineBoxRect const):
(WebCore::LayoutIntegration::LineLayout::collectInlineBoxRects const):
(WebCore::LayoutIntegration::LineLayout::hitTest):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::showInlineTreeAndRuns):

  • rendering/InlineBoxPainter.cpp:

(WebCore::InlineBoxPainter::paintMask):
(WebCore::InlineBoxPainter::paintDecorations):
(WebCore::InlineBoxPainter::paintFillLayer):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::addFocusRingRectsForInlineChildren):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
(WebCore::RenderBoxModelObject::calculateBackgroundImageGeometry const):
(WebCore::pixelSnapBackgroundImageGeometryForPainting): Deleted.

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::paintOutline):

  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::linesBoundingBox const):
(WebCore::RenderLineBreak::absoluteRects const):
(WebCore::RenderLineBreak::absoluteQuads const):

  • rendering/RenderText.cpp:

(WebCore::RenderText::absoluteRects const):
(WebCore::boundariesForTextRun):
(WebCore::localQuadForTextRun):
(WebCore::RenderText::firstRunLocation const):
(WebCore::RenderText::linesBoundingBox const):

  • rendering/RenderTreeAsText.cpp:

(WebCore::write):

  • rendering/TextBoxPainter.cpp:

(WebCore::TextBoxPainter::computePaintRect):

8:18 AM Changeset in webkit [290648] by Chris Dumez
  • 2 edits in trunk/LayoutTests

[Debug] imported/w3c/web-platform-tests/url/toascii.window.html is crashing
​https://bugs.webkit.org/show_bug.cgi?id=236442
<rdar://problem/89085190>

Unreviewed, unskip test as it no longer appears to crash in Debug.

7:42 AM Changeset in webkit [290647] by commit-queue@webkit.org
  • 35 edits
    1 add in trunk/Source

[JSC] Port EXTRA_CTI_THUNKS to all platforms
​https://bugs.webkit.org/show_bug.cgi?id=233822

Patch by Geza Lore <Geza Lore> on 2022-03-01
Reviewed by Saam Barati.

Source/JavaScriptCore:

Port and enable all code paths under #ifdef ENABLE(EXTRA_CTI_THUNKS)
on all platforms, and remove the now unused code paths.

To port the extra thunks to all platforms, it was necessary to enable
them to do function calls to C++ slow path operations, which on some
platforms require passing arguments on the stack. To enable this,
CCallHelpers::emitCTIThunkPrologue and
CCallHelpers::emitCTIThunkEpilogue are introduced that allocate some
additional stack space on platforms where this is necessary.

Additionally, the thunks that require subsequent exception checking
now tail call directly to the exception check thunk, rather than
returning to the baseline code and do a separate call to the exception
check thunk. This saves an extra call site in the generated baseline
ops and reduces code size on all platforms (~1.5% reduction on x86_64).

Also factored out the statically allocated register definitions for
baseline ops into BaselineJITRegisters.h, as there are now quite a lot
of them and some are somewhat elaborate. This necessitates moving the
noOverlap and preferredArgumentGPR/preferredArgumentJSR constexpr
functions out from their previous place, so these now live in
GPRInfo.h

Enabling the extra CTI thunks on ARMv7/Thumb-2 saves about 25%
baseline code size, according to --dumpLinkBufferStats.

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::subPtr):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::scratchRegister):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::sub64):

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessGenerationState::emitExplicitExceptionHandler):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::initializeFromUnlinkedStructureStubInfo):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::link):
(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):

  • dfg/DFGJITCompiler.h:
  • ftl/FTLCompile.cpp:

(JSC::FTL::compile):

  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::emitCTIThunkPrologue):
(JSC::CCallHelpers::emitCTIThunkEpilogue):

  • jit/JIT.cpp:

(JSC::JIT::emitSlowCaseCall):
(JSC::JIT::privateCompileSlowCases):
(JSC::JIT::compileAndLinkWithoutFinalizing):
(JSC::JIT::link):

  • jit/JIT.h:
  • jit/JITArithmetic.cpp:

(JSC::JIT::emitSlow_op_mod):
(JSC::JIT::emit_op_mod):
(JSC::JIT::emit_op_div):

  • jit/JITCall.cpp:

(JSC::JIT::emit_op_iterator_open):
(JSC::JIT::emit_op_iterator_next):
(JSC::JIT::emitSlow_op_iterator_next):

  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITGetByIdGenerator::generateBaselineDataICFastPath):
(JSC::JITGetByIdWithThisGenerator::generateBaselineDataICFastPath):
(JSC::JITPutByIdGenerator::generateBaselineDataICFastPath):

  • jit/JITInlineCacheGenerator.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_jfalse):
(JSC::JIT::valueIsFalseyGenerator):
(JSC::JIT::emit_op_jtrue):
(JSC::JIT::valueIsTruthyGenerator):
(JSC::JIT::emit_op_throw):
(JSC::JIT::op_throw_handlerGenerator):
(JSC::JIT::emit_op_enter):
(JSC::JIT::op_enter_handlerGenerator):
(JSC::JIT::emitSlow_op_check_traps):
(JSC::JIT::op_check_traps_handlerGenerator):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::generateGetByValSlowCase):
(JSC::JIT::slow_op_get_by_val_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emitSlow_op_get_private_name):
(JSC::JIT::slow_op_get_private_name_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::emit_op_set_private_brand):
(JSC::JIT::emitSlow_op_set_private_brand):
(JSC::JIT::emit_op_check_private_brand):
(JSC::JIT::emitSlow_op_check_private_brand):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::slow_op_put_by_val_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emitSlow_op_put_private_name):
(JSC::JIT::slow_op_put_private_name_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emitSlow_op_del_by_id):
(JSC::JIT::slow_op_del_by_id_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_val):
(JSC::JIT::slow_op_del_by_val_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::slow_op_get_by_id_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::slow_op_get_by_id_with_this_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::slow_op_put_by_id_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::emitSlow_op_in_by_id):
(JSC::JIT::emitSlow_op_in_by_val):
(JSC::JIT::emitHasPrivateSlow):
(JSC::JIT::emitSlow_op_has_private_name):
(JSC::JIT::emitSlow_op_has_private_brand):
(JSC::JIT::emitSlow_op_put_to_scope):
(JSC::JIT::slow_op_put_to_scopeGenerator):
(JSC::JIT::emit_op_get_property_enumerator):
(JSC::JIT::emit_op_enumerator_next):
(JSC::JIT::emit_enumerator_has_propertyImpl):
(JSC::JIT::emit_op_enumerator_get_by_val):
(JSC::JIT::emit_op_enumerator_in_by_val):
(JSC::JIT::emit_op_enumerator_has_own_property):

  • jit/JITThunks.cpp:
  • jit/JITThunks.h:
  • jit/SlowPathCall.cpp:

(JSC::JITSlowPathCall::call):
(JSC::JITSlowPathCall::generateThunk):

  • jit/SlowPathCall.h:

(JSC::JITSlowPathCall::JITSlowPathCall):

  • jit/ThunkGenerators.cpp:

(JSC::handleExceptionGenerator):
(JSC::checkExceptionGenerator):

  • jit/ThunkGenerators.h:

Source/WTF:

  • wtf/PlatformEnable.h:

Remove EXTRA_CTI_THUNKS define (now always on on all platforms)

7:16 AM Changeset in webkit [290646] by Wenson Hsieh
  • 27 edits
    4 adds in trunk

focus({preventScroll: true}) does not prevent scrolling on iOS
​https://bugs.webkit.org/show_bug.cgi?id=236584
rdar://88911184

Reviewed by Simon Fraser.

Source/WebCore:

Plumb FocusOptions through Element::dispatchFocusEvent() as well as the chrome client hooks for
elementDidRefocus and elementDidFocus, instead of just a FocusDirection flag.

  • dom/Document.cpp:

(WebCore::Document::setFocusedElement):

  • dom/Element.cpp:

(WebCore::Element::focus):
(WebCore::Element::dispatchFocusEvent):

  • dom/Element.h:
  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::dispatchFocusEvent):

  • html/HTMLSelectElement.h:
  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::dispatchFocusEvent):

  • html/HTMLTextFormControlElement.h:
  • loader/EmptyClients.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::elementDidFocus):
(WebCore::ChromeClient::elementDidRefocus):

  • page/FocusController.cpp:

(WebCore::dispatchEventsOnWindowAndFocusedElement):
(WebCore::FocusController::setFocusedElement):

Source/WebKit:

Add support for preventScroll on iOS by avoiding UI-side zooming/scrolling to reveal the focused element if it
was focused with preventScroll: true. See below for more details.

Tests: fast/forms/select-focus-prevent-scroll.html

fast/forms/text-field-focus-prevent-scroll.html

  • Shared/FocusedElementInformation.cpp:

(WebKit::FocusedElementInformation::encode const):
(WebKit::FocusedElementInformation::decode):

  • Shared/FocusedElementInformation.h:

Add a boolean flag to FocusedElementInformation to indicate whether or not scrolling to reveal the focused
element should be prevented.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _zoomToRevealFocusedElement]):

Only zoom to reveal the focused element if the focused element information's preventScroll flag is NO.

(-[WKContentView _elementDidBlur]):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::elementDidFocus):
(WebKit::WebChromeClient::elementDidRefocus):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::elementDidRefocus):
(WebKit::WebPage::elementDidFocus):

Use FocusOptions to set the preventScroll flag when propagating FocusedElementInformation.

  • WebProcess/WebPage/WebPage.h:

Source/WebKitLegacy/ios:

Adjust the method signature of elementDidFocus. See WebCore ChangeLog for more information.

  • WebCoreSupport/WebChromeClientIOS.h:
  • WebCoreSupport/WebChromeClientIOS.mm:

(WebChromeClientIOS::elementDidFocus):

Source/WebKitLegacy/mac:

Adjust the method signature of elementDidFocus. See WebCore ChangeLog for more information.

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::elementDidFocus):

LayoutTests:

Add a couple of new layout tests to verify that passing in { preventScroll: true } for focus options causes
us to avoid scrolling to reveal focused select elements and text fields.

  • fast/forms/select-focus-prevent-scroll-expected.txt: Added.
  • fast/forms/select-focus-prevent-scroll.html: Added.
  • fast/forms/text-field-focus-prevent-scroll-expected.txt: Added.
  • fast/forms/text-field-focus-prevent-scroll.html: Added.
  • resources/ui-helper.js:

Also make it safe to call waitForInputSessionToDismiss() in a platform-agnostic test, by bailing early if
we're not on iOS, using WebKit2.

7:09 AM Changeset in webkit [290645] by Alan Bujtas
  • 6 edits
    2 adds in trunk

REGRESSION (r273129): Text contents in <span> with opacity not repainting/updating when sibling element has "will-change: transform"
​https://bugs.webkit.org/show_bug.cgi?id=236876
<rdar://problem/89180092>

Reviewed by Simon Fraser.

Source/WebCore:

This patch implements a slightly naive repaint for inline boxes with self painting layers.

  1. Mark the line when it gains an inline box (RenderInline) with self painting layer (e.g. <span style="position: relative">this has dedicated layer</span>)
  2. Issue repaint at the end of the line layout on such renderers.

Test: fast/repaint/inline-box-with-self-paint-layer.html

  • rendering/LegacyInlineFlowBox.cpp:

(WebCore::LegacyInlineFlowBox::addToLine):

  • rendering/LegacyInlineFlowBox.h:

(WebCore::LegacyInlineFlowBox::LegacyInlineFlowBox):
(WebCore::LegacyInlineFlowBox::hasSelfPaintInlineBox const):

  • rendering/LegacyLineLayout.cpp:

(WebCore::repaintSelfPaintInlineBoxes):
(WebCore::LegacyLineLayout::layoutRunsAndFloats):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::clippedOverflowRect const): expand the ASSERT to enclsing inline boxes too.

LayoutTests:

  • fast/repaint/inline-box-with-self-paint-layer-expected.html: Added.
  • fast/repaint/inline-box-with-self-paint-layer.html: Added.
6:42 AM Changeset in webkit [290644] by graouts@webkit.org
  • 6 edits in trunk

[web-animations] web-animations/interfaces/Animatable/getAnimations-iframe.html is a unique failure
​https://bugs.webkit.org/show_bug.cgi?id=237314

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Add a new test to check that both Document.getAnimations() and Element.getAnimations() correctly
update layout on the owner document.

  • web-platform-tests/web-animations/interfaces/Animatable/getAnimations-iframe-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animatable/getAnimations-iframe.html:

Source/WebCore:

We need to update the layout of a potential owner document in case some layout-dependent media queries
trigger declarative animations.

  • dom/Document.cpp:

(WebCore::Document::matchingAnimations):

  • dom/Element.cpp:

(WebCore::Element::getAnimations):

6:32 AM Changeset in webkit [290643] by commit-queue@webkit.org
  • 8 edits
    5 adds in trunk

WebGL GPUP OpenGL context is not used even if WebGL via Metal is deselected
​https://bugs.webkit.org/show_bug.cgi?id=236505

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-01
Reviewed by Myles C. Maxfield.

Source/WebCore:

Encode, decode also useMetal property.

Tests: webgl/webgl-via-metal-flag-off.html

webgl/webgl-via-metal-flag-on.html

  • platform/graphics/GraphicsContextGLAttributes.h:

(WebCore::GraphicsContextGLAttributes::encode const):
(WebCore::GraphicsContextGLAttributes::decode):

Source/WebKit:

  • Shared/WebCoreArgumentCoders.cpp:
  • Shared/WebCoreArgumentCoders.h:

LayoutTests:

  • webgl/resources/test-shader-implementation-language.js: Added.

(runTest):

  • webgl/webgl-via-metal-flag-off-expected.txt: Added.
  • webgl/webgl-via-metal-flag-off.html: Added.
  • webgl/webgl-via-metal-flag-on-expected.txt: Added.
  • webgl/webgl-via-metal-flag-on.html: Added.
6:23 AM Changeset in webkit [290642] by commit-queue@webkit.org
  • 18 edits
    1 move
    1 delete in trunk/Source

GraphicsContextGL related includes are inconsistent, slowing the build
​https://bugs.webkit.org/show_bug.cgi?id=237270

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-03-01
Reviewed by Alexey Proskuryakov.

Source/WebCore:

Remove include "GraphicsContextGL.h" from files not needing that.
Most notably, add ChromeClient.cpp and move the non-trivial
ChromeClient::createGraphicsContextGL() function to .cpp file, so
that ChromeClient.h does not need to include GraphicsContextGL.h.

This makes incremental compiles better, as not all changes to
GraphicsContextGL.h and its dependencies force big rebuilds.

GraphicsContextGL.h and dependents maintainance:

Remove unneeded forward declarations. Types referenced by overridden virtual
functions must already be declared. Remove forward declarartion ExtensionsGL,
the class was removed

Use forward declares instead of includes (MediaPlayer).

Remove RemoteGraphicsContextGLProxyBase.cpp/h, the use was removed.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/canvas/WebGLActiveInfo.h:
  • html/canvas/WebGLShaderPrecisionFormat.h:
  • inspector/InspectorShaderProgram.cpp:
  • page/ChromeClient.cpp: Renamed from Source/WebCore/platform/graphics/RemoteGraphicsContextGLProxyBase.cpp.

(WebCore::ChromeClient::createGraphicsContextGL const):

  • page/ChromeClient.h:
  • platform/HostWindow.h:
  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/GraphicsContextGLState.h:
  • platform/graphics/RemoteGraphicsContextGLProxyBase.h: Removed.
  • platform/graphics/angle/GraphicsContextGLANGLE.h:
  • platform/graphics/cocoa/IOSurface.mm:
  • platform/graphics/opengl/ExtensionsGLOpenGL.h:
  • platform/xr/openxr/OpenXRSwapchain.h:
  • platform/xr/openxr/PlatformXROpenXR.cpp:
  • platform/xr/openxr/PlatformXROpenXR.h:

Source/WebKit:

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:
4:53 AM Changeset in webkit [290641] by Adrian Perez de Castro
  • 2 edits in trunk

[CMake] Build failure with libstdc++ (>= 6) when cross-compiling (fatal error: stdlib.h: No such file or directory)
​https://bugs.webkit.org/show_bug.cgi?id=161697

Reviewed by Carlos Garcia Campos.

  • Source/cmake/WebKitCompilerFlags.cmake: Set LANG=C in compiler invocation to ensure its

output is consistent and the checks are independent from the system locale configuration.

3:24 AM Changeset in webkit [290640] by ntim@apple.com
  • 2 edits in trunk/Source/WebCore

Explicitly disable style sharing for form controls
​https://bugs.webkit.org/show_bug.cgi?id=237236

Reviewed by Antti Koivisto.

There was a typo introduced in bug 153768 and bug 138769, which essentially disables
style sharing completely for form controls. Let's make that explicit.

  • style/StyleSharingResolver.cpp:

(WebCore::Style::SharingResolver::canShareStyleWithControl): Removed.
(WebCore::Style::SharingResolver::canShareStyleWithElement const):

2:28 AM Changeset in webkit [290639] by Cameron McCormack
  • 26 edits
    5 adds in trunk

Make input element UA shadow tree creation lazy
​https://bugs.webkit.org/show_bug.cgi?id=236747

Reviewed by Aditya Keerthi.

Source/WebCore:

We currently delay InputType creation for parser inserted elements until
just after the attributes have been set, so that we don't wastefully
create an InputType and the UA shadow tree creation if a non-text
type="" was specified on the tag. We don't do anything similar for
script inserted input elements. We could make the InputType creation
lazy, but most of the wasted time is due to the shadow tree creation.

This patch makes InputType shadow tree creation lazy by delaying it
until one of the following happens:

  1. the element is inserted into the document
  2. the type="" or value="" attributes are changed before the element is inserted into the document
  3. any DOM methods that need access to the innerTextElement() are called on the element before the element is inserted into the document

Not all places where we call innerTextElement() on the
HTMLInputElement are safe to lazily create the shadow trees, so we
have two accessors:

  • innerTextElement() returns the inner text element if it's been created already
  • innerTextElementCreatingShadowSubtreeIfNeeded will perform the lazy shadow tree construction if it hasn't already been done

Since the existing
createShadowSubtreeAndUpdateInnerTextElementEditability function has
more responsibility than just creating the subtree and ensuring the
editability is set appropriately, it's renamed to a more manageable
createShadowSubtree.

This change is a 0.5% progression on Speedometer 2.

Test: fast/forms/lazy-shadow-tree-creation.html

  • html/BaseDateAndTimeInputType.h:
  • html/BaseDateAndTimeInputType.cpp:

(WebCore::BaseDateAndTimeInputType::createShadowSubtree):
(WebCore::BaseDateAndTimeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):

  • html/ColorInputType.h:
  • html/ColorInputType.cpp:

(WebCore::ColorInputType::createShadowSubtree):
(WebCore::ColorInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):

  • html/FileInputType.h:
  • html/FileInputType.cpp:

(WebCore::FileInputType::createShadowSubtree):
(WebCore::FileInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):

  • html/InputType.cpp:

(WebCore::InputType::createShadowSubtree):
(WebCore::InputType::createShadowSubtreeAndUpdateInnerTextElementEditability):

  • html/RangeInputType.h:
  • html/RangeInputType.cpp:

(WebCore::RangeInputType::createShadowSubtree):
(WebCore::RangeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):

  • html/SearchInputType.h:
  • html/SearchInputType.cpp:

(WebCore::SearchInputType::createShadowSubtree):
(WebCore::SearchInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):
Renamed createShadowSubtreeAndUpdateInnerTextElementEditability to
createShadowSubtree and remove the "isInnerTextElementEditable"
argument, since we can ask the element() for its value if needed.
createShadowSubtree is now also responsible for creating the shadow
root.

  • html/TextFieldInputType.h:
  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::createShadowSubtree):
(WebCore::TextFieldInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):
Renamed. Ensure all shadow tree state is up to date now that it can be
created later.

  • html/InputType.h:
  • html/InputType.cpp:

(WebCore::InputType::createShadowSubtree):
(WebCore::InputType::hasCreatedShadowSubtree const):
New functions to create the shadow subtree if it hasn't been done
already, and to query whether it's been done.

  • html/HTMLInputElement.h:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::innerTextElementCreatingShadowSubtreeIfNeeded):

  • html/HTMLTextAreaElement.h:
  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::innerTextElementCreatingShadowSubtreeIfNeeded):

  • html/HTMLTextFormControlElement.h:
  • html/InputType.h:
  • html/InputType.cpp:

(WebCore::InputType::innerTextElementCreatingShadowSubtreeIfNeeded):
New functions to first create the shadow subtree before returning
innerTextElement(). HTMLTextAreaElement never lazily creates its
shadow subtree and so just returns innerTextElement().

  • html/HTMLInputElement.h:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::createShadowSubtreeAndUpdateInnerTextElementEditability):
Deleted. Just call through to m_inputType->createShadowTree()
directly.

(WebCore::HTMLInputElement::HTMLInputElement):
(WebCore::HTMLInputElement::create):
(WebCore::HTMLInputElement::initializeInputType):
(WebCore::HTMLInputElement::updateType):
Don't immediately create the shadow tree.

(WebCore::HTMLInputElement::didFinishInsertingNode):
Create the shadow subtree now that the element's been inserted. No
need to call dataListMayHaveChanged since
TextFieldInputType::createShadowSubtree will now do this.

  • html/BaseDateAndTimeInputType.cpp:

(WebCore::BaseDateAndTimeInputType::updateInnerTextValue):
Ensure the shadow subtree is created since we need to poke at it.

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::forwardEvent):
Don't forward the event if the shadow tree hasn't been created yet.

(WebCore::HTMLTextFormControlElement::setSelectionRange):
Ensure the shadow tree has been created. This is needed if the
selection APIs are called on the input element before it's inserted
into the document.

(WebCore::HTMLTextFormControlElement::visiblePositionForIndex const):
Assert that the shadow tree has been created, since editing
functionality should only be needed if the element's been inserted
into the document.

(WebCore::HTMLTextFormControlElement::setInnerTextValue):
Ensure the shadow tree has been created.

  • html/RangeInputType.cpp:

(WebCore::RangeInputType::handleMouseDownEvent):
(WebCore::RangeInputType::handleTouchEvent):
Ensure the shadow tree has been created in case the event will change
the value.

(WebCore::RangeInputType::sliderTrackElement const):
Only return the element if it's been created.

(WebCore::RangeInputType::typedSliderThumbElement const):
Assert that the element has been created.

(WebCore::RangeInputType::dataListMayHaveChanged):
Only try to re-layout if the shadow tree has been created.

  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::isEmptyValue const):
Avoid creating the shadow subtree.

(WebCore::TextFieldInputType::forwardEvent):
Move the element assertion up to be consistent with other functions.

(WebCore::TextFieldInputType::innerTextElement const):
Don't assert, since this now can legitimately return null.

  • html/FileInputType.cpp:

(WebCore::FileInputType::disabledStateChanged):
(WebCore::FileInputType::attributeChanged):

  • html/RangeInputType.cpp:

(WebCore::RangeInputType::disabledStateChanged):
(WebCore::RangeInputType::attributeChanged):
(WebCore::RangeInputType::setValue):

  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::disabledStateChanged):
(WebCore::TextFieldInputType::readOnlyStateChanged):
(WebCore::TextFieldInputType::updatePlaceholderText):
(WebCore::TextFieldInputType::updateAutoFillButton):
(WebCore::TextFieldInputType::dataListMayHaveChanged):
Don't update the shadow tree contents if it hasn't been created yet.
createShadowTree is responsible for ensuring it creates the shadow
tree contents reflecting the current state.

LayoutTests:

  • fast/forms/lazy-shadow-tree-creation-expected.html: Added.
  • fast/forms/lazy-shadow-tree-creation.html: Added.
  • fast/forms/lazy-shadow-tree-creation.js: Added.

(supportsType):
(makeAndAppendInput):

  • LayoutTests/fast/forms/lazy-shadow-tree-creation-crash.html:
  • LayoutTests/fast/forms/lazy-shadow-tree-creation-crash-expected.html:

Crashtest.

  • fast/shadow-dom/style-resolver-sharing-expected.txt:

Update to account for the lazy shadow tree being created later.

2:15 AM Changeset in webkit [290638] by commit-queue@webkit.org
  • 9 edits
    4 adds in trunk/LayoutTests

[GLIB] Update test expectations and baselines. Unreviewed test gardening.
​https://bugs.webkit.org/show_bug.cgi?id=237310

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2022-03-01

  • platform/glib/css3/flexbox/line-wrapping-expected.txt:
  • platform/glib/fast/block/positioning/auto/vertical-lr/007-expected.txt:
  • platform/glib/fast/dom/scroll-reveal-top-overflow-expected.txt: Added.
  • platform/glib/tables/mozilla_expected_failures/dom/appendColGroup1-expected.txt:
  • platform/gtk/TestExpectations:
  • platform/gtk/fast/repaint/vertical-text-repaint-expected.txt: Added.
  • platform/gtk/fast/writing-mode/japanese-lr-selection-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/dom/appendCol1-expected.txt:
  • platform/wpe/fast/repaint/vertical-text-repaint-expected.txt: Added.
  • platform/wpe/fast/writing-mode/japanese-lr-selection-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/dom/appendCol1-expected.txt:
2:11 AM Changeset in webkit [290637] by Angelos Oikonomopoulos
  • 3 edits in trunk/Tools

[JSC] Implement chunking for the GNU parallel runner
​https://bugs.webkit.org/show_bug.cgi?id=237028

Reviewed by Adrian Perez de Castro.

The GNU parallel runner can't keep up with the scheduling when using
multiple fast remotes. This results in poor CPU utilization on the
remotes and more waiting time.

As a quick fix, allow the user to specify a --gnu-parallel-chunk-size,
the value of which specifies the number of test jobs to schedule as a
unit (defaults to 1). Specifying a higher value means longer-running
jobs, so that GNU parallel can more efficiently schedule them.

  • Scripts/run-javascriptcore-tests:

(runJSCStressTests):

  • Scripts/run-jsc-stress-tests:
1:36 AM Changeset in webkit [290636] by basuke.suzuki@sony.com
  • 3 edits in trunk

[CMake] Disabling ENABLE_WEBCORE is ignored when cmake configuration runs again.
​https://bugs.webkit.org/show_bug.cgi?id=237170

Reviewed by Fujii Hironori.

CMake variables which has chance to set from outside should be cached in CMake configuration cache.
Unless cacheing, the result of building the generated project is not consisitent because the other
configuration may run while building.

To make it complete, I've changed ENABLE_JAVASCRIPTCORE, ENABLE_WEBCORE and ENABLE_WEBKIT to option()
which is stored in cached and reused while building even if the confuguration runs again.

  • Source/cmake/OptionsPlayStation.cmake:
  • Source/cmake/WebKitCommon.cmake:
1:01 AM Changeset in webkit [290635] by Ziran Sun
  • 4 edits in trunk

[Selection] Selection Range should be clamped by the current value length
​https://bugs.webkit.org/show_bug.cgi?id=237210

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update the test expectations as some sub-tests are now passing.

  • web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-expected.txt:

Source/WebCore:

As per ​https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#set-the-selection-range,
if start or end "is greater than the length of the relevant value of the text control, then set it to
the length of the relevant value of the text control".

This CL makes selection range clamp to the current value length.

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::setSelectionRange):

12:55 AM Changeset in webkit [290634] by Matt Woodrow
  • 4 edits in trunk

Handle perpendicular containing blocks when computing available logical height.
​https://bugs.webkit.org/show_bug.cgi?id=236953

Reviewed by Dean Jackson.

Source/WebCore:

Handles the case where the containing block uses a perpendicular writing mode
to the current box, and we need to check the containing block's width in order
to determine height.

Existing subgrid tests marked as passing.
These subgrid reftests were failing because the -expected files were rendering incorrectly
(which don't use subgrid).

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::availableLogicalHeightUsing const):

LayoutTests:

Existing subgrid tests marked as passing.

12:48 AM Changeset in webkit [290633] by Carlos Garcia Campos
  • 10 edits
    4 deletes in trunk

[ATSPI] Remove layout tests checking children added/removed notifications
​https://bugs.webkit.org/show_bug.cgi?id=237272

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Do not send children-changed notifications to WTR observers.

  • accessibility/atspi/AccessibilityAtspi.cpp:

(WebCore::AccessibilityAtspi::childrenChanged):
(WebCore::AccessibilityAtspi::notifyChildrenChanged const): Deleted.

  • accessibility/atspi/AccessibilityAtspi.h:

LayoutTests:

Children changed notifications are not expected by any other tests because other ports don't support them. We
already have unit tests to ensure they work as expected so we can just remove the layout tests and ensure we
don't emit those notifications either.

  • accessibility/children-changed-sends-notification-expected.txt: Removed.
  • accessibility/children-changed-sends-notification.html: Removed.
  • accessibility/gtk/menu-list-unfocused-notifications-expected.txt:
  • accessibility/gtk/no-notification-for-unrendered-iframe-children-expected.txt: Removed.
  • accessibility/gtk/no-notification-for-unrendered-iframe-children.html: Removed.
  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
  • platform/wincairo-wk1/TestExpectations:
12:00 AM Changeset in webkit [290632] by sihui_liu@apple.com
  • 7 edits
    1 add in trunk

Migrate third-party IndexedDB data to GeneralStorageDirectory
​https://bugs.webkit.org/show_bug.cgi?id=237283

Reviewed by Chris Dumez.

Source/WebKit:

In current storage layout, third-party IndexedDB data is stored in a subdirectory of top origin directory, e.g.
[IndexedDBDirectory]/[TopOrigin]/[ThirdPartyOrigin]/[Database]. First-party data is stored in the top origin
directory, e.g. [IndexedDBDirectory]/[TopOrigin]/[Database]. Our current migration code directly renames the
origin directory without checking whether it has subdirectory that is a third-party directory. That means,
[IndexedDBDirectory]/[TopOrigin]/ is moved to [GeneralStorageDirectory]/[TopOrigin]/[TopOrigin]/[IndexedDB]/,
and [IndexedDBDirectory]/[TopOrigin]/[ThirdPartyOrigin]/ is moved to
[GeneralStorageDirectory]/[TopOrigin]/[TopOrigin]/[IndexedDB]/[ThirdPartyOrigin] ([ThirdPartyOrigin]/ here is
treated as a database directory). This is wrong: the new third-party directory should actually be
[GeneralStorageDirectory]/[TopOrigin]/[ThirdPartyOrigin]/[IndexedDB]/.

To fix this, we now make sure only first-party data is migrated when first-party IndexedDB database is visited,
by moving only database directories under origin directory.

Test: IndexedDB.MigrateThirdPartyDataToGeneralStorageDirectory

  • NetworkProcess/storage/IDBStorageManager.cpp:

(WebKit::migrateOriginDataImpl):
(WebKit::IDBStorageManager::idbStorageOriginDirectory):
(WebKit::IDBStorageManager::migrateOriginData):
(WebKit::migrateOriginData): Deleted.

  • NetworkProcess/storage/IDBStorageManager.h:
  • NetworkProcess/storage/OriginStorageManager.cpp:

(WebKit::OriginStorageManager::StorageBucket::resolvedIDBStoragePath):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/indexeddb-persistence-third-party.sqlite3: Added.

Feb 28, 2022:

11:47 PM Changeset in webkit [290631] by Diego Pino Garcia
  • 2 edits in trunk/Source/WebCore

[GTK] Unreviewed, non-unified build fix after 247791@main

  • platform/graphics/gbm/GBMDevice.h:
11:46 PM Changeset in webkit [290630] by Tyler Wilcock
  • 9 edits
    3 adds in trunk

AX: WebKit should ignore empty modals rather than trapping focus inside them
​https://bugs.webkit.org/show_bug.cgi?id=237163

Reviewed by Chris Fleizach and Andres Gonzalez.

Source/WebCore:

Given this markup:

<div role="dialog" aria-modal="true">

<div aria-hidden="true">

<button>Close modal (inside modal)</button>

</div>

</div>

There is no accessible content inside this modal, but WebKit traps user focus inside,
making the rest of the page completely inaccessible.

With this patch we ignore modals that don't have accessible content.
We do this by walking the DOM to find any non-AX-ignored objects.

Because determining whether or not an element is ignored is dependent
on modals present on the page, this patch moves the call to ignoredFromModalPresence
out of AccessibilityObject::defaultObjectInclusion, as this function is
downstream of computeAccessibilityIsIgnored, and we need to call
that on objects inside modal candidates. Without this move, we would
recurse infinitely in AXObjectCache::modalElementHasAccessibleContent.

We now check whether an object is ignored due to modal presence in
AccessibilityObject::accessibilityIsIgnored(), so that function should
be used as the final say in determining whether an object is ignored.

Test: accessibility/ignore-modals-without-any-content.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::modalElementHasAccessibleContent):
(WebCore::AXObjectCache::currentModalNode):

  • accessibility/AXObjectCache.h:
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::defaultObjectInclusion const):
(WebCore::AccessibilityObject::accessibilityIsIgnored const):

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::computeAccessibilityIsIgnored const):

LayoutTests:

  • accessibility/ignore-modals-without-any-content-expected.txt: Added.
  • accessibility/ignore-modals-without-any-content.html: Added.
  • platform/glib/TestExpectations: Skip new test.
  • platform/ios/TestExpectations: Enable new test.
  • platform/ios/accessibility/ignore-modals-without-any-content-expected.txt: Added.
  • platform/win/TestExpectations: Skip new test.
10:12 PM Changeset in webkit [290629] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC] Do more hardening in WebSWServerConnection's client registration / unregistration
​https://bugs.webkit.org/show_bug.cgi?id=237290
<rdar://88903506>

Reviewed by Alex Christensen.

Validate client identifiers sent by the WebContent process via IPC to make sure that the
process identifier of the client actually matches the process identifier of the process
we're connected to.

Also validate the SecurityOriginData to make sure it is not empty. We support sending
empty SecurityOriginData objects over IPC. However, they cannot be used as keys in
HashMaps.

If validation fails, we assume the WebContent process is compromised and we terminate it.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::registerServiceWorkerClient):
(WebKit::WebSWServerConnection::unregisterServiceWorkerClient):

8:54 PM Changeset in webkit [290628] by Simon Fraser
  • 4 edits
    6 adds in trunk

Compositing/paint invalidation with transforms
​https://bugs.webkit.org/show_bug.cgi?id=233421
<rdar://problem/85814854>

Reviewed by Alan Bujtas.

Source/WebCore:

When changing transform from something like translate(0) to `translate3d(0, 0, 0)
scale(0.5, 0.5)`, we trigger compositing, and thus need to repaint the previous rect of the
layer in its old repaint container. However, the existing code would take the new transform
into account when computing that rect, thus dirtying a rect that is too small.

To fix this, we need to use the cached repaint rects on RenderLayer for this repaint.
However, doing so revealed a bug (via
compositing/shared-backing/repaint-into-shared-backing.html) in how we compute repaint
cached repaint rects in the presence of shared backing. During a compositing update, if a
layer's composited state changed, we'd call computeRepaintRectsIncludingDescendants(), which
computes rect relative to the layer's repaint container. But at this time, the state of
backing sharing in BackingSharingState is in flux (we essentially don't know yet if a layer
can use shared backing). So we may compute and cache repaint rects relative to the wrong
container.

To fix this, leverage the existing m_layersPendingRepaint logic, and delay computing the
repaint rects until we've established our final backing sharing configuration.

Tests: compositing/repaint/composite-and-scale-change.html

compositing/shared-backing/repaint-into-shared-backing-become-composited.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::setBackingProviderLayer):
(WebCore::RenderLayer::calculateClipRects const):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::BackingSharingState::issuePendingRepaints):
(WebCore::RenderLayerCompositor::updateBacking):

LayoutTests:

  • compositing/repaint/composite-and-scale-change-expected.txt: Added.
  • compositing/repaint/composite-and-scale-change.html: Added.

Test that dumps repaint rects.

  • compositing/shared-backing/repaint-into-shared-backing-become-composited-expected.html: Added.
  • compositing/shared-backing/repaint-into-shared-backing-become-composited.html: Added.

Companion to repaint-into-shared-backing.html but toggles compositing in the other
direction.

  • platform/gtk/compositing/repaint/composite-and-scale-change-actual.txt: Added.
  • platform/mac-wk1/compositing/repaint/composite-and-scale-change-expected.txt: Added.
7:24 PM Changeset in webkit [290627] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Fix use-after-move bug in NetworkResourceLoader
​https://bugs.webkit.org/show_bug.cgi?id=237294

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-02-28
Reviewed by Chris Dumez.

Luckily, they were just two booleans, and after you call std::move on a bool you get
technically undefined behavior. Luckily, in practice the bool value is unchanged.
We don't need to rely on that, though. Let's read from the location with defined behavior.

  • NetworkProcess/NetworkResourceLoader.cpp:
7:13 PM Changeset in webkit [290626] by Ross Kirsling
  • 2 edits in trunk/Source/WebKit

REGRESSION(r290470): CDMInstanceSession::setLogIdentifier must be guarded with !RELEASE_LOG_DISABLED
​https://bugs.webkit.org/show_bug.cgi?id=237302

Unreviewed build fix.

  • GPUProcess/media/RemoteCDMInstanceSessionProxy.cpp:

(WebKit::RemoteCDMInstanceSessionProxy::setLogIdentifier):

7:00 PM Changeset in webkit [290625] by Simon Fraser
  • 10 edits in trunk

No animation when scroll snap scroller is navigated with the keyboard
​https://bugs.webkit.org/show_bug.cgi?id=236244

Reviewed by Tim Horton.

Source/WebCore:

Keyboard-driven scrolls in overflow didn't animate, simply because scrollAnimatorEnabled()
wasn't implemented for RenderLayerScrollableArea.

I could not figure out a reliable way to test that we animated the scroll.

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::scrollAnimatorEnabled const):

  • rendering/RenderLayerScrollableArea.h:

Tools:

In fixing this bug I ran into the issue predicted in ​https://bugs.webkit.org/show_bug.cgi?id=234456#c6.
As a workaround, explicitly set NSScrollAnimationEnabled to NO in both processes. This is a partial revert
of r287228 which I tried, and failed to fix via bug 234488.

  • WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:

(WTR::InjectedBundle::platformInitialize):

  • WebKitTestRunner/mac/main.mm:

(setDefaultsToConsistentValuesForTesting):

LayoutTests:

Turn off the scroll animator for these tests that assume that scrolling is instantaneous.

  • css3/scroll-snap/scroll-padding-overflow-paging.html:
  • fast/events/wheelevent-in-scrolling-div.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-rtl-with-keyboard.html:
6:38 PM Changeset in webkit [290624] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ iOS ] fast/mediastream/video-rotation-gpu-process-crash.html is a flaky crash
​https://bugs.webkit.org/show_bug.cgi?id=237295

Unreviewed test gardening.

Patch by Matteo Flores <Matteo Flores> on 2022-02-28

  • platform/ios/TestExpectations:
6:34 PM Changeset in webkit [290623] by sihui_liu@apple.com
  • 5 edits in trunk/Source/WebKit

[macOS] TestWebKitAPI.WebKit.MigrateLocalStorageDataToGeneralStorageDirectory is a flaky failure
​https://bugs.webkit.org/show_bug.cgi?id=237065
<rdar://problem/89324250>

Reviewed by Darin Adler.

Revert r290544 as it does not fully fix the flaky test. The flakiness is caused by network process exiting
before transactions of SQLiteStorageArea are committed. In NetworkProcess::destroySession, we schedule a
background task to commit transactions in the session, and remove session. In NetworkProcess::didClose, for
existing sessions, we schedule tasks to commit transaction and wait until the tasks are finished before exiting
network process. That means for a session, when NetworkProcess::destroySession is called before
NetworkProcess::didClose, process may exit before commit task (scheduled by NetworkProcess::destroySession) is
finished (NetworkProcess::didClose does not wait because session is already removed).

To solve this issue, let NetworkProcess::didClose check existing NetworkStorageManagers, instead of
NetworkSessions. NetworkStorageManager can outlive NetworkSession when it's finishing cleanup task
(including committing transactions) on its background thread; we want to ensure process exits after the cleanup
task is done.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::didClose):

  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::allNetworkStorageManagers):
(WebKit::NetworkStorageManager::forEach):
(WebKit::NetworkStorageManager::NetworkStorageManager):
(WebKit::NetworkStorageManager::~NetworkStorageManager):

  • NetworkProcess/storage/NetworkStorageManager.h:
  • NetworkProcess/storage/SQLiteStorageArea.cpp:

(WebKit::SQLiteStorageArea::SQLiteStorageArea):
(WebKit::SQLiteStorageArea::startTransactionIfNecessary):
(WebKit::SQLiteStorageArea::commitTransactionIfNecessary):
(WebKit::commitTransactionsAtExit): Deleted.

5:03 PM Changeset in webkit [290622] by Robert Jenner
  • 4 edits in trunk/LayoutTests

REBASELINE [ iOS15 ] fast/text/khmer-lao-font.html is a constant text failure
<rdar://88841324>

Unreviewed test gardening. Rebaseline for iOS15.

  • platform/ios-wk2/TestExpectations:
  • platform/ios-wk2/fast/text/khmer-lao-font-expected.txt:
  • platform/ios/fast/text/khmer-lao-font-expected.txt:
4:59 PM Changeset in webkit [290621] by jer.noble@apple.com
  • 17 edits in trunk/Source

[Cocoa] Adopt -streamDataParser:didProvideContentKeySpecifier:forTrackID: delegate callback
​https://bugs.webkit.org/show_bug.cgi?id=236109
<rdar://problem/88785844>

Reviewed by Eric Carlson.

Source/WebCore:

Re-land support after a rollout in r290311, this time with an off-by-default Experimental Feature
flag.

In addition to checking whether the renderer classes support AVContentKeySession, also check whether
the RuntimeSetting has been enabled. This requires passing that setting through to the
MediaSessionManagerCocoa singleton, so it can be accessed from platform/.

If the renderer support check succeeds and the setting is enabled, only then should the delegate for
AVStreamDataParser include support for the new -didProvideContentKeySpecifier callback. Subclass the
WebAVStreamDataParserListener into a new WebAVStreamDataParserWithKeySpecifierListener object, and
instantiate one or the other according to the support checks above.

  • page/RuntimeEnabledFeatures.cpp:

(WebCore::RuntimeEnabledFeatures::setSampleBufferContentKeySessionSupportEnabled):

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::sampleBufferContentKeySessionSupportEnabled const):

  • platform/audio/cocoa/MediaSessionManagerCocoa.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::setSampleBufferContentKeySessionSupportEnabled):
(WebCore::MediaSessionManagerCocoa::sampleBufferContentKeySessionSupportEnabled):

  • platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:

(-[WebAVStreamDataParserWithKeySpecifierListener streamDataParser:didProvideContentKeySpecifier:forTrackID:]):
(WebCore::SourceBufferParserAVFObjC::SourceBufferParserAVFObjC):
(-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeySpecifier:forTrackID:]): Deleted.

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::sampleBufferRenderersSupportKeySession):

Source/WebKit:

Pass the new RuntimeEnabledFeature through to the GPU process.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::setSampleBufferContentKeySessionSupportEnabled):

  • GPUProcess/GPUProcess.h:
  • GPUProcess/GPUProcess.messages.in:
  • GPUProcess/GPUProcessCreationParameters.cpp:

(WebKit::GPUProcessCreationParameters::encode const):
(WebKit::GPUProcessCreationParameters::decode):

  • GPUProcess/GPUProcessCreationParameters.h:
  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::updatePreferences):

  • UIProcess/GPU/GPUProcessProxy.h:

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
4:14 PM Changeset in webkit [290620] by Wenson Hsieh
  • 10 edits in trunk/Tools

Add API testing infrastructure for "Markup Image" and "Copy Cropped Image"
​https://bugs.webkit.org/show_bug.cgi?id=236519
rdar://89154213

Reviewed by Tim Horton.

Add API testing support (as well as a new API test) for the "Markup Image" flow.

  • TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm:

(TestWebKitAPI::TEST):
(TestWebKitAPI::invokeImageMarkupAction):

  • TestWebKitAPI/Tests/WebKitCocoa/WKContentViewEditingActions.mm:

Add an API test that triggers the "Markup Image" action, and verifies the following:

  • The first image is replaced with the canned image result (a 215-px-wide image of the WebKit logo).
  • The selection range is effectively unchanged.
  • TestWebKitAPI/cocoa/ImageAnalysisTestingUtilities.h:
  • TestWebKitAPI/cocoa/ImageAnalysisTestingUtilities.mm:

Add a declaration for ImageAnalysisMarkupSwizzler, a helper class that is used in the new API test to make
VisionKit return a canned image and cropped rect when invoking the SPI that corresponds to "Markup Image"; see
WebKitAdditions change for more information.

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[WKWebView selectedText]):

  • TestWebKitAPI/ios/TestUIMenuBuilder.h:
  • TestWebKitAPI/ios/TestUIMenuBuilder.mm:

(-[TestUIMenuBuilder actionWithTitle:]):

Refactor and rename this to return the found UIAction instead of just a BOOL indicating whether or not it could
be found, and change existing call sites above to use EXPECT_NULL and EXPECT_NOT_NULL.

(-[TestUIMenuBuilder containsActionWithTitle:]): Deleted.

  • TestWebKitAPI/ios/UIKitSPI.h:
3:48 PM Changeset in webkit [290619] by pvollan@apple.com
  • 3 edits in trunk/Source/WebCore

[iOS] Weak link AVPictureInPictureController
​https://bugs.webkit.org/show_bug.cgi?id=237227
<rdar://76011860>

Reviewed by Brent Fulgham.

Weak linking instead of soft linking should be a small performance improvement.

  • Configurations/WebCore.xcconfig:
  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(WebCore::supportsPictureInPicture):

3:26 PM Changeset in webkit [290618] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

Remove release assert when UI process is blocking IOSurface IOKit access
​https://bugs.webkit.org/show_bug.cgi?id=237278

Reviewed by Darin Adler.

Remove release assert in IOSurface::bytesPerRowAlignment() when UI process is blocking IOSurface IOKit access.
Instead, log this event, and return an appropriate value.

  • platform/graphics/cocoa/IOSurface.mm:

(WebCore::IOSurface::bytesPerRowAlignment):

3:24 PM Changeset in webkit [290617] by Brandon
  • 2 edits in trunk

Add Brandon Stewart's name to contributors.json
​https://bugs.webkit.org/show_bug.cgi?id=237288

Reviewed by Saam Barati.

Add Brandon Stewart's name to contributors.json

  • metadata/contributors.json:
3:09 PM Changeset in webkit [290616] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, address feedback from Darin regarding r290610.

  • platform/graphics/Color.h:

(WebCore::add):

2:09 PM Changeset in webkit [290615] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Handle widow relayout differently
​https://bugs.webkit.org/show_bug.cgi?id=235519

Patch by Rob Buis <​rbuis@igalia.com> on 2022-02-28
Reviewed by Alan Bujtas.

Source/WebCore:

Handle widow relayout differently to prevent function call recursion.

Test: fast/multicol/widow-many-relayouts-crash.html

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlock):
(WebCore::RenderBlockFlow::relayoutToAvoidWidows): Deleted.

  • rendering/RenderBlockFlow.h:

(WebCore::RenderBlockFlow::didBreakAtLineToAvoidWidow const):

LayoutTests:

  • fast/multicol/widow-many-relayouts-crash-expected.txt: Added.
  • fast/multicol/widow-many-relayouts-crash.html: Added.
1:48 PM Changeset in webkit [290614] by chris.reid@sony.com
  • 2 edits in trunk/Tools

[Win] vswhere should search for Visual Studio Build tools
​https://bugs.webkit.org/show_bug.cgi?id=237229

Reviewed by Ross Kirsling.

  • Scripts/webkitdirs.pm:
1:19 PM Changeset in webkit [290613] by Devin Rousso
  • 13 edits in trunk/Source

Web Inspector: [Flexbox] Add options to show each area's CSS order and/or DOM index in the parent flex container
​https://bugs.webkit.org/show_bug.cgi?id=237215

Reviewed by Patrick Angle.

This will help developers better understand how CSS order and the DOM index of each flex
item interact and result in what's eventually rendered.

Source/JavaScriptCore:

  • inspector/protocol/DOM.json:

Add an optional boolean parameter to DOM.showFlexOverlay:

  • showOrderNumbers controls whether labels with the computed CSS order value are shown over each flex item's area.

Source/WebCore:

  • inspector/agents/InspectorDOMAgent.h:
  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::showFlexOverlay):
Pass along the optional boolean parameter showOrderNumbers.

  • inspector/InspectorOverlay.h:

(WebCore::InspectorOverlay::Highlight::FlexHighlightOverlay::encode const):
(WebCore::InspectorOverlay::Highlight::FlexHighlightOverlay::decode):
Add member bool for showOrderNumbers to Flex::Config.
Add member Vector<InspectorOverlayLabel> to FlexHighlightOverlay for drawing labels.

  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::drawFlexOverlay):
(WebCore::InspectorOverlay::buildFlexOverlay):
Use showOrderNumbers to (when enabled) add items to Vector<InspectorOverlayLabel> for
each flex item's computed CSS order and DOM index in the parent flex container.

Source/WebInspectorUI:

  • UserInterface/Base/Setting.js:

Add global WI.Setting for flexOverlayShowOrderNumbers.

  • UserInterface/Models/DOMNode.js:

(WI.DOMNode.prototype.set layoutContextType): Added.
(WI.DOMNode.prototype.showLayoutOverlay): Added.
(WI.DOMNode.prototype.hideLayoutOverlay): Added.
(WI.DOMNode.prototype._handleLayoutOverlaySettingChanged): Renamed from _handleGridLayoutOverlaySettingChanged.
Listen for changes to the above WI.Setting and include the value when invoking DOM.showFlexOverlay.

  • UserInterface/Views/CSSFlexNodeOverlayListSection.js:

(WI.CSSFlexNodeOverlayListSection.prototype.initialLayout): Added.
Add UI for the above WI.Setting.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/CSSGridNodeOverlayListSection.js:

(WI.CSSGridNodeOverlayListSection.prototype.initialLayout):
Drive-by: Adjust a WI.UIString to avoid possible future clashing.

1:00 PM Changeset in webkit [290612] by Devin Rousso
  • 5 edits
    3 adds in trunk

Web Inspector: add IterableWeakSet
​https://bugs.webkit.org/show_bug.cgi?id=237141

Reviewed by Patrick Angle.

Source/WebInspectorUI:

This allows clients to have a way to have an iterable collection that doesn't keep the
objects in the collection alive. We cannot just use WeakSet as it's not iterable (the
former) or Array/Set as it keeps the objects alive (the latter).

IterableWeakSet is a combination of:

  • a Set of WeakRef for each object, which gives us iterability with order preserved
  • a WeakMap of each object mapping to the wrapper WeakRef in the Set (see below)
  • a FinalizationRegistry to remove the wrapper WeakRef when the object is destroyed
  • UserInterface/Base/IterableWeakSet.js: Added.

(IterableWeakSet):
(IterableWeakSet.prototype.get size):
(IterableWeakSet.prototype.has):
(IterableWeakSet.prototype.add):
(IterableWeakSet.prototype.delete):
(IterableWeakSet.prototype.take):
(IterableWeakSet.prototype.clear):
(IterableWeakSet.prototype.keys):
(IterableWeakSet.prototype.values):
(IterableWeakSet.prototype.Symbol.iterator):
(IterableWeakSet.prototype.copy):
(IterableWeakSet.prototype.toJSON):
(IterableWeakSet.prototype.get _finalizationRegistry):
We could just have a Set/Array of WeakRef, but that would require iterating the entire
array to find the WeakRef that matches the given object, which is less efficient.

  • UserInterface/Controllers/GridOverlayConfigurationDiagnosticEventRecorder.js:

(WI.GridOverlayConfigurationDiagnosticEventRecorder):
Don't keep WI.DOMNode that are layoutOverlayShowing alive in order to record diagnostics.

  • UserInterface/Main.html:
  • UserInterface/Test.html:

LayoutTests:

  • inspector/unit-tests/iterableweakset.html: Added.
  • inspector/unit-tests/iterableweakset-expected.txt: Added.
12:26 PM Changeset in webkit [290611] by Robert Jenner
  • 2 edits
    1 delete in trunk/LayoutTests

REGRESSION(r288070): [ Monterey ] platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment.html is a constant text failure.
​https://bugs.webkit.org/show_bug.cgi?id=236857

Unreviewed test gardening.

Patch by Matteo Flores <Matteo Flores> on 2022-02-28

  • platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment-expected.txt: Removed.
  • platform/mac/platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment-expected.txt: Previous file was in platform/mac/fast... instead of platform/mac/platform/mac/fast...
11:59 AM Changeset in webkit [290610] by Chris Dumez
  • 17 edits in trunk

Adopt the modern Hasher more widely
​https://bugs.webkit.org/show_bug.cgi?id=237262

Reviewed by Sam Weinig.

Source/WebCore:

  • dom/MessagePortIdentifier.h:

(WebCore::add):
(WTF::MessagePortIdentifierHash::hash):
(WebCore::MessagePortIdentifier::hash const): Deleted.

  • history/BackForwardItemIdentifier.h:

(WebCore::add):
(WTF::BackForwardItemIdentifierHash::hash):
(WebCore::BackForwardItemIdentifier::hash const): Deleted.

  • loader/ResourceCryptographicDigest.h:

(WebCore::add):
(WTF::DefaultHash<WebCore::ResourceCryptographicDigest>::hash):

  • platform/graphics/Color.h:

(WebCore::add):
(WebCore::Color::hash const): Deleted.

  • platform/graphics/ColorHash.h:

(WTF::ColorHash::hash):

  • platform/graphics/Font.cpp:

(WebCore::add):
(WebCore::CharacterFallbackMapKeyHash::hash):

  • platform/graphics/FontCache.cpp:

(WebCore::add):
(WebCore::FontPlatformDataCacheKeyHash::hash):
(WebCore::FontCascadeCacheKeyHash::hash): Deleted.

  • platform/graphics/FontCache.h:

(WebCore::add):
(WebCore::FontCascadeCacheKeyHash::hash):

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:

(WebCore::add):
(WebCore::FontFamilySpecificationKeyHash::hash):

  • platform/graphics/cocoa/SystemFontDatabaseCoreText.h:

(WebCore::add):
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::Hash::hash):
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::hash const): Deleted.

  • platform/graphics/freetype/FontCacheFreeType.cpp:

(WebCore::add):
(WebCore::FallbackFontDescriptionKeyHash::hash):

Source/WebKit:

  • NetworkProcess/cache/NetworkCache.h:

(WebKit::NetworkCache::add):
(WTF::GlobalFrameIDHash::hash):
(WebKit::NetworkCache::GlobalFrameID::hash const): Deleted.

  • Platform/IPC/StringReference.cpp:

(IPC::StringReference::Hash::hash):

  • Platform/IPC/StringReference.h:

(IPC::add):

11:57 AM Changeset in webkit [290609] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Fix typo in adattributiond sandbox
​https://bugs.webkit.org/show_bug.cgi?id=237279

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-02-28
Reviewed by Chris Dumez.

After this change, it matches the value in com.apple.webkit.adattributiond.plist

  • Resources/SandboxProfiles/ios/com.apple.WebKit.adattributiond.sb:
11:18 AM Changeset in webkit [290608] by Angelos Oikonomopoulos
  • 2 edits in trunk/Tools

[webkit-patch] Allow user to opt out of browser for viewing the diff
​https://bugs.webkit.org/show_bug.cgi?id=220925

Reviewed by Jonathan Bedard.

The user may legitimately have a browser installed yet not want to
use it to view the diff.

  • Scripts/webkitpy/common/system/user.py:

(User.can_open_url):

11:10 AM Changeset in webkit [290607] by Ross Kirsling
  • 2 edits in trunk/Source/WebKit

REGRESSION(r290588): Broke WinCairo and PlayStation debug builds
​https://bugs.webkit.org/show_bug.cgi?id=237277

Unreviewed build fix.

  • Scripts/webkit/messages.py:

(conditions_for_header):

10:30 AM Changeset in webkit [290606] by Aditya Keerthi
  • 5 edits
    7 adds in trunk

[macOS] Unable to upload ".pages" files to file inputs accepting ".pages" and ".jpeg" files
​https://bugs.webkit.org/show_bug.cgi?id=237219
rdar://89482882

Reviewed by Tim Horton and Said Abou-Hallawa.

Source/WebCore:

In r264286, WebKit began transcoding images of an unsupported format
to a supported format, for file inputs that accepted image types. For
example, selecting a HEIF image in an input that accepts JPEG images
would transcode the selected image to a JPEG image.

In order to determine when attempt transcoding, the logic added in
r264286 obtains the MIME type corresponding to the selected file's
extension, and compares that to the list of accepted MIME types.
If there is a mismatch, transcoding is attempted.

The ".pages" extension does not have a well-defined MIME type in
NSURLFileTypeMappings. This is due to the fact that a the extension
maps to both a file and a package type. Consequently, the retrieved
MIME type for ".pages" files is an empty string. Following r227051,
when the file input also accepts an image type, WebKit attempts to
transcode these files, and any others that do not have a well-defined
MIME type.

While the aforementioned behavior can be considered strange, it is not
an issue in practice, since WebKit will attempt to transcode the
image, fail to do so, and upload the original file. The failure is
detected in CGImageDestinationFinalize, which returns false if an image
was not successfully written. However, a recent regression in the
ImageIO framework is causing CGImageDestinationFinalize to return true,
even if image transcoding fails. This results in WebKit uploading a
zero byte JPEG file, when a user attempts to upload ".pages" files to
file inputs accepting ".pages" and ".jpeg" files.

Ideally, the described issue would be resolved by a fix in ImageIO.
However, a more immediate solution exists in WebKit: only attempt to
transcode files to an accepted image type, if the file selected is
image. ".pages" files are not images, and WebKit should not attempt
to transcode them. See below for further explanation of the solution.

Test: fast/forms/file/entries-api/pages-jpeg-open-panel.html

  • platform/graphics/cg/ImageUtilitiesCG.cpp:

(WebCore::transcodeImage):

Prior to using ImageIO to perform transcoding, WebKit obtains a Uniform
Type Identifier for the selected file using CGImageSourceCreateWithURL
and CGImageSourceGetType. If the file is not an image, a null string is
returned. WebKit can use this information to avoid the transcoding
attempt, and avoid calls to ImageIO methods further down this method.
Specifically, this solution works around the ImageIO bug by avoiding
the call to CGImageDestinationFinalize for non-images. The solution is
also an overall improvement, as WebKit now avoids unnecessary calls to
multiple ImageIO methods, in cases where we know transcoding will fail.

LayoutTests:

Add a layout test that contains a file input that accepts ".pages" and
".jpeg" files, and attempts to upload a ".pages" file.

  • TestExpectations:
  • fast/forms/file/entries-api/pages-jpeg-open-panel-expected.txt: Added.
  • fast/forms/file/entries-api/pages-jpeg-open-panel.html: Added.
  • fast/forms/file/entries-api/pdf-jpeg-open-panel-expected.txt: Added.
  • fast/forms/file/entries-api/pdf-jpeg-open-panel.html: Added.
  • fast/forms/file/entries-api/resources/documents/document.pages: Added.
  • fast/forms/file/entries-api/resources/documents/document.pdf: Added.
  • platform/mac-wk2/TestExpectations:
10:06 AM Changeset in webkit [290605] by Jonathan Bedard
  • 9 edits in trunk/Tools

Unreviewed, reverting r290583.

Breaks webkit-patch

Reverted changeset:

"'run-benchmark' script should log http requests during
benchmark run."
​https://bugs.webkit.org/show_bug.cgi?id=237076
​https://commits.webkit.org/r290583

10:03 AM Changeset in webkit [290604] by Simon Fraser
  • 7 edits in trunk

Revert r290548

It caused three tests to start failing.

Source/WebCore:

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::scrollAnimatorEnabled const): Deleted.

  • rendering/RenderLayerScrollableArea.h:

LayoutTests:

  • css3/scroll-snap/scroll-padding-overflow-paging.html:
  • fast/events/wheelevent-in-scrolling-div.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-rtl-with-keyboard.html:
10:00 AM Changeset in webkit [290603] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Use DeferTerminationForAWhile in Interpreter::unwind
​https://bugs.webkit.org/show_bug.cgi?id=237176

Reviewed by Mark Lam.

If we're unwinding the stack due to a regular exception (not a TerminationException), then
we want to use a DeferTerminationForAWhile scope. This is because we want to avoid a
TerminationException being raised (due to a concurrent termination request) in the middle
of unwinding. The unwinding code only checks if we're handling a TerminationException before
it starts unwinding and is not expecting this status to change in the middle. Without the
DeferTerminationForAWhile scope, control flow may end up in an exception handler, and effectively
"catch" the newly raised TerminationException, which should not be catchable.

On the other hand, if we're unwinding the stack due to a TerminationException, we do not need
nor want the DeferTerminationForAWhile scope. This is because on exit, DeferTerminationForAWhile
will set the VMTraps NeedTermination bit if termination is in progress. The system expects the
NeedTermination bit to be have been cleared by VMTraps::handleTraps() once the TerminationException
has been raised. Some legacy client apps relies on this and expects to be able to re-enter the
VM after it exits due to termination. If the NeedTermination bit is set, upon re-entry, the
VM will behave as if a termination request is pending and terminate almost immediately, thereby
breaking the legacy client apps.

  • interpreter/Interpreter.cpp:

(JSC::UnwindFunctor::notifyDebuggerOfUnwinding):
(JSC::sanitizeRemoteFunctionException):
(JSC::Interpreter::unwind):
(JSC::notifyDebuggerOfUnwinding): Deleted.

9:49 AM Changeset in webkit [290602] by Russell Epstein
  • 1 copy in tags/Safari-613.1.17.1.10

Tag Safari-613.1.17.1.10.

9:49 AM Changeset in webkit [290601] by Russell Epstein
  • 8 edits
    2 deletes in branches/safari-613.1.17.1-branch

Revert r290518. rdar://problem/86582214

9:45 AM Changeset in webkit [290600] by Russell Epstein
  • 9 edits in branches/safari-613.1.17.1-branch/Source

Versioning.

WebKit-7613.1.17.1.10

9:37 AM Changeset in webkit [290599] by commit-queue@webkit.org
  • 6 edits in trunk/Tools

Enable python3 for lighttpd
​https://bugs.webkit.org/show_bug.cgi?id=236938

Patch by Pascal Abresch <​nep@packageloss.eu> on 2022-02-28
Reviewed by Darin Adler.

This is needed for the Haiku port to use the python3 tests.
This patch also removes the PHP support since all PHP tests have been removed and there are
currently no plans to include new ones in the future.

  • Scripts/webkitpy/layout_tests/servers/http_server.py:

(Lighttpd._prepare_config):

  • Scripts/webkitpy/layout_tests/servers/lighttpd.conf:
9:10 AM Changeset in webkit [290598] by graouts@webkit.org
  • 4 edits in trunk

[web-animations] web-animations/interfaces/Animatable/getAnimations.html is a unique failure
​https://bugs.webkit.org/show_bug.cgi?id=237271

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/interfaces/Animatable/getAnimations-expected.txt:

Source/WebCore:

Our computation for the relevant state did not account for the playback rate. We rewrite
the function to match the spec exactly.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::computeRelevance):

8:38 AM WebKitGTK/2.36.x edited by Michael Catanzaro
(diff)
8:32 AM Changeset in webkit [290597] by commit-queue@webkit.org
  • 2 edits in trunk

-Wodr warning spam caused by ENABLE(BINDING_INTEGRITY)
​https://bugs.webkit.org/show_bug.cgi?id=229867
<rdar://problem/82975115>

Patch by Michael Catanzaro <Michael Catanzaro> on 2022-02-28
Reviewed by Carlos Garcia Campos.

Build WebKit with -Wno-odr. This warning is not salvagable, and it's impossible to suppress
locally.

  • Source/cmake/WebKitCompilerFlags.cmake:

2022-02-24 Matt Woodrow <Matt Woodrow>

Unreviewed, update my (Matt Woodrow) status to committer.

  • metadata/contributors.json:
7:52 AM WebKitGTK/2.36.x edited by Michael Catanzaro
(diff)
7:36 AM Changeset in webkit [290596] by Jonathan Bedard
  • 3 edits in trunk/Tools

[run-webkit-tests] Use Python 3 (Part 3)
​https://bugs.webkit.org/show_bug.cgi?id=226658
<rdar://problem/78882016 >

Reviewed by Ryan Haddad.

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

(RunWebKitTests): Change invocation to Python 3.

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

(test_success):
(test_warnings):

Canonical link: ​https://commits.webkit.org/247872@main

6:50 AM Changeset in webkit [290595] by commit-queue@webkit.org
  • 4 edits
    3 adds in trunk

FTP EPLF does not handle directory
​https://bugs.webkit.org/show_bug.cgi?id=45113

Patch by Pascal Abresch <​nep@packageloss.eu> on 2022-02-28
Reviewed by Darin Adler.

The code used "!result.type" to check for an invalid type. However,
the first type in the FTPEntryType enum is FTPDirectoryEntry, so this
was actually returning true for directories, turning them into "junk"
entries which would not be listed.

Since the code for EPLF can only result in either files, directories,
or uninitialized/junk entries, the check can be removed, returning
result.type is the correct thing to do in all 3 cases.
Source/WebCore:

Test: http/tests/misc/ftp-eplf-directory.py

  • loader/FTPDirectoryParser.cpp:

(WebCore::parseOneFTPLine):

LayoutTests:

  • http/tests/misc/ftp-eplf-directory-expected.txt: Added.
  • http/tests/misc/ftp-eplf-directory.py: Added.
  • platform/gtk/TestExpectations:
6:01 AM Changeset in webkit [290594] by commit-queue@webkit.org
  • 4 edits
    1 add in trunk/Source/WebKit

REGRESSION(r290588) Missing symbol jsValueForDecodedMessage<107> (IPCStreamTesterProxy_WasCreated)
​https://bugs.webkit.org/show_bug.cgi?id=237268

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-02-28
Reviewed by Antti Koivisto.

Add the class IPCStreamTesterProxy now that *MessageReceiver.cpp
are needed. After commit
"IPC_TESTING_API MessageArgumentDescriptions.cpp is slow to compile"
MessageReceiver.cpp files contain also message-specific functions that
need to be compiled, even though IPCStreamTesterProxy itself is not
used.

  • Shared/IPCStreamTesterProxy.h: Added.
  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
2:47 AM Changeset in webkit [290593] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.36

Merge r290586 - [ATSPI] Always expose table cells (layout and CSS) that have rendered text content
​https://bugs.webkit.org/show_bug.cgi?id=237204

Reviewed by Adrian Perez de Castro.

Source/WebCore:

  • accessibility/atspi/AccessibilityObjectAtspi.cpp:

(WebCore::AccessibilityObject::accessibilityPlatformIncludesObject const):

LayoutTests:

  • accessibility/gtk/nested-block-element-children-expected.txt: Rebaseline.
  • platform/glib/TestExpectations: Remove accessibility/generated-content-with-display-table-crash.html.
  • platform/gtk/TestExpectations: Remove accessibility/gtk/nested-block-element-children.html.
2:47 AM Changeset in webkit [290592] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.36

Merge r290585 - [GTK][a11y] Test accessibility/gtk/xml-roles-exposed.html is failing since ATSPI switch
​https://bugs.webkit.org/show_bug.cgi?id=237202

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Handle the special case of form item having unknown aria role to be exposed as landmark.

  • accessibility/atspi/AccessibilityObjectAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::effectiveRole const):

LayoutTests:

  • platform/gtk/TestExpectations: Remove accessibility/gtk/xml-roles-exposed.html.
  • platform/gtk/accessibility/gtk/xml-roles-exposed-expected.txt: Rebaseline.
2:18 AM Changeset in webkit [290591] by youenn@apple.com
  • 17 edits in trunk/Source/WebKit

RemoteVideoFrameObjectHeap should process its IPC messages in a background thread
​https://bugs.webkit.org/show_bug.cgi?id=237198

Reviewed by Darin Adler.

Minor refactoring to have addWorkQueueMessageReceiver take a reference instead of a pointer.
Make RemoteVideoFrameObjectHeap become a WorkQueueMessageReceiver.
This ensures that a main thread hang in GPUProcess will not block big memory releases or WebProcess access to pixel buffers.

No observable change of behavior.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::didClose):
(WebKit::GPUConnectionToWebProcess::videoFrameObjectHeap const):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/media/RemoteVideoFrameObjectHeap.cpp:

(WebKit::remoteVideoFrameObjectHeapQueue):
(WebKit::RemoteVideoFrameObjectHeap::create):
(WebKit::RemoteVideoFrameObjectHeap::RemoteVideoFrameObjectHeap):
(WebKit::RemoteVideoFrameObjectHeap::~RemoteVideoFrameObjectHeap):
(WebKit::RemoteVideoFrameObjectHeap::close):
(WebKit::RemoteVideoFrameObjectHeap::releaseVideoFrame):
(WebKit::RemoteVideoFrameObjectHeap::getVideoFrameBuffer):
(WebKit::RemoteVideoFrameObjectHeap::pixelBuffer):
(WebKit::RemoteVideoFrameObjectHeap::stopListeningForIPC): Deleted.

  • GPUProcess/media/RemoteVideoFrameObjectHeap.h:
  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::addConnection):

  • NetworkProcess/WebStorage/StorageManagerSet.cpp:

(WebKit::StorageManagerSet::addConnection):

  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::startReceivingMessageFromConnection):

  • NetworkProcess/webrtc/RTCDataChannelRemoteManagerProxy.cpp:

(WebKit::RTCDataChannelRemoteManagerProxy::registerConnectionToWebProcess):

  • Platform/IPC/Connection.cpp:

(IPC::Connection::addWorkQueueMessageReceiver):

  • Platform/IPC/Connection.h:
  • UIProcess/mac/SecItemShimProxy.cpp:

(WebKit::SecItemShimProxy::initializeConnection):

  • WebProcess/GPU/media/RemoteAudioSourceProviderManager.cpp:

(WebKit::RemoteAudioSourceProviderManager::setConnection):

  • WebProcess/GPU/webrtc/RemoteVideoFrameObjectHeapProxyProcessor.cpp:

(WebKit::RemoteVideoFrameObjectHeapProxyProcessor::RemoteVideoFrameObjectHeapProxyProcessor):

  • WebProcess/Inspector/WebInspectorInterruptDispatcher.cpp:

(WebKit::WebInspectorInterruptDispatcher::initializeConnection):

  • WebProcess/Network/webrtc/RTCDataChannelRemoteManager.cpp:

(WebKit::RTCDataChannelRemoteManager::setConnection):

  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::initializeConnection):

  • WebProcess/WebPage/ViewUpdateDispatcher.cpp:

(WebKit::ViewUpdateDispatcher::initializeConnection):

2:03 AM Changeset in webkit [290590] by youenn@apple.com
  • 11 edits in trunk/Source

Ensure RemoteMediaPlayerProxy sets its resource owner to pixel buffers created by its player
​https://bugs.webkit.org/show_bug.cgi?id=237200

Reviewed by Eric Carlson.

Source/WebCore:

Add API to set the resource owner for a player private.
In case player private is running in GPUProcess, use resource owner to mark pixel buffers as owned by the resource owner.
Covered by existing tests.

  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::setResourceOwner):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastPixelBuffer):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateLastPixelBuffer):

Source/WebKit:

Set resource owner to the player private.

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:

(WebKit::RemoteMediaPlayerManagerProxy::createMediaPlayer):

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::RemoteMediaPlayerProxy):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
1:56 AM Changeset in webkit [290589] by Angelos Oikonomopoulos
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] Reuse known register values on ARMv7
​https://bugs.webkit.org/show_bug.cgi?id=237207

Reviewed by Žan Doberšek.

Set up a CachedTempRegister for each of addressTempRegister,
dataTempRegister on ARMv7 and use them to generate shorter instruction
sequences when possible.

Saves 1.5-2% of code size on JS2 with no measurable difference in
performance.

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::CachedTempRegister::value):

  • assembler/MacroAssemblerARMv7.cpp:

(JSC::MacroAssembler::probe):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::MacroAssemblerARMv7):
(JSC::MacroAssemblerARMv7::add32):
(JSC::MacroAssemblerARMv7::getEffectiveAddress):
(JSC::MacroAssemblerARMv7::add64):
(JSC::MacroAssemblerARMv7::lshift32):
(JSC::MacroAssemblerARMv7::mul32):
(JSC::MacroAssemblerARMv7::rshift32):
(JSC::MacroAssemblerARMv7::urshift32):
(JSC::MacroAssemblerARMv7::load32):
(JSC::MacroAssemblerARMv7::load16):
(JSC::MacroAssemblerARMv7::load16SignedExtendTo32):
(JSC::MacroAssemblerARMv7::load8):
(JSC::MacroAssemblerARMv7::load8SignedExtendTo32):
(JSC::MacroAssemblerARMv7::loadPair32):
(JSC::MacroAssemblerARMv7::store8):
(JSC::MacroAssemblerARMv7::storePair32):
(JSC::MacroAssemblerARMv7::loadDouble):
(JSC::MacroAssemblerARMv7::loadFloat):
(JSC::MacroAssemblerARMv7::storeDouble):
(JSC::MacroAssemblerARMv7::storeFloat):
(JSC::MacroAssemblerARMv7::branchTruncateDoubleToInt32):
(JSC::MacroAssemblerARMv7::branchConvertDoubleToInt32):
(JSC::MacroAssemblerARMv7::long_move):
(JSC::MacroAssemblerARMv7::short_move):
(JSC::MacroAssemblerARMv7::move):
(JSC::MacroAssemblerARMv7::compare32AndSetFlags):
(JSC::MacroAssemblerARMv7::branch8):
(JSC::MacroAssemblerARMv7::branchTest8):
(JSC::MacroAssemblerARMv7::branchTest16):
(JSC::MacroAssemblerARMv7::farJump):
(JSC::MacroAssemblerARMv7::branchMul32):
(JSC::MacroAssemblerARMv7::nearCall):
(JSC::MacroAssemblerARMv7::nearTailCall):
(JSC::MacroAssemblerARMv7::call):
(JSC::MacroAssemblerARMv7::compare8):
(JSC::MacroAssemblerARMv7::test8):
(JSC::MacroAssemblerARMv7::jump):
(JSC::MacroAssemblerARMv7::makeBranch):
(JSC::MacroAssemblerARMv7::setupArmAddress):
(JSC::MacroAssemblerARMv7::makeBaseIndexBase):
(JSC::MacroAssemblerARMv7::moveFixedWidthEncoding):
(JSC::MacroAssemblerARMv7::cachedDataTempRegister):
(JSC::MacroAssemblerARMv7::cachedAddressTempRegister):
(JSC::MacroAssemblerARMv7::getCachedDataTempRegisterIDAndInvalidate):
(JSC::MacroAssemblerARMv7::getCachedAddressTempRegisterIDAndInvalidate):

  • bytecode/CallLinkInfo.cpp:

(JSC::CallLinkInfo::emitFastPathImpl):

1:10 AM Changeset in webkit [290588] by commit-queue@webkit.org
  • 13 edits in trunk/Source/WebKit

IPC_TESTING_API MessageArgumentDescriptions.cpp is slow to compile
​https://bugs.webkit.org/show_bug.cgi?id=237195

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-02-28
Reviewed by Antti Koivisto.

IPC testing API needs convert message data buffer, IPC::Decoder, to
JSValue. This is a run-time operation.
IPC message decoding is based on templates, a compile time operation.
IPC generator generates MessageArgumentDescriptions.cpp with
a big switch. The switch has a case for each message name. The case would
call templated jsValueForDecodedArguments<Arguments>, where the Arguments
is the type tuple for the message arguments.

The above would mean that MessageArgumentDescriptions would need to
include all the headers for all the messages in WebKit in order
to populate the Arguments tuple for particular message.
This would cause MessageArgumentDescriptions to be slow to compile because
it would need all the headers in Source/WebKit related to message parameter types.

This would show up as slow compiles that would consume much memory (5-6gb) and do a
lot of work.

It would also have to compile the MessageArgumentDescriptions each time
any of the headers were touched.

Change this so that the big switch calls a declared but not defined
template jsValueForDecodedMessage<MessageName> for each MessageName case in the
switch.

Instantiate the template for each message in the *MessageReceiver.cpp file
that each message receiver has. This file already has to include all the
headers used for that particular message receiver. These files are small and compile
fast.

After this change MessageArgumentDescriptions.cpp only includes the message
definition headers, does not use much more than the standard 1gb+ of memory
while compiling and is relatively fast to compile. Also if any of the dependent
headers are touched, only the corresponding small *MessageReceiver.cpp files are compiled.

This change is needed for further improve the JS testing API implementation.
Adding new operations that employ the same strategy, eg. switch and a complex
template instantiation, would possibly just make the matter worse. New operations
that are needed are message sends, which use templates similarly to the message
decode case that is implement here.

This change regenerates the checked-in test content that can be used to review
what kind of changes the real MessageArgumentDescriptions.cpp and MessageReceiver.cpps
get.

  • Platform/IPC/JSIPCBinding.h:
  • Scripts/webkit/messages.py:

(generate_message_handler):
(generate_js_value_conversion_function):
(generate_message_argument_description_implementation):

  • Scripts/webkit/tests/MessageArgumentDescriptions.cpp:

(IPC::jsValueForArguments):
(IPC::jsValueForReplyArguments):

  • Scripts/webkit/tests/TestWithCVPixelBufferMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithCVPixelBuffer_SendCVPixelBuffer>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithCVPixelBuffer_ReceiveCVPixelBuffer>):

  • Scripts/webkit/tests/TestWithIfMessageMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithIfMessage_LoadURL>):

  • Scripts/webkit/tests/TestWithImageDataMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithImageData_SendImageData>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithImageData_ReceiveImageData>):

  • Scripts/webkit/tests/TestWithLegacyReceiverMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_LoadURL>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_LoadSomething>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_TouchEvent>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_AddEvent>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_LoadSomethingElse>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_DidReceivePolicyDecision>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_Close>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_PreferencesDidChange>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_SendDoubleAndFloat>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_SendInts>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_CreatePlugin>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_RunJavaScriptAlert>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_GetPlugins>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_GetPluginProcessConnection>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithLegacyReceiver_GetPluginProcessConnection>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_TestMultipleAttributes>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithLegacyReceiver_TestMultipleAttributes>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_TestParameterAttributes>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_TemplateTest>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_SetVideoLayerID>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_DidCreateWebProcessConnection>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_InterpretKeyEvent>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_DeprecatedOperation>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithLegacyReceiver_ExperimentalOperation>):

  • Scripts/webkit/tests/TestWithSemaphoreMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithSemaphore_SendSemaphore>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSemaphore_ReceiveSemaphore>):

  • Scripts/webkit/tests/TestWithStreamBufferMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithStreamBuffer_SendStreamBuffer>):

  • Scripts/webkit/tests/TestWithStreamMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithStream_SendString>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithStream_SendStringSynchronized>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithStream_SendMachSendRight>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithStream_ReceiveMachSendRight>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithStream_SendAndReceiveMachSendRight>):

  • Scripts/webkit/tests/TestWithSuperclassMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_LoadURL>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_TestAsyncMessage>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithSuperclass_TestAsyncMessage>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_TestAsyncMessageWithNoArguments>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithSuperclass_TestAsyncMessageWithNoArguments>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArguments>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithSuperclass_TestAsyncMessageWithMultipleArguments>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_TestAsyncMessageWithConnection>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithSuperclass_TestAsyncMessageWithConnection>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_TestSyncMessage>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithSuperclass_TestSyncMessage>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithSuperclass_TestSynchronousMessage>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithSuperclass_TestSynchronousMessage>):

  • Scripts/webkit/tests/TestWithoutAttributesMessageReceiver.cpp:

(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_LoadURL>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_LoadSomething>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_TouchEvent>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_AddEvent>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_LoadSomethingElse>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_DidReceivePolicyDecision>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_Close>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_PreferencesDidChange>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_SendDoubleAndFloat>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_SendInts>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_CreatePlugin>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_RunJavaScriptAlert>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_GetPlugins>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_GetPluginProcessConnection>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithoutAttributes_GetPluginProcessConnection>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_TestMultipleAttributes>):
(IPC::jsValueForDecodedMessageReply<MessageName::TestWithoutAttributes_TestMultipleAttributes>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_TestParameterAttributes>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_TemplateTest>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_SetVideoLayerID>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_DidCreateWebProcessConnection>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_InterpretKeyEvent>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_DeprecatedOperation>):
(IPC::jsValueForDecodedMessage<MessageName::TestWithoutAttributes_ExperimentalOperation>):

1:01 AM Changeset in webkit [290587] by ntim@apple.com
  • 2 edits in trunk/Source/WTF

Enable inert attribute feature flag
​https://bugs.webkit.org/show_bug.cgi?id=235668

Reviewed by Darin Adler.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
1:00 AM Changeset in webkit [290586] by Carlos Garcia Campos
  • 6 edits in trunk

[ATSPI] Always expose table cells (layout and CSS) that have rendered text content
​https://bugs.webkit.org/show_bug.cgi?id=237204

Reviewed by Adrian Perez de Castro.

Source/WebCore:

  • accessibility/atspi/AccessibilityObjectAtspi.cpp:

(WebCore::AccessibilityObject::accessibilityPlatformIncludesObject const):

LayoutTests:

  • accessibility/gtk/nested-block-element-children-expected.txt: Rebaseline.
  • platform/glib/TestExpectations: Remove accessibility/generated-content-with-display-table-crash.html.
  • platform/gtk/TestExpectations: Remove accessibility/gtk/nested-block-element-children.html.
12:58 AM Changeset in webkit [290585] by Carlos Garcia Campos
  • 5 edits in trunk

[GTK][a11y] Test accessibility/gtk/xml-roles-exposed.html is failing since ATSPI switch
​https://bugs.webkit.org/show_bug.cgi?id=237202

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Handle the special case of form item having unknown aria role to be exposed as landmark.

  • accessibility/atspi/AccessibilityObjectAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::effectiveRole const):

LayoutTests:

  • platform/gtk/TestExpectations: Remove accessibility/gtk/xml-roles-exposed.html.
  • platform/gtk/accessibility/gtk/xml-roles-exposed-expected.txt: Rebaseline.
12:29 AM Changeset in webkit [290584] by graouts@webkit.org
  • 4 edits in trunk

[web-animations] web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html is a unique failure
​https://bugs.webkit.org/show_bug.cgi?id=237259

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001-expected.txt:

Source/WebCore:

We incorrectly threw when processing a null or undefined value when an iterable was provided to setKeyframes().
We now correctly insert an empty keyframe if such a value is provided.

  • animation/KeyframeEffect.cpp:

(WebCore::processIterableKeyframes):

Feb 27, 2022:

11:07 PM Changeset in webkit [290583] by Dewei Zhu
  • 9 edits in trunk/Tools

'run-benchmark' script should log http requests during benchmark run.
​https://bugs.webkit.org/show_bug.cgi?id=237076
<rdar://89270825>

Reviewed by Simon Fraser.

Add support to log http requests during benchmark run for diagnostic purpose.

  • Scripts/webkitpy/init.py: Update 'attr' package version to 20.3.0 so match upgraded twisted version
  • Scripts/webkitpy/autoinstalled/twisted.py: Upgrade twisted version to latest python2 & python3 compatibile

version.

  • Scripts/webkitpy/benchmark_runner/benchmark_runner.py: Ensure benchmark diagnostic directory is created.

(BenchmarkRunner.init):

  • Scripts/webkitpy/benchmark_runner/http_server_driver/http_server/twisted_http_server.py: Add '--log-path'

arugment to allow specify logging output and it defaults to '/tmp/run-benchmark-http.log'

  • Scripts/webkitpy/benchmark_runner/http_server_driver/http_server_driver.py:

(HTTPServerDriver.set_device_id):
(HTTPServerDriver):
(HTTPServerDriver.set_http_log):

  • Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py: Pass http log path to

twisted http server if specified.
(SimpleHTTPServerDriver.init):
(SimpleHTTPServerDriver.serve):
(SimpleHTTPServerDriver.set_http_log):

  • Scripts/webkitpy/benchmark_runner/run_benchmark.py: Fix a tiny bug that default_diagnose_dir() is involked twice in

argument parser help message.
(config_argument_parser):

  • Scripts/webkitpy/benchmark_runner/webserver_benchmark_runner.py: Set http request log path if diagnostic directory

is specified.
(WebServerBenchmarkRunner.init):

Canonical link: ​https://commits.webkit.org/247861@main

9:09 PM Changeset in webkit [290582] by sihui_liu@apple.com
  • 10 edits in trunk/Source/WebKit

Add a feature flag for using general storage directory
​https://bugs.webkit.org/show_bug.cgi?id=237186
rdar://89521373

Reviewed by Chris Dumez.

  • FeatureFlags/WebKit-appletvos.plist:
  • FeatureFlags/WebKit-ios.plist:
  • FeatureFlags/WebKit-macos.plist:
  • FeatureFlags/WebKit-watchos.plist:
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::defaultShouldUseCustomStoragePaths):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::defaultShouldUseCustomStoragePaths):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::WebsiteDataStoreConfiguration):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
8:17 PM Changeset in webkit [290581] by Said Abou-Hallawa
  • 6 edits in trunk/Source

[GPU Process] Deleted unneeded constructors from DisplayList::Recorder classes
​https://bugs.webkit.org/show_bug.cgi?id=237261

Reviewed by Wenson Hsieh.

Source/WebCore:

This should have been done in r289594.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::Recorder):

  • platform/graphics/displaylists/DisplayListRecorder.h:

Source/WebKit:

  • WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
  • WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
8:01 PM Changeset in webkit [290580] by Jonathan Bedard
  • 71 edits
    2 deletes in trunk

webkitpy: WebSocket server doesn't support Python 3
​https://bugs.webkit.org/show_bug.cgi?id=230319
<rdar://problem/58814743>

Reviewed by Fujii Hironori.

Tools:

  • Scripts/new-run-webkit-websocketserver: Change shebang.
  • Scripts/webkitpy/layout_tests/servers/websocket_server.py:

(PyWebSocket._prepare_config): Invoke WebSocket server with Python 3.

LayoutTests:

Make all tests Python 3 compatible, even at the cost of Python 2
compatibility, since WebSocket tests are always invoked with Python 3.

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/binary-frames_wsh.py:

(web_socket_transfer_data):
(all_distinct_bytes):

  • http/tests/websocket/tests/hybi/broken-utf8_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/check-binary-messages_wsh.py:

(web_socket_transfer_data):
(all_distinct_bytes):

  • http/tests/websocket/tests/hybi/client-close-2-expected.txt:
  • http/tests/websocket/tests/hybi/client-close-2.html:
  • http/tests/websocket/tests/hybi/client-close-2_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/client-close-expected.txt:
  • http/tests/websocket/tests/hybi/client-close.html:
  • http/tests/websocket/tests/hybi/client-close_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/close-code-and-reason_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/close-on-unload_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/compressed-control-frame_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/cookie_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/deflate-frame_wsh.py:

(_get_deflate_frame_extension_processor):
(web_socket_do_extra_handshake):
(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/echo-cookie_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/echo_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/fragmented-binary-frames_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/handshake-fail-by-extensions-header_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-invalid-http-version_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-maxlength_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-mismatch-protocol-header_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-more-accept-header_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-more-extensions-header_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-more-protocol-header_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-no-accept-header_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-no-connection-header_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-no-cr_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-no-upgrade-header_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-accept_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-extensions_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-protocol_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-status-line_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-null-char-in-status_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-prepended-null_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-fail-by-wrong-accept-header_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-ok-with-legacy-sec-websocket-response-headers_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/handshake-ok-with-legacy-websocket-response-headers_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-invalid-parameter_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-manual_wsh.py:
  • http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-unsolicited-negotiation-response_wsh.py:
  • http/tests/websocket/tests/hybi/imported/blink/permessage-deflate_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/inspector/binary_wsh.py:

(web_socket_transfer_data):
(all_distinct_bytes):

  • http/tests/websocket/tests/hybi/invalid-continuation_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/invalid-encode-length_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/pong_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/protocol-test_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/reserved-bits_wsh.py:

(_get_deflate_frame_extension_processor):
(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/reserved-opcodes_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/send-file-blob_wsh.py:

(web_socket_transfer_data):
(all_distinct_bytes):

  • http/tests/websocket/tests/hybi/too-long-payload_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/unicode_wsh.py:
  • http/tests/websocket/tests/hybi/unmasked-frames_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/workers/resources/binary-frames_wsh.py:

(web_socket_transfer_data):
(all_distinct_bytes):

  • http/tests/websocket/tests/hybi/workers/resources/check-binary-messages_wsh.py:

(web_socket_transfer_data):
(all_distinct_bytes):

  • http/tests/websocket/tests/hybi/workers/resources/no-onmessage-in-sync-op_wsh.py:

(web_socket_transfer_data):

  • http/tests/websocket/tests/hybi/workers/resources/protocol-test_wsh.py:

(web_socket_do_extra_handshake):

  • http/tests/websocket/tests/hybi/zero-length-text_wsh.py:

(web_socket_transfer_data):

  • platform/glib/TestExpectations:
  • platform/ios-wk2/http/tests/websocket/tests/hybi/handshake-fail-by-no-cr-expected.txt:
  • platform/mac-wk2/http/tests/websocket/tests/hybi/client-close-2-expected.txt: Removed.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/client-close-expected.txt: Removed.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/handshake-fail-by-no-cr-expected.txt:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
  • platform/wincairo/TestExpectations:
7:28 PM Changeset in webkit [290579] by commit-queue@webkit.org
  • 9 edits
    2 deletes in trunk

Unreviewed, reverting r290577.
​https://bugs.webkit.org/show_bug.cgi?id=237264

Breaks ios-wk2 layout test.

Reverted changeset:

"Compute correct containing block override size for items that
are subgridden in one dimension only."
​https://bugs.webkit.org/show_bug.cgi?id=236951
​https://commits.webkit.org/r290577

7:24 PM Changeset in webkit [290578] by Wenson Hsieh
  • 8 edits in trunk/Source

Invoking "Markup Image" should preserve the existing selection range
​https://bugs.webkit.org/show_bug.cgi?id=237242

Reviewed by Darin Adler.

Source/WebCore:

Move the implementation of replaceNodeFromPasteboard out of the macOS-specific implementation file and into
EditorCocoa instead, so that we can use it on both iOS and macOS to handle the "Markup Image" action. See WebKit
ChangeLog for more details.

  • editing/Editor.h:
  • editing/cocoa/EditorCocoa.mm:

(WebCore::maybeCopyNodeAttributesToFragment):
(WebCore::Editor::replaceNodeFromPasteboard):

Also make a few minor adjustments while we're moving this code:

  • Make this take a reference instead of a pointer (the method always expects a non-null Node pointer anyways).
  • Add a FIXME mentioning that we can just delete setInsertionPasteboard altogether once Mail compose on

macOS uses WebKit2.

  • Unconditionally pass false for whether or not we should enable smart paste when replacing the node. This

prevents us from inserting spaces around the replacement image element when triggering the "Markup Image"
item.

  • Use makeRangeSelectingNode instead of makeRangeSelectingNodeContents when selecting the node to replace.

This allows us to handle the case where the node to replace cannot contain children for editing (in
particular, image elements).

Note that this codepath (replaceNodeFromPasteboard) is currently only exercised by WebKitLegacy service
controls code that was originally intended for use by Mail compose, but never ended up being used.

  • editing/mac/EditorMac.mm:

(WebCore::Editor::pasteWithPasteboard):
(WebCore::maybeCopyNodeAttributesToFragment): Deleted.
(WebCore::Editor::replaceNodeFromPasteboard): Deleted.

Source/WebKit:

Make a few adjustments to replaceWithPasteboardData, such that it attempts to restore the previous selection
range after replacing the target element. If the previous selection is no longer valid (i.e., it was orphaned as
a result of the editing command used to replace the element), then we fall back to restoring the visible
character range of the previous selection, relative to the editable root (or the body if there is none).

API tests will be added in ​https://webkit.org/b/236519, once we're able to swizzle out the underlying VisionKit
methods in order to make these tests run reliably.

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::OverridePasteboardForSelectionReplacement::OverridePasteboardForSelectionReplacement):
(WebKit::OverridePasteboardForSelectionReplacement::~OverridePasteboardForSelectionReplacement):

Add a helper RAII object that encapsulates logic for setting and unsetting data on the override pasteboard. Use
this in the two methods below.

(WebKit::WebPage::replaceWithPasteboardData):

Switch to using the refactored Editor::replaceNodeFromPasteboard method instead of calling to the adjacent
replaceSelectionWithPasteboardData method below. Using this method allows us to avoid manually selecting the
target element here, and also avoids smart pasteboard replacement (which may insert spaces before or after the
image); the latter is important in order to correctly restore the previous selection's character range in the
case where the previous selection range was orphaned by the replacement.

(WebKit::WebPage::replaceSelectionWithPasteboardData):

Source/WebKitLegacy/mac:

See WebKit and WebCore ChangeLogs for more detail.

  • Misc/WebSharingServicePickerController.mm:

(-[WebSharingServicePickerController didShareImageData:confirmDataIsValidTIFFData:]):

Adjust this call site to pass in a reference instead of a pointer. Also deploy RefPtr in some adjacent code.

7:03 PM Changeset in webkit [290577] by Matt Woodrow
  • 9 edits
    2 adds in trunk

Compute correct containing block override size for items that are subgridden in one dimension only.
​https://bugs.webkit.org/show_bug.cgi?id=236951

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Added new WPT similar to auto-track-sizing-001 which adds new variations
with nested subgrids and varying whether the other axis is subgridded.

  • web-platform-tests/css/css-grid/subgrid/auto-track-sizing-002-expected.html: Added.
  • web-platform-tests/css/css-grid/subgrid/auto-track-sizing-002.html: Added.

Source/WebCore:

Items that are subgridded in one dimension will be included in the track sizing algorithm of the
outer grid for that dimension. When measuring their size in the subgridded dimension, we need to
set their containing block size in the other (non-subgridded) dimension, which is only available
from the subgrid's track sizing, not the outer track sizes.

This recurses up to set the override size on the subgrid element instead, and forces a layout
there, which should copy down subgrid track sizes and compute the other dimension, making it
available on the inner item we need.

Test: imported/w3c/web-platform-tests/css/css-grid/subgrid/auto-track-sizing-002.html

  • rendering/GridLayoutFunctions.cpp:

(WebCore::GridLayoutFunctions::extraMarginForSubgridAncestors):

  • rendering/GridLayoutFunctions.h:
  • rendering/GridTrackSizingAlgorithm.cpp:

(WebCore::GridTrackSizingAlgorithmStrategy::updateOverridingContainingBlockContentSizeForChild const):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::isSubgridOf):

  • rendering/RenderGrid.h:

LayoutTests:

Marked existing WPT as passing.

6:14 PM Changeset in webkit [290576] by Matt Woodrow
  • 4 edits in trunk

Convert grid direction to be relative to subgrid when accounting for extra margin.
​https://bugs.webkit.org/show_bug.cgi?id=236954

Reviewed by Dean Jackson.

Source/WebCore:

|direction| is passed as a direction relative to |grid|, so we need to convert it
to be a direction relative to the subgrid item in order to account for margin on
the correct edge.

Marks existing test orthogonal-writing-mode-003.html as passing.

  • rendering/GridLayoutFunctions.cpp:

(WebCore::GridLayoutFunctions::marginLogicalSizeForChild):

LayoutTests:

Marks existing test orthogonal-writing-mode-003.html as passing.

5:24 PM Changeset in webkit [290575] by Chris Dumez
  • 100 edits in trunk

Omit template parameter for SetForScope<> variables
​https://bugs.webkit.org/show_bug.cgi?id=237258

Reviewed by Darin Adler.

Source/JavaScriptCore:

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::emitNode):

  • debugger/Debugger.cpp:

(JSC::Debugger::dispatchFunctionToObservers):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::setLocalOrTmp):
(JSC::DFG::ByteCodeParser::setArgument):

  • inspector/InspectorBackendDispatcher.cpp:

(Inspector::BackendDispatcher::dispatch):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::parseAsyncFunctionSourceElements):
(JSC::Parser<LexerType>::parseAsyncGeneratorFunctionSourceElements):
(JSC::Parser<LexerType>::parseFunctionBody):
(JSC::Parser<LexerType>::parseFunctionParameters):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseFunctionDeclaration):
(JSC::Parser<LexerType>::parseAsyncFunctionDeclaration):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseProperty):
(JSC::Parser<LexerType>::parseGetterSetter):
(JSC::Parser<LexerType>::parseFunctionExpression):
(JSC::Parser<LexerType>::parseAsyncFunctionExpression):
(JSC::Parser<LexerType>::parseArrowFunctionExpression):

Source/WebCore:

  • Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:

(WebCore::IDBServer::MemoryBackingStoreTransaction::abort):

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::performDeferredCacheUpdate):

  • bindings/js/JSCustomElementRegistryCustom.cpp:

(WebCore::JSCustomElementRegistry::define):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::evaluateInWorld):
(WebCore::ScriptController::evaluateModule):
(WebCore::ScriptController::callInWorld):
(WebCore::ScriptController::executeJavaScriptURL):

  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::addFontFaceRule):

  • css/parser/CSSSelectorParser.cpp:

(WebCore::CSSSelectorParser::consumeCompoundSelector):

  • dom/CustomElementReactionQueue.cpp:

(WebCore::CustomElementQueue::invokeAll):

  • dom/Document.cpp:

(WebCore::Document::updateRenderTree):
(WebCore::Document::styleForElementIgnoringPendingStylesheets):
(WebCore::Document::destroyRenderTree):
(WebCore::Document::hitTest):

  • dom/EventTarget.cpp:

(WebCore::EventTarget::fireEventListeners):

  • dom/Microtasks.cpp:

(WebCore::MicrotaskQueue::performMicrotaskCheckpoint):

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::forEachActiveDOMObject const):

  • dom/Traversal.cpp:

(WebCore::NodeIteratorBase::acceptNode):

  • editing/Editor.cpp:

(WebCore::Editor::cut):
(WebCore::Editor::copy):
(WebCore::Editor::copyFont):
(WebCore::Editor::paste):
(WebCore::Editor::pasteAsPlainText):
(WebCore::Editor::pasteAsQuotation):
(WebCore::Editor::pasteFont):

  • history/BackForwardCache.cpp:

(WebCore::BackForwardCache::pruneToSizeNow):
(WebCore::BackForwardCache::removeAllItemsForPage):

  • html/DOMTokenList.cpp:

(WebCore::DOMTokenList::updateAssociatedAttributeFromTokens):

  • html/HTMLButtonElement.cpp:

(WebCore::HTMLButtonElement::defaultEventHandler):

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::focusAndShowValidationMessage):

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::reset):
(WebCore::HTMLFormElement::constructEntryList):

  • html/HTMLTrackElement.cpp:

(WebCore::HTMLTrackElement::scheduleLoad):

  • html/parser/CSSPreloadScanner.cpp:

(WebCore::CSSPreloadScanner::scan):

  • html/shadow/TextControlInnerElements.cpp:

(WebCore::SearchFieldResultsButtonElement::resolveCustomStyle):

  • html/track/LoadableTextTrack.cpp:

(WebCore::LoadableTextTrack::scheduleLoad):

  • loader/ContentFilter.cpp:

(WebCore::ContentFilter::handleProvisionalLoadFailure):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::load):
(WebCore::FrameLoader::clearProvisionalLoadForPolicyCheck):
(WebCore::FrameLoader::dispatchBeforeUnloadEvent):
(WebCore::FrameLoader::loadDifferentDocumentItem):

  • loader/cache/CachedRawResource.cpp:

(WebCore::CachedRawResource::updateBuffer):

  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::pruneLiveResourcesToSize):
(WebCore::MemoryCache::pruneDeadResourcesToSize):

  • page/Chrome.cpp:

(WebCore::Chrome::runModal const):

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::handleContextMenuEvent):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::suspendForBackForwardCache):

  • page/DragController.cpp:

(WebCore::DragController::performDragOperation):

  • page/EventSource.cpp:

(WebCore::EventSource::doExplicitLoadCancellation):

  • page/FrameView.cpp:

(WebCore::FrameView::applyRecursivelyWithVisibleRect):
(WebCore::FrameView::updateEmbeddedObjects):
(WebCore::FrameView::autoSizeIfEnabled):

  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::layout):
(WebCore::FrameViewLayoutContext::runAsynchronousTasks):

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::didReceiveHeaders):

  • page/ios/EventHandlerIOS.mm:

(WebCore::EventHandler::tryToBeginDragAtPoint):

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::commitTreeState):

  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::handleWheelEventAfterMainThread):

  • platform/PreviewConverter.cpp:

(WebCore::PreviewConverter::iterateClients):
(WebCore::PreviewConverter::replayToClient):

  • platform/audio/PlatformMediaSession.cpp:

(WebCore::PlatformMediaSession::clientWillBeginPlayback):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::commitLayerChangesAfterSublayers):

  • platform/graphics/mac/WebLayer.mm:

(-[WebSimpleLayer renderInContext:]):

  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGL::drawTexture):

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica):
(WebCore::TextureMapperLayer::paintIntoSurface):
(WebCore::TextureMapperLayer::paintWithIntermediateSurface):
(WebCore::TextureMapperLayer::paintRecursive):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):

  • platform/ios/LegacyTileLayer.mm:

(-[LegacyTileLayer renderInContext:]):

  • platform/mac/ScrollbarThemeMac.mm:

(WebCore::ScrollbarThemeMac::paint):

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::applyStretchAlignmentToChild):

  • rendering/RenderGeometryMap.cpp:

(WebCore::RenderGeometryMap::pushMappingsToAncestor):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::computeVisibleRectInContainer const):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::flushPendingLayerChanges):

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::updateScrollbarsAfterLayout):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::layout):

  • rendering/svg/LegacyRenderSVGRoot.cpp:

(WebCore::LegacyRenderSVGRoot::layout):

  • rendering/svg/RenderSVGResourceContainer.cpp:

(WebCore::RenderSVGResourceContainer::markAllClientsForInvalidation):

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::layout):

  • storage/StorageMap.cpp:

(WebCore::StorageMap::setItemIgnoringQuota):

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::applyCustomProperty):
(WebCore::Style::Builder::applyCascadeProperty):

  • style/StyleInvalidator.cpp:

(WebCore::Style::Invalidator::invalidateWithMatchElementRuleSets):

  • style/StyleScope.cpp:

(WebCore::Style::Scope::createDocumentResolver):
(WebCore::Style::Scope::createOrFindSharedShadowTreeResolver):
(WebCore::Style::Scope::updateResolver):

  • svg/SVGPathBlender.cpp:

(WebCore::SVGPathBlender::addAnimatedPath):

  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::evaluateScriptIfNecessary):

Source/WebKit:

  • NetworkProcess/storage/QuotaManager.cpp:

(WebKit::QuotaManager::handleRequests):

  • Shared/API/Cocoa/WKRemoteObjectCoder.mm:

(createEncodedObject):
(decodeObject):

  • UIProcess/API/glib/InputMethodFilter.cpp:

(WebKit::InputMethodFilter::filterKeyEvent):

  • UIProcess/API/glib/WebKitWebView.cpp:

(WebKitWebViewClient::frameDisplayed):

  • UIProcess/API/gtk/InputMethodFilterGtk.cpp:

(WebKit::InputMethodFilter::filterKeyEvent):

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _keyboardChangedWithInfo:adjustScrollView:]):

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::updateTextTouchBar):

  • UIProcess/Inspector/WebInspectorUIProxy.cpp:

(WebKit::WebInspectorUIProxy::open):
(WebKit::WebInspectorUIProxy::closeFrontendPageAndWindow):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

  • UIProcess/_WKWebViewPrintFormatter.mm:

(-[_WKWebViewPrintFormatter _setSnapshotPaperRect:]):

  • UIProcess/gtk/ClipboardGtk3.cpp:

(WebKit::Clipboard::write):

  • UIProcess/gtk/WebDateTimePickerGtk.cpp:

(WebKit::WebDateTimePickerGtk::update):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView becomeFirstResponderForWebView]):
(-[WKContentView resignFirstResponderForWebView]):
(-[WKContentView unsuppressSoftwareKeyboardUsingLastAutocorrectionContextIfNeeded]):
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):
(-[WKContentView _elementDidBlur]):

  • UIProcess/ios/forms/WKDateTimeInputControl.mm:

(-[WKDateTimePicker handleDatePickerPresentationDismissal]):
(-[WKDateTimePicker removeDatePickerPresentation]):

  • WebProcess/Plugins/Plugin.cpp:

(WebKit::Plugin::destroyPlugin):

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:

(WebKit::CompositingCoordinator::flushPendingLayerChanges):
(WebKit::CompositingCoordinator::purgeBackingStores):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::updateRendering):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::stopLoadingDueToProcessSwap):
(WebKit::WebPage::mouseEvent):
(WebKit::WebPage::keyEvent):
(WebKit::WebPage::restoreSessionInternal):
(WebKit::WebPage::dispatchTouchEvent):
(WebKit::WebPage::setInitialFocus):
(WebKit::WebPage::setActivityState):
(WebKit::WebPage::insertTextAsync):
(WebKit::WebPage::createAppHighlightInSelectedRange):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::completeSyntheticClick):
(WebKit::WebPage::requestDragStart):
(WebKit::WebPage::requestAdditionalItemsForDragSession):
(WebKit::WebPage::selectPositionAtPoint):
(WebKit::WebPage::dynamicViewportSizeUpdate):
(WebKit::WebPage::focusTextInputContextAndPlaceCaret):

  • WebProcess/WebPage/wc/DrawingAreaWC.cpp:

(WebKit::DrawingAreaWC::updateRendering):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::prepareToSuspend):

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView updateTextTouchBar]):

  • WebView/WebViewData.mm:

(WebViewLayerFlushScheduler::layerFlushCallback):

Source/WTF:

  • wtf/RefCounter.h:

(WTF::RefCounter<T>::Count::deref):

Tools:

  • TestWebKitAPI/Tests/WTF/SetForScope.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WKInspectorDelegate.mm:

(TEST):

  • TestWebKitAPI/mac/TestFontOptions.mm:

(-[TestFontOptions setShadowWidth:]):
(-[TestFontOptions setShadowHeight:]):
(-[TestFontOptions setShadowBlurRadius:]):
(-[TestFontOptions setHasShadow:]):
(-[TestFontOptions setForegroundColor:]):
(-[TestFontOptions setBackgroundColor:]):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::reattachPageToWebProcess):

5:16 PM Changeset in webkit [290574] by Cameron McCormack
  • 8 edits in trunk/Source/WebCore

Add a mechanism to request a UA shadow tree update before style
​https://bugs.webkit.org/show_bug.cgi?id=237224

Reviewed by Antti Koivisto.

SVG <use> elements register themselves with the document when their
shadow tree contents need updating, and this updating is done in
Document::resolveStyle. For lazy HTML <input> element UA shadow trees
(in bug 236747) we need something similar.

  • dom/Document.cpp:

(WebCore::Document::resolveStyle):
(WebCore::Document::addElementWithPendingUserAgentShadowTreeUpdate):
(WebCore::Document::removeElementWithPendingUserAgentShadowTreeUpdate):

  • dom/Document.h:
  • dom/Element.h:

(WebCore::Element::updateUserAgentShadowTree):

  • svg/SVGDocumentExtensions.cpp:

(WebCore::SVGDocumentExtensions::~SVGDocumentExtensions): Deleted.
(WebCore::SVGDocumentExtensions::addUseElementWithPendingShadowTreeUpdate): Deleted.
(WebCore::SVGDocumentExtensions::removeUseElementWithPendingShadowTreeUpdate): Deleted.

  • svg/SVGDocumentExtensions.h:

(WebCore::SVGDocumentExtensions::useElementsWithPendingShadowTreeUpdate const): Deleted.

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::insertedIntoAncestor):
(WebCore::SVGUseElement::removedFromAncestor):
(WebCore::SVGUseElement::updateUserAgentShadowTree):
(WebCore::SVGUseElement::invalidateShadowTree):
(WebCore::SVGUseElement::updateShadowTree): Deleted.

  • svg/SVGUseElement.h:
3:52 PM Changeset in webkit [290573] by graouts@webkit.org
  • 4 edits in trunk

[web-animations] web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html is a unique failure
​https://bugs.webkit.org/show_bug.cgi?id=237257

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark WPT progressions.

  • web-platform-tests/web-animations/timing-model/animations/setting-the-timeline-of-an-animation-expected.txt:

Source/WebCore:

The spec has changed since we initially implemented Animation.playState and we missed one condition for
an animation's play state to be "idle".

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::playState const):

2:19 PM Changeset in webkit [290572] by Matt Woodrow
  • 4 edits in trunk

Handle reverse flow direction when converting iterator coords for a subgrid
​https://bugs.webkit.org/show_bug.cgi?id=236955

Reviewed by Dean Jackson.

Source/WebCore:

When recursing into a subgrid via createForSubgrid, we convert the iterator's
position into coordinates relative to the subgrid. This handles the case where
the subgrid has a reverse flow direction (RTL vs LTR) and swaps the position
to be relative to the opposite edge.

Marks existing WPT grid-gap-007.html as passing

  • rendering/Grid.cpp:

(WebCore::GridIterator::createForSubgrid):

LayoutTests:

Marked grid-gap-007.html as now passing, and added bug annotations to
remaining subgrid failures.

2:15 PM Changeset in webkit [290571] by graouts@webkit.org
  • 5 edits in trunk

[svg] flood-opacity should be clamped to the [0,1] range
​https://bugs.webkit.org/show_bug.cgi?id=237253

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:

Source/WebCore:

  • rendering/style/SVGRenderStyle.h:

(WebCore::SVGRenderStyle::setFloodOpacity):

1:19 PM Changeset in webkit [290570] by graouts@webkit.org
  • 5 edits in trunk

[svg] stroke-opacity should be clamped to the [0,1] range
​https://bugs.webkit.org/show_bug.cgi?id=237254

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:

Source/WebCore:

  • rendering/style/SVGRenderStyle.h:

(WebCore::SVGRenderStyle::setStrokeOpacity):

12:55 PM Changeset in webkit [290569] by graouts@webkit.org
  • 5 edits in trunk

[svg] stop-opacity should be clamped to the [0,1] range
​https://bugs.webkit.org/show_bug.cgi?id=237255

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:

Source/WebCore:

  • rendering/style/SVGRenderStyle.h:

(WebCore::SVGRenderStyle::setStopOpacity):

12:31 PM Changeset in webkit [290568] by graouts@webkit.org
  • 5 edits in trunk

[svg] fill-opacity should be clamped to the [0,1] range
​https://bugs.webkit.org/show_bug.cgi?id=237252

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:

Source/WebCore:

  • rendering/style/SVGRenderStyle.h:

(WebCore::SVGRenderStyle::setFillOpacity):

11:54 AM Changeset in webkit [290567] by Matt Woodrow
  • 2 edits in trunk

2022-02-24 Matt Woodrow <Matt Woodrow>

Unreviewed, update my (Matt Woodrow) status to committer.

  • metadata/contributors.json:
11:44 AM Changeset in webkit [290566] by Chris Dumez
  • 28 edits in trunk/Source

Simplify SerializedScriptValue construction
​https://bugs.webkit.org/show_bug.cgi?id=237241

Reviewed by Darin Adler.

Source/WebCore:

The 2 main factory functions for SerializedScriptValue now share the same code.
I also dropped some SerializedScriptValue API that was no longer useful.
Finally, I simplified factory functions for MessageEvent.

  • Modules/indexeddb/IDBValue.cpp:

(WebCore::IDBValue::IDBValue):

  • Modules/webaudio/AudioWorkletNode.cpp:

(WebCore::AudioWorkletNode::create):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::SerializedScriptValue::create):
(WebCore::SerializedScriptValue::toString const):
(WebCore::SerializedScriptValue::toString): Deleted.

  • bindings/js/SerializedScriptValue.h:

(WebCore::SerializedScriptValue::wireBytes const):
(WebCore::SerializedScriptValue::SerializedScriptValue):
(WebCore::SerializedScriptValue::adopt): Deleted.
(WebCore::SerializedScriptValue::data const): Deleted.
(WebCore::SerializedScriptValue::toWireBytes const): Deleted.

  • dom/BroadcastChannel.cpp:

(WebCore::BroadcastChannel::dispatchMessage):

  • dom/MessageEvent.cpp:

(WebCore::MessageEvent::MessageEvent):
(WebCore::MessageEvent::create):

  • dom/MessageEvent.h:
  • dom/MessagePort.cpp:

(WebCore::MessagePort::dispatchMessages):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::postMessage):

  • page/EventSource.cpp:

(WebCore::EventSource::dispatchMessageEvent):

  • page/History.cpp:

(WebCore::History::stateObjectAdded):

  • testing/Internals.cpp:

(WebCore::Internals::serializeObject const):
(WebCore::Internals::deserializeBuffer const):

  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::postMessageToWorkerObject):
(WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope):

  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::postMessage):

  • workers/shared/SharedWorkerGlobalScope.cpp:

(WebCore::SharedWorkerGlobalScope::postConnectEvent):

Source/WebKit:

Update code base to reflect SerializedScriptValue API changes.

  • Shared/API/APISerializedScriptValue.h:

(API::SerializedScriptValue::createFromWireBytes):
(API::SerializedScriptValue::dataReference const):
(API::SerializedScriptValue::adopt): Deleted.

  • Shared/SessionState.cpp:

(WebKit::PageState::encode const):

  • Shared/UserData.cpp:

(WebKit::UserData::decode):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _evaluateJavaScript:asAsyncFunction:withSourceURL:withArguments:forceUserGesture:inFrame:inWorld:completionHandler:]):

  • UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:

(WebKit::WebInspectorUIExtensionControllerProxy::evaluateScriptForExtension):
(WebKit::WebInspectorUIExtensionControllerProxy::evaluateScriptInExtensionTab):

  • UIProcess/UserContent/WebUserContentControllerProxy.cpp:

(WebKit::WebUserContentControllerProxy::didPostMessage):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::runJavaScriptInFrameInScriptWorld):

  • WebProcess/Inspector/WebInspectorUIExtensionController.cpp:

(WebKit::WebInspectorUIExtensionController::evaluateScriptForExtension):
(WebKit::WebInspectorUIExtensionController::evaluateScriptInExtensionTab):

  • WebProcess/UserContent/WebUserContentController.cpp:
  • WebProcess/WebCoreSupport/SessionStateConversion.cpp:

(WebKit::toFrameState):
(WebKit::applyFrameState):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::runJavaScript):

9:54 AM Changeset in webkit [290565] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GStreamer] media/video-src-blob-perf.html timing out likely since update to GStreamer 1.20
​https://bugs.webkit.org/show_bug.cgi?id=237256

Unreviewed, gardening

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-02-27

  • platform/glib/TestExpectations: Flag test as timing out.
8:38 AM Changeset in webkit [290564] by ntim@apple.com
  • 10 edits in trunk

Force -webkit-user-modify used style to readonly for inert nodes
​https://bugs.webkit.org/show_bug.cgi?id=237244

Reviewed by Darin Adler.

This disallows programmatic edition of contenteditable inert nodes. Edition via user-input is
already prevented by forcing pointer-events style to none.

We create a seperate effectiveUserModify, similar to effectiveUserSelect/effectivePointerEvents,
to avoid changing the computed style.

This behaviour also matches Blink & Gecko.

LayoutTests/imported/w3c:

  • web-platform-tests/inert/inert-and-contenteditable.tentative-expected.txt:

Source/WebCore:

Test: imported/w3c/web-platform-tests/inert/inert-and-contenteditable.tentative.html

  • dom/Node.cpp:

(WebCore::computeEditabilityFromComputedStyle):

  • editing/ApplyBlockElementCommand.cpp:

(WebCore::ApplyBlockElementCommand::rangeForParagraphSplittingTextNodesIfNeeded):

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplaceSelectionCommand::doApply):

  • rendering/EventRegion.cpp:

(WebCore::EventRegion::unite):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::styleWillChange):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::effectiveUserModify const):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveElement):

8:33 AM Changeset in webkit [290563] by Chris Dumez
  • 9 edits in trunk

Call WKNavigationDelegate.didFailProvisionalNavigation even after a cross-origin navigation with COOP
​https://bugs.webkit.org/show_bug.cgi?id=237071
<rdar://problem/89354367>

Reviewed by Darin Adler.

Source/WebKit:

When doing a process swap on navigation (PSON), we start a new provisional load in the new provisional
process and ask the committed process to stop all loads. Since we swap in decidePolicyForNavigationAction,
no provisional load has started in the committed process yet. If the provisional process sends us a
didFailProvisionalLoad though, we know the provisional load has failed and we take this into consideration
and notify the client app.

When doing a process swap on resource response (due to COOP), we were behaving differently and it was
causing some confusion. Since we swap on resource response, the provisional load has started in the
committed process by the time we process-swap (unlike PSON). We were also not asking for the committed
process to stop/cancel this provisional load. As a result, a provisional load would still be going on
in the committed process while another provisional load starts happening in the provisional page / process.
Then, if the provisional process would send us a didFailProvisional, we would not pass it along to the
client app. Instead we would destroy the ProvisionalPageProxy, which would tell the committed process to
stop loading and send its own didFailProvisionalLoad, and the client app would eventually get notified.

Even though the difference in behavior was confusing, it was working in most cases. There was however
an edge case where it didn't work and we would fail to tell the client app that the provisional load
had failed. In particular, we would run into trouble when navigating cross-site to a site that adopted
the COOP header. We would first do a process-swap on navigation, stop the provisional load in the committed
process A, then start a provisional load in process B. We would then get the COOP header and we would
start a new provisional load in process C. Process B would go away since we cannot have 2 provisional
pages / processes at the same time for the same WebPageProxy. Then if the provisional load fails in
process C, we would ignore the didFailProvisionalLoad from process C and destroy the provisional page.
We would tell the committed process A to stop loading, expecting it to send its own didFailProvisionalLoad
but it wouldn't happen since PSON had already stopped all loading in process A earlier when swapping to
process B.

To address the issue, we align COOP process swap with PSON process swap. We now has the committed process
to stop all loads when process swapping on resource response due to COOP. As a result, when the provisional
load fails in the provisional process, we can simply pass it along to the client, no matter if the process
swap occurred due to PSON or COOP.

Covered by new API test.

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
We no longer need to tell the committed process to stop loading when the provisional page gets destroyed
and this was a process swap on resource response. The reason is that when process-swapping on navigation
response, we now drop the provisional load in the committed process right away, like in the PSON case.

(WebKit::ProvisionalPageProxy::cancel):
When cancelling a provisional load due to PSON or COOP, we need to notify the client that the provisional
load failed. We used to only to it in the PSON case. We now do it for both PSON and COOP since they
behave the same.

(WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
Similarly as above, now that PSON and COOP behave the same, we need to pass the didFailProvisionalLoad
from the provisional process to the client app for both PSON and COOP (Not just PSON).

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::triggerBrowsingContextGroupSwitchForNavigation):
When triggering a process swap on resource response (due to COOP), we now stop the provisional load going
on in the committed process to be consistent with what we do in the PSON case. This way there is only a
single provisional load going on and it is happening in the provisional page / process.

Tools:

Add API test coverage (Test was written by Alex Christensen).

  • TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:

(TEST):

8:26 AM Changeset in webkit [290562] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

Loading a USDZ url as the main resource renders as garbage
​https://bugs.webkit.org/show_bug.cgi?id=237240
rdar://88767033

Reviewed by Antoine Quint.

We can't render a USD document if the ModelDocument feature is not enabled.

  • platform/MIMETypeRegistry.cpp:

(WebCore::MIMETypeRegistry::canShowMIMEType):

8:17 AM Changeset in webkit [290561] by graouts@webkit.org
  • 4 edits in trunk

[css-animations] implicit keyframes should be inserted after explicit keyframes with the same offset
​https://bugs.webkit.org/show_bug.cgi?id=237246

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Update WPT test added in bug 236838 to match the spec following discussion with Brian Birtles in
​https://github.com/web-platform-tests/wpt/pull/32903.

  • web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html:

Source/WebCore:

The CSS Animations spec says the following about implicit keyframes generation:

Let initial keyframe be the keyframe in keyframes with offset 0, timing function default timing
function and composite default composite.

If there is no such keyframe, let initial keyframe be a new empty keyframe with offset 0, timing
function default timing function, composite |default composite, and add it to keyframes after the
last keyframe with offset 0.

Let final keyframe be the keyframe in keyframes with offset 1, timing function default timing
function and composite default composite.

If there is no such keyframe, let final keyframe be a new empty keyframe with offset 1, timing
function default timing function and composite default composite, and add it to keyframes after
the last keyframe with offset 1.

Full details are at ​https://drafts.csswg.org/css-animations-2/#keyframes.

The KeyframeList::insert() method does the right thing already by adding a new keyframe after all
other keyframes with that same offset, so all we need to do is to use this method rather than
specifying explicit indexes.

  • rendering/style/KeyframeList.cpp:

(WebCore::KeyframeList::fillImplicitKeyframes):

8:03 AM Changeset in webkit [290560] by ntim@apple.com
  • 2 edits in trunk/Source/WebCore

Use hasAttributeWithoutSynchronisation for checking inert attribute in Adjuster::adjust
​https://bugs.webkit.org/show_bug.cgi?id=237248

Reviewed by Dean Jackson.

hasAttributeWithoutSynchronisation should be slightly faster than hasAttribute.

  • style/StyleAdjuster.cpp:

(WebCore::Style::Adjuster::adjust const):

6:10 AM Changeset in webkit [290559] by ntim@apple.com
  • 3 edits
    2 adds in trunk

Optimize StyleSharingResolver inert checks
​https://bugs.webkit.org/show_bug.cgi?id=237235

Reviewed by Youenn Fablet.

Source/WebCore:

inert is an boolean attribute, the only thing that matters for the StyleAdjuster
inertness adjustment is the presence of the attribute, not its value. E.g.
inert=false is the same as inert=inert or inert=true.

This saves getting and comparing values for those attributes, and also allows
inert=inert and inert=true or inert=false to start sharing style.

  • style/StyleSharingResolver.cpp:

(WebCore::Style::SharingResolver::canShareStyleWithElement const):

LayoutTests:

Add small test that style sharing is not wrongly applied.

  • fast/css/inert-style-sharing-expected.html: Added.
  • fast/css/inert-style-sharing.html: Added.
4:06 AM Changeset in webkit [290558] by youenn@apple.com
  • 7 edits in trunk/Source/WebKit

Exposing RemoteVideoFrameProxy::write is unneeded
​https://bugs.webkit.org/show_bug.cgi?id=237212

Reviewed by Eric Carlson.

Exposing RemoteVideoFrameProxy::write is unneeded as RemoteVideoFrameProxy is immutable.
It is best to remove it as calling write() inadvertently would break things.
Renaming read() to newReadReference() to make it clear that we are creating a new read reference
that needs to be sent to GPUProcess to prevent leaks.
No change of behavior.

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::copyTextureFromMedia):

  • WebProcess/GPU/media/RemoteVideoFrameProxy.cpp:

(WebKit::RemoteVideoFrameProxy::~RemoteVideoFrameProxy):
(WebKit::RemoteVideoFrameProxy::newReadReference const):
(WebKit::RemoteVideoFrameProxy::pixelBuffer const):
(WebKit::RemoteVideoFrameProxy::write const): Deleted.
(WebKit::RemoteVideoFrameProxy::read const): Deleted.

  • WebProcess/GPU/media/RemoteVideoFrameProxy.h:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::LibWebRTCCodecs::encodeFrame):

  • WebProcess/GPU/webrtc/RemoteVideoFrameObjectHeapProxyProcessor.cpp:

(WebKit::RemoteVideoFrameObjectHeapProxyProcessor::getVideoFrameBuffer):

  • WebProcess/GPU/webrtc/SharedVideoFrame.cpp:

(WebKit::SharedVideoFrameWriter::write):

3:44 AM Changeset in webkit [290557] by youenn@apple.com
  • 4 edits in trunk/Source/WebCore

Simplify CVPixelBuffer data copies in SharedVideoFrameInfo
​https://bugs.webkit.org/show_bug.cgi?id=237194

Reviewed by Eric Carlson.

Remove use of vImageUnpremultiplyData_BGRA8888 which might not be correct for canvas data.
Make use of CVPixelBufferGetPlaneCount to share more code between monoplanar and biplanar formats.

Covered by existing tests.

  • platform/cocoa/CoreVideoSoftLink.cpp:
  • platform/cocoa/CoreVideoSoftLink.h:
  • platform/cocoa/SharedVideoFrameInfo.mm:

(WebCore::SharedVideoFrameInfo::isReadWriteSupported const):
(WebCore::copyToCVPixelBufferPlane):
(WebCore::SharedVideoFrameInfo::createPixelBufferFromMemory):
(WebCore::SharedVideoFrameInfo::writePixelBuffer):

3:21 AM Changeset in webkit [290556] by ntim@apple.com
  • 17 edits
    2 adds in trunk/LayoutTests

Re-import inert and <dialog> WPT
​https://bugs.webkit.org/show_bug.cgi?id=237243

Reviewed by Youenn Fablet.

Upstream commit: ​https://github.com/web-platform-tests/wpt/commit/9261ca87db106c1f31f1ab4f54b8f4a2617cbc24

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer-expected.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer-ref.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column-expected.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column-ref.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/w3c-import.log:
  • web-platform-tests/inert/inert-and-contenteditable.tentative-expected.txt: Added.
  • web-platform-tests/inert/inert-and-contenteditable.tentative.html: Added.
  • web-platform-tests/inert/inert-iframe-hittest.tentative-expected.txt:
  • web-platform-tests/inert/inert-iframe-hittest.tentative.html:
  • web-platform-tests/inert/inert-iframe-tabbing.tentative-expected.txt:
  • web-platform-tests/inert/inert-iframe-tabbing.tentative.html:
  • web-platform-tests/inert/w3c-import.log:

LayoutTests:

  • TestExpectations:
  • platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-hittest.tentative-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-tabbing.tentative-expected.txt:

Feb 26, 2022:

11:27 PM Changeset in webkit [290555] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebKit

RemoteCaptureSampleManager, UserMediaSampleCaptureManagerProxy create the RemoteVideoFrame in incorrectly
​https://bugs.webkit.org/show_bug.cgi?id=237134

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-02-26
Reviewed by Youenn Fablet.

UserMediaSampleCaptureManagerProxy should not call RemoteVideoFrameObjectHeap::createVideoFrame,
the function should be removed. Instead, UserMediaSampleCaptureManagerProxy should construct a
write reference to insert the media sample -> remote proxy mapping. Then
the result of the insert, a new reference, should be sent as part of the
RemoteVideoFrameProxy::Properties to the WP. This way the sent reference is
constructed as expected. Previously the reference was correct but matched just
by selecting the constants currently used (0).

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

(WebKit::RemoteCaptureSampleManager::videoSampleAvailable):
(WebKit::RemoteCaptureSampleManager::videoSampleAvailableCV):

  • WebProcess/cocoa/RemoteCaptureSampleManager.h:
  • WebProcess/cocoa/RemoteCaptureSampleManager.messages.in:
11:06 PM Changeset in webkit [290554] by ntim@apple.com
  • 11 edits
    2 adds in trunk

Remove Node::deprecatedIsInert
​https://bugs.webkit.org/show_bug.cgi?id=230845

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

This change unfortunately regresses focusability state when dynamically setting inert, due to a cached
computed style invalidation bug. This is minor in practice, since focusability usually gets queried in
user-initiated ways, when style already has fully been updated.

However, making this change will improve performance by avoiding a full DOM ancestor walk when there
is no inert attribute on the page, since we will only check a style bit after this patch.

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/remove-dialog-should-unblock-document-expected.txt:
  • web-platform-tests/inert/inert-canvas-fallback-content.tentative-expected.txt:
  • web-platform-tests/inert/inert-node-is-unfocusable.tentative-expected.txt:

Source/WebCore:

This change unfortunately regresses focusability state when dynamically setting inert, due to a cached
computed style invalidation bug. This is minor in practice, since focusability usually gets queried in
user-initiated ways, when style already has fully been updated.

However, making this change will improve performance by avoiding a full DOM ancestor walk when there
is no inert attribute on the page, since we will only check a style bit after this patch.

  • dom/Element.cpp:

(WebCore::Element::isFocusable const):
(WebCore::Element::isFocusableWithoutResolvingFullStyle const):
(WebCore::Element::isVisibleWithoutResolvingFullStyle const): Deleted.

  • dom/Element.h:
  • dom/Node.cpp:

(WebCore::Node::deprecatedIsInert const): Deleted.

  • dom/Node.h:
  • html/HTMLAreaElement.cpp:

(WebCore::HTMLAreaElement::isFocusable const):

LayoutTests:

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-inert-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal-expected.txt: Added.
4:46 PM Changeset in webkit [290553] by Tyler Wilcock
  • 3 edits in trunk/Source/WebCore

AX: Remove unnecessary AccessibilityRenderObject::init() override
​https://bugs.webkit.org/show_bug.cgi?id=237239

Reviewed by Chris Fleizach.

The implementation of AccessibilityRenderObject::init() just calls
AccessibilityNodeObject::init(), so we don't need it as an override.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::init): Deleted.

  • accessibility/AccessibilityRenderObject.h:
3:36 PM Changeset in webkit [290552] by Chris Dumez
  • 12 edits in trunk

Drop Ref<>'s operator==() as it is a bit ambiguous / confusing
​https://bugs.webkit.org/show_bug.cgi?id=237231

Reviewed by Darin Adler.

Drop Ref<>'s operator==() as it is a bit ambiguous / confusing. Some people expect it to compare
pointers while other expect it to compare the values we hold references to.
It seems best to omit this operator and be explicit at call sites.

Source/WebCore:

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::LibWebRTCRtpSenderBackend::startSource):

  • svg/SVGDocumentExtensions.cpp:

(WebCore::SVGDocumentExtensions::removeElementToRebuild):

  • svg/graphics/filters/SVGFilterBuilder.cpp:

(WebCore::SVGFilterBuilder::buildEffectExpression const):

Source/WebKit:

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::cacheMediaMIMETypes):

  • UIProcess/VisitedLinkStore.cpp:

(WebKit::VisitedLinkStore::removeAll):
(WebKit::VisitedLinkStore::sendStoreHandleToProcess):
(WebKit::VisitedLinkStore::didUpdateSharedStringHashes):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::shouldTerminate):

Source/WTF:

  • wtf/Ref.h:

(WTF::operator==): Deleted.
(WTF::operator!=): Deleted.

  • wtf/Vector.h:

(WTF::Vector::containsIf const):

2:12 PM Changeset in webkit [290551] by basuke.suzuki@sony.com
  • 2 edits in trunk/Source/JavaScriptCore

Remove UNUSED warnings for non-Cocoa platform after r290449
​https://bugs.webkit.org/show_bug.cgi?id=237233

Reviewed by Darin Adler.

  • runtime/JSDateMath.cpp:
1:04 PM Changeset in webkit [290550] by Kate Cheney
  • 15 edits in trunk

Update CSP handling of javascript URLs
​https://bugs.webkit.org/show_bug.cgi?id=236351
<rdar://problem/88675827>

Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

  • web-platform-tests/content-security-policy/navigation/to-javascript-parent-initiated-parent-csp-disallow-expected.txt:
  • web-platform-tests/content-security-policy/navigation/to-javascript-url-script-src-expected.txt:

Source/WebCore:

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::executeJavaScriptURL):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
(WebCore::createWindow):

  • loader/SubframeLoader.cpp:

(WebCore::FrameLoader::SubframeLoader::requestFrame):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::setLocation):

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::allowJavaScriptURLs const):

  • page/csp/ContentSecurityPolicy.h:

LayoutTests:

  • TestExpectations:
  • http/tests/security/contentSecurityPolicy/inline-script-blocked-javascript-url-expected.txt:
  • http/tests/security/contentSecurityPolicy/javascript-url-blocked-by-default-src-star-expected.txt:
  • http/tests/security/contentSecurityPolicy/javascript-url-blocked-expected.txt:
10:44 AM Changeset in webkit [290549] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[RenderTreeBuilder] Clean up descendant floats when a block container becomes float
​https://bugs.webkit.org/show_bug.cgi?id=237238
<rdar://79960422>

Reviewed by Antti Koivisto.

Source/WebCore:

When a block box becomes float, it forms a "lockdown" container for the descendant floats by establishing a BFC.
What it means is that such descendant floats can't intrude to sibling block containers anymore.
This patch ensures that we remove such floats from sibling (and their descendant) renderers.

Test: fast/block/float/float-merge-anon-parent-crash.html

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::normalizeTreeAfterStyleChange):

LayoutTests:

  • fast/block/float/float-merge-anon-parent-crash-expected.txt: Added.
  • fast/block/float/float-merge-anon-parent-crash.html: Added.
10:43 AM Changeset in webkit [290548] by Simon Fraser
  • 7 edits in trunk

No animation when scroll snap scroller is navigated with the keyboard
​https://bugs.webkit.org/show_bug.cgi?id=236244

Reviewed by Tim Horton.

Source/WebCore:

Keyboard-driven scrolls in overflow didn't animate, simply because scrollAnimatorEnabled()
wasn't implemented for RenderLayerScrollableArea.

I could not figure out a reliable way to test that we animated the scroll.

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::scrollAnimatorEnabled const):

  • rendering/RenderLayerScrollableArea.h:

LayoutTests:

Turn off the scroll animator for these tests that assume that scrolling is instantaneous.

  • css3/scroll-snap/scroll-padding-overflow-paging.html:
  • fast/events/wheelevent-in-scrolling-div.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-rtl-with-keyboard.html:
4:07 AM Changeset in webkit [290547] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebKit

Multiple concurrency violations in LibWebRTCCodecsProxy
​https://bugs.webkit.org/show_bug.cgi?id=236767
<rdar://88904160>

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-02-26
Reviewed by Antti Koivisto.

  • ThreadMessageReceivers should not add IPC listeners in constructors,

as the delivery starts right away and uses the unconstructed virtual pointer.

  • The work queue functions should not use GPUConnectionToWebProcess, as that is

main thread object.

  • Locked m_encoders, m_decoders are sometimes accessed without lock.

Instead:

  • Add the IPC listeners in initialize function.
  • Remove the IPC listeners when GPUConnectionToWebProcess disconnects.
  • Store the thread-safe conection, video frame object heap, process identity

objects as member variables.

  • Do not lock m_encoders, m_decoders. If they are work queue instances,

just access them in the work queue functions. Add thread requirements
to the variables so that the compiler checks the access.

  • Use IPC testing assertions when skipping incorrect messages.
  • Use separate atomic counter (bool) to check if allowsExitUnderMemoryPressure.

No new tests, tested with existing tests and ASAN.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::~GPUConnectionToWebProcess):
(WebKit::GPUConnectionToWebProcess::didClose):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:

(WebKit::LibWebRTCCodecsProxy::create):
(WebKit::LibWebRTCCodecsProxy::LibWebRTCCodecsProxy):
(WebKit::LibWebRTCCodecsProxy::stopListeningForIPC):
(WebKit::LibWebRTCCodecsProxy::initialize):
(WebKit::LibWebRTCCodecsProxy::dispatchToThread):
(WebKit::LibWebRTCCodecsProxy::createDecoderCallback):
(WebKit::LibWebRTCCodecsProxy::createH264Decoder):
(WebKit::LibWebRTCCodecsProxy::createH265Decoder):
(WebKit::LibWebRTCCodecsProxy::createVP9Decoder):
(WebKit::LibWebRTCCodecsProxy::releaseDecoder):
(WebKit::LibWebRTCCodecsProxy::createEncoder):
(WebKit::LibWebRTCCodecsProxy::releaseEncoder):
(WebKit::LibWebRTCCodecsProxy::initializeEncoder):
(WebKit::LibWebRTCCodecsProxy::findEncoder):
(WebKit::LibWebRTCCodecsProxy::encodeFrame):
(WebKit::LibWebRTCCodecsProxy::setEncodeRates):
(WebKit::LibWebRTCCodecsProxy::setSharedVideoFrameSemaphore):
(WebKit::LibWebRTCCodecsProxy::setSharedVideoFrameMemory):
(WebKit::LibWebRTCCodecsProxy::allowsExitUnderMemoryPressure const):

2:04 AM Changeset in webkit [290546] by youenn@apple.com
  • 3 edits in trunk/LayoutTests

REGRESSION(r290358): [ Debug EWS ] ASSERTION FAILED: sample && sample->pixelBuffer()
​https://bugs.webkit.org/show_bug.cgi?id=237164
<rdar://problem/89442999>

Unreviewed.

ASSERTS are fixed through ​https://bugs.webkit.org/show_bug.cgi?id=237027.
Removing crash expectations.

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:

Feb 25, 2022:

11:58 PM Changeset in webkit [290545] by Simon Fraser
  • 7 edits
    2 adds in trunk

Scrollbars disappear when very long or wide
​https://bugs.webkit.org/show_bug.cgi?id=237232
Source/WebCore:

<rdar://17540446>

Reviewed by Tim Horton.

Our tiling logic does not play nicely with AppKit's NSScrollerImps, probably because we
inadvertently unparent its layers.

Fix by disallowing GraphicsLayers for scrollbars from going into tiled mode, for
both root and overflow scrollbars.

Test: fast/scrolling/mac/scrollbars/very-wide-overlay-scrollbar.html

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::GraphicsLayer):

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::setAllowsTiling):
(WebCore::GraphicsLayer::allowsTiling const):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::requiresTiledLayer const):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateOverflowControlsLayers):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateOverflowControlsLayers):

LayoutTests:

Reviewed by Tim Horton.

  • fast/scrolling/mac/scrollbars/very-wide-overlay-scrollbar-expected-mismatch.html: Added.
  • fast/scrolling/mac/scrollbars/very-wide-overlay-scrollbar.html: Added.
9:42 PM Changeset in webkit [290544] by sihui_liu@apple.com
  • 5 edits in trunk

[macOS] TestWebKitAPI.WebKit.MigrateLocalStorageDataToGeneralStorageDirectory is a flaky failure
​https://bugs.webkit.org/show_bug.cgi?id=237065
<rdar://problem/89324250>

Reviewed by Alexey Proskuryakov.

Source/WebKit:

Commit transactions of SQLiteStorageArea at exit of network process.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::didClose):

  • NetworkProcess/storage/SQLiteStorageArea.cpp:

(WebKit::commitTransactionsAtExit):
(WebKit::SQLiteStorageArea::SQLiteStorageArea):
(WebKit::SQLiteStorageArea::startTransactionIfNecessary):
(WebKit::SQLiteStorageArea::commitTransactionIfNecessary):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:

(TEST):

9:38 PM Changeset in webkit [290543] by Wenson Hsieh
  • 5 edits in trunk

Adjust -[WKContentView _requiresKeyboardWhenFirstResponder] to account for editable web views
​https://bugs.webkit.org/show_bug.cgi?id=237226
rdar://89447095

Reviewed by Aditya Keerthi.

Source/WebKit:

Adjust the implementation of -[WKContentView _requiresKeyboardWhenFirstResponder], such that it returns YES
for editable web views, except for the scenario where an input field that does *not* require the automatic
keyboard is currently focused in the page inside the editable web view (e.g. a readonly text field).

UIKit consults this method to know whether or not a given responder would require the keyboard (either software
keyboard or the minimized UCB for hardware keyboard) if it were to become the first responder. For web views
that are made editable in the SPI sense, we know a-priori that this should return YES, unless a readonly element
underneath the web view has focus (in which case, _disableAutomaticKeyboardUI would be true).

Test: KeyboardInputTests.EditableWebViewRequiresKeyboardWhenFirstResponder

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _requiresKeyboardWhenFirstResponder]):

Tools:

Add an API test to exercise the change. This new API test is comprised of 3 parts:

  • Verify that -_requiresKeyboardWhenFirstResponder is NO after loading the page.
  • Verify that -_requiresKeyboardWhenFirstResponder becomes YES after making the web view editable.
  • Verify that -_requiresKeyboardWhenFirstResponder is NO again after focusing a readonly input inside the now-editable web view.
  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/ios/UIKitSPI.h:
9:05 PM Changeset in webkit [290542] by Said Abou-Hallawa
  • 4 edits in trunk/Source

[GPU Process] Implement RemoteImageBufferProxy::drawConsuming()
​https://bugs.webkit.org/show_bug.cgi?id=236685
rdar://89007426

Reviewed by Simon Fraser.

Source/WebCore:

Assert ImageBuffer::drawConsuming() does not draw into its backend before
it is destroyed.

  • platform/graphics/ConcreteImageBuffer.h:

Source/WebKit:

RemoteImageBufferProxy::drawConsuming() should call drawImageBuffer() of
the destination GraphicsContext. No recursion will happen and the expected
behavior will be achieved by this change.

This is the sequence of calls when the Destination GraphicsContext is
local and when it is remote:

-- Destination GraphicsContext is local:

In this case, the backend of the RemoteImageBufferProxy can be mapped
in WebProcess; i.e. we do have access to its memory.
ConcreteImageBuffer::draw() will be called eventually. This function
will call its backend->draw() which will get a NativeImage by calling
backend->copyNativeImage(). There is no difference between draw() and
drawConsuming() in this case because the backend is still owned by
GPUProcess. So it will not be released immediately. We do not copy the
pixels since we have to pass DontCopyBackingStore to copyNativeImage().

-- Destination GraphicsContext is remote:

In this case, Recorder::drawImageBuffer() will be called which will
call RemoteDisplayListRecorderProxy::recordDrawImageBuffer(). This
will send a message to GPUProcess and hence all the drawing will
happen in GPUProcess. Similar to the case of the local GraphicsContext,
no pixels will be copied from the RemoteImageBuffer backend to the
NativeImage in all cases. The assumption is the backend will be destroyed
automatically after calling drawConsuming().

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
7:59 PM Changeset in webkit [290541] by basuke.suzuki@sony.com
  • 3 edits in trunk/Source/bmalloc

[libpas] Suppress cast-align warnings
​https://bugs.webkit.org/show_bug.cgi?id=237179
<rdar://problem/89479570>

Reviewed by Yusuke Suzuki.

Ignore cast-align warnings for libpas target.

  • CMakeLists.txt:
  • libpas/src/libpas/bmalloc_heap_inlines.h:
6:03 PM Changeset in webkit [290540] by Fujii Hironori
  • 12 edits
    1 copy
    2 deletes in trunk/Source/WebCore

[GTK][WPE][WC] Move ANGLE context initialisation to GraphicsContextGLTextureMapper::initialize
​https://bugs.webkit.org/show_bug.cgi?id=236769

Reviewed by Chris Lord.

This is the first step for the long-term plan to share more code
in GraphicsContextGLANGLE between Cocoa and non-Cocoa, and
minimise the ifdefs in GraphicsContextGLANGLE.

We are moving the context initialisation and holding to
GraphicsContextGLTextureMapper, away from
GCGLANGLELayer::ANGLEContext and the layer classes in case of
COORDINATED_GRAPHICS. Later on, Cocoa and non-Cocoa can merge
their ::initialize.

No new tests, this is a refactoring patch.

  • platform/TextureMapper.cmake:
  • platform/graphics/angle/GraphicsContextGLANGLE.h:
  • platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.cpp:

(Nicosia::GCGLANGLELayer::GCGLANGLELayer):
(Nicosia::GCGLANGLELayer::ANGLEContext::errorString): Deleted.
(Nicosia::GCGLANGLELayer::ANGLEContext::lastErrorString): Deleted.
(Nicosia::GCGLANGLELayer::ANGLEContext::createContext): Deleted.
(Nicosia::GCGLANGLELayer::ANGLEContext::ANGLEContext): Deleted.
(Nicosia::GCGLANGLELayer::ANGLEContext::~ANGLEContext): Deleted.
(Nicosia::GCGLANGLELayer::ANGLEContext::makeContextCurrent): Deleted.
(Nicosia::GCGLANGLELayer::ANGLEContext::platformContext const): Deleted.
(Nicosia::GCGLANGLELayer::ANGLEContext::platformDisplay const): Deleted.
(Nicosia::GCGLANGLELayer::ANGLEContext::platformConfig const): Deleted.
(Nicosia::GCGLANGLELayer::makeContextCurrent): Deleted.
(Nicosia::GCGLANGLELayer::platformContext const): Deleted.
(Nicosia::GCGLANGLELayer::platformDisplay const): Deleted.
(Nicosia::GCGLANGLELayer::platformConfig const): Deleted.

  • platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::initialize):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/texmap/ANGLEContext.cpp: Removed.
  • platform/graphics/texmap/ANGLEContext.h: Removed.
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:

(WebCore::GraphicsContextGLTextureMapper::create):
(WebCore::GraphicsContextGLTextureMapper::GraphicsContextGLTextureMapper):
(WebCore::GraphicsContextGLTextureMapper::layerContentsDisplayDelegate):
(WebCore::GraphicsContextGLTextureMapper::platformInitialize):
(): Deleted.

  • platform/graphics/texmap/GraphicsContextGLTextureMapper.h:
  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:

(WebCore::GraphicsContextGLANGLE::GraphicsContextGLANGLE):
(WebCore::GraphicsContextGLTextureMapper::platformInitializeContext):
(WebCore::GraphicsContextGLTextureMapper::platformInitialize):
(WebCore::GraphicsContextGLANGLE::platformDisplay const):
(WebCore::GraphicsContextGLANGLE::platformConfig const):
(WebCore::GraphicsContextGLANGLE::makeContextCurrent):

  • platform/graphics/texmap/PlatformLayerDisplayDelegate.h: Copied from Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapper.h.
  • platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:

(WebCore::TextureMapperGCGLPlatformLayer::TextureMapperGCGLPlatformLayer):
(WebCore::TextureMapperGCGLPlatformLayer::~TextureMapperGCGLPlatformLayer):
(WebCore::TextureMapperGCGLPlatformLayer::paintToTextureMapper):
(WebCore::TextureMapperGCGLPlatformLayer::makeContextCurrent): Deleted.
(WebCore::TextureMapperGCGLPlatformLayer::platformContext const): Deleted.
(WebCore::TextureMapperGCGLPlatformLayer::platformDisplay const): Deleted.
(WebCore::TextureMapperGCGLPlatformLayer::platformConfig const): Deleted.
(WebCore::TextureMapperGCGLPlatformLayer::proxy const): Deleted.
(WebCore::TextureMapperGCGLPlatformLayer::swapBuffersIfNeeded): Deleted.

  • platform/graphics/texmap/TextureMapperGCGLPlatformLayer.h:
5:47 PM Changeset in webkit [290539] by J Pascoe
  • 4 edits in trunk

[WebAuthn] Fallback to attestation=none whenever attestation fails
​https://bugs.webkit.org/show_bug.cgi?id=237223
rdar://88767812

Reviewed by Brent Fulgham.

Source/WebKit:

Whenever attestation is requested by a RP and it fails to complete,
we previously errored out of the registration. The more correct platform
behavior in this case is to provide attestation=none.

Created API test for this behavior.

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):

Tools:

Add test for local authenticator attestation fallback behavior.

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST):

5:19 PM Changeset in webkit [290538] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Use the modern Hasher more in Content Extensions code
​https://bugs.webkit.org/show_bug.cgi?id=237228

Reviewed by Darin Adler.

  • contentextensions/CombinedFiltersAlphabet.cpp:

(WebCore::ContentExtensions::add):
(WebCore::ContentExtensions::TermCreatorTranslator::hash):

  • contentextensions/CombinedFiltersAlphabet.h:

(WebCore::ContentExtensions::CombinedFiltersAlphabet::TermPointerHash::hash):

  • contentextensions/ContentExtensionRule.h:

(WebCore::ContentExtensions::add):
(WebCore::ContentExtensions::TriggerHash::hash):

  • contentextensions/Term.h:

(WebCore::ContentExtensions::Term::Group::operator== const):
(WebCore::ContentExtensions::add):
(WebCore::ContentExtensions::Term::CharacterSet::hash const): Deleted.
(WebCore::ContentExtensions::Term::Group::hash const): Deleted.
(WebCore::ContentExtensions::Term::hash const): Deleted.

4:27 PM Changeset in webkit [290537] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Do not trigger didFail during FileReaderLoader Destruction
​https://bugs.webkit.org/show_bug.cgi?id=237060

Patch by Brandon Stewart <Brandon> on 2022-02-25
Reviewed by Darin Adler.

Setting cancel() instead of terminate() will prevent the didFail() method from being triggered.
This method has the unfortunate side effect of trying to allocate memory, which is not allowed when
under going a sweep event.

  • fileapi/FileReaderLoader.cpp:

(WebCore::FileReaderLoader::~FileReaderLoader):

4:17 PM Changeset in webkit [290536] by Russell Epstein
  • 1 copy in tags/Safari-613.1.17.1.9

Tag Safari-613.1.17.1.9.

4:04 PM Changeset in webkit [290535] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Add access to required mach service in the Network process
​https://bugs.webkit.org/show_bug.cgi?id=237216
<rdar://89176897>

Reviewed by Brent Fulgham.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
4:02 PM Changeset in webkit [290534] by Brent Fulgham
  • 8 edits
    2 adds in trunk

WebKit continues to render PDF images in Captive Portal mode
​https://bugs.webkit.org/show_bug.cgi?id=237120
<rdar://problem/89384234>

Reviewed by Chris Dumez.

Source/WebCore:

WebKit should handle all PDF processing in PDF.JS when in Captive Portal mode. However, testing
revealed that PDF images are still rendered natively. As a first step we should bypass the
native PDF code path. A subsequent patch will handle in PDF.JS.

We need to thread the state of the Captive Portal setting through the image loading code so that
WebKit knows to bail out before consuming the PDF data in the native decoder.

Tested by TestWebKitAPI.

  • page/RuntimeEnabledFeatures.h: Add new flag for PDF image decoding state.
  • platform/graphics/Image.cpp:

(WebCore::Image::create): Check whether PDF image decoding should be permitted.

Source/WebKit:

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess): Turn PDF image decoding off when in CaptivePortal mode.

Tools:

WebKit should handle all PDF processing in PDF.JS when in Captive Portal mode. However, testing
revealed that PDF images are still rendered natively. As a first step we should bypass the
native PDF code path. A subsequent patch will handle in PDF.JS.

We need to thread the state of the Captive Portal setting through the image loading code so that
WebKit knows to bail out before consuming the PDF data in the native decoder.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/CaptivePortalPDF.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

(-[CaptivePortalMessageHandler userContentController:didReceiveScriptMessage:]): Add new test case.

  • TestWebKitAPI/Tests/WebKitCocoa/webkit-logo.pdf: Added.
3:49 PM Changeset in webkit [290533] by Russell Epstein
  • 1 copy in tags/Safari-614.1.5.5

Tag Safari-614.1.5.5.

3:45 PM Changeset in webkit [290532] by sihui_liu@apple.com
  • 8 edits in trunk

Regression(r242729): m_origin in IDBDatabaseIdentifier is incorrect
​https://bugs.webkit.org/show_bug.cgi?id=237044

Reviewed by Youenn Fablet.

Source/WebCore:

In r242729, we swapped top origin and opening origin in m_origin (it is a ClientOrigin) of IDBDatabaseIdentifier.
This can cause trouble since IndexedDB operation will be processed by wrong OriginStorageManager
(OriginStorageManager is identified by ClientOrigin). To fix this issue, we need to swap it back.

New test: IndexedDB.IndexedDBThirdPartyStorageLayout

  • Modules/indexeddb/IDBDatabaseIdentifier.cpp:

(WebCore::IDBDatabaseIdentifier::IDBDatabaseIdentifier):
(WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot const):
(WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot):

  • Modules/indexeddb/IDBDatabaseIdentifier.h:
  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::getAllDatabaseNamesAndVersions):
(WebCore::IDBServer::IDBServer::diskUsage):

Source/WebKit:

  • NetworkProcess/storage/IDBStorageManager.cpp:

(WebKit::migrateOriginData):
(WebKit::IDBStorageManager::idbStorageOriginDirectory):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:

(-[IndexedDBMessageHandler userContentController:didReceiveScriptMessage:]):
(TEST):

3:29 PM Changeset in webkit [290531] by Chris Dumez
  • 3 edits
    4 adds in trunk

SharedArrayBuffer posted to AudioWorkletProcessor is not actually shared with the main thread
​https://bugs.webkit.org/show_bug.cgi?id=237144
<rdar://problem/89479641>

Reviewed by Darin Adler.

Source/WebCore:

SerializedScriptValue only maintains SharedArrayBuffers when constructed with SerializationContext::WorkerPostMessage.
With other SerializationContext values, such as the default one that AudioWorkletNode was using, SharedArrayBuffers
are serialized as simple arrays and are no longer shared.

This patch passes SerializationContext::WorkerPostMessage when constructing the SerializedScriptValue since we want
SharedArrayBuffer sharing and since a worklet is essentially a worker.

Note that this patch allows passing a SharedArrayBuffer to an AudioWorklet upon construction via processorOptions.
However, SharedArrayBuffer still won't be shared if sent later on via a MessagePort.postMessage() call. This is
because MessagePort.postMessage() routes all messages via the network process, even if the destination ends up
being within the same process as the sender (See Bug 220038).

Test: http/wpt/webaudio/the-audio-api/the-audioworklet-interface/shared-array-buffer.https.html

  • Modules/webaudio/AudioWorkletNode.cpp:

(WebCore::AudioWorkletNode::create):

LayoutTests:

Add layout test coverage.

  • http/wpt/webaudio/the-audio-api/the-audioworklet-interface/processors/shared-array-buffer-processor.js: Added.

(SharedArrayBufferTestProcessor):
(SharedArrayBufferTestProcessor.prototype.process):

  • http/wpt/webaudio/the-audio-api/the-audioworklet-interface/shared-array-buffer.https-expected.txt: Added.
  • http/wpt/webaudio/the-audio-api/the-audioworklet-interface/shared-array-buffer.https.html: Added.
  • http/wpt/webaudio/the-audio-api/the-audioworklet-interface/shared-array-buffer.https.html.headers: Added.
3:19 PM Changeset in webkit [290530] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Remove incorrect ASSERT.
​https://bugs.webkit.org/show_bug.cgi?id=237185
<rdar://problem/83902782>

Reviewed by Yusuke Suzuki.

These debug ASSERTs were added in ​http://trac.webkit.org/r283632 back when we
weren't sure that the StringImpl pointer can be null or not. We're now certain
that the StringImpl pointer can be null because:

The site of the ASSERT looks like this:
`

auto* impl = string->tryGetValueImpl();
ASSERT(impl); FIXME: rdar://83902782
if (impl && impl->isAtom() &&

...

`
... where string is a JSString, which can also be a JSRopeString.

JSString::tryGetValueImpl() is:
`
inline const StringImpl* JSString::tryGetValueImpl() const
{

uintptr_t pointer = fiberConcurrently();
if (pointer & isRopeInPointer)

return nullptr;

return bitwise_cast<StringImpl*>(pointer);

}
`

If string is a JSRopeString, the returned impl will be null. Hence, the ASSERT is
invalid and should be removed.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::handlePutByVal):

2:24 PM Changeset in webkit [290529] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.35.90

WPE WebKit 2.35.90

2:20 PM Changeset in webkit [290528] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.36

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.35.90 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.35.90.
2:20 PM Changeset in webkit [290527] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.36/Source/WebKit

Unreviewed non-unified build fix.

  • WebProcess/glib/WebProcessGLib.cpp: Add missing WebPage.h inclusion.
2:18 PM Changeset in webkit [290526] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] HLS + Modern EME key rotation causes playback to stall indefinitely
​https://bugs.webkit.org/show_bug.cgi?id=237214
<rdar://89372801>

Reviewed by Eric Carlson.

In r275916, Ref was changed to perform pointer equality in its operator==. This caused
takeUnexpectedKeyRequestForInitializationData() to fail to find key requests matching
the initData passed in through MediaKeySession.

Fix the equality test by calling .get() on the Ref, which causes the == to resolve to
FragmentedSharedBuffer::operator==().

  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:

(WebCore::CDMInstanceFairPlayStreamingAVFObjC::takeUnexpectedKeyRequestForInitializationData):

1:01 PM Changeset in webkit [290525] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, reverting r290516.
​https://bugs.webkit.org/show_bug.cgi?id=237222

broke debug tests

Reverted changeset:

"[JSC] Use DeferTerminationForAWhile in Interpreter::unwind"
​https://bugs.webkit.org/show_bug.cgi?id=237176
​https://commits.webkit.org/r290516

12:54 PM Changeset in webkit [290524] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ Mac wk1 ] 7X imported/w3c/web-platform-tests/pointerevents/pointerevent (layout-tests) are flaky text failures
​https://bugs.webkit.org/show_bug.cgi?id=236128

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
12:44 PM Changeset in webkit [290523] by Elliott Williams
  • 4 edits
    1 copy in trunk/Source/WTF

[XCBuild] Add missing header build rule for Scripts/Preferences/*
​https://bugs.webkit.org/show_bug.cgi?id=237129

Reviewed by Alexey Proskuryakov.

Relands "[XCBuild] WTF's SPI dependencies are copied via a folder reference and do not emit
task outputs".

r290452 missed adding a build rule which would copy $SRCROOT/Scripts/Preferences/* to
/usr/local/include/wtf/Scripts/Preferences, and caused clean builds to start failing. Fix by
adding the needed build rule.

  • Configurations/Base.xcconfig:
  • Configurations/WTF.xcconfig:
  • Configurations/icu.xcconfig:
  • WTF.xcodeproj/project.pbxproj:
12:19 PM Changeset in webkit [290522] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ iOS EWS ] imported/w3c/web-platform-tests/svg/coordinate-systems/abspos.html is a flaky image failure.
​https://bugs.webkit.org/show_bug.cgi?id=237220

Unreviewed test gardening.

Patch by Matteo Flores <Matteo Flores> on 2022-02-25

  • platform/ios/TestExpectations:
12:08 PM Changeset in webkit [290521] by pvollan@apple.com
  • 4 edits in trunk/Source/WebKit

Make sure there is a default Networking process to provide the Launch Services database
​https://bugs.webkit.org/show_bug.cgi?id=236629

Reviewed by Brent Fulgham.

The WebContent processes relies on getting the Launch Services database from the Networking process.
It is possible to enter a state where there is no default Network process, but a Network process is
running because a Website data store is holding a reference to it. This patch addresses this issue
by removing Network process references in all remaining Website data stores when the last process
pool is being deleted.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::~WebProcessPool):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::removeNetworkProcessReference):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
11:42 AM Changeset in webkit [290520] by Robert Jenner
  • 2 edits in trunk/LayoutTests

REGRESSION(r289787?) [ iOS EWS ]fast/layers/parent-clipping-overflow-is-overwritten-by-child-clipping.html is a flaky image failure.
​https://bugs.webkit.org/show_bug.cgi?id=237218

Unreviewed test gardening.

Patch by Matteo Flores <Matteo Flores> on 2022-02-25

  • platform/ios/TestExpectations:
11:26 AM Changeset in webkit [290519] by commit-queue@webkit.org
  • 18 edits
    15 adds in trunk

Re-add YouTubePluginReplacement, removed in r285252
​https://bugs.webkit.org/show_bug.cgi?id=237182
Source/WebCore:

<rdar://89148022>

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-02-25
Reviewed by Chris Dumez.

Tests: security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement.html

security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement.html
security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type.html
security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement.html

Its removal broke webpages that work in Chrome and Firefox, so back it comes.

  • Headers.cmake:
  • Modules/plugins: Copied from Source/WebCore/Modules/plugins.
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSPluginElementFunctions.cpp:

(WebCore::pluginScriptObject):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

  • bindings/scripts/test/JS/JSTestPluginInterface.cpp:

(WebCore::JSTestPluginInterface::visitChildrenImpl):

  • html/HTMLPlugInElement.cpp:

(WebCore::HTMLPlugInElement::createElementRenderer):
(WebCore::HTMLPlugInElement::didAddUserAgentShadowRoot):
(WebCore::registrar):
(WebCore::pluginReplacementForType):
(WebCore::HTMLPlugInElement::requestObject):
(WebCore::HTMLPlugInElement::scriptObjectForPluginReplacement):

  • html/HTMLPlugInElement.h:

(WebCore::HTMLPlugInElement::pluginReplacementScriptObject):

  • html/shadow/ShadowPseudoIds.cpp:

(WebCore::ShadowPseudoIds::webkitPluginReplacement):

  • html/shadow/ShadowPseudoIds.h:
  • html/shadow/YouTubeEmbedShadowElement.cpp:
  • html/shadow/YouTubeEmbedShadowElement.h:
  • page/Settings.yaml:

Tools:

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-02-25
Reviewed by Chris Dumez.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/YouTubePluginReplacement.cpp:

LayoutTests:

Patch by Alex Christensen <​achristensen@webkit.org> on 2022-02-25
Reviewed by Chris Dumez.

  • TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/win/TestExpectations:
  • security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement-expected.txt: Copied from LayoutTests/security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement-expected.txt.
  • security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement.html: Copied from LayoutTests/security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement.html.
  • security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement-expected.txt: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement-expected.txt.
  • security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement.html: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement.html.
  • security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-expected.txt: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-expected.txt.
  • security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type-expected.txt: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type-expected.txt.
  • security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type.html: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type.html.
  • security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement.html: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement.html.
11:13 AM Changeset in webkit [290518] by Russell Epstein
  • 8 edits
    2 adds in branches/safari-613.1.17.1-branch

Cherry-pick r290512. rdar://problem/86582214

[Tables] Incorrect table sizing when colgroup comes after tbody
​https://bugs.webkit.org/show_bug.cgi?id=237205
<rdar://86582214>

Reviewed by Antti Koivisto.

Source/WebCore:

Let's use the colgroup for table sizing even when it comes after any thead, tbody, tfoot, and tr elements.
This makes WebKit match other rendering engines (see ​https://src.chromium.org/viewvc/blink?revision=159442&view=revision)

Test: fast/table/table-sizing-fails-when-colgroup-comes-after-content.html

  • rendering/RenderTable.cpp: (WebCore::RenderTable::firstColumn const):
  • rendering/RenderTableCol.cpp: (WebCore::RenderTableCol::nextColumn const):

LayoutTests:

  • fast/table/table-sizing-fails-when-colgroup-comes-after-content-expected.html: Added.
  • fast/table/table-sizing-fails-when-colgroup-comes-after-content.html: Added.
  • platform/mac/tables/mozilla_expected_failures/dom/appendCol1-expected.txt: Progression.
  • platform/mac/tables/mozilla_expected_failures/dom/appendColGroup1-expected.txt: Progression.

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@290512 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:03 AM Changeset in webkit [290517] by mark.lam@apple.com
  • 4 edits
    1 add in trunk

operationMaterializeObjectInOSR should DeferTerminationForAWhile instead of just DeferTermination.
​https://bugs.webkit.org/show_bug.cgi?id=237173
rdar://problem/89450245

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/termination-exception-in-operationMaterializeObjectInOSR2.js: Added.

Source/JavaScriptCore:

DeferTermination can throw the TerminationException on destruction of the scope
object. operationMaterializeObjectInOSR() was using DeferTermination, resulting
in the TerminationException being thrown on exit. This trips up
validateDFGExceptionHandling testing (which is enabled on Debug builds) because the
TerminationException is unexpected. The solution is simply to use
DeferTerminationForAWhile instead, and let a more natural trap checkpoint throw
the TerminationException later.

Also refactored notifyDebuggerOfUnwinding() to return early if a debugger is not
present. This avoids unnecessarily entering and exiting a DeferTermination scope
in notifyDebuggerOfUnwinding(). This was observed while testing this change on
the attached test case.

  • ftl/FTLOperations.cpp:

(JSC::FTL::operationMaterializeObjectInOSR):

  • interpreter/Interpreter.cpp:

(JSC::notifyDebuggerOfUnwinding):

10:53 AM Changeset in webkit [290516] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Use DeferTerminationForAWhile in Interpreter::unwind
​https://bugs.webkit.org/show_bug.cgi?id=237176

Reviewed by Mark Lam.

Interpreter::unwind calls sanitizeRemoteFunctionException, which would like to create scope (but it
does not have user observable behavior). Problem is that, since it is creating a scope, it can throw
a termination exception. We were using DeferTermination, but destructor of this scope can still set
termination exception, which results in throwing a termination exception for the error handler.

We use DeferTerminationForAWhile in the prologue of the Interpreter::unwind to ensure that this function
will not accept termination exception coming concurrently.

  • interpreter/Interpreter.cpp:

(JSC::sanitizeRemoteFunctionException):
(JSC::Interpreter::unwind):

10:44 AM Changeset in webkit [290515] by J Pascoe
  • 9 edits in trunk

[WebAuthn] Use default pubKeyCredParams if empty in makeCredential
​https://bugs.webkit.org/show_bug.cgi?id=237109
rdar://problem/89376484

Reviewed by Brent Fulgham.

Source/WebCore:

The Web Authentication level 2 spec was updated to clarify that
a set of default pubKeyCredParams should be used if the list
supplied by the RP is empty. This patch starts using
the default and updates associated tests.

  • Modules/webauthn/AuthenticatorCoordinator.cpp:

(WebCore::AuthenticatorCoordinator::create const):

  • Modules/webauthn/PublicKeyCredentialCreationOptions.h:
  • Modules/webauthn/WebAuthenticationConstants.h:

LayoutTests:

Update tests to take in account using default pubKeyCredParams.

  • http/wpt/webauthn/public-key-credential-create-failure.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure.https.html:
  • http/wpt/webauthn/public-key-credential-create-success-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-hid.https.html:
9:23 AM Changeset in webkit [290514] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Use modern Hasher in ContentExtensionsActions
​https://bugs.webkit.org/show_bug.cgi?id=237157

Reviewed by Darin Adler.

  • contentextensions/ContentExtensionActions.h:

(WebCore::ContentExtensions::add):
(WTF::DefaultHash<WebCore::ContentExtensions::RedirectAction>::hash):
(WTF::DefaultHash<WebCore::ContentExtensions::ModifyHeadersAction>::hash):
(WebCore::ContentExtensions::VariantHasher::hash): Deleted.
(WebCore::ContentExtensions::VectorHasher::hash): Deleted.

8:56 AM Changeset in webkit [290513] by youenn@apple.com
  • 11 edits in trunk/Source/WebKit

Better isolate RemoteVideoFrameObjectHeap clients from ThreadSafeObjectHeap implementation details
​https://bugs.webkit.org/show_bug.cgi?id=237191

Reviewed by Kimmo Kinnunen.

Refactoring to make RemoteVideoFrameObjectHeap API independent of ThreadSafeObjectHeap.
This makes code more readable and simplifies client side usage as well,
for instance by not having to care about timers, or using more known names like add/get instead of retire.

No change of behavior.

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:
  • GPUProcess/graphics/RemoteGraphicsContextGL.h:
  • GPUProcess/graphics/RemoteGraphicsContextGLCocoa.cpp:
  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:
  • GPUProcess/media/RemoteVideoFrameObjectHeap.cpp:
  • GPUProcess/media/RemoteVideoFrameObjectHeap.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp:
  • Shared/ThreadSafeObjectHeap.h:
  • WebProcess/GPU/webrtc/SharedVideoFrame.cpp:
8:44 AM Changeset in webkit [290512] by Alan Bujtas
  • 8 edits
    2 adds in trunk

[Tables] Incorrect table sizing when colgroup comes after tbody
​https://bugs.webkit.org/show_bug.cgi?id=237205
<rdar://86582214>

Reviewed by Antti Koivisto.

Source/WebCore:

Let's use the colgroup for table sizing even when it comes after any thead, tbody, tfoot, and tr elements.
This makes WebKit match other rendering engines (see ​https://src.chromium.org/viewvc/blink?revision=159442&view=revision)

Test: fast/table/table-sizing-fails-when-colgroup-comes-after-content.html

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::firstColumn const):

  • rendering/RenderTableCol.cpp:

(WebCore::RenderTableCol::nextColumn const):

LayoutTests:

  • fast/table/table-sizing-fails-when-colgroup-comes-after-content-expected.html: Added.
  • fast/table/table-sizing-fails-when-colgroup-comes-after-content.html: Added.
  • platform/mac/tables/mozilla_expected_failures/dom/appendCol1-expected.txt: Progression.
  • platform/mac/tables/mozilla_expected_failures/dom/appendColGroup1-expected.txt: Progression.
8:43 AM Changeset in webkit [290511] by Russell Epstein
  • 9 edits in branches/safari-614.1.5-branch/Source

Versioning.

WebKit-7614.1.5.5

8:32 AM Changeset in webkit [290510] by Patrick Angle
  • 4 edits in trunk/Source/JavaScriptCore

Web Inspector: [Cocoa] Split remote inspector message data into smaller chunks for large messages
​https://bugs.webkit.org/show_bug.cgi?id=237110
<rdar://89364487>

Reviewed by Devin Rousso.

Messages over 2 MiB will now be split into multiple chunks, which allows us to not exceed any receiving daemon
process' memory limit under otherwise normal conditions. 2 MiB was chosen as a balance between not having to
split most messages at all and making sure that the messages (and any copies made during the relaying of the
messages) do not exceed the memory limits of the receiving daemon process.

In order to prevent us from sending chunked messages to a process that doesn't support them we check for a flag
to enable this functionality during connection setup.

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/RemoteInspectorConstants.h:
  • inspector/remote/cocoa/RemoteInspectorCocoa.mm:

(Inspector::RemoteInspector::sendMessageToRemote):
(Inspector::RemoteInspector::receivedSetupMessage):

8:23 AM Changeset in webkit [290509] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

Remove unused soft linking declarations
​https://bugs.webkit.org/show_bug.cgi?id=237209

Reviewed by Brent Fulgham.

  • WebProcess/cocoa/WebProcessCocoa.mm:
8:04 AM Changeset in webkit [290508] by Jonathan Bedard
  • 3 edits in trunk/Tools

[Python 3] Invoke validate-committer-lists with Python 3
​https://bugs.webkit.org/show_bug.cgi?id=237171
<rdar://problem/89449485>

Reviewed by Alexey Proskuryakov.

  • Tools/Scripts/validate-committer-lists:

(CommitterListFromMailingList): Use https urls.
(CommitterListFromMailingList._fetch_authors_and_last_commit_time_from_git_log):
Handle commits in the canonical repository.
(CommitterListFromGit.possibly_expired_committers): Use Python 3 sorting idioms.
(CommitterListFromGit.possibly_inactive_reviewers): Declare process encoding.
(CommitterListFromGit.print_possibly_expired_committers): Committers which are not in
contributors.json or are only contributors cannot have expired committer status.
(CommitterListFromGit.print_possibly_inactive_reviewers): String already utf-8.
(CommitterListFromGit.print_committers_missing_from_committer_list): Check contributors,
not committers.

  • Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:

(BugzillaQueries.fetch_bugs_matching_quicksearch): Make urllib.quote invocations Python 3 compatible.
(BugzillaQueries.fetch_bugs_matching_search): Ditto.
(BugzillaQueries.fetch_bugs_from_review_queue): Ditto.
(BugzillaQueries.fetch_login_userid_pairs_matching_substring): Ditto.
(BugzillaQueries.is_invalid_bugzilla_email): Ditto.

Canonical link: ​https://commits.webkit.org/247793@main

7:49 AM Changeset in webkit [290507] by youenn@apple.com
  • 5 edits
    1 add in trunk

Non-simple CORS preflight fails due to cache-control header
​https://bugs.webkit.org/show_bug.cgi?id=236837
<rdar://problem/89382796>

Reviewed by Chris Dumez.

Source/WebCore:

We fixed cache-control in ​https://bugs.webkit.org/show_bug.cgi?id=233916.
The fix to make the website work is to ensure that Content-Type is not cleared when going to service worker.
Covered by updated tests.

  • Modules/beacon/NavigatorBeacon.cpp:

LayoutTests:

  • http/wpt/service-workers/cache-control-request-expected.txt:
  • http/wpt/service-workers/cache-control-request.html:
  • http/wpt/service-workers/resources/cross-origin-allow-for-beacon.py: Added.
5:28 AM Changeset in webkit [290506] by commit-queue@webkit.org
  • 8 edits in trunk

[GTK][WPE] Uncouple libgbm, libdrm dependencies from ANGLE functionality
​https://bugs.webkit.org/show_bug.cgi?id=237199

Patch by Zan Dobersek <​zdobersek@igalia.com> on 2022-02-25
Reviewed by Chris Lord.

.:

For both GTK and WPE, unconditionally search for the libgbm and libdrm
dependencies as they will also be needed outside of ANGLE functionality.
USE_ANGLE is defined along with USE_NICOSIA, but still only if the
relevant option was enabled.

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:

Source/WebCore:

Unconditionally build with libgbm and libdrm cflags and linker flags
since these will be used outside of ANGLE functionality.

Remove USE(ANGLE) && USE(NICOSIA) guards from GBMDevice files.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • platform/graphics/gbm/GBMDevice.cpp:
  • platform/graphics/gbm/GBMDevice.h:
5:26 AM Changeset in webkit [290505] by commit-queue@webkit.org
  • 16 edits
    4 copies
    3 adds in trunk

REGRESSION(r289580): [ iOS macOS ] TestWebKitAPI.IPCTestingAPI.CanReceiveSharedMemory is a constant timeout
​https://bugs.webkit.org/show_bug.cgi?id=236744

Patch by Kimmo Kinnunen <​kkinnunen@apple.com> on 2022-02-25
Reviewed by Antti Koivisto.

Source/WebKit:

Add new tester interface for testing IPC stream features.

Before, TestWebKitAPI.IPCTestingAPI.CanReceiveSharedMemory would test the feature of
"can reply stream sync message with shared memory" by using a RemoteRenderingBackend
message that did so. However, when the RemoteRenderingBackend was changed to use a
different stategy, this test stopped working without compile failure. The IPC testing
is currently done at JS level.

After, the new dedicated testing interface IPCStreamTester has dedicated message for
testing this feature. The test is moved to LayoutTests/ipc and made so that
it tests the feature in all currently testable processes WP uses (GPU, Networking, UI).

IPCTestingAPI is amended to return the all possible testable process names, so
the .html test can work even when ENABLE(GPU_PROCESS) is toggled.

The .html test also passes when !ENABLE(IPC_TESTING_API). Currently

ENABLE_IPC_TESTING_API == (ASAN_ENABLED
!defined(NDEBUG)) && PLATFORM(COCOA)

E.g. test tests something on Release+ASAN or Debug.

Having the test in .html also makes it possible to run the test on iOS devices.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):

  • Shared/IPCStreamTester.cpp: Added.

(WebKit::IPCStreamTester::create):
(WebKit::IPCStreamTester::IPCStreamTester):
(WebKit::IPCStreamTester::initialize):
(WebKit::IPCStreamTester::stopListeningForIPC):
(WebKit::IPCStreamTester::syncMessageReturningSharedMemory1):

  • Shared/IPCStreamTester.h: Copied from Source/WebKit/Shared/IPCTester.h.
  • Shared/IPCStreamTester.messages.in: Copied from Source/WebKit/Shared/IPCTester.messages.in.
  • Shared/IPCStreamTesterIdentifier.h: Copied from Source/WebKit/Shared/IPCTester.h.
  • Shared/IPCStreamTesterProxy.messages.in: Copied from Source/WebKit/Shared/IPCTester.messages.in.
  • Shared/IPCTester.cpp:

(WebKit::IPCTester::createStreamTester):
(WebKit::IPCTester::releaseStreamTester):

  • Shared/IPCTester.h:
  • Shared/IPCTester.messages.in:
  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp:
  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/IPCTestingAPI.cpp:

(WebKit::IPCTestingAPI::JSIPC::staticValues):
(WebKit::IPCTestingAPI::processTargetFromArgument):
(WebKit::IPCTestingAPI::JSIPC::processTargets):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:

LayoutTests:

  • ipc/stream-sync-reply-shared-memory-expected.txt: Added.
  • ipc/stream-sync-reply-shared-memory.html: Added.
1:50 AM Changeset in webkit [290504] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.35.90

WebKitGTK 2.35.90

1:50 AM Changeset in webkit [290503] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.36

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.35.90 release

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.35.90.
1:17 AM Changeset in webkit [290502] by Carlos Garcia Campos
  • 11 edits in trunk

AX: List item marker not exposed when not a direct child of a list item
​https://bugs.webkit.org/show_bug.cgi?id=236777
<rdar://problem/89082485>

Reviewed by Adrian Perez de Castro.

Source/WebCore:

It can happen that the marker is not a direct child of a list item, in which case the marker is ignored and not
exposed to ATs.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::parentObjectUnignored const): In case of list marker find the marker list item.
(WebCore::AccessibilityRenderObject::markerRenderer const): Helper to return the list item marker renderer.
(WebCore::AccessibilityRenderObject::addListItemMarker): Add always the list item marker as the first child of
list items.
(WebCore::AccessibilityRenderObject::addChildren): Do not add list item marker children, they will be added to
the right parent in addListItemMarker().

  • accessibility/AccessibilityRenderObject.h:

Tools:

  • WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:

(WTR::roleValueToString): Return AXStatic for Text role too.

LayoutTests:

Update test results.

  • accessibility/gtk/list-items-always-exposed-expected.txt:
  • accessibility/gtk/list-items-always-exposed.html:
  • accessibility/gtk/spans-expected.txt:
  • accessibility/gtk/spans.html:
  • platform/gtk/TestExpectations:
12:51 AM Changeset in webkit [290501] by youenn@apple.com
  • 14 edits in trunk/Source

Optimize black frame sending in MediaRecorderPrivate
​https://bugs.webkit.org/show_bug.cgi?id=237027

Reviewed by Kimmo Kinnunen.

Source/WebCore:

Allow generating black frames as IOSurfaces.
Covered by existing tests.

  • platform/graphics/cv/CVUtilities.h:
  • platform/graphics/cv/CVUtilities.mm:

Source/WebKit:

Add support for sending black frames through SharedVideoFrame.
In that case, we only send width and height and we reconstruct a black frame on receiver side.
Make use of SharedVideoFrame in RemoteMediaRecorder.
Set ownership in SharedVideoFrame to the corresponding WebProcess.

Covered by existing tests, in particular http/wpt/mediarecorder/mute-tracks.html.

  • GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:
  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:
  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:
  • WebProcess/GPU/webrtc/SharedVideoFrame.cpp:
  • WebProcess/GPU/webrtc/SharedVideoFrame.h:
12:28 AM WebKitGTK/2.36.x edited by Carlos Garcia Campos
(diff)
12:26 AM Changeset in webkit [290500] by Carlos Garcia Campos
  • 2 edits in trunk

Unreviewed. [GTK] Bump version numbers

  • Source/cmake/OptionsGTK.cmake:
12:21 AM Changeset in webkit [290499] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.36

Merge r290375 - [GStreamer] De-initialize GStreamer before terminating WebProcess
​https://bugs.webkit.org/show_bug.cgi?id=237084

Patch by Philippe Normand <​pnormand@igalia.com> on 2022-02-23
Reviewed by Carlos Garcia Campos.

Source/WebKit:

Allowing the leak tracer to report/log leaks. There is an issue though, if the UIProcess
exits too early, the leak tracer reporting will be interrupted potentially too early. The
workaround is to have 2 tabs open in the GTK MiniBrowser, closing the one where media
handling and leak tracing was done and keeping the second tab open.

  • WebProcess/glib/WebProcessGLib.cpp:

(WebKit::WebProcess::stopRunLoop):

Tools:

  • flatpak/flatpakutils.py:

(WebkitFlatpak.setup_gstbuild): Do not add extra quotes to GST_TRACERS, this is not supposed
to store paths.

12:19 AM Changeset in webkit [290498] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.36/Source/WebCore

Merge r290341 - CachedResourceLoader::allCachedSVGImages() reparses resource URLs unnecessarily
​https://bugs.webkit.org/show_bug.cgi?id=237002

Reviewed by Darin Adler.

Store URLs in the HashMaps instead of Strings since we have URLs initially and we
need URLs eventually. This avoids having to re-parse the URL unnecessarily, which
is fairly expensive.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):
(WebCore::CachedResourceLoader::determineRevalidationPolicy const):
(WebCore::CachedResourceLoader::notifyFinished):

  • loader/cache/CachedResourceLoader.h:
12:16 AM Changeset in webkit [290497] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.36/Source/WebKit

Merge r290338 - PingLoader is failing to call completion handler in error case
​https://bugs.webkit.org/show_bug.cgi?id=237062
<rdar://50157253>

Reviewed by Chris Dumez.

The completion handler was not being called in the case of a PingLoad being redirected to
a non-HTTP(S) scheme.

  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::willPerformHTTPRedirection):

12:12 AM Changeset in webkit [290496] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Remove dead code in GPUProcessConnection::dispatchMessage
​https://bugs.webkit.org/show_bug.cgi?id=237135

Reviewed by Kimmo Kinnunen.

No change of behavior.

  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::dispatchMessage):

12:08 AM Changeset in webkit [290495] by commit-queue@webkit.org
  • 43 edits
    3 adds
    4 deletes in trunk/LayoutTests

[GLIB] Update test baselines after various LFC improvements.
​https://bugs.webkit.org/show_bug.cgi?id=237184

Unreviewed test gardening.

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2022-02-25

  • platform/glib/fast/backgrounds/background-leakage-transforms-expected.txt:
  • platform/glib/fast/backgrounds/border-radius-split-background-expected.txt:
  • platform/glib/fast/backgrounds/border-radius-split-background-image-expected.txt:
  • platform/glib/fast/block/positioning/auto/vertical-lr/001-expected.txt:
  • platform/glib/fast/block/positioning/auto/vertical-lr/002-expected.txt:
  • platform/glib/fast/block/positioning/auto/vertical-lr/003-expected.txt:
  • platform/glib/fast/block/positioning/auto/vertical-lr/004-expected.txt:
  • platform/glib/fast/block/positioning/auto/vertical-lr/006-expected.txt:
  • platform/glib/fast/block/positioning/vertical-lr/002-expected.txt:
  • platform/glib/fast/borders/border-image-outset-split-inline-vertical-lr-expected.txt:
  • platform/glib/fast/replaced/vertical-lr/absolute-position-percentage-width-expected.txt:
  • platform/glib/fast/replaced/vertical-lr/absolute-position-with-auto-height-and-top-and-bottom-expected.txt:
  • platform/glib/fast/replaced/vertical-lr/absolute-position-with-auto-width-and-left-and-right-expected.txt:
  • platform/glib/fast/table/border-collapsing/002-vertical-expected.txt:
  • platform/glib/fast/writing-mode/basic-vertical-line-expected.txt:
  • platform/glib/fast/writing-mode/border-image-vertical-lr-expected.txt:
  • platform/glib/fast/writing-mode/border-radius-clipping-vertical-lr-expected.txt:
  • platform/glib/fast/writing-mode/border-styles-vertical-lr-expected.txt:
  • platform/glib/fast/writing-mode/border-styles-vertical-lr-mixed-expected.txt:
  • platform/glib/fast/writing-mode/border-styles-vertical-rl-expected.txt:
  • platform/glib/fast/writing-mode/border-styles-vertical-rl-mixed-expected.txt:
  • platform/glib/fast/writing-mode/border-vertical-lr-expected.txt:
  • platform/glib/fast/writing-mode/box-shadow-vertical-lr-expected.txt:
  • platform/glib/fast/writing-mode/japanese-lr-text-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-empty-inline-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-leading-space-inline-expected.txt: Added.
  • platform/gtk/fast/block/lineboxcontain/inline-box-vertical-expected.txt:
  • platform/gtk/fast/html/details-writing-mode-expected.txt:
  • platform/gtk/fast/html/details-writing-mode-mixed-expected.txt:
  • platform/gtk/fast/lists/003-vertical-expected.txt:
  • platform/gtk/fast/overflow/overflow-rtl-vertical-expected.txt:
  • platform/gtk/fast/text/international/synthesized-italic-vertical-latin-expected.txt:
  • platform/gtk/fast/writing-mode/english-lr-text-expected.txt:
  • platform/gtk/fast/writing-mode/text-orientation-basic-expected.txt:
  • platform/gtk/fast/writing-mode/vertical-lr-replaced-selection-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-empty-inline-expected.txt: Removed.
  • platform/gtk/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-leading-space-inline-expected.txt: Removed.
  • platform/wpe/fast/block/lineboxcontain/inline-box-vertical-expected.txt:
  • platform/wpe/fast/html/details-writing-mode-expected.txt:
  • platform/wpe/fast/html/details-writing-mode-mixed-expected.txt:
  • platform/wpe/fast/lists/003-vertical-expected.txt:
  • platform/wpe/fast/overflow/overflow-rtl-vertical-expected.txt:
  • platform/wpe/fast/text/international/synthesized-italic-vertical-latin-expected.txt:
  • platform/wpe/fast/writing-mode/english-lr-text-expected.txt:
  • platform/wpe/fast/writing-mode/text-orientation-basic-expected.txt:
  • platform/wpe/fast/writing-mode/vertical-lr-replaced-selection-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-empty-inline-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-leading-space-inline-expected.txt: Removed.
12:05 AM WebKitGTK/2.36.x edited by Carlos Garcia Campos
(diff)
12:03 AM Changeset in webkit [290494] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Make RemoteVideoFrameIdentifier a regular ObjectIdentifier
​https://bugs.webkit.org/show_bug.cgi?id=237136

Reviewed by Kimmo Kinnunen.

Given all RemoteVideoFrames are created in GPUProcess, we no longer need to use a ProcessQualified identifier.
Covered by existing tests.

  • WebProcess/GPU/media/RemoteVideoFrameIdentifier.h:
Note: See TracTimeline for information about the timeline view.