Timeline



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:
Note: See TracTimeline for information about the timeline view.