Timeline



Jan 9, 2022:

11:55 PM Changeset in webkit [287830] by graouts@webkit.org
  • 3 edits in trunk/LayoutTests/imported/w3c

Unreviewed WPT update after https://github.com/web-platform-tests/wpt/pull/32222.

  • web-platform-tests/css/css-transitions/transition-property-002-expected.txt:
  • web-platform-tests/css/css-transitions/transition-property-002.html:
7:39 PM Changeset in webkit [287829] by weinig@apple.com
  • 99 edits
    54 deletes in trunk

.:
Remove support for Direct2D
https://bugs.webkit.org/show_bug.cgi?id=234999

Reviewed by Darin Adler.

  • Source/cmake/OptionsFTW.cmake: Removed.

Source/JavaScriptCore:
Remove support for Direct2D
https://bugs.webkit.org/show_bug.cgi?id=234999

Reviewed by Darin Adler.

Direct2D and FTW have not been building for over a year. It is
time to remove them.

  • PlatformFTW.cmake: Removed.

Source/ThirdParty/ANGLE:
Remove support for Direct2D
https://bugs.webkit.org/show_bug.cgi?id=234999

Reviewed by Darin Adler.

Direct2D and FTW have not been building for over a year. It is
time to remove them.

  • PlatformFTW.cmake: Removed.

Source/WebCore:
Remove support for Direct2D / FTW
https://bugs.webkit.org/show_bug.cgi?id=234999

Reviewed by Darin Adler.

Direct2D and FTW have not been building for over a year. It is
time to remove them.

  • PlatformAppleWin.cmake:
  • PlatformFTW.cmake: Removed.
  • PlatformWin.cmake:
  • page/CaptionUserPreferencesMediaAF.cpp:
  • page/CaptionUserPreferencesMediaAF.h:
  • page/win/FrameWinDirect2D.cpp: Removed.
  • platform/MIMETypeRegistry.cpp:

(WebCore::MIMETypeRegistry::createMIMETypeRegistryThreadGlobalData):

  • platform/graphics/BifurcatedGraphicsContext.cpp:
  • platform/graphics/BifurcatedGraphicsContext.h:
  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::frameImageAtIndexCacheIfNeeded):
(WebCore::BitmapImage::nativeImage):
(WebCore::BitmapImage::nativeImageForCurrentFrame):
(WebCore::BitmapImage::preTransformedNativeImageForCurrentFrame):
(WebCore::BitmapImage::nativeImageOfSize):
(WebCore::BitmapImage::draw):

  • platform/graphics/BitmapImage.h:
  • platform/graphics/Font.h:
  • platform/graphics/FontPlatformData.h:

(WebCore::FontPlatformData::dwFont const): Deleted.
(WebCore::FontPlatformData::dwFontFace const): Deleted.

  • platform/graphics/Gradient.h:
  • platform/graphics/GraphicsContext.h:
  • platform/graphics/Image.h:

(WebCore::Image::nativeImage):
(WebCore::Image::nativeImageForCurrentFrame):
(WebCore::Image::preTransformedNativeImageForCurrentFrame):
(WebCore::Image::nativeImageOfSize):

  • platform/graphics/ImageDecoder.cpp:

(WebCore::ImageDecoder::create):
(WebCore::ImageDecoder::supportsMediaType):

  • platform/graphics/ImageDecoder.h:
  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::setTargetContext): Deleted.

  • platform/graphics/ImageSource.h:
  • platform/graphics/NullGraphicsContext.h:
  • platform/graphics/Path.cpp:

(WebCore::Path::length const):
(WebCore::Path::addRoundedRect):

  • platform/graphics/Path.h:
  • platform/graphics/Pattern.h:
  • platform/graphics/PlatformImage.h:
  • platform/graphics/PlatformImageBuffer.h:
  • platform/graphics/PlatformImageBufferBackend.h:
  • platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp:

(WebCore::CDMSessionAVFoundationCF::generateKeyRequest):

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::MediaPlayerPrivateAVFoundationCF::paint):

  • platform/graphics/cg/PDFDocumentImage.cpp:

(WebCore::PDFDocumentImage::drawPDFPage):

  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/graphics/opentype/OpenTypeMathData.cpp:

(WebCore::OpenTypeMathData::OpenTypeMathData):

  • platform/graphics/opentype/OpenTypeUtilities.cpp:

(WebCore::renameAndActivateFont):

  • platform/graphics/texmap/BitmapTexture.cpp:

(WebCore::BitmapTexture::updateContents):

  • platform/graphics/texmap/BitmapTextureGL.cpp:

(WebCore::BitmapTextureGL::updateContents):

  • platform/graphics/win/BackingStoreBackendDirect2D.h: Removed.
  • platform/graphics/win/BackingStoreBackendDirect2DImpl.cpp: Removed.
  • platform/graphics/win/BackingStoreBackendDirect2DImpl.h: Removed.
  • platform/graphics/win/ColorDirect2D.cpp: Removed.
  • platform/graphics/win/ComplexTextControllerDirectWrite.cpp: Removed.
  • platform/graphics/win/ComplexTextControllerUniscribe.cpp:
  • platform/graphics/win/Direct2DOperations.cpp: Removed.
  • platform/graphics/win/Direct2DOperations.h: Removed.
  • platform/graphics/win/Direct2DUtilities.cpp: Removed.
  • platform/graphics/win/Direct2DUtilities.h: Removed.
  • platform/graphics/win/DirectWriteUtilities.cpp: Removed.
  • platform/graphics/win/DirectWriteUtilities.h: Removed.
  • platform/graphics/win/FloatPointDirect2D.cpp: Removed.
  • platform/graphics/win/FloatRectDirect2D.cpp: Removed.
  • platform/graphics/win/FloatSizeDirect2D.cpp: Removed.
  • platform/graphics/win/FontCascadeDirect2D.cpp: Removed.
  • platform/graphics/win/FontCustomPlatformData.cpp:

(WebCore::FontCustomPlatformData::fontPlatformData):

  • platform/graphics/win/FontPlatformDataDirect2D.cpp: Removed.
  • platform/graphics/win/GlyphPageTreeNodeDirect2D.cpp: Removed.
  • platform/graphics/win/GradientDirect2D.cpp: Removed.
  • platform/graphics/win/GraphicsContextDirect2D.cpp: Removed.
  • platform/graphics/win/GraphicsContextGLDirect2D.cpp: Removed.
  • platform/graphics/win/GraphicsContextPlatformPrivateDirect2D.h: Removed.
  • platform/graphics/win/GraphicsContextWin.cpp:
  • platform/graphics/win/GraphicsContextWin.h:
  • platform/graphics/win/GraphicsLayerDirect2D.cpp: Removed.
  • platform/graphics/win/GraphicsLayerDirect2D.h: Removed.
  • platform/graphics/win/ImageBufferDirect2DBackend.cpp: Removed.
  • platform/graphics/win/ImageBufferDirect2DBackend.h: Removed.
  • platform/graphics/win/ImageDecoderDirect2D.cpp: Removed.
  • platform/graphics/win/ImageDecoderDirect2D.h: Removed.
  • platform/graphics/win/ImageDirect2D.cpp: Removed.
  • platform/graphics/win/NativeImageDirect2D.cpp: Removed.
  • platform/graphics/win/PathDirect2D.cpp: Removed.
  • platform/graphics/win/PatternDirect2D.cpp: Removed.
  • platform/graphics/win/PlatformContextDirect2D.cpp: Removed.
  • platform/graphics/win/PlatformContextDirect2D.h: Removed.
  • platform/graphics/win/SimpleFontDataDirect2D.cpp: Removed.
  • platform/graphics/win/TextAnalyzerHelper.cpp: Removed.
  • platform/graphics/win/TextAnalyzerHelper.h: Removed.
  • platform/graphics/win/TransformationMatrixDirect2D.cpp: Removed.
  • platform/win/DragImageDirect2D.cpp: Removed.
  • rendering/RenderLayerFilters.cpp:

(WebCore::RenderLayerFilters::allocateBackingStoreIfNeeded):
(WebCore::RenderLayerFilters::beginFilterEffect):

  • rendering/RenderLayerFilters.h:
  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::applyResource):

  • rendering/svg/RenderSVGResourceMasker.cpp:

(WebCore::RenderSVGResourceMasker::applyResource):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::createImageBuffer):

  • rendering/svg/SVGRenderingContext.h:
  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::nativeImageForCurrentFrame):
(WebCore::SVGImage::nativeImage):

  • svg/graphics/SVGImage.h:
  • svg/graphics/SVGImageForContainer.cpp:

(WebCore::SVGImageForContainer::nativeImageForCurrentFrame):

  • svg/graphics/SVGImageForContainer.h:

Source/WebCore/PAL:
Remove support for Direct2D
https://bugs.webkit.org/show_bug.cgi?id=234999

Reviewed by Darin Adler.

Direct2D and FTW have not been building for over a year. It is
time to remove them.

  • pal/PlatformFTW.cmake: Removed.

Source/WebKit:
Remove support for Direct2D
https://bugs.webkit.org/show_bug.cgi?id=234999

Reviewed by Darin Adler.

Direct2D and FTW have not been building for over a year. It is
time to remove them.

  • PlatformFTW.cmake: Removed.
  • Shared/ShareableBitmap.cpp:

(WebKit::ShareableBitmap::Configuration::encode const):
(WebKit::ShareableBitmap::Configuration::decode):
(WebKit::ShareableBitmap::ShareableBitmap):
(WebKit::ShareableBitmap::~ShareableBitmap):
(WebKit::ShareableBitmap::numBytesForSize):

  • Shared/ShareableBitmap.h:

(WebKit::ShareableBitmap::createPlatformImage):
(WebKit::ShareableBitmap::dxSurface): Deleted.

  • Shared/win/ShareableBitmapDirect2D.cpp: Removed.
  • UIProcess/BackingStore.cpp:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/win/BackingStoreDirect2D.cpp: Removed.
  • UIProcess/win/WebPageProxyWin.cpp:

(WebKit::WebPageProxy::device const): Deleted.
(WebKit::WebPageProxy::setDevice): Deleted.

  • UIProcess/win/WebPopupMenuProxyWin.cpp:

(WebKit::WebPopupMenuProxyWin::showPopupMenu):
(WebKit::WebPopupMenuProxyWin::paint):
(WebKit::WebPopupMenuProxyWin::setupSwapChain): Deleted.
(WebKit::WebPopupMenuProxyWin::configureBackingStore): Deleted.

  • UIProcess/win/WebPopupMenuProxyWin.h:
  • UIProcess/win/WebView.cpp:

(WebKit::WebView::WebView):
(WebKit::WebView::onSizeEvent):
(WebKit::WebView::setupSwapChain): Deleted.
(WebKit::WebView::configureBackingStore): Deleted.

  • UIProcess/win/WebView.h:

(WebKit::WebView::d3dDevice const): Deleted.
(WebKit::WebView::d3dImmediateContext const): Deleted.

  • WebProcess/WebCoreSupport/WebPopupMenu.cpp:

(WebKit::WebPopupMenu::show):

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:

(WebKit::DrawingAreaCoordinatedGraphics::display):

  • WebProcess/WebPage/FindController.cpp:

(WebKit::FindController::getImageForFindMatch):

Source/WebKitLegacy:
Remove support for Direct2D
https://bugs.webkit.org/show_bug.cgi?id=234999

Reviewed by Darin Adler.

Direct2D and FTW have not been building for over a year. It is
time to remove them.

  • PlatformFTW.cmake: Removed.

Source/WebKitLegacy/win:
Remove support for Direct2D
https://bugs.webkit.org/show_bug.cgi?id=234999

Reviewed by Darin Adler.

Direct2D and FTW have not been building for over a year. It is
time to remove them.

  • WebView.cpp:

(WebView::deleteBackingStore):
(WebView::ensureBackingStore):
(WebView::scrollBackingStore):
(WebView::sizeChanged):
(WebView::updateBackingStore):
(WebView::paint):
(WebView::paintIntoBackingStore):
(WebView::WebViewWndProc):
(WebView::notifyPreferencesChanged):
(WebView::paintWithDirect2D): Deleted.

  • WebView.h:

Source/WTF:
Remove support for Direct2D
https://bugs.webkit.org/show_bug.cgi?id=234999

Reviewed by Darin Adler.

  • wtf/PlatformFTW.cmake: Removed.

Tools:
Remove support for Direct2D
https://bugs.webkit.org/show_bug.cgi?id=234999

Reviewed by Darin Adler.

Direct2D and FTW have not been building for over a year. It is
time to remove them.

  • DumpRenderTree/PixelDumpSupport.cpp:
  • DumpRenderTree/PlatformWin.cmake:
  • DumpRenderTree/win/PixelDumpSupportDirect2D.cpp: Removed.
  • DumpRenderTree/win/PixelDumpSupportDirect2D.h: Removed.
  • DumpRenderTree/win/PixelDumpSupportWin.cpp:

(createBitmapContextFromWebView):

  • PlatformFTW.cmake: Removed.
  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::InjectedBundlePage::dumpDOMAsWebArchive):

  • WebKitTestRunner/PlatformFTW.cmake: Removed.
  • WebKitTestRunner/PlatformWebView.h:
  • WebKitTestRunner/win/PlatformWebViewWin.cpp:
  • WebKitTestRunner/win/TestInvocationDirect2D.cpp: Removed.
1:38 PM Changeset in webkit [287828] by graouts@webkit.org
  • 3 edits in trunk/Source/WebCore

Style::Resolver::keyframeRulesForName() signature should be improved
https://bugs.webkit.org/show_bug.cgi?id=235021

Reviewed by Darin Adler.

Darin pointed out during the review for bug 235008 that the method itself
should be const, not its return value.

  • style/StyleResolver.cpp:

(WebCore::Style::Resolver::keyframeRulesForName const):
(WebCore::Style::Resolver::keyframeRulesForName): Deleted.

  • style/StyleResolver.h:
1:19 PM Changeset in webkit [287827] by graouts@webkit.org
  • 5 edits
    2 adds in trunk

Implicit keyframe for a CSS Animation should always use the underlying style
https://bugs.webkit.org/show_bug.cgi?id=235014

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Add a new WPT which changes the underlying style for a property that is being
animated with an @keyframes rule that doesn't explicitly specify this value
on all keyframes.

  • web-platform-tests/css/css-animations/animation-change-underlying-value-changed-in-flight-expected.txt: Added.
  • web-platform-tests/css/css-animations/animation-change-underlying-value-changed-in-flight.html: Added.

Source/WebCore:

When resolving keyframes for a CSS Animation in Style::Resolver::keyframeStylesForAnimation(),
we would fill implicit keyframes based on the style at the time the animation was created.
However, the underlying style may change at any point while the CSS Animation is in flight,
so we should not be filling those values.

The code that actually resolves animated styles already knows how to handle this case, which
we already supported correctly for JS-originated animations. The only thing we need to do is
to ensure we fill implicit keyframes when calling getKeyframes().

This surfaced an issue with KeyframeList::copyKeyframes() where we only copied the styles
from one set of keyframes to another, but not the timing function, which would cause a
getKeyframes() test to regress. We should also make sure to copy the composite operation
for when we support the animation-composition property (see bug 232086).

Test: imported/w3c/web-platform-tests/css/css-animations/animation-change-underlying-value-changed-in-flight.html

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::getKeyframes):

  • rendering/style/KeyframeList.cpp:

(WebCore::KeyframeList::copyKeyframes):

  • style/StyleResolver.cpp:

(WebCore::Style::Resolver::keyframeStylesForAnimation):

11:51 AM Changeset in webkit [287826] by graouts@webkit.org
  • 4 edits in trunk

Interpolation for the "filter" property fails with a single keyframe
https://bugs.webkit.org/show_bug.cgi?id=235019

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark WPT progressions.

  • web-platform-tests/css/filter-effects/animation/filter-interpolation-001-expected.txt:

Source/WebCore:

In the case of an animation with a single keyframe, the 0% or 100% value (or both) may
be implicit and the blending keyframes can have fewer than to entries. This would make
KeyframeEffect::checkForMatchingFilterFunctionLists() always store "false" values for
whether "filter" values in keyframes match and prevent any blending from happening.

In the case where we have fewer than 2 values, as long as the property is animated,
we return true.

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::checkForMatchingFilterFunctionLists const):

10:54 AM Changeset in webkit [287825] by weinig@apple.com
  • 7 edits in trunk/Source/WebCore

Refactor CSS property parsing helpers to be a bit more composable
https://bugs.webkit.org/show_bug.cgi?id=234869

Reviewed by Darin Adler.

Refactors primitive CSS property parsing to be built on a new composable set of
lower level primitives.

The lowest level primitive is now a "consumer" struct that only knows how to consume
a particular type for a particular token type. For example, NumberRawKnownTokenTypeNumberConsumer
only knows how to consume and return a NumberRaw if the token type is a NumberToken.

For these token specific consumers to be useful, they need to be combined together. To
do this, a higher level meta-consumer type that is not tied to a specific token is used.
These are defined as empty structs with 'using' statements to indicate which low level
consumers to use for which token token types. For example:

struct NumberRawConsumer {

using Result = std::optional<NumberRaw>;

using FunctionToken = NumberRawKnownTokenTypeFunctionConsumer;
using NumberToken = NumberRawKnownTokenTypeNumberConsumer;

};

This meta-consumer definition defines a consumer that utilizes two lower level token
specific consumers for function and number tokens.

To actuall do something with this meta-consumer definition, the consumeMetaConsumer<>(...)
function is used, which introspects which using statements are defined, and dispatches to
the corresponding token specific consumer (see MetaConsumerDispatcher for how introspection works).

In addition to primitive meta-consumer definitions, there are also definitions for meta-consumers
that can consumer more complex things without duplicate work. For example, AngleOrPercentConsumer
is a meta-consumer that consumes either an Angle or a Percent. To deal with the fact that both
of these want to operate on function tokens, the SameTokenMetaConsumer allows concatenating multiple
per-token consumers (in this case, two function token consumers) together.

Meta-consumer definitions can also define, or allow defining via a template parameter, a Transformer,
which, as the name implies, transform the output. For example, the AngleOrNumberRawToDegressTransformer
can be used to ensure that the result is a number in degrees, and doesn't have to be unwrapped by
the user.

The goal is avoid the combinatorial explosition of functions branching on token type for
more and more specialized parsing needs. For instance, an upcomping change will want to
extend consumeNumberOrPercentRawAllowingSymbolTableIdent and a few other related consumers
to also consume the identifier 'none'. Rather than duplicating all the logic, this allows
for just defining a few meta-consumer definitions utilizing almost entirely existing lower
level consumers.

  • css/MediaQueryExpression.cpp:

(WebCore::consumeFirstValue):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeFontVariationTag):
(WebCore::consumeCubicBezier):
(WebCore::consumeSpringFunction):
(WebCore::consumePerspective):
(WebCore::consumeCursor):
(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::consumeCounterStylePad):
(WebCore::consumeCounterStyleAdditiveSymbols):
(WebCore::consumeBasePaletteDescriptor):
(WebCore::consumeOverrideColorsDescriptor):
(WebCore::CSSPropertyParser::consumeFlex):

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::CalcParser::CalcParser):
(WebCore::CSSPropertyParserHelpers::consumeCalcRawWithKnownTokenTypeFunction):
(WebCore::CSSPropertyParserHelpers::computeMinimumValue):
(WebCore::CSSPropertyParserHelpers::IntegerTypeRawKnownTokenTypeFunctionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::IntegerTypeRawKnownTokenTypeNumberConsumer::consume):
(WebCore::CSSPropertyParserHelpers::IntegerTypeKnownTokenTypeFunctionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::IntegerTypeKnownTokenTypeNumberConsumer::consume):
(WebCore::CSSPropertyParserHelpers::validatedNumberRaw):
(WebCore::CSSPropertyParserHelpers::NumberRawKnownTokenTypeFunctionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::NumberRawKnownTokenTypeNumberConsumer::consume):
(WebCore::CSSPropertyParserHelpers::NumberRawKnownTokenTypeIdentConsumer::consume):
(WebCore::CSSPropertyParserHelpers::NumberCSSPrimitiveValueWithCalcWithKnownTokenTypeFunctionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::NumberCSSPrimitiveValueWithCalcWithKnownTokenTypeNumberConsumer::consume):
(WebCore::CSSPropertyParserHelpers::validatedPercentRaw):
(WebCore::CSSPropertyParserHelpers::PercentRawKnownTokenTypeFunctionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::PercentRawKnownTokenTypePercentConsumer::consume):
(WebCore::CSSPropertyParserHelpers::PercentRawKnownTokenTypeIdentConsumer::consume):
(WebCore::CSSPropertyParserHelpers::PercentCSSPrimitiveValueWithCalcWithKnownTokenTypeFunctionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::PercentCSSPrimitiveValueWithCalcWithKnownTokenTypePercentConsumer::consume):
(WebCore::CSSPropertyParserHelpers::LengthRawKnownTokenTypeFunctionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::LengthRawKnownTokenTypeDimensionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::LengthRawKnownTokenTypeNumberConsumer::consume):
(WebCore::CSSPropertyParserHelpers::LengthCSSPrimitiveValueWithCalcWithKnownTokenTypeFunctionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::LengthCSSPrimitiveValueWithCalcWithKnownTokenTypeDimensionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::LengthCSSPrimitiveValueWithCalcWithKnownTokenTypeNumberConsumer::consume):
(WebCore::CSSPropertyParserHelpers::AngleRawKnownTokenTypeFunctionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::AngleRawKnownTokenTypeDimensionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::AngleRawKnownTokenTypeNumberConsumer::consume):
(WebCore::CSSPropertyParserHelpers::AngleCSSPrimitiveValueWithCalcWithKnownTokenTypeFunctionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::AngleCSSPrimitiveValueWithCalcWithKnownTokenTypeDimensionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::AngleCSSPrimitiveValueWithCalcWithKnownTokenTypeNumberConsumer::consume):
(WebCore::CSSPropertyParserHelpers::TimeCSSPrimitiveValueWithCalcWithKnownTokenTypeFunctionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::TimeCSSPrimitiveValueWithCalcWithKnownTokenTypeDimensionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::TimeCSSPrimitiveValueWithCalcWithKnownTokenTypeNumberConsumer::consume):
(WebCore::CSSPropertyParserHelpers::ResolutionCSSPrimitiveValueWithKnownTokenTypeDimensionConsumer::consume):
(WebCore::CSSPropertyParserHelpers::TransformApplier::apply):
(WebCore::CSSPropertyParserHelpers::applyTransform):
(WebCore::CSSPropertyParserHelpers::IdentityTransformer::transform):
(WebCore::CSSPropertyParserHelpers::RawVariantTransformerBase::transform):
(WebCore::CSSPropertyParserHelpers::AngleOrNumberRawToDegressTransformer::transform):
(WebCore::CSSPropertyParserHelpers::NumberOrPercentDividedBy100Transformer::transform):
(WebCore::CSSPropertyParserHelpers::MetaConsumerDispatcher::consume):
(WebCore::CSSPropertyParserHelpers::consumeMetaConsumer):
(WebCore::CSSPropertyParserHelpers::SameTokenMetaConsumerApplier::consume):
(WebCore::CSSPropertyParserHelpers::SameTokenMetaConsumer::consume):
(WebCore::CSSPropertyParserHelpers::LengthOrPercentRawTransformer::transform):
(WebCore::CSSPropertyParserHelpers::AngleOrNumberRawKnownTokenTypeIdentConsumer::consume):
(WebCore::CSSPropertyParserHelpers::NumberOrPercentRawKnownTokenTypeIdentConsumer::consume):
(WebCore::CSSPropertyParserHelpers::consumeIntegerTypeRaw):
(WebCore::CSSPropertyParserHelpers::consumeIntegerType):
(WebCore::CSSPropertyParserHelpers::consumeIntegerRaw):
(WebCore::CSSPropertyParserHelpers::consumeInteger):
(WebCore::CSSPropertyParserHelpers::consumeIntegerZeroAndGreaterRaw):
(WebCore::CSSPropertyParserHelpers::consumeIntegerZeroAndGreater):
(WebCore::CSSPropertyParserHelpers::consumePositiveIntegerRaw):
(WebCore::CSSPropertyParserHelpers::consumePositiveInteger):
(WebCore::CSSPropertyParserHelpers::consumeNumberRaw):
(WebCore::CSSPropertyParserHelpers::consumeNumberAllowingSymbolTableIdent):
(WebCore::CSSPropertyParserHelpers::consumeNumber):
(WebCore::CSSPropertyParserHelpers::consumePercentRaw):
(WebCore::CSSPropertyParserHelpers::consumePercentAllowingSymbolTableIdent):
(WebCore::CSSPropertyParserHelpers::consumePercent):
(WebCore::CSSPropertyParserHelpers::consumePercentWorkerSafe):
(WebCore::CSSPropertyParserHelpers::consumeLengthRaw):
(WebCore::CSSPropertyParserHelpers::consumeLength):
(WebCore::CSSPropertyParserHelpers::consumeAngleRaw):
(WebCore::CSSPropertyParserHelpers::consumeAngle):
(WebCore::CSSPropertyParserHelpers::consumeAngleWorkerSafe):
(WebCore::CSSPropertyParserHelpers::consumeTime):
(WebCore::CSSPropertyParserHelpers::consumeResolution):
(WebCore::CSSPropertyParserHelpers::consumeAngleOrPercent):
(WebCore::CSSPropertyParserHelpers::consumeLengthOrPercentRaw):
(WebCore::CSSPropertyParserHelpers::consumeLengthOrPercent):
(WebCore::CSSPropertyParserHelpers::consumeAngleOrNumberRaw):
(WebCore::CSSPropertyParserHelpers::consumeAngleOrNumberRawAllowingSymbolTableIdent):
(WebCore::CSSPropertyParserHelpers::consumeNumberOrPercentRaw):
(WebCore::CSSPropertyParserHelpers::consumeNumberOrPercentRawAllowingSymbolTableIdent):
(WebCore::CSSPropertyParserHelpers::consumeNumberOrPercent):
(WebCore::CSSPropertyParserHelpers::consumeFontWeightNumberRaw):
(WebCore::CSSPropertyParserHelpers::consumeOptionalAlpha):
(WebCore::CSSPropertyParserHelpers::consumeOptionalAlphaAllowingSymbolTableIdent):
(WebCore::CSSPropertyParserHelpers::normalizeRGBComponentNumber):
(WebCore::CSSPropertyParserHelpers::normalizeRGBComponentPercentage):
(WebCore::CSSPropertyParserHelpers::RGBNormalizingTransformer::transform):
(WebCore::CSSPropertyParserHelpers::consumeRelativeRGBComponent):
(WebCore::CSSPropertyParserHelpers::clampRGBComponent):
(WebCore::CSSPropertyParserHelpers::consumeRGBOrHSLOptionalAlpha):
(WebCore::CSSPropertyParserHelpers::parseNonRelativeRGBParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeHSLParameters):
(WebCore::CSSPropertyParserHelpers::parseNonRelativeHSLParameters):
(WebCore::CSSPropertyParserHelpers::parseHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseNonRelativeHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseLabParameters):
(WebCore::CSSPropertyParserHelpers::parseLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseNonRelativeLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeColorFunctionForRGBTypes):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionForRGBTypes):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionForXYZTypes):
(WebCore::CSSPropertyParserHelpers::parseColorContrastFunctionParameters):
(WebCore::CSSPropertyParserHelpers::consumeColorMixComponent):
(WebCore::CSSPropertyParserHelpers::consumePositionComponent):
(WebCore::CSSPropertyParserHelpers::consumePositionCoordinates):
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradientColorStop):
(WebCore::CSSPropertyParserHelpers::consumeCrossFade):
(WebCore::CSSPropertyParserHelpers::consumeLineHeightRaw):
(WebCore::CSSPropertyParserHelpers::CalcParser::consumeInteger): Deleted.
(WebCore::CSSPropertyParserHelpers::CalcParser::consumeIntegerTypeRaw): Deleted.
(WebCore::CSSPropertyParserHelpers::CalcParser::consumeNumber): Deleted.
(WebCore::CSSPropertyParserHelpers::CalcParser::consumeNumberRaw): Deleted.
(WebCore::CSSPropertyParserHelpers::CalcParser::consumePercentRaw): Deleted.
(WebCore::CSSPropertyParserHelpers::CalcParser::consumeAngleRaw): Deleted.
(WebCore::CSSPropertyParserHelpers::CalcParser::consumeLengthRaw): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeIntegerTypeRawWithKnownTokenTypeFunction): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeIntegerTypeRawWithKnownTokenTypeNumber): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeIntegerTypeCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeIntegerTypeCSSPrimitiveValueWithCalcWithKnownTokenTypeNumber): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeNumberRawWithKnownTokenTypeFunction): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeNumberRawWithKnownTokenTypeNumber): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeNumberRawWithKnownTokenTypeIdent): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeNumberCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeNumberCSSPrimitiveValueWithCalcWithKnownTokenTypeNumber): Deleted.
(WebCore::CSSPropertyParserHelpers::consumePercentRawWithKnownTokenTypeFunction): Deleted.
(WebCore::CSSPropertyParserHelpers::consumePercentRawWithKnownTokenTypePercentage): Deleted.
(WebCore::CSSPropertyParserHelpers::consumePercentRawWithKnownTokenTypeIdent): Deleted.
(WebCore::CSSPropertyParserHelpers::consumePercentCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction): Deleted.
(WebCore::CSSPropertyParserHelpers::consumePercentCSSPrimitiveValueWithCalcWithKnownTokenTypePercentage): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeLengthRawWithKnownTokenTypeFunction): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeLengthRawWithKnownTokenTypeDimension): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeLengthRawWithKnownTokenTypeNumber): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeLengthCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeLengthCSSPrimitiveValueWithCalcWithKnownTokenTypeDimension): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeLengthCSSPrimitiveValueWithCalcWithKnownTokenTypeNumber): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeAngleRawWithKnownTokenTypeFunction): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeAngleRawWithKnownTokenTypeDimension): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeAngleRawWithKnownTokenTypeNumber): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeAngleCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeAngleCSSPrimitiveValueWithCalcWithKnownTokenTypeDimension): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeAngleCSSPrimitiveValueWithCalcWithKnownTokenTypeNumber): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeTimeCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeTimeCSSPrimitiveValueWithCalcWithKnownTokenTypeDimension): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeTimeCSSPrimitiveValueWithCalcWithKnownTokenTypeNumber): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeResolutionCSSPrimitiveValueWithKnownTokenTypeDimension): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeAngleRawOrNumberRaw): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeAngleRawOrNumberRawAllowingSymbolTableIdent): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeNumberRawOrPercentRaw): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeNumberRawOrPercentDividedBy100Raw): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeNumberRawOrPercentRawAllowingSymbolTableIdent): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeNumberRawOrPercentDividedBy100RawAllowingSymbolTableIdent): Deleted.

  • css/parser/CSSPropertyParserHelpers.h:
  • css/parser/CSSPropertyParserWorkerSafe.cpp:

(WebCore::CSSPropertyParserHelpersWorkerSafe::consumeFontFeatureTag):

  • style/StyleResolveForFontRaw.cpp:

(WebCore::Style::resolveForFontRaw):

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

[LFC][IFC] Introduce a dedicated structure for Line::Run's trailing whitespace information
https://bugs.webkit.org/show_bug.cgi?id=235010

Reviewed by Antti Koivisto.

  • layout/formattingContexts/inline/InlineLine.cpp:

(WebCore::Layout::Line::Run::trailingWhitespaceType):
(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::Run::expand):
(WebCore::Layout::Line::Run::removeTrailingWhitespace):
(WebCore::Layout::m_bidiLevel): Deleted.
(WebCore::Layout::m_textContent): Deleted.

  • layout/formattingContexts/inline/InlineLine.h:

(WebCore::Layout::Line::Run::hasTrailingWhitespace const):
(WebCore::Layout::Line::Run::trailingWhitespaceWidth const):
(WebCore::Layout::Line::Run::hasCollapsibleTrailingWhitespace const):
(WebCore::Layout::Line::Run::hasCollapsedTrailingWhitespace const):
(WebCore::Layout::Line::Run::trailingWhitespaceType const): Deleted.

10:18 AM Changeset in webkit [287823] by Ziran Sun
  • 33 edits
    2 copies
    2 moves
    13 adds in trunk/LayoutTests

[css-grid] Resync web-platform-tests/css/css-grid tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=234879

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-002-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-002-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-002-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-003-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-004-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-003-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-004-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-003-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-004-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-002-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-002-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-002.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-002-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-003-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-004-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-003-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-004-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-003-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-004-expected.html:
  • web-platform-tests/css/css-grid/alignment/grid-container-auto-margins-scrollbars-001-expected.html:
  • web-platform-tests/css/css-grid/alignment/grid-content-alignment-with-abspos-001-expected.txt: Added.
  • web-platform-tests/css/css-grid/alignment/grid-content-alignment-with-abspos-001.html: Added.
  • web-platform-tests/css/css-grid/alignment/self-baseline/w3c-import.log:
  • web-platform-tests/css/css-grid/alignment/w3c-import.log:
  • web-platform-tests/css/css-grid/grid-definition/w3c-import.log:
  • web-platform-tests/css/css-grid/grid-items/grid-intrinsic-maximums-expected.html: Added.
  • web-platform-tests/css/css-grid/grid-items/grid-intrinsic-maximums.html: Added.
  • web-platform-tests/css/css-grid/grid-items/w3c-import.log:
  • web-platform-tests/css/css-grid/grid-model/grid-container-scrollbars-sizing-002-expected.html:
  • web-platform-tests/css/css-grid/grid-model/w3c-import.log:
  • web-platform-tests/css/css-grid/layout-algorithm/flex-tracks-with-fractional-size-expected.xht: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-expected.xht.
  • web-platform-tests/css/css-grid/layout-algorithm/flex-tracks-with-fractional-size.html: Added.
  • web-platform-tests/css/css-grid/layout-algorithm/w3c-import.log:
  • web-platform-tests/css/css-grid/nested-grid-item-block-size-001-expected.html: Added.
  • web-platform-tests/css/css-grid/nested-grid-item-block-size-001.html: Added.
  • web-platform-tests/css/css-grid/parsing/grid-area-computed-expected.txt:
  • web-platform-tests/css/css-grid/parsing/grid-area-computed.html:
  • web-platform-tests/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-001-expected.xht: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-expected.xht.
  • web-platform-tests/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-001.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/placement/grid-placement-items-spanning-multiple-rows.html.
  • web-platform-tests/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-002-expected.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-expected.xht.
  • web-platform-tests/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-002.html: Added.
  • web-platform-tests/css/css-grid/placement/w3c-import.log:
  • web-platform-tests/css/css-grid/subgrid/grid-subgridded-axis-auto-repeater-crash-001.html: Added.
  • web-platform-tests/css/css-grid/subgrid/grid-subgridded-axis-auto-repeater-crash-002.html: Added.
  • web-platform-tests/css/css-grid/subgrid/grid-template-invalid.html: Added.
  • web-platform-tests/css/css-grid/subgrid/grid-template-valid.html: Added.
  • web-platform-tests/css/css-grid/subgrid/w3c-import.log:
  • web-platform-tests/css/css-grid/support/colors-8x16.png: Added.
  • web-platform-tests/css/css-grid/support/w3c-import.log:

LayoutTests:

10:13 AM Changeset in webkit [287822] by graouts@webkit.org
  • 4 edits in trunk

translate() function in transform property should remove trailing 0 value when parsing
https://bugs.webkit.org/show_bug.cgi?id=235016

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Mark WPT progression.

  • web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative-expected.txt:

Source/WebCore:

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeTransformValue):

10:06 AM Changeset in webkit [287821] by weinig@apple.com
  • 5 edits in trunk/Source

Add helpers to access CoreGraphics color spaces more easily in generic contexts
https://bugs.webkit.org/show_bug.cgi?id=235004

Reviewed by Darin Adler.

Source/WebCore:

Add some structs and type trait helpers to allow accessing the CoreGraphics
CGColorSpaceRef associated with a ColorSpace enum value at compile time. This
will be useful for generalizing some of the gradient rendering code optimizations
I have planned.

  • platform/graphics/cg/ColorCG.cpp:

(WebCore::Color::createAndLosslesslyConvertToSupportedColorSpace):

  • platform/graphics/cg/ColorSpaceCG.cpp:

(WebCore::colorSpaceForCGColorSpace):

  • platform/graphics/cg/ColorSpaceCG.h:

(WebCore::CGColorSpaceMapping<ColorSpace::SRGB>::colorSpace):
(WebCore::CGColorSpaceMapping<ColorSpace::A98RGB>::colorSpace):
(WebCore::CGColorSpaceMapping<ColorSpace::DisplayP3>::colorSpace):
(WebCore::CGColorSpaceMapping<ColorSpace::ExtendedA98RGB>::colorSpace):
(WebCore::CGColorSpaceMapping<ColorSpace::ExtendedDisplayP3>::colorSpace):
(WebCore::CGColorSpaceMapping<ColorSpace::ExtendedRec2020>::colorSpace):
(WebCore::CGColorSpaceMapping<ColorSpace::ExtendedLinearSRGB>::colorSpace):
(WebCore::CGColorSpaceMapping<ColorSpace::ExtendedProPhotoRGB>::colorSpace):
(WebCore::CGColorSpaceMapping<ColorSpace::ExtendedSRGB>::colorSpace):
(WebCore::CGColorSpaceMapping<ColorSpace::Rec2020>::colorSpace):
(WebCore::CGColorSpaceMapping<ColorSpace::LinearSRGB>::colorSpace):
(WebCore::CGColorSpaceMapping<ColorSpace::ProPhotoRGB>::colorSpace):
(WebCore::CGColorSpaceMapping<ColorSpace::XYZ_D50>::colorSpace):
(WebCore::CGColorSpaceMappingGetter::colorSpace):
(WebCore::cachedNullableCGColorSpace):

Source/WTF:

  • wtf/PlatformHave.h:

Update have macro, HAVE_CORE_GRAPHICS_XYZ_COLOR_SPACE, to have a more specific name,
HAVE_CORE_GRAPHICS_XYZ_D50_COLOR_SPACE, which is really what it is.

7:35 AM Changeset in webkit [287820] by graouts@webkit.org
  • 6 edits in trunk

[Web Animations] getKeyframes() for a CSS Animation should not use computed style for keyframes
https://bugs.webkit.org/show_bug.cgi?id=235008

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Mark WPT progression.

  • web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative-expected.txt:

Source/WebCore:

Until now, when calling getKeyframes() on a keyframe effect associated with a CSS Animation, we would
serialize for each keyframe the computed style for the animated properties. However, the Web Aniations
spec says (https://drafts.csswg.org/web-animations-1/#dom-keyframeeffect-getkeyframes) that the value
to use should "be the result of serializing the property value of declaration by passing declaration
to the algorithm to serialize a CSS value [CSSOM]."

One way we can get to the value as specified on the @keyframes rule rather than the computed style
is to access the StyleRuleKeyframe object directly as stored by the Style::Resolver. This keeps the
raw CSSValues as parsed.

To do this, we first refactor Style::Resolver::keyframeStylesForAnimation() such that all the code
that creates a Vector<Ref<StyleRuleKeyframe>> with deduplicated keyframe rules is in the new dedicated
method Style::Resolver::keyframeRulesForName().

Then, in KeyframeEffect::getKeyframes(), we can call into this function to obtain the set of keyframe
rules for the associated CSS Animation's name and read the style from there. Note that these values
may contain unsubstituted --var() values, so in that case for now we still use the computed style.

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::getKeyframes):

  • style/StyleResolver.cpp:

(WebCore::Style::Resolver::keyframeRulesForName):
(WebCore::Style::Resolver::keyframeStylesForAnimation):

  • style/StyleResolver.h:
5:50 AM Changeset in webkit [287819] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Line::Run needs access to FontCascade
https://bugs.webkit.org/show_bug.cgi?id=235009

Reviewed by Antti Koivisto.

This is in preparation for computing trimmed trailing content width properly.

  • layout/formattingContexts/inline/InlineLine.cpp:

(WebCore::Layout::Line::append):
(WebCore::Layout::Line::appendLineBreak):
(WebCore::Layout::Line::appendWordBreakOpportunity):
(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::m_textContent):
(WebCore::Layout::m_style): Deleted. - We learnt in the past that expanding structures like this (stack backed, large in number) could
lead to measurable perf regression.

  • layout/formattingContexts/inline/InlineLine.h:

(WebCore::Layout::Line::Run::shouldTrailingWhitespaceHang const):
(WebCore::Layout::Line::Run::inlineDirection const):
(WebCore::Layout::Line::Run::letterSpacing const):
(WebCore::Layout::Line::Run::hasTextCombine const):

1:01 AM Changeset in webkit [287818] by Antti Koivisto
  • 12 edits in trunk/Source/WebCore

Use IsNegation bit for more efficient pseudo-class style invalidation
https://bugs.webkit.org/show_bug.cgi?id=235003

Reviewed by Simon Fraser.

We now know if a given invalidation ruleset is for negated context. We can use this to avoid
unnecessary traversal in pseudo-class invalidation, similar to what we already do with classes.

  • dom/Document.cpp:

(WebCore::Document::updateHoverActiveState):

  • dom/Element.cpp:

(WebCore::Element::setActive):
(WebCore::Element::setFocus):
(WebCore::Element::setHasFocusWithin):
(WebCore::Element::setHovered):
(WebCore::Element::setBeingDragged):

Provide the value for invalidation.

  • html/HTMLFieldSetElement.cpp:

(WebCore::HTMLFieldSetElement::addInvalidDescendant):
(WebCore::HTMLFieldSetElement::removeInvalidDescendant):

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::setAncestorDisabled):
(WebCore::HTMLFormControlElement::parseAttribute):
(WebCore::HTMLFormControlElement::updateValidity):

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::registerInvalidAssociatedFormControl):
(WebCore::HTMLFormElement::removeInvalidAssociatedFormControlIfNeeded):

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::setChecked):

  • html/HTMLOptGroupElement.cpp:

(WebCore::HTMLOptGroupElement::parseAttribute):

  • html/HTMLOptionElement.cpp:

(WebCore::HTMLOptionElement::parseAttribute):
(WebCore::HTMLOptionElement::setSelectedState):

  • page/EventHandler.cpp:

(WebCore::EventHandler::internalKeyEvent):

  • style/PseudoClassChangeInvalidation.cpp:

(WebCore::Style::PseudoClassChangeInvalidation::computeInvalidation):
(WebCore::Style::PseudoClassChangeInvalidation::collectRuleSets):

Setting a pseudo-class can only make a regular selector (not inside :not()) start matching.
Setting a pseudo-class can only make a negated selector (inside :not()) stop matching.
We only need to invalidate for the first case after the mutation has happened and for the second
case before it happens.

The cases are reversed when pseudo-class is unset.

(WebCore::Style::PseudoClassChangeInvalidation::invalidateBeforeChange):
(WebCore::Style::PseudoClassChangeInvalidation::invalidateAfterChange):
(WebCore::Style::PseudoClassChangeInvalidation::invalidateStyleWithRuleSets): Deleted.

  • style/PseudoClassChangeInvalidation.h:

(WebCore::Style::emplace):

Add a helper since std::optional::emplace() is awkward to use with std::initializer_list.

(WebCore::Style::PseudoClassChangeInvalidation::PseudoClassChangeInvalidation):
(WebCore::Style::PseudoClassChangeInvalidation::~PseudoClassChangeInvalidation):

Jan 8, 2022:

11:43 PM Changeset in webkit [287817] by Simon Fraser
  • 12 edits
    2 adds in trunk

If the drop-shadow filter has no color, it should use the value of the color property
https://bugs.webkit.org/show_bug.cgi?id=235012

Reviewed by Alan Bujtas.

LayoutTests/imported/w3c:

  • web-platform-tests/css/filter-effects/animation/filter-interpolation-004-expected.txt:
  • web-platform-tests/css/filter-effects/parsing/filter-computed-expected.txt:

Source/WebCore:

https://drafts.fxtf.org/filter-effects-1/#funcdef-filter-drop-shadow states that if
drop-shadow() does not specify a color, the value of the color property should be used.

Test: css3/filters/drop-shadow-no-color.html

  • style/StyleBuilderState.cpp:

(WebCore::Style::BuilderState::createFilterOperations):

LayoutTests:

Fix tests to serialize with rgb(0, 0, 0) instead of the transparent color.

  • css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt:
  • css3/filters/backdrop/backdropfilter-property-computed-style.html:
  • css3/filters/drop-shadow-no-color-expected.html: Added.
  • css3/filters/drop-shadow-no-color.html: Added.
  • css3/filters/filter-property-computed-style-expected.txt:
  • css3/filters/filter-property-computed-style.html:
  • css3/filters/unprefixed-expected.txt:
  • css3/filters/unprefixed.html:
8:16 PM Changeset in webkit [287816] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GLIB] Update test expectations for known failures.
https://bugs.webkit.org/show_bug.cgi?id=234972

Unreviewed test gardening.

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2022-01-08

  • platform/glib/TestExpectations:
3:40 PM Changeset in webkit [287815] by Simon Fraser
  • 8 edits in trunk

Fix some CSS filter interpolation issues
https://bugs.webkit.org/show_bug.cgi?id=235007

Reviewed by Antoine Quint.

LayoutTests/imported/w3c:

More passing now.

  • web-platform-tests/css/filter-effects/animation/filter-interpolation-002-expected.txt:
  • web-platform-tests/css/filter-effects/animation/filter-interpolation-003-expected.txt:
  • web-platform-tests/css/filter-effects/animation/filter-interpolation-004-expected.txt:

Source/WebCore:

Ensure that filter values are clamped after animation according to
https://drafts.fxtf.org/filter-effects-1/.

Tested by WPT.

  • platform/graphics/filters/FilterOperation.cpp:

(WebCore::BasicColorMatrixFilterOperation::blend):
(WebCore::BasicComponentTransferFilterOperation::blend):
(WebCore::BlurFilterOperation::blend):
(WebCore::DropShadowFilterOperation::blend):

LayoutTests:

imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-004.html no longer asserts.

2:12 PM Changeset in webkit [287814] by Wenson Hsieh
  • 4 edits
    1 add in trunk

Null pointer crash when calling into -[WebView close] in -webView:didCommitLoadForFrame:
https://bugs.webkit.org/show_bug.cgi?id=234994
rdar://86845512

Reviewed by Chris Dumez and Geoff Garen.

Source/WebCore:

Add a null check in FrameLoader::dispatchDidCommitLoad() before calling into any methods on the frame's Page.
Since we called into the client layer to dispatchDidCommitLoad() immediately prior to this, a legacy WebKit
client may have already caused the page to be destroyed (e.g. by closing the web view). Since Frame's pointer
to Page is a WeakPtr, this triggers null derefs when attempting to call either didCommitLoad() or
remoteInspectorInformationDidChange().

Test: WebKitLegacy.CloseWhileCommittingLoad

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::dispatchDidCommitLoad):

Tools:

Add a new API test to exercise the fix.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/CloseWhileCommittingLoad.mm: Added.

(-[CloseWhileCommittingLoadDelegate webView:didCommitLoadForFrame:]):
(TestWebKitAPI::TEST):

10:26 AM Changeset in webkit [287813] by Simon Fraser
  • 6 edits
    608 adds in trunk/LayoutTests

Import css/filter-effects web platform tests
https://bugs.webkit.org/show_bug.cgi?id=235001

Reviewed by Alan Bujtas.
LayoutTests/imported/w3c:

Imported from WPT ba3997e9f9a2f10a00688061f785d4c9b70cc5d5.

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/css/filter-effects/META.yml: Added.
  • web-platform-tests/css/filter-effects/animation/backdrop-filter-interpolation-001-expected.txt: Added.
  • web-platform-tests/css/filter-effects/animation/backdrop-filter-interpolation-001.html: Added.
  • web-platform-tests/css/filter-effects/animation/backdrop-filter-interpolation-002-expected.txt: Added.
  • web-platform-tests/css/filter-effects/animation/backdrop-filter-interpolation-002.html: Added.
  • web-platform-tests/css/filter-effects/animation/backdrop-filter-interpolation-003-expected.txt: Added.
  • web-platform-tests/css/filter-effects/animation/backdrop-filter-interpolation-003.html: Added.
  • web-platform-tests/css/filter-effects/animation/backdrop-filter-interpolation-004-expected.txt: Added.
  • web-platform-tests/css/filter-effects/animation/backdrop-filter-interpolation-004.html: Added.
  • web-platform-tests/css/filter-effects/animation/filter-interpolation-001-expected.txt: Added.
  • web-platform-tests/css/filter-effects/animation/filter-interpolation-001.html: Added.
  • web-platform-tests/css/filter-effects/animation/filter-interpolation-002-expected.txt: Added.
  • web-platform-tests/css/filter-effects/animation/filter-interpolation-002.html: Added.
  • web-platform-tests/css/filter-effects/animation/filter-interpolation-003.html: Added.
  • web-platform-tests/css/filter-effects/animation/filter-interpolation-004.html: Added.
  • web-platform-tests/css/filter-effects/animation/w3c-import.log: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-basic-background-color-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-basic-background-color-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-basic-background-color.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-basic-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-basic-opacity-2-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-basic-opacity-2-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-basic-opacity-2.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-basic-opacity-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-basic-opacity-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-basic-opacity.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-basic-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-basic.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-clip-rect-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-clip-rect-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-clip-rect.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-clip-rounded-clip-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-clip-rounded-clip-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-clip-rounded-clip.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-clipped-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-clipped-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-clipped.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-containing-block-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-containing-block-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-containing-block.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-edge-behavior-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-edge-behavior-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-edge-behavior.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-edge-clipping-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-edge-clipping.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-edge-pixels-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-edge-pixels-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-edge-pixels.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-fixed-clip-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-fixed-clip-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-fixed-clip.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-isolation-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-isolation-fixed-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-isolation-fixed.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-isolation-isolate-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-isolation-isolate.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-isolation-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-isolation.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-non-isolation-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-opacity-rounded-clip-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-opacity-rounded-clip-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-opacity-rounded-clip.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-paint-order-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-paint-order-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-paint-order.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-plus-filter-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-plus-filter-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-plus-filter.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-plus-opacity-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-plus-opacity-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-plus-opacity.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-reference-filter-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-reference-filter.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-root-element-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-root-element-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-root-element.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-svg-foreignObject-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-svg-foreignObject.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-update-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-update-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-update.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-zero-size-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-zero-size-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filter-zero-size.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-brightness-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-brightness-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-brightness.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-contrast-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-contrast-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-contrast.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-grayscale-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-grayscale-001.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-grayscale-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-grayscale-002.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-grayscale-003-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-grayscale-003.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-hue-rotate-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-hue-rotate-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-hue-rotate.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-invert-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-invert-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-invert.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-opacity-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-opacity-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-opacity.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-saturate-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-saturate-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-saturate.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-sepia-expected.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-sepia-ref.html: Added.
  • web-platform-tests/css/filter-effects/backdrop-filters-sepia.html: Added.
  • web-platform-tests/css/filter-effects/background-image-blur-repaint-expected.html: Added.
  • web-platform-tests/css/filter-effects/background-image-blur-repaint.html: Added.
  • web-platform-tests/css/filter-effects/blur-clip-stacking-context-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/blur-clip-stacking-context-001.html: Added.
  • web-platform-tests/css/filter-effects/blur-clip-stacking-context-002-expected-mismatch.html: Added.
  • web-platform-tests/css/filter-effects/blur-clip-stacking-context-002.html: Added.
  • web-platform-tests/css/filter-effects/blur-clip-stacking-context-ref.html: Added.
  • web-platform-tests/css/filter-effects/clip-under-filter-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/clip-under-filter-001.html: Added.
  • web-platform-tests/css/filter-effects/clip-under-filter-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/clip-under-filter-002.html: Added.
  • web-platform-tests/css/filter-effects/clip-under-filter-003-expected.html: Added.
  • web-platform-tests/css/filter-effects/clip-under-filter-003.html: Added.
  • web-platform-tests/css/filter-effects/crashtests/multiple-references-id-crash-001-expected.txt: Added.
  • web-platform-tests/css/filter-effects/crashtests/multiple-references-id-crash-001.html: Added.
  • web-platform-tests/css/filter-effects/crashtests/multiple-references-id-crash-002-expected.txt: Added.
  • web-platform-tests/css/filter-effects/crashtests/multiple-references-id-crash-002.html: Added.
  • web-platform-tests/css/filter-effects/crashtests/w3c-import.log: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-blur-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-blur-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-blur.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-brightness-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-brightness-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-brightness.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-combined-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-combined-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-combined.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-contrast-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-contrast-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-contrast.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-drop-shadow-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-drop-shadow-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-drop-shadow.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-grayscale-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-grayscale-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-grayscale.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-hue-rotate-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-hue-rotate-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-hue-rotate.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-invert-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-invert-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-invert.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-opacity-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-opacity-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-opacity.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-saturate-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-saturate-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-saturate.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-sepia-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-sepia-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-backdrop-filters-animation-sepia.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-blur-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-blur-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-blur.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-brightness-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-brightness-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-brightness.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-combined-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-combined-001-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-combined-001.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-contrast-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-contrast-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-contrast.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-drop-shadow-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-drop-shadow-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-drop-shadow.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-grayscale-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-grayscale-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-grayscale.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-hue-rotate-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-hue-rotate-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-hue-rotate.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-invert-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-invert-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-invert.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-opacity-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-opacity-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-opacity.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-saturate-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-saturate-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-saturate.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-sepia-expected.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-sepia-ref.html: Added.
  • web-platform-tests/css/filter-effects/css-filters-animation-sepia.html: Added.
  • web-platform-tests/css/filter-effects/drop-shadow-clipped-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/drop-shadow-clipped-001.html: Added.
  • web-platform-tests/css/filter-effects/dynamic-filter-changes-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/dynamic-filter-changes-001.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-add-hw-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-add-hw-001.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-after-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-after-001.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-delete-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-delete.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-displacement-negative-scale-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-displacement-negative-scale-001.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-feimage-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-feimage-001.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-feimage-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-feimage-002.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-feimage-003-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-feimage-003.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-lighting-no-light.tentative-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-lighting-no-light.tentative.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-local-url-with-base-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-local-url-with-base-001.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-merge-no-inputs.tentative-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-merge-no-inputs.tentative.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-obb-dimensions-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-obb-dimensions.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-on-span-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-on-span.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-on-transparent-element-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-on-transparent-element.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-rename-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-rename-001.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-rename-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-rename-002.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-reset-style-delete-crash-expected.txt: Added.
  • web-platform-tests/css/filter-effects/effect-reference-reset-style-delete-crash.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-source-alpha-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-source-alpha-001.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-source-alpha-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/effect-reference-source-alpha-002.html: Added.
  • web-platform-tests/css/filter-effects/empty-element-with-filter-expected.html: Added.
  • web-platform-tests/css/filter-effects/empty-element-with-filter.html: Added.
  • web-platform-tests/css/filter-effects/fecolormatrix-type-expected.html: Added.
  • web-platform-tests/css/filter-effects/fecolormatrix-type-ref.html: Added.
  • web-platform-tests/css/filter-effects/fecolormatrix-type.html: Added.
  • web-platform-tests/css/filter-effects/fecomposite-non-zero-inoffset-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/fecomposite-non-zero-inoffset-001.html: Added.
  • web-platform-tests/css/filter-effects/feflood-with-filter-reference-expected.html: Added.
  • web-platform-tests/css/filter-effects/feflood-with-filter-reference.html: Added.
  • web-platform-tests/css/filter-effects/feimage-circular-reference-foreign-object-crash-expected.txt: Added.
  • web-platform-tests/css/filter-effects/feimage-circular-reference-foreign-object-crash.html: Added.
  • web-platform-tests/css/filter-effects/feimage-reference-foreign-object-crash-expected.txt: Added.
  • web-platform-tests/css/filter-effects/feimage-reference-foreign-object-crash.html: Added.
  • web-platform-tests/css/filter-effects/feimage-target-child-reference-crash-expected.txt: Added.
  • web-platform-tests/css/filter-effects/feimage-target-child-reference-crash.html: Added.
  • web-platform-tests/css/filter-effects/felighting-no-light-source-style-update-crash-expected.txt: Added.
  • web-platform-tests/css/filter-effects/felighting-no-light-source-style-update-crash.html: Added.
  • web-platform-tests/css/filter-effects/filter-cb-abspos-inline-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-cb-abspos-inline-001-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-cb-abspos-inline-001.html: Added.
  • web-platform-tests/css/filter-effects/filter-cb-abspos-inline-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-cb-abspos-inline-002.html: Added.
  • web-platform-tests/css/filter-effects/filter-cb-abspos-inline-003-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-cb-abspos-inline-003-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-cb-abspos-inline-003.html: Added.
  • web-platform-tests/css/filter-effects/filter-cb-dynamic-1-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-cb-dynamic-1a-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-cb-dynamic-1a.html: Added.
  • web-platform-tests/css/filter-effects/filter-cb-dynamic-1b-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-cb-dynamic-1b.html: Added.
  • web-platform-tests/css/filter-effects/filter-contrast-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-contrast-001-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-contrast-001.html: Added.
  • web-platform-tests/css/filter-effects/filter-contrast-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-contrast-002-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-contrast-002.html: Added.
  • web-platform-tests/css/filter-effects/filter-contrast-003-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-contrast-003-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-contrast-003.html: Added.
  • web-platform-tests/css/filter-effects/filter-effect-remove-unattached-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-effect-remove-unattached.html: Added.
  • web-platform-tests/css/filter-effects/filter-external-001-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-external-001-test-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-external-001-test.html: Added.
  • web-platform-tests/css/filter-effects/filter-external-002-test-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-external-002-test.html: Added.
  • web-platform-tests/css/filter-effects/filter-grayscale-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-grayscale-001.html: Added.
  • web-platform-tests/css/filter-effects/filter-grayscale-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-grayscale-002.html: Added.
  • web-platform-tests/css/filter-effects/filter-grayscale-003-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-grayscale-003.html: Added.
  • web-platform-tests/css/filter-effects/filter-grayscale-004-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-grayscale-004.html: Added.
  • web-platform-tests/css/filter-effects/filter-grayscale-005-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-grayscale-005.html: Added.
  • web-platform-tests/css/filter-effects/filter-grayscale-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-hue_rotate-001-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-hue_rotate-001-test-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-hue_rotate-001-test.html: Added.
  • web-platform-tests/css/filter-effects/filter-invert-001-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-invert-001-test-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-invert-001-test.html: Added.
  • web-platform-tests/css/filter-effects/filter-invert-002-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-invert-002-test-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-invert-002-test.html: Added.
  • web-platform-tests/css/filter-effects/filter-region-negative-positioned-child-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-region-negative-positioned-child-001.html: Added.
  • web-platform-tests/css/filter-effects/filter-region-transformed-child-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-region-transformed-child-001.html: Added.
  • web-platform-tests/css/filter-effects/filter-region-transformed-composited-child-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-region-transformed-composited-child-001.html: Added.
  • web-platform-tests/css/filter-effects/filter-saturate-001-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-saturate-001-test-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-saturate-001-test.html: Added.
  • web-platform-tests/css/filter-effects/filter-scale-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-scale-001-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-scale-001.html: Added.
  • web-platform-tests/css/filter-effects/filter-scaling-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-scaling-001-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-scaling-001.html: Added.
  • web-platform-tests/css/filter-effects/filter-subregion-01-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-subregion-01-ref.html: Added.
  • web-platform-tests/css/filter-effects/filter-subregion-01.html: Added.
  • web-platform-tests/css/filter-effects/filter-turbulence-invalid-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-turbulence-invalid-001.html: Added.
  • web-platform-tests/css/filter-effects/filter-url-to-non-existent-filter-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/filter-url-to-non-existent-filter-001.html: Added.
  • web-platform-tests/css/filter-effects/filtered-block-is-container-expected.html: Added.
  • web-platform-tests/css/filter-effects/filtered-block-is-container-ref.html: Added.
  • web-platform-tests/css/filter-effects/filtered-block-is-container.html: Added.
  • web-platform-tests/css/filter-effects/filtered-html-is-not-container-expected.html: Added.
  • web-platform-tests/css/filter-effects/filtered-html-is-not-container-ref.html: Added.
  • web-platform-tests/css/filter-effects/filtered-html-is-not-container.html: Added.
  • web-platform-tests/css/filter-effects/filtered-inline-applies-to-float-expected.html: Added.
  • web-platform-tests/css/filter-effects/filtered-inline-applies-to-float-ref.html: Added.
  • web-platform-tests/css/filter-effects/filtered-inline-applies-to-float.html: Added.
  • web-platform-tests/css/filter-effects/filtered-inline-is-container-expected.html: Added.
  • web-platform-tests/css/filter-effects/filtered-inline-is-container-ref.html: Added.
  • web-platform-tests/css/filter-effects/filtered-inline-is-container.html: Added.
  • web-platform-tests/css/filter-effects/filters-drop-shadow-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/filters-drop-shadow-001.html: Added.
  • web-platform-tests/css/filter-effects/filters-drop-shadow-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/filters-drop-shadow-002.html: Added.
  • web-platform-tests/css/filter-effects/filters-grayscale-001-ref.html: Added.
  • web-platform-tests/css/filter-effects/filters-grayscale-001-test-expected.html: Added.
  • web-platform-tests/css/filter-effects/filters-grayscale-001-test.html: Added.
  • web-platform-tests/css/filter-effects/filters-opacity-001-test-expected.html: Added.
  • web-platform-tests/css/filter-effects/filters-opacity-001-test.html: Added.
  • web-platform-tests/css/filter-effects/filters-opacity-002-test-expected.html: Added.
  • web-platform-tests/css/filter-effects/filters-opacity-002-test.html: Added.
  • web-platform-tests/css/filter-effects/filters-sepia-001-ref.html: Added.
  • web-platform-tests/css/filter-effects/filters-sepia-001-test-expected.html: Added.
  • web-platform-tests/css/filter-effects/filters-sepia-001-test.html: Added.
  • web-platform-tests/css/filter-effects/filters-test-brightness-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/filters-test-brightness-001.html: Added.
  • web-platform-tests/css/filter-effects/filters-test-brightness-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/filters-test-brightness-002.html: Added.
  • web-platform-tests/css/filter-effects/filters-test-brightness-003-expected.html: Added.
  • web-platform-tests/css/filter-effects/filters-test-brightness-003.html: Added.
  • web-platform-tests/css/filter-effects/idlharness.any-expected.txt: Added.
  • web-platform-tests/css/filter-effects/idlharness.any.html: Added.
  • web-platform-tests/css/filter-effects/idlharness.any.js: Added.
  • web-platform-tests/css/filter-effects/idlharness.any.serviceworker-expected.txt: Added.
  • web-platform-tests/css/filter-effects/idlharness.any.serviceworker.html: Added.
  • web-platform-tests/css/filter-effects/idlharness.any.worker-expected.txt: Added.
  • web-platform-tests/css/filter-effects/idlharness.any.worker.html: Added.
  • web-platform-tests/css/filter-effects/inheritance-expected.txt: Added.
  • web-platform-tests/css/filter-effects/inheritance.html: Added.
  • web-platform-tests/css/filter-effects/morphology-mirrored-expected.html: Added.
  • web-platform-tests/css/filter-effects/morphology-mirrored.html: Added.
  • web-platform-tests/css/filter-effects/parsing/backdrop-filter-computed-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/backdrop-filter-computed.html: Added.
  • web-platform-tests/css/filter-effects/parsing/backdrop-filter-parsing-invalid-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/backdrop-filter-parsing-invalid.html: Added.
  • web-platform-tests/css/filter-effects/parsing/backdrop-filter-parsing-valid-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/backdrop-filter-parsing-valid.html: Added.
  • web-platform-tests/css/filter-effects/parsing/color-interpolation-filters-computed-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/color-interpolation-filters-computed.html: Added.
  • web-platform-tests/css/filter-effects/parsing/color-interpolation-filters-parsing-invalid-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/color-interpolation-filters-parsing-invalid.html: Added.
  • web-platform-tests/css/filter-effects/parsing/color-interpolation-filters-parsing-valid-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/color-interpolation-filters-parsing-valid.html: Added.
  • web-platform-tests/css/filter-effects/parsing/filter-computed-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/filter-computed.html: Added.
  • web-platform-tests/css/filter-effects/parsing/filter-parsing-invalid-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/filter-parsing-invalid.html: Added.
  • web-platform-tests/css/filter-effects/parsing/filter-parsing-valid-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/filter-parsing-valid.html: Added.
  • web-platform-tests/css/filter-effects/parsing/flood-color-computed-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/flood-color-computed.html: Added.
  • web-platform-tests/css/filter-effects/parsing/flood-color-invalid-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/flood-color-invalid.html: Added.
  • web-platform-tests/css/filter-effects/parsing/flood-color-valid-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/flood-color-valid.html: Added.
  • web-platform-tests/css/filter-effects/parsing/flood-opacity-computed-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/flood-opacity-computed.svg: Added.
  • web-platform-tests/css/filter-effects/parsing/flood-opacity-invalid-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/flood-opacity-invalid.svg: Added.
  • web-platform-tests/css/filter-effects/parsing/flood-opacity-valid-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/flood-opacity-valid.svg: Added.
  • web-platform-tests/css/filter-effects/parsing/lighting-color-computed-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/lighting-color-computed.html: Added.
  • web-platform-tests/css/filter-effects/parsing/lighting-color-parsing-invalid-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/lighting-color-parsing-invalid.html: Added.
  • web-platform-tests/css/filter-effects/parsing/lighting-color-parsing-valid-expected.txt: Added.
  • web-platform-tests/css/filter-effects/parsing/lighting-color-parsing-valid.html: Added.
  • web-platform-tests/css/filter-effects/parsing/w3c-import.log: Added.
  • web-platform-tests/css/filter-effects/reference-filter-update-on-attribute-change-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/reference-filter-update-on-attribute-change-001.html: Added.
  • web-platform-tests/css/filter-effects/remove-filter-repaint-expected.html: Added.
  • web-platform-tests/css/filter-effects/remove-filter-repaint.html: Added.
  • web-platform-tests/css/filter-effects/resources/reference.png: Added.
  • web-platform-tests/css/filter-effects/resources/w3c-import.log: Added.
  • web-platform-tests/css/filter-effects/root-element-with-opacity-filter-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/root-element-with-opacity-filter-001.html: Added.
  • web-platform-tests/css/filter-effects/support/1x1-green.png: Added.
  • web-platform-tests/css/filter-effects/support/1x1-lime.png: Added.
  • web-platform-tests/css/filter-effects/support/1x1-maroon.png: Added.
  • web-platform-tests/css/filter-effects/support/1x1-navy.png: Added.
  • web-platform-tests/css/filter-effects/support/1x1-red.png: Added.
  • web-platform-tests/css/filter-effects/support/1x1-white.png: Added.
  • web-platform-tests/css/filter-effects/support/60x60-gg-rr.png: Added.
  • web-platform-tests/css/filter-effects/support/60x60-green.png: Added.
  • web-platform-tests/css/filter-effects/support/README: Added.
  • web-platform-tests/css/filter-effects/support/a-green.css: Added.

(.a):

  • web-platform-tests/css/filter-effects/support/b-green.css: Added.

(.b):

  • web-platform-tests/css/filter-effects/support/c-red.css: Added.

(.c):

  • web-platform-tests/css/filter-effects/support/cat.png: Added.
  • web-platform-tests/css/filter-effects/support/color-palette.png: Added.
  • web-platform-tests/css/filter-effects/support/div-with-filter.html: Added.
  • web-platform-tests/css/filter-effects/support/filter-external-002-filter.svg: Added.
  • web-platform-tests/css/filter-effects/support/filter-from-external-url.css: Added.

(.hue-rotate):

  • web-platform-tests/css/filter-effects/support/filtersubregion00.png: Added.
  • web-platform-tests/css/filter-effects/support/hueRotate.svg: Added.
  • web-platform-tests/css/filter-effects/support/import-green.css: Added.

(.import):

  • web-platform-tests/css/filter-effects/support/import-red.css: Added.

(.import):

  • web-platform-tests/css/filter-effects/support/pattern-grg-rgr-grg.png: Added.
  • web-platform-tests/css/filter-effects/support/pattern-grg-rrg-rgg.png: Added.
  • web-platform-tests/css/filter-effects/support/pattern-rgr-grg-rgr.png: Added.
  • web-platform-tests/css/filter-effects/support/pattern-tr.png: Added.
  • web-platform-tests/css/filter-effects/support/ruler-h-50%.png: Added.
  • web-platform-tests/css/filter-effects/support/ruler-h-50px.png: Added.
  • web-platform-tests/css/filter-effects/support/ruler-v-100px.png: Added.
  • web-platform-tests/css/filter-effects/support/ruler-v-50px.png: Added.
  • web-platform-tests/css/filter-effects/support/square-purple.png: Added.
  • web-platform-tests/css/filter-effects/support/square-teal.png: Added.
  • web-platform-tests/css/filter-effects/support/square-white.png: Added.
  • web-platform-tests/css/filter-effects/support/support/README: Added.
  • web-platform-tests/css/filter-effects/support/support/swatch-green.png: Added.
  • web-platform-tests/css/filter-effects/support/support/swatch-red.png: Added.
  • web-platform-tests/css/filter-effects/support/support/w3c-import.log: Added.
  • web-platform-tests/css/filter-effects/support/swatch-blue.png: Added.
  • web-platform-tests/css/filter-effects/support/swatch-green.png: Added.
  • web-platform-tests/css/filter-effects/support/swatch-lime.png: Added.
  • web-platform-tests/css/filter-effects/support/swatch-orange.png: Added.
  • web-platform-tests/css/filter-effects/support/swatch-red.png: Added.
  • web-platform-tests/css/filter-effects/support/swatch-teal.png: Added.
  • web-platform-tests/css/filter-effects/support/swatch-white.png: Added.
  • web-platform-tests/css/filter-effects/support/swatch-yellow.png: Added.
  • web-platform-tests/css/filter-effects/support/test-bl.png: Added.
  • web-platform-tests/css/filter-effects/support/test-br.png: Added.
  • web-platform-tests/css/filter-effects/support/test-inner-half-size.png: Added.
  • web-platform-tests/css/filter-effects/support/test-outer.png: Added.
  • web-platform-tests/css/filter-effects/support/test-tl.png: Added.
  • web-platform-tests/css/filter-effects/support/test-tr.png: Added.
  • web-platform-tests/css/filter-effects/support/w3c-import.log: Added.
  • web-platform-tests/css/filter-effects/svg-empty-container-with-filter-content-added-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-empty-container-with-filter-content-added.html: Added.
  • web-platform-tests/css/filter-effects/svg-feflood-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-feflood-001.html: Added.
  • web-platform-tests/css/filter-effects/svg-feimage-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-feimage-001.html: Added.
  • web-platform-tests/css/filter-effects/svg-feoffset-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-feoffset-001.html: Added.
  • web-platform-tests/css/filter-effects/svg-filter-vs-clip-path-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-filter-vs-clip-path.html: Added.
  • web-platform-tests/css/filter-effects/svg-filter-vs-mask-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-filter-vs-mask.html: Added.
  • web-platform-tests/css/filter-effects/svg-multiple-filter-functions-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-multiple-filter-functions.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-drop-shadow-color-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-drop-shadow-color.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-drop-shadow-offset-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-drop-shadow-offset.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-function-to-url-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-function-to-url.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-group-position-changed-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-group-position-changed.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-group-size-changed-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-group-size-changed.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-group-transform-changed-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-group-transform-changed.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-object-position-changed-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-object-position-changed.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-object-size-changed-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-object-size-changed.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-object-transform-changed-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-object-transform-changed.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-single-to-multiple-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-single-to-multiple-001.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-single-to-multiple-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-single-to-multiple-002.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-url-to-function-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-mutation-url-to-function.html: Added.
  • web-platform-tests/css/filter-effects/svg-relative-urls-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-relative-urls-001.html: Added.
  • web-platform-tests/css/filter-effects/svg-relative-urls-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-relative-urls-002.html: Added.
  • web-platform-tests/css/filter-effects/svg-shorthand-drop-shadow-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-shorthand-drop-shadow-001.html: Added.
  • web-platform-tests/css/filter-effects/svg-shorthand-hue-rotate-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-shorthand-hue-rotate-001.html: Added.
  • web-platform-tests/css/filter-effects/svg-sourcegraphic-currentcolor-dynamic-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-sourcegraphic-currentcolor-dynamic-001.html: Added.
  • web-platform-tests/css/filter-effects/svg-sourcegraphic-invalidation-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-sourcegraphic-invalidation-001.html: Added.
  • web-platform-tests/css/filter-effects/svg-unknown-input-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-unknown-input-001.html: Added.
  • web-platform-tests/css/filter-effects/svg-unknown-input-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/svg-unknown-input-002.html: Added.
  • web-platform-tests/css/filter-effects/svg-unknown-input-ref.html: Added.
  • web-platform-tests/css/filter-effects/svg-unused-filter-on-clippath-mutated-crash-expected.txt: Added.
  • web-platform-tests/css/filter-effects/svg-unused-filter-on-clippath-mutated-crash.html: Added.
  • web-platform-tests/css/filter-effects/svgfeblendelement-mode-001-expected.txt: Added.
  • web-platform-tests/css/filter-effects/svgfeblendelement-mode-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feblend-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feblend-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feblend-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feblend-002.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-002.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fecomposite-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fecomposite-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fecomposite-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fecomposite-002.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feconvolvematrix-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feconvolvematrix-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feconvolvematrix-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feconvolvematrix-002.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fediffuselighting-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fediffuselighting-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fediffuselighting-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fediffuselighting-002.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fediffuselighting-003-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fediffuselighting-003.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fediffuselighting-dynamic-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fediffuselighting-dynamic.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fedisplacementmap-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fedisplacementmap-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fedisplacementmap-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fedisplacementmap-002.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fedropshadow-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fedropshadow-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fedropshadow-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fedropshadow-002.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fedropshadow-003-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fedropshadow-003.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feflood-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feflood-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feflood-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feflood-002.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feflood-dynamic-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feflood-dynamic.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fegaussianblur-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fegaussianblur-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fegaussianblur-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fegaussianblur-002.html: Added.
  • web-platform-tests/css/filter-effects/tainting-femorphology-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-femorphology-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-femorphology-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-femorphology-002.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feoffset-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feoffset-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feoffset-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-feoffset-002.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fespecularlighting-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fespecularlighting-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fespecularlighting-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fespecularlighting-002.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fespecularlighting-003-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fespecularlighting-003.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fetile-001-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fetile-001.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fetile-002-expected.html: Added.
  • web-platform-tests/css/filter-effects/tainting-fetile-002.html: Added.
  • web-platform-tests/css/filter-effects/w3c-import.log: Added.

LayoutTests:

Imported from WPT ba3997e9f9a2f10a00688061f785d4c9b70cc5d5.

  • TestExpectations:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/filter-effects/crashtests/multiple-references-id-crash-001-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/filter-effects/crashtests/multiple-references-id-crash-002-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/filter-effects/effect-reference-reset-style-delete-crash-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/filter-effects/feimage-circular-reference-foreign-object-crash-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/filter-effects/feimage-reference-foreign-object-crash-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/filter-effects/feimage-target-child-reference-crash-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/filter-effects/felighting-no-light-source-style-update-crash-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/filter-effects/idlharness.any.serviceworker-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/filter-effects/svg-unused-filter-on-clippath-mutated-crash-expected.txt: Added.
  • platform/mac/TestExpectations:
10:21 AM Changeset in webkit [287812] by commit-queue@webkit.org
  • 4 edits
    7 adds in trunk

null ptr deref in WebCore::ModifySelectionListLevelCommand::appendSiblingNodeRange
https://bugs.webkit.org/show_bug.cgi?id=234862

Patch by Gabriel Nava Marino <gnavamarino@apple.com> on 2022-01-08
Reviewed by Darin Adler.

Source/WebCore:

ModifySelectionListLevelCommand::appendSiblingNodeRange loops through nodes assuming
existence of siblings, which is not guaranteed, and can result in nullptr deref. Instead,
check for node existence as part of loop condition, and change raw pointer usage to RefPtr.

This addresses the crash but results in ASSERT(isEndOfParagraph(endOfParagraphToMove))
failing in CompositeEditCommand::moveParagraph. We modify WebCore::findEndOfParagraph
to check for HTMLBRElement nodes to avoid unexpectedly changing the AnchorType.

Test: http/tests/lists/list-new-parent-no-sibling-append.html

  • editing/ModifySelectionListLevel.cpp:

(WebCore::ModifySelectionListLevelCommand::insertSiblingNodeRangeBefore):
(WebCore::ModifySelectionListLevelCommand::insertSiblingNodeRangeAfter):
(WebCore::ModifySelectionListLevelCommand::appendSiblingNodeRange):

  • editing/VisibleUnits.cpp:

(WebCore::findEndOfParagraph):

LayoutTests:

  • http/tests/lists/list-new-parent-no-sibling-append-expected.txt: Added.
  • http/tests/lists/list-new-parent-no-sibling-append.html: Added.
  • platform/gtk/http/tests/lists/list-new-parent-no-sibling-append-expected.txt: Added.
  • platform/win/http/tests/lists/list-new-parent-no-sibling-append-expected.txt: Added.
8:46 AM Changeset in webkit [287811] by Tyler Wilcock
  • 2 edits in trunk/Source/WebCore

AX: Improve WeakHashSet hygienics in AXObjectCache
https://bugs.webkit.org/show_bug.cgi?id=234961

Reviewed by Andres Gonzalez.

AXObjectCache owns four WeakHashSets. WeakHashSets are not notified
when the objects they hold are deleted[1], so we should be cleaning
them up in AXObjectCache::remove(Node&).

This patch also replaces range-based for loop iteration over these
WeakHashSets with WeakHashSet::forEach, which inherently checks that
each item is valid (non-null and contained in the hashset) before
using the item.

[1]: https://github.com/WebKit/WebKit/blob/main/Introduction.md#weakhashset

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::remove):
Delete the removed node from AXObjectCache's owned WeakHashSets.
(WebCore::filterWeakHashSetForRemoval): Added.
(WebCore::AXObjectCache::prepareForDocumentDestruction):
Use filterWeakHashSetForRemoval to remove soon-to-be-deleted nodes
from AXObjectCache's owned WeakHashSets.
(WebCore::AXObjectCache::performDeferredCacheUpdate):
Use WeakHashSet::forEach instead of range-based for loops.

8:40 AM Changeset in webkit [287810] by Tyler Wilcock
  • 15 edits
    4 adds in trunk

AX: AccessibilityObject::setFocused(true) should make the webpage focused, and make web content the first responder
https://bugs.webkit.org/show_bug.cgi?id=234885

Reviewed by Darin Adler.

Source/WebCore:

With this patch, focusing an element via an AX client on iOS makes
the page focused immediately. This allows a focus ring to be drawn,
even when apps that embed WKWebViews don't make web content the
first responder themselves ([WKContentViewInteraction becomeFirstResponderForWebView]
makes the page focused after a delay due to async IPC between the UI and web processes).

Tests: accessibility/ios-simulator/accessibility-make-first-responder.html

accessibility/ios-simulator/taking-focus-should-refocus-page.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::setFocused):
Make the webpage focused if it isn't already focused.

  • testing/Internals.cpp:

(WebCore::Internals::setPageIsFocused):
Added to simulate the scenario where the webpage doesn't gain focus
through becoming first responder.

  • testing/Internals.h:

Add setPageIsFocused.

  • testing/Internals.idl:

Add setPageIsFocused.

Source/WebKit:

With this patch, focusing an element via an AX client on iOS makes web content
the first responder. This allows a focus ring to be drawn and for web content
to perform other important actions upon taking first respondership
(see [WKContentViewInteraction becomeFirstResponderForWebView]), even when apps
that embed WKWebViews don't make web content the first responder themselves.

  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::assistiveTechnologyMakeFirstResponder):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::assistiveTechnologyMakeFirstResponder):

Tools:

Add testing functionality necessary to check that web content is the
first responder in the UI process.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.h:

(WTR::UIScriptController::isWebContentFirstResponder const):
Added.

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::takeFocus):
Implement this method.

  • WebKitTestRunner/ios/UIScriptControllerIOS.h:
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::isWebContentFirstResponder const):
Added.

LayoutTests:

Add tests verifying that focusing an element via an AX client:

  1. Makes the page focused immediately
  2. Makes web content the first responder

This allows a focus ring to be drawn, even when apps that embed
WKWebViews don't make web content the first responder themselves.

  • accessibility/ios-simulator/accessibility-make-first-responder-expected.txt: Added.
  • accessibility/ios-simulator/accessibility-make-first-responder.html: Added.
  • accessibility/ios-simulator/taking-focus-should-refocus-page-expected.txt: Added.
  • accessibility/ios-simulator/taking-focus-should-refocus-page.html: Added.
6:27 AM Changeset in webkit [287809] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Implement TextUtil::breakWord for the complex font codepath using ubrk_next
https://bugs.webkit.org/show_bug.cgi?id=234998

Reviewed by Antti Koivisto.

In order to use ubrk_preceding/ubrk_following with arbitrary position (binary search) inside a cluster with surrogate pairs we have to
implement some additional surrogate boundary checks (it would move the index to the beginning/end of the surrogate when it falls right
in the middle of it). In addition to that, ICU would still need to scan the content from the start to find the right index for
the boundary.
This new breakWord implementation simply iterates over the clusters by calling ubrk_next until the content overflows.

  • layout/formattingContexts/inline/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::breakWord):

Jan 7, 2022:

10:23 PM Changeset in webkit [287808] by Jean-Yves Avenard
  • 65 edits
    2 deletes in trunk/Source

Remove IPC::SharedBufferDataReference and use IPC::SharedBufferCopy instead
https://bugs.webkit.org/show_bug.cgi?id=234921
rdar://problem/87196287

Reviewed by Youenn Fablet.

Source/WebCore:

Pass the FragmentedSharedBuffer through const reference to avoid
having to const_cast the argument in WebKit.

No change in observable behaviour, covered by existing tests.

  • platform/graphics/ImageDecoder.h:
  • platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.h:
  • platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:

(WebCore::ImageDecoderAVFObjC::create):
(WebCore::ImageDecoderAVFObjC::ImageDecoderAVFObjC):
(WebCore::ImageDecoderAVFObjC::setData):

  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::ImageDecoderCG::setData):

  • platform/graphics/cg/ImageDecoderCG.h:
  • platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:

(WebCore::ImageDecoderGStreamer::setData):

  • platform/graphics/gstreamer/ImageDecoderGStreamer.h:
  • platform/graphics/win/ImageDecoderDirect2D.cpp:

(WebCore::ImageDecoderDirect2D::setData):

  • platform/graphics/win/ImageDecoderDirect2D.h:
  • platform/image-decoders/ScalableImageDecoder.h:
  • platform/image-decoders/bmp/BMPImageDecoder.cpp:

(WebCore::BMPImageDecoder::setData):

  • platform/image-decoders/bmp/BMPImageDecoder.h:
  • platform/image-decoders/gif/GIFImageDecoder.cpp:

(WebCore::GIFImageDecoder::setData):

  • platform/image-decoders/gif/GIFImageDecoder.h:
  • platform/image-decoders/ico/ICOImageDecoder.cpp:

(WebCore::ICOImageDecoder::setData):

  • platform/image-decoders/ico/ICOImageDecoder.h:
  • platform/image-decoders/webp/WEBPImageDecoder.cpp:

(WebCore::WEBPImageDecoder::setData):

  • platform/image-decoders/webp/WEBPImageDecoder.h:

Source/WebKit:

SharedBufferCopy didn't have to create a new SharedBuffer
and copy its content; its IPC decoder can instead wrap the underlying
SharedMemory into a SharedBuffer.
Having removed those copies and extra allocations there's no longer a
technical need to have both SharedBufferDataReference and SharedBufferCopy.

The biggest winners of this change are the images transferred over IPC.
We remove two memory allocation/copy the was occurring at both IPC
boundaries.

We also remove the need for SharedBufferCopy to use a contiguous
SharedBuffer. This makes the IPC encoding much more efficient.
Once transferred over IPC, with the current encoding implementation,
the SharedBufferCopy automatically becomes a contiguous SharedBuffer,
so calling makeContiguous() on the SharedBufferCopy is a no-op;
this allows for zero regression speed-wise from this change.

Fly-by changes: the PDF code uses IPC::DataReference object; the data
was copied into a CFData or a SharedBuffer. By using IPC::SharedBufferCopy
was can remove those copies as a SharedBuffer can be wrapped in a CFData.
In the future, it's likely where such code pattern was used; more
IPC::DataReference can be replaced broadly with IPC::SharedBufferCopy.

  • GPUProcess/media/RemoteImageDecoderAVFProxy.cpp:

(WebKit::RemoteImageDecoderAVFProxy::createDecoder):
(WebKit::RemoteImageDecoderAVFProxy::setData):

  • GPUProcess/media/RemoteImageDecoderAVFProxy.h:
  • GPUProcess/media/RemoteImageDecoderAVFProxy.messages.in:
  • GPUProcess/media/RemoteLegacyCDMSessionProxy.cpp:

(WebKit::convertToUint8Array):
(WebKit::convertToOptionalSharedBuffer):
(WebKit::RemoteLegacyCDMSessionProxy::generateKeyRequest):
(WebKit::RemoteLegacyCDMSessionProxy::update):
(WebKit::RemoteLegacyCDMSessionProxy::cachedKeyForKeyID):
(WebKit::RemoteLegacyCDMSessionProxy::sendMessage):

  • NetworkProcess/NetworkResourceLoader.cpp:
  • NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.cpp:

(WebKit::ServiceWorkerDownloadTask::didReceiveData):

  • Platform/IPC/HandleMessage.h:
  • Platform/IPC/SharedBufferCopy.cpp:

(IPC::SharedBufferCopy::encode const):
(IPC::SharedBufferCopy::decode):
(IPC::SharedBufferCopy::safeBuffer const):

  • Platform/IPC/SharedBufferCopy.h:

(IPC::SharedBufferCopy::SharedBufferCopy):
(IPC::SharedBufferCopy::buffer):
(IPC::SharedBufferCopy::buffer const):
(IPC::SharedBufferCopy::contiguousBuffer const):

  • Platform/IPC/SharedBufferDataReference.cpp: Removed.
  • Platform/IPC/SharedBufferDataReference.h: Removed.
  • Scripts/webkit/messages.py:

(function_parameter_type):
(reply_arguments_type):
(message_to_struct_declaration):
(generate_message_handler):

  • Shared/WebCompiledContentRuleListData.cpp:
  • Shared/WebCoreArgumentCoders.cpp:

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

  • Sources.txt:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView createPDFWithConfiguration:completionHandler:]):

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::platformRegisterAttachment):

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::sendAudioComponentRegistrations):

  • UIProcess/WebPageProxy.cpp:

(WebKit::CompletionHandler<void):
(WebKit::WebPageProxy::drawToPDF):
(WebKit::WebPageProxy::getLoadDecisionForIcon):
(WebKit::WebPageProxy::updateAttachmentAttributes):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebURLSchemeTask.cpp:
  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _wk_pageCountForPrintFormatter:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::computePagesForPrintingAndDrawToPDF):

  • WebProcess/GPU/media/RemoteImageDecoderAVF.cpp:

(WebKit::RemoteImageDecoderAVF::setData):

  • WebProcess/GPU/media/RemoteImageDecoderAVF.h:
  • WebProcess/GPU/media/RemoteImageDecoderAVFManager.cpp:

(WebKit::RemoteImageDecoderAVFManager::createImageDecoder):

  • WebProcess/GPU/media/RemoteLegacyCDMSession.cpp:

(WebKit::convertToArrayBuffer):

  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::didReceiveData):

  • WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::getContentsAsMHTMLData):
(WebKit::WebPage::getSelectionAsWebArchiveData):
(WebKit::WebPage::getMainResourceDataOfFrame):
(WebKit::WebPage::getResourceDataFromFrame):
(WebKit::WebPage::getWebArchiveOfFrame):
(WebKit::WebPage::drawToPDF):
(WebKit::WebPage::drawPagesToPDF):
(WebKit::WebPage::didGetLoadDecisionForIcon):
(WebKit::WebPage::urlSchemeTaskDidReceiveData):
(WebKit::WebPage::updateAttachmentAttributes):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::drawToPDFiOS):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::consumeAudioComponentRegistrations):

8:09 PM Changeset in webkit [287807] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

[Hardening] Improve multi draw offset validation
https://bugs.webkit.org/show_bug.cgi?id=234966
<rdar://problem/86814830>

Reviewed by Darin Adler.

Incorporate draw count into validation of the offset.

  • html/canvas/WebGLMultiDraw.cpp:

(WebCore::WebGLMultiDraw::validateOffset):

7:42 PM Changeset in webkit [287806] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. Appease an assertion that was broken by r287801 by slightly
refactoring code so we don't clobber the same named register twice.

  • b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:

(JSC::B3::Air::GenerateAndAllocateRegisters::generate):

7:18 PM Changeset in webkit [287805] by mmaxfield@apple.com
  • 6 edits
    2 adds in trunk

[GPU Process] Can't getImageData on canvas larger than 4096x4096
https://bugs.webkit.org/show_bug.cgi?id=234321
<rdar://problem/83575501>

Reviewed by Tim Horton.

Source/WebCore:

We already have a policy about how big canvases can be. Simply export that policy
so it can be consulted from the GPU process.

Test: fast/canvas/large-getImageData.html

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::maxActivePixelMemory):
(WebCore::maxActivePixelMemory): Deleted.

  • html/HTMLCanvasElement.h:

Source/WebKit:

Consult the policy for how big a canvas can be, rather than hardcoding a number.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::updateSharedMemoryForGetPixelBufferHelper):

LayoutTests:

  • fast/canvas/large-getImageData-expected.txt: Added.
  • fast/canvas/large-getImageData.html: Added.
6:45 PM Changeset in webkit [287804] by Russell Epstein
  • 4 edits
    4 deletes in branches/safari-612.4.9.3-branch

Revert "Cherry-pick r287604. rdar://problem/85966622"

This reverts commit r287751.

6:20 PM Changeset in webkit [287803] by commit-queue@webkit.org
  • 7 edits in trunk/Source

Make FullscreenManager::requestFullscreenForElement more robust
https://bugs.webkit.org/show_bug.cgi?id=234995

Patch by Alex Christensen <achristensen@webkit.org> on 2022-01-07
Reviewed by Darin Adler.

Source/WebCore:

I think this may fix the Windows crashes after bug 233963 lands, and it makes things more robust anyways.

  • dom/Element.cpp:

(WebCore::Element::webkitRequestFullscreen):

  • dom/FullscreenManager.cpp:

(WebCore::FullscreenManager::requestFullscreenForElement):

  • dom/FullscreenManager.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::enterFullscreen):

Source/WebKit:

  • WebProcess/FullScreen/WebFullScreenManager.cpp:

(WebKit::WebFullScreenManager::requestEnterFullScreen):

6:13 PM Changeset in webkit [287802] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Don't dispatch "focusin" / "focusout" events if there are no listeners
https://bugs.webkit.org/show_bug.cgi?id=234928

Patch by Alexey Shvayka <ashvayka@apple.com> on 2022-01-07
Reviewed by Geoff Garen.

This patch avoids creating and dispatching "focusin" / "focusout" events if it's
guaranteed there are no registered listeners for them. These events are rather new
and not widely popular: according to Chrome stats, only 17% page loads use them [1],
which is even less than document.all.

Together with r287787, creation of four FocusEvent instances is now avoided when
focus is changed, advancing attached microbenchmark by 6%.

[1] https://chromestatus.com/metrics/feature/timeline/popularity/433

No new tests, no behavior change.

  • dom/Document.cpp:

(WebCore::Document::setFocusedElement):
(WebCore::Document::addListenerTypeIfNeeded):

  • dom/Document.h:
  • dom/Element.cpp:

(WebCore::Element::dispatchFocusInEventIfNeeded):
(WebCore::Element::dispatchFocusOutEventIfNeeded):
(WebCore::Element::dispatchFocusInEvent): Deleted.
(WebCore::Element::dispatchFocusOutEvent): Deleted.

  • dom/Element.h:
5:57 PM Changeset in webkit [287801] by sbarati@apple.com
  • 12 edits
    1 add in trunk/Source/JavaScriptCore

Add support for Wasm exceptions in the Air generator
https://bugs.webkit.org/show_bug.cgi?id=231211
<rdar://problem/84132861>

Reviewed by Filip Pizlo.

This patch adds support to Air for Wasm exceptions. The implementation
is very similar to how we implement it in the B3 Wasm tier. This patch
shares code with the B3 tier where it can.

This patch also fixes a bug where you the early clobbered registers
of a patchpoint could prevent the prior instruction from register allocating.
For example, you can have the instructions I1, I2. Where I2 clobbers the
entire register file. It doesn't mean I1 shouldn't be able to allocate
registers. Instead, the clobber should occur after I1 executes. This patch
fixes the issue.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:

(JSC::B3::Air::GenerateAndAllocateRegisters::generate):

  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::ControlData::ControlData):
(JSC::Wasm::AirIRGenerator::ControlData::isTry):
(JSC::Wasm::AirIRGenerator::ControlData::isCatch):
(JSC::Wasm::AirIRGenerator::ControlData::convertTryToCatch):
(JSC::Wasm::AirIRGenerator::ControlData::convertTryToCatchAll):
(JSC::Wasm::AirIRGenerator::ControlData::tryStart const):
(JSC::Wasm::AirIRGenerator::ControlData::tryEnd const):
(JSC::Wasm::AirIRGenerator::ControlData::tryDepth const):
(JSC::Wasm::AirIRGenerator::ControlData::catchKind const):
(JSC::Wasm::AirIRGenerator::ControlData::exception const):
(JSC::Wasm::AirIRGenerator::emitCallPatchpoint):
(JSC::Wasm::AirIRGenerator::addStackMap):
(JSC::Wasm::AirIRGenerator::takeStackmaps):
(JSC::Wasm::AirIRGenerator::takeExceptionHandlers):
(JSC::Wasm::AirIRGenerator::newTmp):
(JSC::Wasm::AirIRGenerator::emitPatchpoint):
(JSC::Wasm::AirIRGenerator::emitLoad):
(JSC::Wasm::AirIRGenerator::AirIRGenerator):
(JSC::Wasm::AirIRGenerator::finalizeEntrypoints):
(JSC::Wasm::AirIRGenerator::forEachLiveValue):
(JSC::Wasm::AirIRGenerator::emitLoopTierUpCheck):
(JSC::Wasm::AirIRGenerator::addTry):
(JSC::Wasm::AirIRGenerator::addCatch):
(JSC::Wasm::AirIRGenerator::addCatchAll):
(JSC::Wasm::AirIRGenerator::addCatchToUnreachable):
(JSC::Wasm::AirIRGenerator::addCatchAllToUnreachable):
(JSC::Wasm::AirIRGenerator::emitCatchImpl):
(JSC::Wasm::AirIRGenerator::addDelegate):
(JSC::Wasm::AirIRGenerator::addDelegateToUnreachable):
(JSC::Wasm::AirIRGenerator::addThrow):
(JSC::Wasm::AirIRGenerator::addRethrow):
(JSC::Wasm::AirIRGenerator::addEndToUnreachable):
(JSC::Wasm::AirIRGenerator::addCall):
(JSC::Wasm::AirIRGenerator::emitIndirectCall):
(JSC::Wasm::parseAndCompileAir):
(JSC::Wasm::AirIRGenerator::preparePatchpointForExceptions):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::insertEntrySwitch):
(JSC::Wasm::B3IRGenerator::emitCatchImpl):
(JSC::Wasm::B3IRGenerator::addThrow):
(JSC::Wasm::B3IRGenerator::addRethrow):
(JSC::Wasm::PatchpointExceptionHandle::generate const): Deleted.
(JSC::Wasm::buildEntryBufferForCatch): Deleted.
(JSC::Wasm::computeExceptionHandlerLocations): Deleted.

  • wasm/WasmB3IRGenerator.h:
  • wasm/WasmBBQPlan.cpp:

(JSC::Wasm::BBQPlan::compileFunction):

  • wasm/WasmIRGeneratorHelpers.h: Added.

(JSC::Wasm::PatchpointExceptionHandle::generate const):
(JSC::Wasm::computeExceptionHandlerLocations):
(JSC::Wasm::emitRethrowImpl):
(JSC::Wasm::emitThrowImpl):
(JSC::Wasm::buildEntryBufferForCatch):
(JSC::Wasm::emitCatchPrologueShared):

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::finalize):

  • wasm/WasmModuleInformation.h:
  • wasm/WasmOMGPlan.cpp:
  • wasm/WasmOSREntryPlan.cpp:
  • wasm/WasmStreamingParser.cpp:

(JSC::Wasm::StreamingParser::parseCodeSectionSize):

5:52 PM Changeset in webkit [287800] by commit-queue@webkit.org
  • 5 edits
    3 adds in trunk

Expand the set of objects we take JSArray::fastSlice() path for
https://bugs.webkit.org/show_bug.cgi?id=234539

Patch by Alexey Shvayka <ashvayka@apple.com> on 2022-01-07
Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/array-slice-call-cloned-arguments.js: Added.
  • stress/array-slice-beyond-length.js: Added.
  • stress/array-slice-length-lookup.js: Added.

Source/JavaScriptCore:

Currently, Array.prototype's slice() / splice() methods take a fast path only for
JSArray source objects. With this change, gcSafeMemcpy-based path is taken for any
object with ordinary getOwnPropertySlotByIndex() method, which speeds up the common
case of [].slice.call(arguments) by 140% (in strict mode only, see ClonedArguments).

Also, once is https://webkit.org/b/234538 resolved, calling Array.prototype.slice()
on a static NodeList, which is a common idiom to acquire map() / filter() methods,
will become faster as well.

This patch was thoroughly evaluated to be spec-perfect and memory-safe:

  • indexing mode check and holesMustForwardToPrototype() guarantee that there are no observable userland code to be invoked;
  • fastSlice() signature is upgraded to uint64_t so nullptr is returned in case of large "length", resulting in a RangeError being thrown on the slow path;
  • to handle the case of source array being shrinked after "length" lookup (see r175420), OOB read check is moved to JSArray::fastSlice() and refined to rely on vectorLength() so the double "length" lookup is avoided (added a test for this).

All this (and more) is well covered by the test262 suite.

This change improves Speedometer2/EmberJS-Debug-TodoMVC score by 0.5%: although the test
is slow on its own, [].slice.call(arguments) is performed ~56k times per run.

  • runtime/ArrayPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSArray.cpp:

(JSC::JSArray::fastSlice):

  • runtime/JSArray.h:
5:00 PM Changeset in webkit [287799] by Russell Epstein
  • 1 copy in tags/Safari-612.4.9.3.1

Tag Safari-612.4.9.3.1.

4:49 PM Changeset in webkit [287798] by Russell Epstein
  • 1 copy in tags/Safari-612.4.9.1.2

Tag Safari-612.4.9.1.2.

4:46 PM Changeset in webkit [287797] by Russell Epstein
  • 1 copy in tags/Safari-612.4.9.2.1

Tag Safari-612.4.9.2.1.

4:45 PM Changeset in webkit [287796] by Russell Epstein
  • 1 copy in tags/Safari-612.4.9.0.1

Tag Safari-612.4.9.0.1.

4:05 PM Changeset in webkit [287795] by Russell Epstein
  • 26 edits in branches/safari-612.4.9.2-branch

Cherry-pick r286094. rdar://problem/87125111

Report the initiating url instead of the redirected one
https://bugs.webkit.org/show_bug.cgi?id=233037

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-11-20
Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

  • web-platform-tests/content-security-policy/securitypolicyviolation/img-src-redirect.sub-expected.txt:

Source/WebCore:

As per the spec, blockedURI should use the requested URL of original request instead of redirected location.

  • loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::isAllowedByContentSecurityPolicy):
  • loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::willSendRequestInternal):
  • loader/cache/CachedResourceLoader.cpp: (WebCore::CachedResourceLoader::allowedByContentSecurityPolicy const): (WebCore::CachedResourceLoader::canRequestAfterRedirection const): (WebCore::CachedResourceLoader::updateRequestAfterRedirection):
  • loader/cache/CachedResourceLoader.h:
  • page/csp/ContentSecurityPolicy.cpp: (WebCore::ContentSecurityPolicy::allowChildContextFromSource const): (WebCore::ContentSecurityPolicy::allowScriptFromSource const): (WebCore::ContentSecurityPolicy::allowImageFromSource const): (WebCore::ContentSecurityPolicy::allowStyleFromSource const): (WebCore::ContentSecurityPolicy::allowFontFromSource const): (WebCore::ContentSecurityPolicy::allowManifestFromSource const): (WebCore::ContentSecurityPolicy::allowMediaFromSource const):
  • page/csp/ContentSecurityPolicy.h:

Source/WebKit:

Pass pre-redirect URL to allowChildContextFromSource() and allowScriptFromSource().

  • NetworkProcess/NetworkLoadChecker.cpp: (WebKit::NetworkLoadChecker::isAllowedByContentSecurityPolicy):

LayoutTests:

  • TestExpectations: Unskip imported/w3c/web-platform-tests/content-security-policy/securitypolicyviolation/img-src-redirect.sub.html
  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/audio-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/font-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/image-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/script-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/stylesheet-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/svg-font-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/svg-image-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/track-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/video-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-importScripts-redirect-cross-origin-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/worker-csp-importScripts-redirect-cross-origin-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/xsl-redirect-blocked-expected.txt:

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

3:47 PM Changeset in webkit [287794] by Chris Lord
  • 2 edits in trunk/Source/WebKit

[GTK] REGRESSION: Kinetic scrolling via touch-screen behaves oddly
https://bugs.webkit.org/show_bug.cgi?id=234958

Reviewed by Michael Catanzaro.

The swipe signal handler didn't take into account
Scrollbar::pixelsPerLineStep() and also incorrectly negated the
vertical velocity. Ideally, touch scrolling would use precise wheel
events, but as the rest of the code works correctly and scales by this
amount, make the one-line change that conforms with the previous code.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseTouchSwipe):

3:47 PM Changeset in webkit [287793] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

REGRESSION (r283935): [ macOS wk1 ] imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-autofocus-multiple-times.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=231918

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations: Mark test as flaky.
3:45 PM Changeset in webkit [287792] by Russell Epstein
  • 26 edits in branches/safari-612.4.9.0-branch

Cherry-pick r286094. rdar://problem/87125111

Report the initiating url instead of the redirected one
https://bugs.webkit.org/show_bug.cgi?id=233037

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-11-20
Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

  • web-platform-tests/content-security-policy/securitypolicyviolation/img-src-redirect.sub-expected.txt:

Source/WebCore:

As per the spec, blockedURI should use the requested URL of original request instead of redirected location.

  • loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::isAllowedByContentSecurityPolicy):
  • loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::willSendRequestInternal):
  • loader/cache/CachedResourceLoader.cpp: (WebCore::CachedResourceLoader::allowedByContentSecurityPolicy const): (WebCore::CachedResourceLoader::canRequestAfterRedirection const): (WebCore::CachedResourceLoader::updateRequestAfterRedirection):
  • loader/cache/CachedResourceLoader.h:
  • page/csp/ContentSecurityPolicy.cpp: (WebCore::ContentSecurityPolicy::allowChildContextFromSource const): (WebCore::ContentSecurityPolicy::allowScriptFromSource const): (WebCore::ContentSecurityPolicy::allowImageFromSource const): (WebCore::ContentSecurityPolicy::allowStyleFromSource const): (WebCore::ContentSecurityPolicy::allowFontFromSource const): (WebCore::ContentSecurityPolicy::allowManifestFromSource const): (WebCore::ContentSecurityPolicy::allowMediaFromSource const):
  • page/csp/ContentSecurityPolicy.h:

Source/WebKit:

Pass pre-redirect URL to allowChildContextFromSource() and allowScriptFromSource().

  • NetworkProcess/NetworkLoadChecker.cpp: (WebKit::NetworkLoadChecker::isAllowedByContentSecurityPolicy):

LayoutTests:

  • TestExpectations: Unskip imported/w3c/web-platform-tests/content-security-policy/securitypolicyviolation/img-src-redirect.sub.html
  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/audio-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/font-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/image-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/script-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/stylesheet-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/svg-font-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/svg-image-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/track-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/video-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-importScripts-redirect-cross-origin-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/worker-csp-importScripts-redirect-cross-origin-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/xsl-redirect-blocked-expected.txt:

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

3:22 PM Changeset in webkit [287791] by Russell Epstein
  • 26 edits in branches/safari-612.4.9.1-branch

Cherry-pick r286094. rdar://problem/87125111

Report the initiating url instead of the redirected one
https://bugs.webkit.org/show_bug.cgi?id=233037

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-11-20
Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

  • web-platform-tests/content-security-policy/securitypolicyviolation/img-src-redirect.sub-expected.txt:

Source/WebCore:

As per the spec, blockedURI should use the requested URL of original request instead of redirected location.

  • loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::isAllowedByContentSecurityPolicy):
  • loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::willSendRequestInternal):
  • loader/cache/CachedResourceLoader.cpp: (WebCore::CachedResourceLoader::allowedByContentSecurityPolicy const): (WebCore::CachedResourceLoader::canRequestAfterRedirection const): (WebCore::CachedResourceLoader::updateRequestAfterRedirection):
  • loader/cache/CachedResourceLoader.h:
  • page/csp/ContentSecurityPolicy.cpp: (WebCore::ContentSecurityPolicy::allowChildContextFromSource const): (WebCore::ContentSecurityPolicy::allowScriptFromSource const): (WebCore::ContentSecurityPolicy::allowImageFromSource const): (WebCore::ContentSecurityPolicy::allowStyleFromSource const): (WebCore::ContentSecurityPolicy::allowFontFromSource const): (WebCore::ContentSecurityPolicy::allowManifestFromSource const): (WebCore::ContentSecurityPolicy::allowMediaFromSource const):
  • page/csp/ContentSecurityPolicy.h:

Source/WebKit:

Pass pre-redirect URL to allowChildContextFromSource() and allowScriptFromSource().

  • NetworkProcess/NetworkLoadChecker.cpp: (WebKit::NetworkLoadChecker::isAllowedByContentSecurityPolicy):

LayoutTests:

  • TestExpectations: Unskip imported/w3c/web-platform-tests/content-security-policy/securitypolicyviolation/img-src-redirect.sub.html
  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/audio-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/font-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/image-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/script-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/stylesheet-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/svg-font-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/svg-image-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/track-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/video-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-importScripts-redirect-cross-origin-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/worker-csp-importScripts-redirect-cross-origin-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/xsl-redirect-blocked-expected.txt:

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

3:19 PM Changeset in webkit [287790] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

A/B comparison tests fail trying to look up fuzzy match tolerance
https://bugs.webkit.org/show_bug.cgi?id=234974

Reviewed by Aditya Keerthi.

  • Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:

(SingleTestRunner._run_self_comparison_test):
(SingleTestRunner._compare_output_with_reference):
Disable fuzzy matching for A/B tests, because A) we don't really want it
and B) it crashes run-webkit-tests because there is no actual reference file
in which to find the tolerance value.

2:56 PM Changeset in webkit [287789] by ddkilzer@apple.com
  • 3 edits in trunk/Tools

check-webkit-style: add checker for unexpected fall through after ASSERT_NOT_REACHED() statements
<https://webkit.org/b/234932>
<rdar://87213520>

Reviewed by Brent Fulgham.

This checker only returns a confidence level of 4 (out of 5)
since there are too many different code patterns to check them
all perfectly using regular expressions.

Run new checker tests like this:
$ test-webkitpy webkitpy.style.checkers.cpp_unittest.CppStyleTest.test_debug_not_reached_assertion

Run this checker against a file or folder like this:
$ check-webkit-style --filter "-,+security/assertion_fallthrough" (file|folder)

  • Scripts/webkitpy/style/checkers/cpp.py:

(SingleLineView.init):

  • Expose trimmed_lines as a property on SingleLineView.

(_FunctionState.body_view): Add.

  • Add method to return a SingleLineView object containing the body of the function.

(check_function_body): Add.

  • New function to check for fall through after ASSERT_NOT_REACHED() statements.

(process_line):

  • Call check_function_body() to implement the new check.

(CppChecker.categories):

  • Add 'security/assertion_fallthrough' to the list of known checkers.
  • Scripts/webkitpy/style/checkers/cpp_unittest.py:

(CppStyleTestBase.perform_function_body_check): Add.

  • Add method to call check_function_body() for testing.

(CppStyleTest.test_debug_not_reached_assertion): Add.

  • Add tests for the new checker.
2:56 PM Changeset in webkit [287788] by Chris Dumez
  • 20 edits
    14 adds in trunk/LayoutTests

Resync web-platform-tests/dom from upstream
https://bugs.webkit.org/show_bug.cgi?id=234963

Reviewed by Geoffrey Garen.

Resync web-platform-tests/dom from upstream 84b2be5b17e8542dea2.

  • resources/resource-files.json:
  • web-platform-tests/dom/*: Updated.
2:51 PM Changeset in webkit [287787] by commit-queue@webkit.org
  • 14 edits in trunk

Remove obsolete DOM Level 2 "DOMFocusIn" / "DOMFocusOut" events
https://bugs.webkit.org/show_bug.cgi?id=234978

Patch by Alexey Shvayka <ashvayka@apple.com> on 2022-01-07
Reviewed by Geoff Garen.

Source/WebCore:

This patch removes these events because according to Chrome stats, only 0.04%
of page loads use them [1], which is below the Blink's removal threshold of 0.10%.

All the "top sites" listed as "DOMFocusIn" / "DOMFocusOut" adopters, are now dead.
Also, these events were never implemented in Firefox.

[1] https://chromestatus.com/metrics/feature/timeline/popularity/211

No new tests because it's a feature removal.

  • dom/Document.cpp:

(WebCore::Document::setFocusedElement):

  • dom/Document.h:
  • dom/Element.cpp:

(WebCore::Element::dispatchFocusInEvent):
(WebCore::Element::dispatchFocusOutEvent):

  • dom/Element.h:
  • dom/EventNames.h:

Source/WebInspectorUI:

  • UserInterface/Models/ScriptTimelineRecord.js:

(WI.ScriptTimelineRecord.EventType.displayName):

LayoutTests:

  • editing/deleting/insert-in-orphaned-selection-crash.html:
  • fast/events/focusinout-expected.txt:
  • fast/events/focusinout.html:
  • fast/events/scoped/editing-commands.html:
  • fast/forms/textarea/textarea-autofocus-removal-while-focusing-with-style.html:
  • fast/forms/textarea/textarea-autofocus-removal-while-focusing.html:
2:46 PM Changeset in webkit [287786] by Patrick Angle
  • 2 edits in trunk/Source/WebKit

REGRESSION(r286498): Web Inspector: Inspector2 fails to load in release builds and crashes with an assertion in debug builds
https://bugs.webkit.org/show_bug.cgi?id=234968

Reviewed by Devin Rousso.

Inspector2 would fail to open a local inspector frontend because m_inspectedPageIdentifier was not set before
it was used in WebInspectorUIProxy::createFrontendPage. To correct this, we now cache the inspected page
identifier immediately upon creating the WebInspectorUIProxy, instead of only in
WebInspectorUIProxy::updateForNewPageProcess. This also allows us to use the cached identifier in
WebInspectorUIProxy::openLocalInspectorFrontend as discussed in <http://webkit.org/b/233293#c5>.

  • UIProcess/Inspector/WebInspectorUIProxy.cpp:

(WebKit::WebInspectorUIProxy::WebInspectorUIProxy):
(WebKit::WebInspectorUIProxy::openLocalInspectorFrontend):

2:46 PM Changeset in webkit [287785] by Chris Dumez
  • 4 edits
    4 adds in trunk/LayoutTests/imported/w3c

Resync web-platform-tests/webaudio from upstream
https://bugs.webkit.org/show_bug.cgi?id=234981

Reviewed by Geoffrey Garen.

Resync web-platform-tests/webaudio from upstream 84b2be5b17e8542dea2.

  • web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/acquire-the-content-expected.txt: Added.
  • web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/acquire-the-content.html: Added.
  • web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/w3c-import.log:
  • web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/w3c-import.log:
  • web-platform-tests/webaudio/the-audio-api/the-periodicwave-interface/createPeriodicWaveInfiniteValuesThrows-expected.txt: Added.
  • web-platform-tests/webaudio/the-audio-api/the-periodicwave-interface/createPeriodicWaveInfiniteValuesThrows.html: Added.
  • web-platform-tests/webaudio/the-audio-api/the-periodicwave-interface/w3c-import.log:
2:45 PM Changeset in webkit [287784] by timothy_horton@apple.com
  • 9 edits in trunk/Source

Adopt linkedOnOrAfter() in more places
https://bugs.webkit.org/show_bug.cgi?id=234951

Reviewed by Wenson Hsieh.

Source/JavaScriptCore:

  • API/JSWrapperMap.mm:

(supportsInitMethodConstructors):

  • API/tests/testapi.cpp:

(TestAPI::promiseDrainDoesNotEatExceptions):

  • API/tests/testapi.mm:

(testMicrotaskWithFunction):

  • runtime/JSLock.cpp:

(JSC::JSLock::willReleaseLock):

  • runtime/ObjectPrototype.cpp:

(JSC::isPokerBros):
Adopt linkedOnOrAfter.

Source/WTF:

  • wtf/cocoa/LanguageCocoa.mm:

(WTF::canMinimizeLanguages):
Adopt linkedOnOrAfter and simplify.

  • wtf/cocoa/RuntimeApplicationChecksCocoa.h:

The weird mismatch between the iOS and macOS values for FirstVersionThatSupportsInitConstructors
is correct; the iOS version was bumped in r202670.

2:22 PM Changeset in webkit [287783] by Kate Cheney
  • 7 edits
    9 adds in trunk

CSP: strict-dynamic is causing incorrect and unexpected behavior
https://bugs.webkit.org/show_bug.cgi?id=234756
<rdar://problem/87018316>

Reviewed by Brent Fulgham.

Source/WebCore:

Per the CSP spec, if strict-dynamic is included in the script-src
directive, 'self' and 'unsafe-inline' should be ignored. This fixes a
bug where they were only ignored if specified before 'strict-dynamic'.

Additionally, this reports the sourceURL as empty for inline scripts
instead of using the contextURL, which was unexpectedly allowing
inline scripts when "self" was used with "strict-dynamic".

Tests: http/tests/security/contentSecurityPolicy/strict-dynamic-mixed-order-host-list.html

http/tests/security/contentSecurityPolicy/strict-dynamic-mixed-order-scheme-list.html
http/tests/security/contentSecurityPolicy/strict-dynamic-mixed-order-self.html
http/tests/security/contentSecurityPolicy/strict-dynamic-mixed-order-unsafe-inline.html

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::requestClassicScript):
(WebCore::ScriptElement::executeClassicScript):

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::allScriptPoliciesAllow const):
(WebCore::ContentSecurityPolicy::allowNonParserInsertedScripts const):

  • page/csp/ContentSecurityPolicy.h:
  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::parseSource):

LayoutTests:

Add tests with re-arranged ordering of the source expressions.

  • http/tests/security/contentSecurityPolicy/resources/simpleSourcedScript.js: Added.
  • http/tests/security/contentSecurityPolicy/strict-dynamic-mixed-order-host-list-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/strict-dynamic-mixed-order-host-list.html: Added.
  • http/tests/security/contentSecurityPolicy/strict-dynamic-mixed-order-scheme-list-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/strict-dynamic-mixed-order-scheme-list.html: Added.
  • http/tests/security/contentSecurityPolicy/strict-dynamic-mixed-order-self-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/strict-dynamic-mixed-order-self.html: Added.
  • http/tests/security/contentSecurityPolicy/strict-dynamic-mixed-order-unsafe-inline-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/strict-dynamic-mixed-order-unsafe-inline.html: Added.
2:21 PM Changeset in webkit [287782] by Said Abou-Hallawa
  • 26 edits
    1 add in trunk/Source

[GPU Process] Remove the result FilterImage from FilterEffect
https://bugs.webkit.org/show_bug.cgi?id=232840
rdar://85425842

Reviewed by Darin Adler.

Source/WebCore:

Removing the result FilterImage from FilterEffect will allow reusing the
same FilterEffect for all the renderers that reference it. The results
will now be stored in the new class 'FilterResults'.

-- FilterData still keeps the results of applying the Filter to its

renderer in a new member of type FilterResults.

-- RenderLayerFilters will not need to clear its CSSFilter intermediate

results because this will happen once the temporary FilterResults goes
out of scope.

FilterResults will have two maps:

  1. FilterEffect -> FilterImage: The value is the result FilterImage of applying the FilterEffect.
  2. FilterImage -> FilterEffectSet: The value is a list of FilterEffects, whose FilterImages depend on the key FilterImage.
  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/ConcreteImageBuffer.h:
  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawFilteredImageBuffer):

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::DrawFilteredImageBuffer::apply):

  • platform/graphics/displaylists/DisplayListItems.h:
  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::drawFilteredImageBuffer):

  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/graphics/filters/Filter.cpp:

(WebCore::Filter::apply):

  • platform/graphics/filters/Filter.h:
  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::apply):
(WebCore::FilterEffect::clearResult): Deleted.
(WebCore::FilterEffect::clearResultsRecursive): Deleted.

  • platform/graphics/filters/FilterEffect.h:

(WebCore::FilterEffect::hasResult const): Deleted.
(WebCore::FilterEffect::filterImage const): Deleted.

  • platform/graphics/filters/FilterFunction.h:

(WebCore::FilterFunction::apply):
(WebCore::FilterFunction::outsets const):
(WebCore::FilterFunction::clearResult): Deleted.

  • platform/graphics/filters/FilterResults.h: Added.

(WebCore::FilterResults::effectResult const):
(WebCore::FilterResults::setEffectResult):
(WebCore::FilterResults::clearEffectResult):

  • platform/network/SynchronousLoaderClient.cpp:
  • rendering/CSSFilter.cpp:

(WebCore::CSSFilter::apply):
(WebCore::CSSFilter::clearIntermediateResults): Deleted.

  • rendering/CSSFilter.h:
  • rendering/RenderLayerFilters.cpp:

(WebCore::RenderLayerFilters::applyFilterEffect):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::postApplyResource):
(WebCore::RenderSVGResourceFilter::primitiveAttributeChanged):

  • rendering/svg/RenderSVGResourceFilter.h:
  • svg/graphics/filters/SVGFilter.cpp:

(WebCore::SVGFilter::apply):
(WebCore::SVGFilter::clearResult): Deleted.

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

(WebCore::SVGFilterBuilder::setupBuiltinEffects):
(WebCore::SVGFilterBuilder::buildFilterEffects):
(WebCore::SVGFilterBuilder::appendEffectToEffectRenderer):
(WebCore::SVGFilterBuilder::appendEffectToEffectReferences): Deleted.
(WebCore::SVGFilterBuilder::clearEffects): Deleted.
(WebCore::SVGFilterBuilder::clearResultsRecursive): Deleted.

  • svg/graphics/filters/SVGFilterBuilder.h:

(WebCore::SVGFilterBuilder::lastEffect const): Deleted.
(WebCore::SVGFilterBuilder::effectReferences): Deleted.
(WebCore::SVGFilterBuilder::addBuiltinEffects): Deleted.

Source/WebKit:

  • GPUProcess/graphics/RemoteDisplayListRecorder.cpp:

(WebKit::RemoteDisplayListRecorder::drawFilteredImageBuffer):

1:52 PM Changeset in webkit [287781] by Patrick Angle
  • 19 edits in trunk/Source

[Cocoa] Web Driver: WebSocket over TLS failing over WebDriver with acceptInsecureCerts on Big Sur
https://bugs.webkit.org/show_bug.cgi?id=234403

Reviewed by BJ Burg.
Source/WebCore:

  • page/SocketProvider.cpp:

(WebCore::SocketProvider::createSocketStreamHandle):

  • platform/network/cf/SocketStreamHandleImpl.h:

(WebCore::SocketStreamHandleImpl::create):

  • platform/network/cf/SocketStreamHandleImplCFNet.cpp:

(WebCore::SocketStreamHandleImpl::SocketStreamHandleImpl):
(WebCore::SocketStreamHandleImpl::createStreams):

  • platform/network/curl/SocketStreamHandleImpl.h:

(WebCore::SocketStreamHandleImpl::create):

  • platform/network/soup/SocketStreamHandleImpl.h:

Source/WebKit:

macOS Big Sur and earlier do not use NSURLSession-based WebSockets, so we need a way to allow insecure
certificates under automation that does not rely on the WKNavigationDelegate to determine if an
authentication challenge should be accepted. In order to accomplish this we now plumb through an
_shouldAcceptInsecureCertificatesForWebSockets value from _WKAutomationSessionConfiguration to
SocketStreamHandleImplCFNet on platforms that do not HAVE(NSURLSESSION_WEBSOCKET), which allows automation
clients to enable this behavior when the acceptInsecureCerts capability is set on a session.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::createSocketStream):

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::shouldAcceptInsecureCertificatesForWebSockets const):

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/NetworkSocketStream.cpp:

(WebKit::NetworkSocketStream::create):
(WebKit::NetworkSocketStream::NetworkSocketStream):

  • NetworkProcess/NetworkSocketStream.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration _shouldAcceptInsecureCertificatesForWebSockets]):
(-[_WKWebsiteDataStoreConfiguration _setShouldAcceptInsecureCertificatesForWebSockets:]):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy const):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::shouldAcceptInsecureCertificatesForWebSockets const):
(WebKit::WebsiteDataStoreConfiguration::setShouldAcceptInsecureCertificatesForWebSockets):

1:25 PM Changeset in webkit [287780] by Chris Dumez
  • 3 edits in trunk/LayoutTests

Unreviewed, rebaseline imported/w3c/web-platform-tests/html/dom/idlharness.https.html properly on iOS platforms.

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ipad/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
1:16 PM Changeset in webkit [287779] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Inline blocks that contain text with min-width, box-sizing: border-box incorrectly include the border in width calculation
https://bugs.webkit.org/show_bug.cgi?id=234935
<rdar://problem/87217423>

Reviewed by Antti Koivisto.

Source/WebCore:

The block formatting context root takes care of applying the the min/max-width constraints.

Test: fast/inline/min-max-width-and-preferred-width.html

  • layout/formattingContexts/inline/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraintsForIntegration): remove redundant min/max-width checking.

LayoutTests:

  • fast/inline/min-max-width-and-preferred-width-expected.html: Added.
  • fast/inline/min-max-width-and-preferred-width.html: Added.
1:09 PM Changeset in webkit [287778] by Andres Gonzalez
  • 2 edits in trunk/Source/WebCore

WebAccessibilityObjectWrapper accessibilityHitTest should call AXCoreObject::widget() on the main thread.
https://bugs.webkit.org/show_bug.cgi?id=234973
<rdar://problem/87264153>

Reviewed by Chris Fleizach.

In isolated tree mode, the AX object widget() method and any subsequent
access to the returned value must be dispatch to the main thread.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityHitTest:]):

12:28 PM Changeset in webkit [287777] by Wenson Hsieh
  • 7 edits in trunk

Teach modal container observer to make the body element scrollable if necessary
https://bugs.webkit.org/show_bug.cgi?id=234708
rdar://86960677

Reviewed by Tim Horton.

Source/WebCore:

Add a mechanism to allow ModalContainerObserver to force the body and/or document elements in the main document
to become vertically scrollable, in the case where a modal container has been detected.

In particular, if a modal container has already been detected and hidden away, the frame is non-scrollable, and
the body and/or document element satisfies both conditions:

  1. Has a height that is taller than the visible height of the top FrameView
  2. Has overflow-y: hidden;

...then we'll flag one or both of those elements and force them to be vertically scrollable during style
adjustment (i.e. return true from shouldMakeVerticallyScrollable()).

Covered by augmenting an existing API test:
ModalContainerObservation.HideUserInteractionBlockingElementAndMakeDocumentScrollable

  • page/ModalContainerObserver.cpp:

(WebCore::ModalContainerObserver::setContainer):
(WebCore::ModalContainerObserver::collectClickableElementsTimerFired):
(WebCore::ModalContainerObserver::makeBodyAndDocumentElementScrollableIfNeeded):

Helper method that contains logic for overriding scrollability on the body or html element, if needed.

(WebCore::ModalContainerObserver::clearScrollabilityOverrides):
(WebCore::ModalContainerObserver::hideUserInteractionBlockingElementIfNeeded):

Drive-by fix: target is just a raw pointer here, so just assign it directly to foundElement instead of
trying to use move semantics.

(WebCore::ModalContainerObserver::revealModalContainer):
(WebCore::ModalContainerObserver::shouldMakeVerticallyScrollable const):

Add a helper method (similar to shouldHide()) that can be used to make elements vertically scrollable during
style adjustment time. See above for more details.

(WebCore::ModalContainerObserver::tryToMakeBodyAndDocumentElementScrollableThroughQuirks):

  • page/ModalContainerObserver.h:
  • style/StyleAdjuster.cpp:

(WebCore::Style::Adjuster::adjust const):

Consult shouldMakeVerticallyScrollable in addition to shouldHide if ModalContainerObserver is present.

Tools:

Adjust an existing API test to exercise the change.

  • TestWebKitAPI/Tests/WebKit/modal-container-with-overlay.html:
  • TestWebKitAPI/Tests/WebKitCocoa/ModalContainerObservation.mm:

(TestWebKitAPI::TEST):

12:20 PM Changeset in webkit [287776] by Patrick Angle
  • 2 edits in trunk/Source/WebInspectorUI

Uncaught Exception: Cannot step over because debugger is not paused
https://bugs.webkit.org/show_bug.cgi?id=234575

Reviewed by Devin Rousso.

Previously keyboard shortcuts for advancing the debugger did not check to make sure that the debugger was
actually paused before attempting to step. This led to an uncaught exception in engineering builds. We now
enable and disable these keyboard shortcuts based on the whether or not the debugger is currently paused.

  • UserInterface/Base/Main.js:
11:57 AM Changeset in webkit [287775] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebKit

Web process shouldn't crash if ImageBuffer::ensureBackendCreated() fails
https://bugs.webkit.org/show_bug.cgi?id=232520
<rdar://problem/84829717>

Reviewed by Simon Fraser.

Guard against the possibility of it returning null.

No new tests because there shouldn't be any behavior change after https://bugs.webkit.org/show_bug.cgi?id=232470.
It's still good to do this, though, to be defensive.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::encode const):

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::createImageBufferBackendHandle):

11:48 AM Changeset in webkit [287774] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebKit

ImageBuffer with floating point logicalSize() paints into a slightly truncated destination rect
https://bugs.webkit.org/show_bug.cgi?id=225377

Reviewed by Tim Horton.

This is the rest of https://bugs.webkit.org/show_bug.cgi?id=232470.

This is also a follow-up of https://bugs.webkit.org/show_bug.cgi?id=232515.

No new tests; the behavior change is covered by
fast/backgrounds/hidpi-bitmap-background-origin-on-subpixel-position.html
since Tim Horton reverted the workaround for this bug that he landed in r276945.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::drawInContext):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::createRemoteImageBuffer):

11:46 AM Changeset in webkit [287773] by Ryan Haddad
  • 2 edits in trunk/Tools

REGRESSION: TestWebKitAPI.PublicSuffix.IsPublicSuffix is failing on some bots
https://bugs.webkit.org/show_bug.cgi?id=234609

Unreviewed test gardening.

  • TestWebKitAPI/Tests/WebCore/PublicSuffix.cpp:

(TestWebKitAPI::TEST_F): Disable failing subtest.

11:38 AM Changeset in webkit [287772] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

Make separate invalidation rulesets for negated selectors (inside :not())
https://bugs.webkit.org/show_bug.cgi?id=234959

Reviewed by Darin Adler.

Use this information to reduce traversal on class changes. Other mutations will follow.

  • style/ClassChangeInvalidation.cpp:

(WebCore::Style::collectClasses):
(WebCore::Style::computeClassChanges):
(WebCore::Style::ClassChangeInvalidation::computeInvalidation):

Adding a class can only make a regular selector (not inside :not()) start matching.
Adding a class can only make a negated selector (inside :not()) stop matching.
We only need to invalidate for the first case after the mutation has happened and for the second
case before it happens.

These are reversed when removing a class.

(WebCore::Style::ClassChangeInvalidation::invalidateBeforeChange):
(WebCore::Style::ClassChangeInvalidation::invalidateAfterChange):
(WebCore::Style::computeClassChange): Deleted.
(WebCore::Style::ClassChangeInvalidation::invalidateStyleWithRuleSets): Deleted.

  • style/ClassChangeInvalidation.h:

(WebCore::Style::ClassChangeInvalidation::ClassChangeInvalidation):
(WebCore::Style::ClassChangeInvalidation::~ClassChangeInvalidation):

  • style/RuleFeature.cpp:

(WebCore::Style::RuleFeature::RuleFeature):
(WebCore::Style::RuleFeatureWithInvalidationSelector::RuleFeatureWithInvalidationSelector):
(WebCore::Style::RuleFeatureSet::recursivelyCollectFeaturesFromSelector):

Compute the negation state. :not(foo) is negated, :not(:not(foo)) isn't.

(WebCore::Style::RuleFeatureSet::collectFeatures):

  • style/RuleFeature.h:

(WebCore::Style::RuleFeatureWithInvalidationSelector::RuleFeatureWithInvalidationSelector): Deleted.

  • style/StyleScopeRuleSets.cpp:

(WebCore::Style::ensureInvalidationRuleSets):

Make separate ruleset.

  • style/StyleScopeRuleSets.h:
11:34 AM Changeset in webkit [287771] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

nullptr deref in ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=234018

Patch by Gabriel Nava Marino <gnavamarino@apple.com> on 2022-01-07
Reviewed by Darin Adler.

In RenderBlockFlow::subtreeContainsFloat and RenderBlockFlow::subtreeContainsFloats we now will
use a non-recursive iterator and return true when we find something, or then return false at the
end of the function.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::subtreeContainsFloat const):
(WebCore::RenderBlockFlow::subtreeContainsFloats const):

11:24 AM Changeset in webkit [287770] by achristensen@apple.com
  • 59 edits in trunk

Unreviewed, reverting r287698.

Broke an internal build

Reverted changeset:

"Start using C++20"
https://bugs.webkit.org/show_bug.cgi?id=233963
https://commits.webkit.org/r287698

11:22 AM Changeset in webkit [287769] by graouts@webkit.org
  • 7 edits in trunk

Inserting a new @keyframes rule does not start animations that already used this name
https://bugs.webkit.org/show_bug.cgi?id=234955

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Mark WPT progression.

  • web-platform-tests/css/css-animations/Element-getAnimations.tentative-expected.txt:

Source/WebCore:

In bug 234895, we added logic to handle the case where an existing @keyframes rule was manipulated
via the CSSOM API and ensured this would update the keyframes of any existing CSSAnimation currently
referencing this @keyframes rule.

Another WPT tests the case where a @keyframes rule is referenced by an animation prior to existing
in the stylesheet, adding that named @keyframes rule, and then testing a CSSAnimation was created.

To handle this case, we need to track which animation names were ignored during style resolution
due not matching an existing @keyframes rule. We now manage a list of invalid CSS animation names
stored on the KeyframeEffectStack (where we also keep track of the AnimationList last seen during
style resolution) and use that to determine when, even though the previous and current AnimationList
contain the same data, a previously-ignored animation should now be processed due to its referenced
@keyframes rule now existing.

  • animation/KeyframeEffectStack.cpp:

(WebCore::KeyframeEffectStack::clearInvalidCSSAnimationNames):
(WebCore::KeyframeEffectStack::hasInvalidCSSAnimationNames const):
(WebCore::KeyframeEffectStack::containsInvalidCSSAnimationName const):
(WebCore::KeyframeEffectStack::addInvalidCSSAnimationName):

  • animation/KeyframeEffectStack.h:
  • style/Styleable.cpp:

(WebCore::keyframesRuleExistsForAnimation):
(WebCore::Styleable::animationListContainsNewlyValidAnimation const):
(WebCore::Styleable::updateCSSAnimations const):
(WebCore::shouldConsiderAnimation): Deleted.

  • style/Styleable.h:
11:21 AM Changeset in webkit [287768] by achristensen@apple.com
  • 4 edits in trunk

Unreviewed, reverting r287718.

Broke an internal build

Reverted changeset:

"[PlayStation] Fix build break after r287698"
https://bugs.webkit.org/show_bug.cgi?id=234931
https://commits.webkit.org/r287718

11:04 AM Changeset in webkit [287767] by Russell Epstein
  • 1 copy in tags/Safari-613.1.12.1.4

Tag Safari-613.1.12.1.4.

10:59 AM Changeset in webkit [287766] by Russell Epstein
  • 2 edits in branches/safari-613.1.12.1-branch/Source/WebKit

Cherry-pick r287754. rdar://problem/87228791

[MacCatalyst] Add required syscall
https://bugs.webkit.org/show_bug.cgi?id=234962
<rdar://87228791>

Reviewed by Brent Fulgham.

Add required syscall in MacCatalyst sandbox.

  • WebProcess/com.apple.WebProcess.sb.in:

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

10:58 AM Changeset in webkit [287765] by Russell Epstein
  • 9 edits in branches/safari-613.1.12.1-branch/Source

Versioning.

WebKit-7613.1.12.1.4

10:56 AM Changeset in webkit [287764] by graouts@webkit.org
  • 4 edits in trunk

Transitions without an explicit property-name should not be considered
https://bugs.webkit.org/show_bug.cgi?id=234960

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Mark WPT progression.

  • web-platform-tests/css/css-transitions/events-004-expected.txt:

Source/WebCore:

When we fill the transition-property to match the number of another transition-
property, we should not consider running a transition for that property.

  • style/Styleable.cpp:

(WebCore::transitionMatchesProperty):

10:53 AM Changeset in webkit [287763] by youenn@apple.com
  • 16 edits in trunk/Source

Use completion handlers for takeAllMessagesForPort methods
https://bugs.webkit.org/show_bug.cgi?id=234947

Reviewed by Chris Dumez.

Source/WebCore:

Covered by existing tests.

  • dom/MessagePort.cpp:
  • dom/messageports/MessagePortChannel.cpp:
  • dom/messageports/MessagePortChannel.h:
  • dom/messageports/MessagePortChannelProvider.h:
  • dom/messageports/MessagePortChannelProviderImpl.cpp:
  • dom/messageports/MessagePortChannelProviderImpl.h:
  • dom/messageports/MessagePortChannelRegistry.cpp:
  • dom/messageports/MessagePortChannelRegistry.h:
  • dom/messageports/WorkerMessagePortChannelProvider.cpp:
  • dom/messageports/WorkerMessagePortChannelProvider.h:

Source/WebKit:

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:
  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
  • WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h:
10:48 AM Changeset in webkit [287762] by graouts@webkit.org
  • 6 edits in trunk/Source/WebCore

Expose iterators on AnimationList
https://bugs.webkit.org/show_bug.cgi?id=234957

Reviewed by Antti Koivisto.

  • animation/WebAnimationUtilities.cpp:

(WebCore::compareCSSAnimations):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::valueListForAnimationOrTransitionProperty):
(WebCore::animationShorthandValue):

  • css/makeprop.pl:

(generateAnimationPropertyInitialValueSetter):

  • platform/animation/AnimationList.h:

(WebCore::AnimationList::begin const):
(WebCore::AnimationList::end const):
(WebCore::AnimationList::rbegin const):
(WebCore::AnimationList::rend const):

  • style/Styleable.cpp:

(WebCore::Styleable::updateCSSAnimations const):
(WebCore::compileTransitionPropertiesInStyle):
(WebCore::updateCSSTransitionsForStyleableAndProperty):

10:46 AM Changeset in webkit [287761] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

Values in WebAnimation::instances should not be null-checked
https://bugs.webkit.org/show_bug.cgi?id=234948

Reviewed by Darin Adler.

The HashSet<WebAnimation*> returned by WebAnimation::instances() cannnot hold nullptr
values so we should not have any check for a null value when iterating over its values.

  • dom/Document.cpp:

(WebCore::Document::matchingAnimations):
(WebCore::Document::keyframesRuleDidChange):

10:44 AM Changeset in webkit [287760] by youenn@apple.com
  • 4 edits in trunk

Allow storing form data responses in Cache Storage
https://bugs.webkit.org/show_bug.cgi?id=234881

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/cache-storage/window/cache-put.https-expected.txt:

Source/WebCore:

Covered by rebased tests.

  • Modules/cache/DOMCache.cpp:

(WebCore::DOMCache::put):

10:43 AM Changeset in webkit [287759] by youenn@apple.com
  • 4 edits in trunk

Expose rvfc processingDuration for the WebRTC code path
https://bugs.webkit.org/show_bug.cgi?id=234949

Reviewed by Eric Carlson.

Source/WebCore:

This processing duration is the time it took for an assembled frame to be decoded and sent to RealtimIncomingVideoSource.
This duration can be approximately retrieved from WebRTC encoded transform (time for the assembled frame, aka time just before decoding)
and the time at which it is exposed by requestVideoFrameCallback (aka time just after decoding).
The processing duration is rounded in milliseconds.

Covered by updated test.

  • platform/mediastream/RealtimeIncomingVideoSource.cpp:

LayoutTests:

  • webrtc/peerConnection-rvfc.html:
10:36 AM Changeset in webkit [287758] by ysuzuki@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

[JSC] Clean up StructureStubInfo
https://bugs.webkit.org/show_bug.cgi?id=234943

Reviewed by Saam Barati.

Use std::unique_ptr<PolymorphicAccess> instead of raw pointer.

  • bytecode/CheckPrivateBrandStatus.cpp:

(JSC::CheckPrivateBrandStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/DeleteByStatus.cpp:

(JSC::DeleteByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/InByStatus.cpp:

(JSC::InByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/InstanceOfStatus.cpp:

(JSC::InstanceOfStatus::computeForStubInfo):

  • bytecode/PutByStatus.cpp:

(JSC::PutByStatus::computeForStubInfo):

  • bytecode/SetPrivateBrandStatus.cpp:

(JSC::SetPrivateBrandStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::deref):
(JSC::StructureStubInfo::aboutToDie):
(JSC::StructureStubInfo::addAccessCase):
(JSC::StructureStubInfo::visitAggregateImpl):
(JSC::StructureStubInfo::visitWeakReferences):
(JSC::StructureStubInfo::propagateTransitions):
(JSC::StructureStubInfo::summary const):
(JSC::StructureStubInfo::containsPC const):
(JSC::StructureStubInfo::~StructureStubInfo): Deleted.

  • bytecode/StructureStubInfo.h:

(JSC::StructureStubInfo::offsetOfCodePtr):
(JSC::StructureStubInfo::offsetOfDoneLocation):
(JSC::StructureStubInfo::offsetOfSlowPathStartLocation):
(JSC::StructureStubInfo::offsetOfSlowOperation):
(JSC::StructureStubInfo::offsetOfCountdown):

10:06 AM Changeset in webkit [287757] by Simon Fraser
  • 8 edits
    2 adds in trunk

REGRESSION (Safari 14): background-attachment: local does not work
https://bugs.webkit.org/show_bug.cgi?id=219324
Source/WebCore:

<rdar://71808922>

Reviewed by Antti Koivisto.

With async overflow scrolling, we need to trigger a repaint if the scrolling element
has any background layer with background-attachment: local.

The background won't always be synchronized with the scrolling, but a little jitter
is better than a broken CSS behavior (and this is what Firefox does).

Test: fast/repaint/background-attachment-local-scroll.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::needsRepaintOnCompositedScroll const):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::hasAnyLocalBackground const):

  • rendering/style/RenderStyle.h:

LayoutTests:

Reviewed by Antti Koivisto.

Skip the test on platforms without async overflow scroll.

  • TestExpectations:
  • fast/repaint/background-attachment-local-scroll-expected.txt: Added.
  • fast/repaint/background-attachment-local-scroll.html: Added.
  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
10:04 AM Changeset in webkit [287756] by Kate Cheney
  • 5 edits
    2 adds in trunk

Implement CSP strict-dynamic for module scripts
https://bugs.webkit.org/show_bug.cgi?id=234934
<rdar://problem/83728374>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/security/contentSecurityPolicy/strict-dynamic-module-script.html

This also adds the contextLine value instead of using the default
OrdinalNumber::beforeFirst() value.

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::requestClassicScript):
(WebCore::ScriptElement::requestModuleScript):
(WebCore::ScriptElement::executeClassicScript):

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::allowNonParserInsertedScripts const):

  • page/csp/ContentSecurityPolicy.h:

LayoutTests:

  • http/tests/security/contentSecurityPolicy/strict-dynamic-module-script-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/strict-dynamic-module-script.html: Added.
9:44 AM Changeset in webkit [287755] by Peng Liu
  • 3 edits in trunk/Source/WebKit

Clean up FullscreenClient
https://bugs.webkit.org/show_bug.cgi?id=233076

Reviewed by Jer Noble.

This patch is a follow-up to r285741.

  • Get rid of WKFullscreenClientView and use WKWebView instead.
  • UIProcess/Cocoa/FullscreenClient.h:
  • UIProcess/Cocoa/FullscreenClient.mm:

(WebKit::FullscreenClient::FullscreenClient):
(WebKit::FullscreenClient::willEnterFullscreen):
(WebKit::FullscreenClient::didEnterFullscreen):
(WebKit::FullscreenClient::willExitFullscreen):
(WebKit::FullscreenClient::didExitFullscreen):

9:37 AM Changeset in webkit [287754] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[MacCatalyst] Add required syscall
https://bugs.webkit.org/show_bug.cgi?id=234962
<rdar://87228791>

Reviewed by Brent Fulgham.

Add required syscall in MacCatalyst sandbox.

  • WebProcess/com.apple.WebProcess.sb.in:
9:32 AM Changeset in webkit [287753] by Aditya Keerthi
  • 3 edits
    2 adds in trunk

Checkboxes on PurpleAir map controls are much smaller in Safari than other browsers
https://bugs.webkit.org/show_bug.cgi?id=234897
rdar://83367191

Reviewed by Darin Adler.

Source/WebCore:

Unlike other browser engines, WebKit adjusts the size of checkboxes and
radio buttons based on the font-size of the element, when the size is
unspecified. The checkboxes on PurpleAir have a font-size of 9px, which
results in WebKit painting a checkbox using NSControlSizeMini (with a
length of 10px). In constrast, Chrome and Firefox simply use their
default sizes (13px and 12.6px respectively).

To fix, remove the font-size adjustments for checkboxes and radio
buttons with an unspecified size, and use the current effective
default of NSControlSizeSmall (with a length of 12px) to paint the
controls.

This ensures our unspecified sizing behavior matches other browsers.
There may be some risk for other WebKit clients that currently rely
on font-size getting them their desired size. However, this risk is
believed to be minimal given the sizes of these controls are already
restricted to a 10 - 16px range.

Test: fast/forms/checkbox-radio-font-size.html

  • platform/mac/ThemeMac.mm:

(WebCore::checkboxSize):
(WebCore::radioSize):
(WebCore::ThemeMac::controlSize const):

LayoutTests:

  • fast/forms/checkbox-radio-font-size-expected.html: Added.
  • fast/forms/checkbox-radio-font-size.html: Added.
9:27 AM Changeset in webkit [287752] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GTK] Regression in inspector/audit/run-resources.html
https://bugs.webkit.org/show_bug.cgi?id=196196

Reviewed by Chris Lord.

Fix JavaScript file MIME type check by comparing to 'text/javascript' or 'application/javascript'.

  • inspector/audit/run-resources.html:
  • platform/gtk/TestExpectations:
9:19 AM Changeset in webkit [287751] by Russell Epstein
  • 4 edits
    4 adds in branches/safari-612.4.9.3-branch

Cherry-pick r287604. rdar://problem/85966622

Protect frame from destruction in HTMLMediaElement::setupAndCallJS
https://bugs.webkit.org/show_bug.cgi?id=234259

Patch by Frédéric Wang <fwang@igalia.com> on 2022-01-04
Reviewed by Darin Adler.

Source/WebCore:

Test: http/tests/media/media-element-frame-destroyed-crash.html

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::setupAndCallJS): Protect the frame before executing the JS code, so that it is not destroyed before its associated ScriptController.

LayoutTests:

Add non-regression test, embedded in multiple iframes to make regression easily reproducible.

  • http/conf/mime.types: Ensure that ts files are served with MIME type video/mp2t as that's required to make the non-regression test work properly.
  • http/tests/media/media-element-frame-destroyed-crash-expected.txt: Added.
  • http/tests/media/media-element-frame-destroyed-crash.html: Added.
  • http/tests/media/resources/empty.ts: Added.
  • http/tests/media/resources/media-element-frame-destroyed-crash-subframe.html: Added.

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

9:17 AM Changeset in webkit [287750] by Russell Epstein
  • 8 edits in branches/safari-612.4.9.3-branch/Source

Versioning.

WebKit-7612.4.9.3.1

8:55 AM Changeset in webkit [287749] by Russell Epstein
  • 4 edits
    4 adds in branches/safari-612.4.9.2-branch

Cherry-pick r287604. rdar://problem/85966622

Protect frame from destruction in HTMLMediaElement::setupAndCallJS
https://bugs.webkit.org/show_bug.cgi?id=234259

Patch by Frédéric Wang <fwang@igalia.com> on 2022-01-04
Reviewed by Darin Adler.

Source/WebCore:

Test: http/tests/media/media-element-frame-destroyed-crash.html

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::setupAndCallJS): Protect the frame before executing the JS code, so that it is not destroyed before its associated ScriptController.

LayoutTests:

Add non-regression test, embedded in multiple iframes to make regression easily reproducible.

  • http/conf/mime.types: Ensure that ts files are served with MIME type video/mp2t as that's required to make the non-regression test work properly.
  • http/tests/media/media-element-frame-destroyed-crash-expected.txt: Added.
  • http/tests/media/media-element-frame-destroyed-crash.html: Added.
  • http/tests/media/resources/empty.ts: Added.
  • http/tests/media/resources/media-element-frame-destroyed-crash-subframe.html: Added.

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

8:54 AM Changeset in webkit [287748] by Russell Epstein
  • 4 edits
    4 adds in branches/safari-612.4.9.0-branch

Cherry-pick r287604. rdar://problem/85966622

Protect frame from destruction in HTMLMediaElement::setupAndCallJS
https://bugs.webkit.org/show_bug.cgi?id=234259

Patch by Frédéric Wang <fwang@igalia.com> on 2022-01-04
Reviewed by Darin Adler.

Source/WebCore:

Test: http/tests/media/media-element-frame-destroyed-crash.html

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::setupAndCallJS): Protect the frame before executing the JS code, so that it is not destroyed before its associated ScriptController.

LayoutTests:

Add non-regression test, embedded in multiple iframes to make regression easily reproducible.

  • http/conf/mime.types: Ensure that ts files are served with MIME type video/mp2t as that's required to make the non-regression test work properly.
  • http/tests/media/media-element-frame-destroyed-crash-expected.txt: Added.
  • http/tests/media/media-element-frame-destroyed-crash.html: Added.
  • http/tests/media/resources/empty.ts: Added.
  • http/tests/media/resources/media-element-frame-destroyed-crash-subframe.html: Added.

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

8:52 AM Changeset in webkit [287747] by Russell Epstein
  • 8 edits in branches/safari-612.4.9.2-branch/Source

Versioning.

WebKit-7612.4.9.2.1

8:47 AM Changeset in webkit [287746] by Russell Epstein
  • 4 edits
    4 adds in branches/safari-612.4.9.1-branch

Cherry-pick r287604. rdar://problem/85966622

Protect frame from destruction in HTMLMediaElement::setupAndCallJS
https://bugs.webkit.org/show_bug.cgi?id=234259

Patch by Frédéric Wang <fwang@igalia.com> on 2022-01-04
Reviewed by Darin Adler.

Source/WebCore:

Test: http/tests/media/media-element-frame-destroyed-crash.html

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::setupAndCallJS): Protect the frame before executing the JS code, so that it is not destroyed before its associated ScriptController.

LayoutTests:

Add non-regression test, embedded in multiple iframes to make regression easily reproducible.

  • http/conf/mime.types: Ensure that ts files are served with MIME type video/mp2t as that's required to make the non-regression test work properly.
  • http/tests/media/media-element-frame-destroyed-crash-expected.txt: Added.
  • http/tests/media/media-element-frame-destroyed-crash.html: Added.
  • http/tests/media/resources/empty.ts: Added.
  • http/tests/media/resources/media-element-frame-destroyed-crash-subframe.html: Added.

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

8:45 AM Changeset in webkit [287745] by Russell Epstein
  • 8 edits in branches/safari-612.4.9.1-branch/Source

Versioning.

WebKit-7612.4.9.1.2

7:08 AM Changeset in webkit [287744] by Alan Bujtas
  • 9 edits in trunk/Source/WebCore

[Cleanup] RenderElement::containingBlockFor*(fixed/absolute/inflow)Position is slightly confusing
https://bugs.webkit.org/show_bug.cgi?id=234939

Reviewed by Antti Koivisto.

These 3 helper functions (containingBlockForFixedPosition/containingBlockForAbsolutePosition/containingBlockForObjectInFlow)
are expected to return an ancestor renderer which would act as the containing block if the renderer was
fixed/absolute/inflow positioned (in their current form they should read as containingBlockIfTheRendererWasFixedPositioned..)

These functions were introduced as part of LogicalSelectionOffsetCaches where we cache all 3 types of
containing blocks (fixed/absolute/inflow) to save containingBlock() calls as the cached object gets propagated
to ancestor renderers (so we really have a "what if" type of use case).

After some refactoring (and moving them out of LogicalSelectionOffsetCaches), we started introducing more and more
callsites of these functions where the "what if" question made less sense.

This patch replaces these 3 functions with a static helper:

static RenderBlock* containingBlockForPositionType(PositionType, const RenderObject&);

While it does not make the callsites look much cleaner, it helps to stop the spread of the special containing block handling for top-layer/backdrop boxes.

  • dom/Element.cpp:

(WebCore::layoutOverflowRectContainsAllDescendants):

  • rendering/LogicalSelectionOffsetCaches.h:

(WebCore::LogicalSelectionOffsetCaches::LogicalSelectionOffsetCaches):

  • rendering/RenderElement.cpp:

(WebCore::nearestNonAnonymousContainingBlockIncludingSelf): Deleted.
(WebCore::RenderElement::containingBlockForFixedPosition const): Deleted.
(WebCore::RenderElement::containingBlockForAbsolutePosition const): Deleted.

  • rendering/RenderElement.h:
  • rendering/RenderInline.cpp:

(WebCore::RenderInline::styleWillChange):

  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::collectSelectionGeometries):

  • rendering/RenderObject.cpp:

(WebCore::nearestNonAnonymousContainingBlockIncludingSelf):
(WebCore::RenderObject::containingBlockForPositionType):
(WebCore::RenderObject::containingBlock const):
(WebCore::RenderObject::containingBlockForObjectInFlow const): Deleted.

  • rendering/RenderObject.h:
5:02 AM Changeset in webkit [287743] by Nikolas Zimmermann
  • 4 edits
    2 moves in trunk/Source/WebCore

[LBSE] Rename RenderSVGRect -> LegacyRenderSVGRect
https://bugs.webkit.org/show_bug.cgi?id=234878

Reviewed by Rob Buis.

Following the established procedure: rename RenderSVGRect -> LegacyRenderSVGRect.
In a follow-up patch RenderSVGRect will be reintroduced for LBSE, inheriting from
RenderSVGShape instead of LegacyRenderSVGShape.

Covered by existing tests, no change in behaviour.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/svg/LegacyRenderSVGRect.cpp: Renamed from Source/WebCore/rendering/svg/RenderSVGRect.cpp.

(WebCore::LegacyRenderSVGRect::LegacyRenderSVGRect):
(WebCore::LegacyRenderSVGRect::rectElement const):
(WebCore::LegacyRenderSVGRect::updateShapeFromElement):
(WebCore::LegacyRenderSVGRect::fillShape const):
(WebCore::LegacyRenderSVGRect::strokeShape const):
(WebCore::LegacyRenderSVGRect::shapeDependentStrokeContains):
(WebCore::LegacyRenderSVGRect::shapeDependentFillContains const):
(WebCore::LegacyRenderSVGRect::isRenderingDisabled const):

  • rendering/svg/LegacyRenderSVGRect.h: Renamed from Source/WebCore/rendering/svg/RenderSVGRect.h.
  • svg/SVGRectElement.cpp:

(WebCore::SVGRectElement::createElementRenderer):

12:45 AM Changeset in webkit [287742] by Martin Robinson
  • 16 edits in trunk

When transform-style: preserve-3d is used with a grouping property it should still create a containing block
https://bugs.webkit.org/show_bug.cgi?id=234145
<rdar://problem/86630387>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-transforms/preserve-3d-flat-grouping-properties-containing-block-expected.txt:

Source/WebCore:

No new tests. This is covered by an existing WPT test.

Previously, when a grouping property (and the few extra properties specific to WebKit) forced
transform-style: flat, this change was made in the StyleAdjuster and affected computed style.
The specification says that these properties should actually adjust the used value of
the property.

The specification also says:

The use of this property with any value other than none establishes a
stacking context. It also establishes a containing block for all
descendants, just like the transform property does.

Together, this means that no matter what the used value is of transform-style, it should
establish a containing block and create a stacking context.

This change adds a usedTransformStyle RenderStyle method and a StyleRareNonInheritedData member
to adjust the return value appropriately. RenderStyle::preserves3D reads the used value
and hasTransformRelatedProperty, which is used for establishing containing blocks
and stacking contexts, uses the calculated value.

  • rendering/RenderLayer.h:

(WebCore::RenderLayer::preserves3D const): Use usedTransformStyle.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateGeometry): This now calls preserve3D() and usedTransformStyle3D().

  • rendering/RenderLayerCompositor.cpp:

(WebCore::recompositeChangeRequiresGeometryUpdate): Ditto.
(WebCore::RenderLayerCompositor::requiresCompositingForBackfaceVisibility const): Ditto.
(WebCore::RenderLayerCompositor::computeIndirectCompositingReason const): Ditto.
(WebCore::RenderLayerCompositor::styleChangeMayAffectIndirectCompositingReasons): Ditto.
(WebCore::RenderLayerCompositor::layerHas3DContent const): Ditto.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeRequiresRecompositeLayer const): Ditto.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::hasTransformRelatedProperty const): Modified to look at the calculated value explicitly.
(WebCore::RenderStyle::usedTransformStyle3D const): Return 'flat' when the property is forced to flat.
(WebCore::RenderStyle::preserves3D const): Look at the used value.
(WebCore::RenderStyle::setTransformStyleForcedToFlat): Added.

  • rendering/style/StyleRareNonInheritedData.cpp: Added a new transformStyleForcedToFlat member.

(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): Ditto.
(WebCore::StyleRareNonInheritedData::operator== const): Ditto.

  • rendering/style/StyleRareNonInheritedData.h:
  • style/StyleAdjuster.cpp:

(WebCore::Style::Adjuster::adjust const): Call setTransformStyleForcedToFlat with the
appropriate value when an element has 'preserve-3d' set.

LayoutTests:

  • compositing/overflow-trumps-transform-style-expected.txt:
  • compositing/overflow-trumps-transform-style.html: Update to test used value and reflect that computed value doesn't change.
  • css3/blending/blend-mode-transform-style-expected.txt:
  • css3/blending/blend-mode-transform-style.html: Ditto.
12:28 AM Changeset in webkit [287741] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

Unreviewed, removing duplicated code added in https://commits.webkit.org/245793@trunk.

  • css/CSSStyleSheet.cpp:

(WebCore::CSSStyleSheet::didMutateRules):

Jan 6, 2022:

10:41 PM Changeset in webkit [287740] by Diego Pino Garcia
  • 2 edits
    1 add in trunk/LayoutTests

[GLIB] Unreviewed test gardening, emit baseline for accessibility/accessibility-node-memory-management.html
https://bugs.webkit.org/show_bug.cgi?id=209102

  • platform/glib/TestExpectations:
8:56 PM Changeset in webkit [287739] by Simon Fraser
  • 15 edits in trunk/Source/WebCore

Ensure that the scrolling thread always commits layer position changes to reduce scrolling stutters (v2)
https://bugs.webkit.org/show_bug.cgi?id=234937

Reviewed by Tim Horton.

Refine the logic added in r286932, which tries to ensure that the scrolling thread commits a
layer position change in cases where the main thread is also in the middle of a commit.

The condition used in r286932 forced a layer position change if the scroll position had
changed from the scroll position at the last display refresh. Tracing shows that this isn't
always correct, so, instead, use ThreadedScrollingTree's "desynchronized" state as the
signal to force a position change. We can thus remove the code related to maintaining
scrollPositionAtLastDisplayRefresh.

However, towards the end of a momentum scroll, when there isn't an event on every display
refresh, this caused too many forced commits. So make two changes to reduce the frequency of
going into the desynchronized state here:

  1. Not every display refresh triggers a rendering update. So tell ThreadedScrollingTree, via RenderingUpdateScheduler, Page and ScrollingCoordinatorMac if a rendering update was scheduled. ThreadedScrollingTree::displayDidRefreshOnScrollingThread() uses this knowledge to avoid scheduling the delayed rendering update detection timer.
  1. Not every rendering update results in a CA commit, yet the code assumed this. Fix by having ScrollingTreeMac::didCompleteRenderingUpdate() check to see if a CA transaction is active. This stops waitForRenderingUpdateCompletionOrTimeout() waiting for a signal that never comes and thus timing out.
  • page/Page.cpp:

(WebCore::Page::scheduledRenderingUpdate):

  • page/Page.h:
  • page/RenderingUpdateScheduler.cpp:

(WebCore::RenderingUpdateScheduler::scheduleRenderingUpdate):

  • page/scrolling/ScrollingCoordinator.h:

(WebCore::ScrollingCoordinator::scheduledRenderingUpdate):

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::isScrollingTreeMac const):
(WebCore::ScrollingTree::WTF_REQUIRES_LOCK):

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::updateScrollPositionAtLastDisplayRefresh): Deleted.

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::scheduledRenderingUpdate):
(WebCore::ThreadedScrollingTree::willStartRenderingUpdate):
(WebCore::ThreadedScrollingTree::didCompleteRenderingUpdate):
(WebCore::ThreadedScrollingTree::displayDidRefreshOnScrollingThread):
(WebCore::ThreadedScrollingTree::isScrollingSynchronizedWithMainThread):
(WebCore::ThreadedScrollingTree::didCompletePlatformRenderingUpdate): Deleted.
(WebCore::ThreadedScrollingTree::storeScrollPositionsAtLastDisplayRefresh): Deleted.

  • page/scrolling/ThreadedScrollingTree.h:

(WebCore::ThreadedScrollingTree::WTF_GUARDED_BY_LOCK):

  • page/scrolling/mac/ScrollingCoordinatorMac.h:
  • page/scrolling/mac/ScrollingCoordinatorMac.mm:

(WebCore::ScrollingCoordinatorMac::scheduledRenderingUpdate):
(WebCore::ScrollingCoordinatorMac::didCompletePlatformRenderingUpdate):

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::repositionScrollingLayers):

  • page/scrolling/mac/ScrollingTreeMac.h:
  • page/scrolling/mac/ScrollingTreeMac.mm:

(ScrollingTreeMac::didCompleteRenderingUpdate):
(ScrollingTreeMac::didCompletePlatformRenderingUpdate):

8:54 PM Changeset in webkit [287738] by sbarati@apple.com
  • 6 edits
    1 add in trunk

preparePatchpointForExceptions needs to handle tuples
https://bugs.webkit.org/show_bug.cgi?id=234909

Reviewed by Yusuke Suzuki.

JSTests:

Add support to the builder to have functions return tuples.

  • wasm/Builder.js:

(const._normalizeFunctionSignature):
(const._maybeRegisterType):

  • wasm/Builder_WebAssemblyBinary.js:

(const.emitters.Type):

  • wasm/stress/exception-throw-from-function-returning-tuple.js: Added.

(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.testCatchWithExceptionThrownFromFunctionReturningTuple):

Source/JavaScriptCore:

We got the offsets wrong when building a stackmap in B3IRGenerator
for exception sites. We need to index into StackmapGenerationParams
differently from indexing into the patchpoint's children. StackmapGenerationParams
reserves its first N entries for the N return values. The patchpoint's
children contains no results though, so we don't need to account for
the number of return values when indexing into the children() vector
of the PatchpointValue. To make this code simpler, we keep track of the
number of live values we need when throwing. These values are both
at the end of StackmapGenerationParams and at the end of the children()
vector. So we just look at the last "number of live values" in both
vectors to get the correct ValueRep and correct type. The code for
calls also didn't account for the fact that call arguments will be
appended after the live values we're building into a stackmap. This
patch fixes that code to always put the live values last.

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::PatchpointExceptionHandle::generate const):
(JSC::Wasm::B3IRGenerator::preparePatchpointForExceptions):

8:28 PM Changeset in webkit [287737] by timothy_horton@apple.com
  • 49 edits
    2 deletes in trunk/Source

Move linkedOnOrAfter() to WTF
https://bugs.webkit.org/show_bug.cgi?id=234942

Reviewed by Darin Adler.

Source/WebCore:

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMWindowCustom.cpp:
  • bindings/js/JSWindowProxy.cpp:
  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::requiresFullscreenForVideoPlayback const):

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):

  • page/Quirks.cpp:
  • page/SecurityOrigin.cpp:
  • platform/Timer.cpp:

(WebCore::shouldSuppressThreadSafetyCheck):

  • platform/cocoa/VersionChecks.h: Removed.
  • platform/cocoa/VersionChecks.mm: Removed.
  • platform/graphics/cocoa/FontCacheCoreText.cpp:
  • platform/network/DataURLDecoder.cpp:
  • testing/js/WebCoreTestSupport.cpp:

Source/WebKit:

  • NetworkProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::configurationForSessionID):

  • Shared/Cocoa/AuxiliaryProcessCocoa.mm:

(WebKit::AuxiliaryProcess::platformInitialize):

  • Shared/Cocoa/CompletionHandlerCallChecker.mm:

(WebKit::shouldThrowExceptionForDuplicateCompletionHandlerCall):

  • Shared/Cocoa/DefaultWebBrowserChecks.mm:

(WebKit::determineITPState):

  • Shared/Cocoa/WebKit2InitializeCocoa.mm:

(WebKit::InitializeWebKit2):

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultPassiveTouchListenersAsDefaultOnDocument):
(WebKit::defaultCSSOMViewScrollingAPIEnabled):
(WebKit::defaultPassiveWheelListenersAsDefaultOnDocument):
(WebKit::defaultWheelEventGesturesBecomeNonBlocking):
(WebKit::defaultOfflineWebApplicationCacheEnabled):

  • UIProcess/API/C/WKPage.cpp:

(WKPageReload):

  • UIProcess/API/Cocoa/WKWebView.mm:

(shouldAllowPictureInPictureMediaPlayback):
(shouldAllowSettingAnyXHRHeaderFromFileURLs):
(shouldRequireUserGestureToLoadVideo):
(shouldRestrictBaseURLSchemes):
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _setupPageConfiguration:]):
(-[WKWebView reload]):
(-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(defaultShouldDecidePolicyBeforeLoadingQuickLookPreview):
(-[WKWebViewConfiguration init]):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore init]):

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _computedObscuredInset]):

  • UIProcess/API/mac/WKWebViewMac.mm:

(-[WKWebView _web_dragDestinationActionForDraggingInfo:]):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:
  • UIProcess/Inspector/mac/WKInspectorViewController.mm:

(-[WKInspectorViewController inspectorWKWebViewReload:]):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::hasScrollableOrZoomedMainFrame const):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):
(WebKit::WebPageProxy::makeViewBlankIfUnpaintedSinceLastLoadCommit):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::createWebPage):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::isMainThreadOrCheckDisabled):

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _commonInitializationWithProcessPool:configuration:]):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _shouldUseContextMenus]):
(applicationIsKnownToIgnoreMouseEvents):

  • UIProcess/ios/WKScrollView.mm:

(-[WKScrollView _systemContentInset]):

  • UIProcess/ios/WKStylusDeviceObserver.mm:

(-[WKStylusDeviceObserver start]):
(-[WKStylusDeviceObserver stop]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::desktopClassBrowsingRecommended):

  • WebProcess/cocoa/WebProcessCocoa.mm:

Source/WebKitLegacy/mac:

  • DefaultDelegates/WebDefaultUIDelegate.mm:

(-[WebDefaultUIDelegate webView:dragDestinationActionMaskForDraggingInfo:]):

  • Misc/WebDownload.mm:

(shouldCallOnNetworkThread):

  • Misc/WebIconDatabase.mm:

(+[WebIconDatabase sharedIconDatabase]):

  • WebView/WebPreferencesDefaultValues.mm:

(WebKit::defaultAllowsPictureInPictureMediaPlayback):
(WebKit::defaultJavaScriptCanOpenWindowsAutomatically):
(WebKit::defaultPassiveTouchListenersAsDefaultOnDocument):
(WebKit::defaultRequiresUserGestureToLoadVideo):
(WebKit::defaultWebSQLEnabled):
(WebKit::defaultShouldRestrictBaseURLSchemes):
(WebKit::defaultShouldConvertInvalidURLsToBlank):
(WebKit::defaultPassiveWheelListenersAsDefaultOnDocument):
(WebKit::defaultWheelEventGesturesBecomeNonBlocking):

  • WebView/WebView.mm:

(needsLaBanquePostaleQuirks):

Source/WTF:

Move linkedOnOrAfter() and the associated SDKVersion enum to WTF from WebCore.
This precedes a series of patches that will adopt it in WTF and JavaScriptCore,
and then replace the underlying mechanism with a slightly more flexible one.

  • wtf/cocoa/RuntimeApplicationChecksCocoa.cpp:

(WTF::linkedOnOrAfter):

  • wtf/cocoa/RuntimeApplicationChecksCocoa.h:
5:02 PM Changeset in webkit [287736] by Russell Epstein
  • 8 edits in branches/safari-612.4.9.0-branch/Source

Versioning.

WebKit-7612.4.9.0.1

4:42 PM Changeset in webkit [287735] by Russell Epstein
  • 1 copy in tags/Safari-612.4.9.1.1

Tag Safari-612.4.9.1.1.

4:36 PM Changeset in webkit [287734] by Russell Epstein
  • 2 edits in branches/safari-612.4.9.1-branch/Source/WebKit

Cherry-pick r287651. rdar://problem/86338105

Fix the build

  • Shared/ios/WebIOSEventFactory.mm: (WebIOSEventFactory::createWebWheelEvent):

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

4:36 PM Changeset in webkit [287733] by Russell Epstein
  • 10 edits in branches/safari-612.4.9.1-branch/Source

Cherry-pick r287641. rdar://problem/86338105

Momentum Event Dispatcher: Momentum tails may get truncated if the duration runs longer than the system's
https://bugs.webkit.org/show_bug.cgi?id=234535
<rdar://problem/86338105>

Reviewed by Simon Fraser.

Source/WebKit:

Currently, synthetic momentum dispatch is strictly tied to the duration
of the real platform momentum phase, which has two unfortunate implications:

  • if our phase runs shorter than the platform phase, we'll keep dispatching zero-delta events until the platform momentum ends
  • more importantly, if our phase runs longer, it will be abruptly terminated when the platform momentum ends

In practice, our synthetic phase is very close in duration to the system one,
so the impact is minimal. But, to be safe, disentagle the two durations,
using a new bit from the platform to determine if the system momentum phase
was interrupted by the user (e.g. by tapping the trackpad) or naturally,
and ignoring the ended event in the natural case, allowing synthetic
events to continue being dispatched.

  • Shared/WebWheelEvent.cpp: (WebKit::WebWheelEvent::WebWheelEvent): (WebKit::WebWheelEvent::encode const): (WebKit::WebWheelEvent::decode):
  • Shared/WebWheelEvent.h: (WebKit::WebWheelEvent::momentumEndType const):
  • Shared/WebWheelEventCoalescer.cpp: (WebKit::WebWheelEventCoalescer::coalesce): Plumb momentumEndType along on WebWheelEvent. Platforms that don't provide information about the interruption reason will always say Unknown.
  • Shared/mac/WebEventFactory.mm: (WebKit::WebEventFactory::createWebWheelEvent): Only bother looking up the CGEvent/IOHIDEvent once, and extract all relevant details in one go.
  • WebProcess/WebPage/MomentumEventDispatcher.cpp: (WebKit::MomentumEventDispatcher::handleWheelEvent): Don't interrupt the synthetic momentum phase if the momentum-ended event comes from the natural end of the deceleration instead of an interruption (or an unknown reason).

Keep track of whether we're in the middle of a platform momentum phase
that we chose (at momentum-begin time) to override. When deciding
whether to eat an incoming event, take *both* this new bit and whether
we are currently in the middle of a synthetic phase into account. It
is important to continue eating incoming events in the case where
the synthetic phase ended early (so active became false) but the
platform phase continues.

(WebKit::MomentumEventDispatcher::dispatchSyntheticMomentumEvent):
(WebKit::MomentumEventDispatcher::didEndMomentumPhase):
Adjust some logging wording to be more precise.

(WebKit::MomentumEventDispatcher::setScrollingAccelerationCurve):
Make this log public so that the curve value is visible in logs.

(WebKit::MomentumEventDispatcher::consumeDeltaForCurrentTime):
Make consumeDeltaForCurrentTime inform the client via an optional when
we are at the end of the delta table.

(WebKit::MomentumEventDispatcher::displayWasRefreshed):
Stop the synthetic momentum phase as soon as we run out of deltas.

(WebKit::MomentumEventDispatcher::computeNextDelta):

  • WebProcess/WebPage/MomentumEventDispatcher.h:

Source/WTF:

  • wtf/PlatformHave.h: Add a HAVE for kIOHIDEventScrollMomentumInterrupted.

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

4:34 PM Changeset in webkit [287732] by Russell Epstein
  • 8 edits in branches/safari-612.4.9.1-branch/Source

Versioning.

WebKit-7612.4.9.1.1

4:18 PM Changeset in webkit [287731] by Wenson Hsieh
  • 73 edits in trunk/Source

Add a helper function that returns the value of a std::optional<T> or constructs T if needed
https://bugs.webkit.org/show_bug.cgi?id=234865

Reviewed by Darin Adler.

Source/WebCore:

Use valueOrDefault where appropriate. See WTF/ChangeLog for more details.

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::convert):
(WebCore::ApplePayPaymentHandler::didAuthorizePayment):

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::applyConstraints):

  • Modules/mediastream/RTCIceCandidate.cpp:

(WebCore::RTCIceCandidate::create):

  • Modules/webdatabase/SQLTransaction.cpp:

(WebCore::SQLTransaction::executeSql):

  • Modules/webxr/WebXRBoundedReferenceSpace.cpp:

(WebCore::WebXRBoundedReferenceSpace::updateIfNeeded):

  • dom/Document.cpp:
  • html/BaseDateAndTimeInputType.cpp:

(WebCore::BaseDateAndTimeInputType::setupDateTimeChooserParameters):

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::isPointInPathInternal):
(WebCore::CanvasRenderingContext2DBase::isPointInStrokeInternal):

  • layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:

(WebCore::Layout::LineBoxBuilder::build):

  • layout/formattingContexts/inline/InlineLineBoxVerticalAligner.cpp:

(WebCore::Layout::LineBoxVerticalAligner::computeLineBoxLogicalHeight const):

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::setUsedGeometryForCells):

  • loader/DocumentLoader.cpp:
  • loader/FrameLoader.cpp:
  • loader/PolicyChecker.cpp:
  • loader/ResourceLoader.cpp:
  • loader/SubresourceLoader.cpp:
  • loader/cache/CachedResource.cpp:
  • loader/cache/CachedResourceLoader.cpp:
  • page/EventHandler.cpp:

(WebCore::EventHandler::updateSelectionForMouseDrag):
(WebCore::EventHandler::lastKnownMousePosition const):
(WebCore::EventHandler::handleMouseMoveEvent):
(WebCore::EventHandler::handleMouseReleaseEvent):
(WebCore::EventHandler::targetPositionInWindowForSelectionAutoscroll const):
(WebCore::EventHandler::dispatchFakeMouseMoveEventSoonInQuad):
(WebCore::EventHandler::fakeMouseMoveEventTimerFired):
(WebCore::EventHandler::hoverTimerFired):

  • page/FrameView.cpp:

(WebCore::FrameView::setLayoutViewportOverrideRect):

  • page/Page.cpp:

(WebCore::Page::sampledPageTopColor const):

  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::targetPositionInWindowForSelectionAutoscroll const):

  • page/scrolling/ScrollingTreeLatchingController.cpp:

(WebCore::ScrollingTreeLatchingController::nodeDidHandleEvent):

  • platform/graphics/ShadowBlur.cpp:

(WebCore::ShadowBlur::calculateLayerBoundingRect):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::paintCurrentFrameInContext):

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::naturalSize):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setVisibleAndCoverageRects):

  • platform/graphics/transforms/TransformState.cpp:

(WebCore::TransformState::mappedPoint const):
(WebCore::TransformState::mapQuad const):
(WebCore::TransformState::flattenWithTransform):

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::systemPreviewInfo const):

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::filter):
(WebCore::ResourceResponseBase::sanitizeHTTPHeaderFieldsAccordingToTainting):

  • rendering/PaintInfo.h:

(WebCore::PaintInfo::applyTransform):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::relativePositionOffset const):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::computeAutoRepeatTracksCount const):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::updateLayerPositions):
(WebCore::RenderLayer::paintLayerByApplyingTransform):

  • rendering/RenderView.cpp:

(WebCore::RenderView::layout):

  • rendering/svg/LegacyRenderSVGRoot.cpp:

(WebCore::LegacyRenderSVGRoot::nodeAtPoint):

  • rendering/svg/RenderSVGContainer.cpp:

(WebCore::RenderSVGContainer::nodeAtFloatPoint):

  • rendering/svg/RenderSVGForeignObject.cpp:

(WebCore::RenderSVGForeignObject::nodeAtFloatPoint):

  • rendering/svg/RenderSVGImage.cpp:

(WebCore::RenderSVGImage::nodeAtFloatPoint):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::hitTestClipContent):

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::clippedOverflowRect const):
(WebCore::RenderSVGRoot::absoluteRects const):
(WebCore::RenderSVGRoot::absoluteQuads const):

  • rendering/svg/RenderSVGShape.cpp:

(WebCore::RenderSVGShape::nodeAtFloatPoint):

  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::nodeAtFloatPoint):

  • rendering/svg/SVGRenderSupport.cpp:

(WebCore::SVGRenderSupport::clipContextToCSSClippingArea):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::clipToImageBuffer):

  • svg/SVGAnimateMotionElement.cpp:

(WebCore::SVGAnimateMotionElement::calculateToAtEndOfDurationValue):
(WebCore::SVGAnimateMotionElement::calculateFromAndToValues):
(WebCore::SVGAnimateMotionElement::calculateFromAndByValues):

  • svg/SVGToOTFFontConversion.cpp:

(WebCore::SVGToOTFFontConverter::processGlyphElement):
(WebCore::SVGToOTFFontConverter::SVGToOTFFontConverter):

  • svg/properties/SVGPropertyTraits.h:

(WebCore::SVGPropertyTraits<FloatPoint>::fromString):
(WebCore::SVGPropertyTraits<FloatRect>::fromString):

  • testing/Internals.cpp:

(WebCore::Internals::frameIdentifier const):
(WebCore::Internals::pageIdentifier const):

  • workers/service/server/SWScriptStorage.cpp:

(WebCore::SWScriptStorage::SWScriptStorage):

Source/WebCore/PAL:

Use valueOrDefault where appropriate. See WTF/ChangeLog for more details.

  • pal/graphics/WebGPU/Impl/WebGPUComputePassEncoderImpl.cpp:

(PAL::WebGPU::ComputePassEncoderImpl::setBindGroup):

  • pal/graphics/WebGPU/Impl/WebGPURenderBundleEncoderImpl.cpp:

(PAL::WebGPU::RenderBundleEncoderImpl::setBindGroup):

  • pal/graphics/WebGPU/Impl/WebGPURenderPassEncoderImpl.cpp:

(PAL::WebGPU::RenderPassEncoderImpl::setBindGroup):

Source/WebKit:

Use valueOrDefault where appropriate. See WTF/ChangeLog for more details.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::scheduleResourceLoad):

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::ensureSWServer):

  • NetworkProcess/cache/NetworkCacheFileSystem.cpp:

(WebKit::NetworkCache::fileTimes):

  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::NetworkStorageManager):

  • UIProcess/Automation/SimulatedInputDispatcher.cpp:

(WebKit::SimulatedInputDispatcher::transitionInputSourceToState):

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::getPasteboardPathnamesForType):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::loadRequest):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessProxy.h:

(WebKit::WebProcessProxy::registrableDomain const):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::loadResource):
(WebKit::WebLoaderStrategy::scheduleLoad):
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::convertFromPDFViewToRootView const):
(WebKit::PDFPlugin::boundsOnScreen const):
(WebKit::PDFPlugin::geometryDidChange):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::runJavaScriptInFrameInScriptWorld):

  • WebProcess/cocoa/VideoFullscreenManager.mm:

(WebKit::VideoFullscreenManager::didEnterFullscreen):

Source/WTF:

Add a new helper function that returns the value of a given std::optional<Type> if it exists, and otherwise
constructs and returns Type { }. Currently, the alternative to this is writing out the Type { } in full when
passing in an argument to value_or; using this avoids some redundancy and makes the expression a bit easier to
read.

  • wtf/StdLibExtras.h:

(WTF::valueOrDefault):

4:06 PM Changeset in webkit [287730] by Russell Epstein
  • 1 copy in branches/safari-612.4.9.3-branch

New branch.

4:06 PM Changeset in webkit [287729] by Russell Epstein
  • 1 copy in branches/safari-612.4.9.2-branch

New branch.

4:06 PM Changeset in webkit [287728] by Russell Epstein
  • 1 copy in branches/safari-612.4.9.1-branch

New branch.

4:06 PM Changeset in webkit [287727] by Russell Epstein
  • 1 copy in branches/safari-612.4.9.0-branch

New branch.

3:57 PM Changeset in webkit [287726] by Russell Epstein
  • 1 copy in tags/Safari-612.4.9

Tag Safari-612.4.9.

3:56 PM Changeset in webkit [287725] by Russell Epstein
  • 1 delete in tags/Safari-612.4.9

Delete tag.

3:50 PM Changeset in webkit [287724] by mmaxfield@apple.com
  • 3 edits
    2 adds in trunk

REGRESSION(r281389): Text wraps unnecessarily within intrinsically-sized elements when using certain fonts and the inner HTML of the element contains a new line that is not preceded by a space
https://bugs.webkit.org/show_bug.cgi?id=232939
<rdar://problem/85254819>

Reviewed by Alan Bujtas.

Source/WebCore:

We need newline characters to have the same width as space characters for 2 reasons:

  1. Our code implicitly depends on it. We have places where we measure a newline character in one place,

and then later realize that we shouldn't have included its with so we subtract out the width of
the space character. (For more information, read the comments of this bugzilla bug.) This assumes
that the width of the newline character is equal to the width of the space character.

  1. We need it for correctness. Even if WebKit was entirely consistent about measuring the width of

newline characters, we don't want to have the width of an element depend on the width of the
newline character in the font. Every other browser forces newline characters to have the same
width as space characters. And, even if we weren't concerned about compatibility (we are),
we'd be producing bogus results because font designers aren't incentivized to put any meaningful
values in their fonts for the width of a newline character, since no software actually uses it.

Luckily, we already have our "charactersTreatedAsSpace" infrastructure, so we can just tweak it to have
it set characters which are treated as space, but aren't the tab character, to have the same width as
the space character.

Test: fast/text/newline-width.html

  • platform/graphics/WidthIterator.cpp:

(WebCore::WidthIterator::advanceInternal):

LayoutTests:

The div:before { position: absolute; } is necessary to trigger this bug; I assume it's necessary to
opt-out of IFC.

  • fast/text/newline-width-expected.html: Added.
  • fast/text/newline-width.html: Added.
3:42 PM Changeset in webkit [287723] by Lauro Moura
  • 2 edits in trunk/Tools

[GLIB] Make API test initialize localstorage to ensure the database file is created
https://bugs.webkit.org/show_bug.cgi?id=234891

Reviewed by Michael Catanzaro.

Changes needed after 245553@main/r287418 changed the localstorage
behavior to avoid creating an empty database file when reading empty
databases.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebsiteData.cpp:

(testWebsiteDataConfiguration):

3:42 PM Changeset in webkit [287722] by Russell Epstein
  • 1 copy in tags/Safari-612.4.9

Tag Safari-612.4.9.

3:41 PM Changeset in webkit [287721] by Russell Epstein
  • 1 copy in tags/Safari-612.4.8.1.1

Tag Safari-612.4.8.1.1.

3:39 PM Changeset in webkit [287720] by timothy_horton@apple.com
  • 15 edits in trunk/Source

Separate "linked-on-or-{before, after}-everything" override from the SDK version
https://bugs.webkit.org/show_bug.cgi?id=234930

Reviewed by Wenson Hsieh.

Source/WebCore:

  • platform/cocoa/VersionChecks.mm:

(WebCore::linkedOnOrAfter):
Make use of the new bit instead of checking for Safari's bundle identifier.

  • testing/js/WebCoreTestSupport.cpp:

(WebCoreTestSupport::setLinkedOnOrAfterEverythingForTesting):
Adopt the new bit.

Source/WebKit:

  • Shared/AuxiliaryProcess.h:
  • Shared/Cocoa/AuxiliaryProcessCocoa.mm:

(WebKit::AuxiliaryProcess::platformInitialize):

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:

(WebKit::XPCServiceInitializer):

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm:

(WebKit::XPCServiceInitializerDelegate::getLinkedOnOrAfterOverride):
Plumb the LOA override optional through process initialization (just like
we do for SDK version, because linkedOnOrAfter() is used VERY early in
JavaScriptCore initialization).

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(+[WKProcessPool _setLinkedOnOrBeforeEverythingForTesting]):
(+[WKProcessPool _setLinkedOnOrAfterEverythingForTesting]):
(+[WKProcessPool _setLinkedOnOrAfterEverything]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

Expose non-testing SPI for Safari to opt in to "linked-on-or-after-everything"
so that we can (eventually) stop using a bundle identifier check.

  • UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm:

(WebKit::ProcessLauncher::launchProcess):

  • UIProcess/WebProcessPool.cpp:

Initialize the LOA override using the same logic we previously used in linkedOnOrAfter().

Source/WTF:

  • wtf/cocoa/RuntimeApplicationChecksCocoa.cpp:

(WTF::linkedOnOrAfterOverrideValue):
(WTF::setLinkedOnOrAfterOverride):
(WTF::linkedOnOrAfterOverride):

  • wtf/cocoa/RuntimeApplicationChecksCocoa.h:

Add an explicit optional bit for "this application should pretend to be
linked on or {after, before} everything" instead of just overriding the
SDK version. This is a prerequisite for getting rid of applicationSDKVersion(),
which will happen in a future patch.

This is in WTF because linkedOnOrAfter() is going to move here in a
future patch as well.

3:18 PM Changeset in webkit [287719] by Jonathan Bedard
  • 2 edits in trunk/Tools

[EWS] Support pull-requests in ConfigureBuild
https://bugs.webkit.org/show_bug.cgi?id=234848
<rdar://problem/87094989>

Reviewed by Dewei Zhu.

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

(GitHubMixin.pr_url): Map pull-request number to URL.
(GitHubMixin.get_pull_request_number): Check if the event triggering
this was a pull_request, and the specified branch can be mapped to a
pull-request.
(ConfigureBuild.start): Add pull-request details.
(ConfigureBuild.add_pr_details): Ditto.

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

3:00 PM Changeset in webkit [287718] by stephan.szabo@sony.com
  • 4 edits in trunk

[PlayStation] Fix build break after r287698
https://bugs.webkit.org/show_bug.cgi?id=234931

Unreviewed build fix

.:

  • Source/cmake/OptionsPlayStation.cmake: Workaround for not having u8string for gtest.

Source/WTF:

  • wtf/PlatformHave.h: Use MISSING_STD_FILESYSTEM_PATH_CONSTRUCTOR on PlayStation
2:31 PM Changeset in webkit [287717] by Russell Epstein
  • 3 edits
    2 deletes in branches/safari-612-branch

Revert "Apply patch. rdar://problem/87124847"

This reverts commit r287709.

1:02 PM Changeset in webkit [287716] by Fujii Hironori
  • 2 edits in trunk

[MSVC] Suppress new warnings C5054 and C5055 introduced by /permissive-
https://bugs.webkit.org/show_bug.cgi?id=234929

Reviewed by Ross Kirsling.

After 245790@main enabled C++20 which implicitly enabled
/permissive- switch, WinCairo builds emit a lot of new compilation
warnings.

  • Source/cmake/OptionsMSVC.cmake: Suppress the warnings.
1:01 PM Changeset in webkit [287715] by youenn@apple.com
  • 6 edits in trunk/Source

Microphone device filtering heuristic is too harsh
https://bugs.webkit.org/show_bug.cgi?id=234596
<rdar://problem/86803287>

Reviewed by Eric Carlson.

Source/WebCore:

When audio capture happens, there are more audio devices and some audio devices get an input stream for echo cancellation.
We add an API to disable that filtering which is used when capture is not done in the process where audio enumeration is done.
A longer term solution should look at doing this filtering in all cases.

Manually tested in Safari and Minibrowser.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:
  • platform/mediastream/mac/CoreAudioCaptureDeviceManager.h:

Source/WebKit:

  • UIProcess/WebPageProxy.cpp:

Disable filtering if audio capture happens in GPUProcess.

12:51 PM Changeset in webkit [287714] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

A gentle momentum scroll into an edge sometimes fails to rubberband, stopping abruptly
https://bugs.webkit.org/show_bug.cgi?id=234896

Reviewed by Tim Horton.

During the momentum phase of a scroll gesture we can hit the edge and try to determine that
we should start a rubberband animation. If, at this time, we happen to be at the edge, then
we'd fail to start the animation and the momentum would appear to stop abruptly.

Two fixes were needed. First,
ScrollingEffectsController::startRubberBandAnimationIfNecessary() looks at whether we're
currently stretched, but we might be passing through the edge on the way into a rubberband,
so also need to check for a stretch force.

Second, ScrollAnimationRubberBand needs to not stop prematurely if, in its first callback,
it's still at the edge even though it's animating into a rubberband. The easy fix here is to
just avoid completion during the first few frames.

I was unable to make a reliable layout test for this.

  • platform/mac/ScrollAnimationRubberBand.mm:

(WebCore::ScrollAnimationRubberBand::serviceAnimation):

  • platform/mac/ScrollingEffectsController.mm:

(WebCore::ScrollingEffectsController::startRubberBandAnimationIfNecessary):

12:32 PM Changeset in webkit [287713] by Russell Epstein
  • 1 copy in tags/Safari-613.1.12.1.3

Tag Safari-613.1.12.1.3.

12:21 PM Changeset in webkit [287712] by ntim@apple.com
  • 22 edits
    2 adds
    2 deletes in trunk

Unprefix -webkit-print-color-adjust CSS property
https://bugs.webkit.org/show_bug.cgi?id=201098

Reviewed by Darin Adler.

color-adjust is also a deprecated shorthand that just contains print-color-adjust.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json:
  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):

Source/WebInspectorUI:

  • UserInterface/Models/CSSKeywordCompletions.js:

LayoutTests:

  • fast/css/getComputedStyle/computed-style-expected.txt:
  • fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • fast/css/getComputedStyle/resources/property-names.js:
  • fast/css/print-color-adjust-expected.txt: Added.
  • fast/css/print-color-adjust.html: Added.
  • fast/css/webkit-color-adjust-expected.txt: Removed.
  • fast/css/webkit-color-adjust.html: Removed.
  • platform/glib/fast/css/getComputedStyle/computed-style-expected.txt:
  • platform/glib/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • platform/glib/svg/css/getComputedStyle-basic-expected.txt:
  • platform/ios/fast/css/getComputedStyle/computed-style-expected.txt:
  • platform/ios/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/ios/svg/css/getComputedStyle-basic-expected.txt:
  • svg/css/getComputedStyle-basic-expected.txt:
  • webgl/webgl-oom-paint-document-no-crash.html:
12:13 PM Changeset in webkit [287711] by youenn@apple.com
  • 3 edits
    2 adds in trunk

ReadableStream::lock should check whether there is an exception when getting ReadableStreamDefaultReader private constructor
https://bugs.webkit.org/show_bug.cgi?id=234890

Source/WebCore:

Reviewed by Frédéric Wang and Mark Lam.

Do in ReadableStream::lock like we are doing when getting ReadableStream private constructor in ReadableStream::create.
For that reason, introduce a invokeConstructor utility function.

Test: streams/readable-stream-lock-after-worker-terminates-crash.html

  • bindings/js/ReadableStream.cpp:

LayoutTests:

Reviewed by Frédéric Wang.

  • streams/readable-stream-lock-after-worker-terminates-crash-expected.txt: Added.
  • streams/readable-stream-lock-after-worker-terminates-crash.html: Added.
12:04 PM Changeset in webkit [287710] by Said Abou-Hallawa
  • 3 edits
    2 adds in trunk

REGRESSION(r285618):A crash may happen when calculating the color-interpolation of a referenced SVG filter
https://bugs.webkit.org/show_bug.cgi?id=234918
rdar://86928631

Reviewed by Simon Fraser.

Source/WebCore:

When building a referenced SVGFilter, the color-interpolation property
of the effect element is needed. If the effect element does not have a
renderer, we fallback to the computed style property value. And if the
SVG filter is inside an <iframe> which has media queries, a Document::
updateLayout() will be forced. Building the SVGFilter should not invoke
an updateLayout() since this may not be safe and out of order.

Test: css3/filters/reference-filter-color-interpolation-update-layout.html

  • svg/graphics/filters/SVGFilterBuilder.cpp:

(WebCore::colorInterpolationForElement):

LayoutTests:

  • css3/filters/reference-filter-color-interpolation-update-layout-expected.txt: Added.
  • css3/filters/reference-filter-color-interpolation-update-layout.html: Added.
12:01 PM Changeset in webkit [287709] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-612-branch

Apply patch. rdar://problem/87124847

11:59 AM Changeset in webkit [287708] by graouts@webkit.org
  • 3 edits in trunk/Source/WebCore

Remove Animation::operator=
https://bugs.webkit.org/show_bug.cgi?id=234915

Reviewed by Yusuke Suzuki.

This doesn't seem to be required, so let's remove it.

  • platform/animation/Animation.cpp:

(WebCore::Animation::operator=): Deleted.

  • platform/animation/Animation.h:
11:57 AM Changeset in webkit [287707] by graouts@webkit.org
  • 17 edits in trunk

[Web Animations] inserting a rule within a @keyframes rule should update animations
https://bugs.webkit.org/show_bug.cgi?id=234895

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Mark WPT progressions.

  • web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative-expected.txt:
  • web-platform-tests/css/css-animations/KeyframeEffect-setKeyframes.tentative-expected.txt:

Source/WebCore:

Using the CSSOM, it is possible to insert or delete rules within an @keyframes rule.
In fact, there are two WPT that check this behavior with the getKeyframes() and
setKeyframes() methods.

This would not have any effect until now because when we consider whether to invalidate
animations in Styleable::updateCSSAnimations(), we look at the previous and current
AnimationList and don't see any difference because we look, as far as keyframes are
concerned, at the @keyframes name but not at the keyframes content.

Now, when a rule is added or deleted from an @keyframes rule using the CSSOM, we notify
the Document using the new keyframesRuleDidChange() method, which in turn checks all
CSSAnimation objects applied to elements in that document using that @keyframes rule
and notifies them of the change by calling keyframesRuleDidChange().

This clears the keyframes on the associated KeyframeEffect, invalidates the target
and sets a flag on the ElementAnimationRareData that this element is pending update
to its CSS Animations' keyframe such that during the next call
Styleable::updateCSSAnimations() we force the update even if the previous and current
AnimationList look identical.

During that next call to Styleable::updateCSSAnimations(), we will call into the new
CSSAnimation::updateKeyframesIfNeeded() which will re-compute the keyframes based on the
current set of rules within the @keyframes rule.

The final piece of work required is to track when setKeyframes() is called on the effect
that updates to the @keyframes rule should no longer apply since they keyframes were overriden
by the Web Animations API. This is done by setting an additional flag in
CSSAnimation::effectKeyframesWereSetUsingBindings().

  • animation/CSSAnimation.cpp:

(WebCore::CSSAnimation::effectKeyframesWereSetUsingBindings):
(WebCore::CSSAnimation::keyframesRuleDidChange):
(WebCore::CSSAnimation::updateKeyframesIfNeeded):

  • animation/CSSAnimation.h:
  • animation/ElementAnimationRareData.h:

(WebCore::ElementAnimationRareData::cssAnimationsDidUpdate):
(WebCore::ElementAnimationRareData::keyframesRuleDidChange):
(WebCore::ElementAnimationRareData::hasPendingKeyframesUpdate const):

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::keyframesRuleDidChange):

  • animation/KeyframeEffect.h:
  • css/CSSStyleSheet.cpp:

(WebCore::CSSStyleSheet::didMutateRules):
(WebCore::CSSStyleSheet::RuleMutationScope::RuleMutationScope):
(WebCore::CSSStyleSheet::RuleMutationScope::~RuleMutationScope):

  • css/CSSStyleSheet.h:
  • dom/Document.cpp:

(WebCore::Document::keyframesRuleDidChange):

  • dom/Document.h:
  • dom/Element.cpp:

(WebCore::Element::cssAnimationsDidUpdate):
(WebCore::Element::keyframesRuleDidChange):
(WebCore::Element::hasPendingKeyframesUpdate const):

  • dom/Element.h:
  • style/Styleable.cpp:

(WebCore::Styleable::updateCSSAnimations const):

  • style/Styleable.h:

(WebCore::Styleable::keyframesRuleDidChange const):

11:47 AM Changeset in webkit [287706] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebKit

Cherry-pick r287651. rdar://problem/86338105

Fix the build

  • Shared/ios/WebIOSEventFactory.mm: (WebIOSEventFactory::createWebWheelEvent):

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

11:47 AM Changeset in webkit [287705] by Russell Epstein
  • 10 edits in branches/safari-612-branch/Source

Cherry-pick r287641. rdar://problem/86338105

Momentum Event Dispatcher: Momentum tails may get truncated if the duration runs longer than the system's
https://bugs.webkit.org/show_bug.cgi?id=234535
<rdar://problem/86338105>

Reviewed by Simon Fraser.

Source/WebKit:

Currently, synthetic momentum dispatch is strictly tied to the duration
of the real platform momentum phase, which has two unfortunate implications:

  • if our phase runs shorter than the platform phase, we'll keep dispatching zero-delta events until the platform momentum ends
  • more importantly, if our phase runs longer, it will be abruptly terminated when the platform momentum ends

In practice, our synthetic phase is very close in duration to the system one,
so the impact is minimal. But, to be safe, disentagle the two durations,
using a new bit from the platform to determine if the system momentum phase
was interrupted by the user (e.g. by tapping the trackpad) or naturally,
and ignoring the ended event in the natural case, allowing synthetic
events to continue being dispatched.

  • Shared/WebWheelEvent.cpp: (WebKit::WebWheelEvent::WebWheelEvent): (WebKit::WebWheelEvent::encode const): (WebKit::WebWheelEvent::decode):
  • Shared/WebWheelEvent.h: (WebKit::WebWheelEvent::momentumEndType const):
  • Shared/WebWheelEventCoalescer.cpp: (WebKit::WebWheelEventCoalescer::coalesce): Plumb momentumEndType along on WebWheelEvent. Platforms that don't provide information about the interruption reason will always say Unknown.
  • Shared/mac/WebEventFactory.mm: (WebKit::WebEventFactory::createWebWheelEvent): Only bother looking up the CGEvent/IOHIDEvent once, and extract all relevant details in one go.
  • WebProcess/WebPage/MomentumEventDispatcher.cpp: (WebKit::MomentumEventDispatcher::handleWheelEvent): Don't interrupt the synthetic momentum phase if the momentum-ended event comes from the natural end of the deceleration instead of an interruption (or an unknown reason).

Keep track of whether we're in the middle of a platform momentum phase
that we chose (at momentum-begin time) to override. When deciding
whether to eat an incoming event, take *both* this new bit and whether
we are currently in the middle of a synthetic phase into account. It
is important to continue eating incoming events in the case where
the synthetic phase ended early (so active became false) but the
platform phase continues.

(WebKit::MomentumEventDispatcher::dispatchSyntheticMomentumEvent):
(WebKit::MomentumEventDispatcher::didEndMomentumPhase):
Adjust some logging wording to be more precise.

(WebKit::MomentumEventDispatcher::setScrollingAccelerationCurve):
Make this log public so that the curve value is visible in logs.

(WebKit::MomentumEventDispatcher::consumeDeltaForCurrentTime):
Make consumeDeltaForCurrentTime inform the client via an optional when
we are at the end of the delta table.

(WebKit::MomentumEventDispatcher::displayWasRefreshed):
Stop the synthetic momentum phase as soon as we run out of deltas.

(WebKit::MomentumEventDispatcher::computeNextDelta):

  • WebProcess/WebPage/MomentumEventDispatcher.h:

Source/WTF:

  • wtf/PlatformHave.h: Add a HAVE for kIOHIDEventScrollMomentumInterrupted.

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

11:44 AM Changeset in webkit [287704] by Andres Gonzalez
  • 2 edits in trunk/Source/WebCore

Replace WTFMove + clear with std::exchange for AXObjectCache notification queues.
https://bugs.webkit.org/show_bug.cgi?id=234919
<rdar://problem/87194936>

Reviewed by Chris Fleizach.

Code clean up, per Darin Adler's comment in
https://bugs.webkit.org/show_bug.cgi?id=234355.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::notificationPostTimerFired):
(WebCore::AXObjectCache::passwordNotificationPostTimerFired):

11:41 AM Changeset in webkit [287703] by Russell Epstein
  • 2 edits in branches/safari-612.4.8.1-branch/Source/WebKit

Cherry-pick r287651. rdar://problem/86338105

Fix the build

  • Shared/ios/WebIOSEventFactory.mm: (WebIOSEventFactory::createWebWheelEvent):

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

11:41 AM Changeset in webkit [287702] by Russell Epstein
  • 10 edits in branches/safari-612.4.8.1-branch/Source

Cherry-pick r287641. rdar://problem/86338105

Momentum Event Dispatcher: Momentum tails may get truncated if the duration runs longer than the system's
https://bugs.webkit.org/show_bug.cgi?id=234535
<rdar://problem/86338105>

Reviewed by Simon Fraser.

Source/WebKit:

Currently, synthetic momentum dispatch is strictly tied to the duration
of the real platform momentum phase, which has two unfortunate implications:

  • if our phase runs shorter than the platform phase, we'll keep dispatching zero-delta events until the platform momentum ends
  • more importantly, if our phase runs longer, it will be abruptly terminated when the platform momentum ends

In practice, our synthetic phase is very close in duration to the system one,
so the impact is minimal. But, to be safe, disentagle the two durations,
using a new bit from the platform to determine if the system momentum phase
was interrupted by the user (e.g. by tapping the trackpad) or naturally,
and ignoring the ended event in the natural case, allowing synthetic
events to continue being dispatched.

  • Shared/WebWheelEvent.cpp: (WebKit::WebWheelEvent::WebWheelEvent): (WebKit::WebWheelEvent::encode const): (WebKit::WebWheelEvent::decode):
  • Shared/WebWheelEvent.h: (WebKit::WebWheelEvent::momentumEndType const):
  • Shared/WebWheelEventCoalescer.cpp: (WebKit::WebWheelEventCoalescer::coalesce): Plumb momentumEndType along on WebWheelEvent. Platforms that don't provide information about the interruption reason will always say Unknown.
  • Shared/mac/WebEventFactory.mm: (WebKit::WebEventFactory::createWebWheelEvent): Only bother looking up the CGEvent/IOHIDEvent once, and extract all relevant details in one go.
  • WebProcess/WebPage/MomentumEventDispatcher.cpp: (WebKit::MomentumEventDispatcher::handleWheelEvent): Don't interrupt the synthetic momentum phase if the momentum-ended event comes from the natural end of the deceleration instead of an interruption (or an unknown reason).

Keep track of whether we're in the middle of a platform momentum phase
that we chose (at momentum-begin time) to override. When deciding
whether to eat an incoming event, take *both* this new bit and whether
we are currently in the middle of a synthetic phase into account. It
is important to continue eating incoming events in the case where
the synthetic phase ended early (so active became false) but the
platform phase continues.

(WebKit::MomentumEventDispatcher::dispatchSyntheticMomentumEvent):
(WebKit::MomentumEventDispatcher::didEndMomentumPhase):
Adjust some logging wording to be more precise.

(WebKit::MomentumEventDispatcher::setScrollingAccelerationCurve):
Make this log public so that the curve value is visible in logs.

(WebKit::MomentumEventDispatcher::consumeDeltaForCurrentTime):
Make consumeDeltaForCurrentTime inform the client via an optional when
we are at the end of the delta table.

(WebKit::MomentumEventDispatcher::displayWasRefreshed):
Stop the synthetic momentum phase as soon as we run out of deltas.

(WebKit::MomentumEventDispatcher::computeNextDelta):

  • WebProcess/WebPage/MomentumEventDispatcher.h:

Source/WTF:

  • wtf/PlatformHave.h: Add a HAVE for kIOHIDEventScrollMomentumInterrupted.

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

11:38 AM Changeset in webkit [287701] by Russell Epstein
  • 8 edits in branches/safari-612.4.8.1-branch/Source

Versioning.

WebKit-7612.4.8.1.1

11:19 AM Changeset in webkit [287700] by Russell Epstein
  • 1 copy in branches/safari-612.4.8.1-branch

New branch.

10:58 AM Changeset in webkit [287699] by timothy_horton@apple.com
  • 5 edits in trunk/Source

Always assume Safari is "linked-on-or-after" any SDK version
https://bugs.webkit.org/show_bug.cgi?id=234914

Reviewed by Aditya Keerthi.

Source/WebCore:

  • platform/cocoa/VersionChecks.h:
  • platform/cocoa/VersionChecks.mm:

(WebCore::linkedOnOrAfter):
Remove the AssumeSafariIsAlwaysLinkedOnAfter::No mechanism, which no longer
has any clients.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):
Get rid of this special-case AssumeSafariIsAlwaysLinkedOnAfter::No,
from r244203, because we no longer target versions of macOS that
ship with versions of Safari that require this special case.

10:14 AM Changeset in webkit [287698] by achristensen@apple.com
  • 59 edits in trunk

Start using C++20
https://bugs.webkit.org/show_bug.cgi?id=233963

Reviewed by Yusuke Suzuki.

.:

  • Source/cmake/OptionsCommon.cmake:
  • Source/cmake/WebKitCompilerFlags.cmake:

Source/bmalloc:

  • Configurations/Base.xcconfig:

Source/JavaScriptCore:

  • Configurations/Base.xcconfig:
  • Configurations/JavaScriptCore.xcconfig:
  • DerivedSources.make:
  • heap/Heap.cpp:

(JSC::Heap::addCoreConstraints):

  • runtime/CachedTypes.cpp:
  • runtime/LiteralParser.h:
  • shell/PlatformPlayStation.cmake:

Source/ThirdParty:

  • gtest/xcode/Config/General.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/Base.xcconfig:
  • Source/webrtc/rtc_base/system/no_unique_address.h:

Source/WebCore:

  • Configurations/Base.xcconfig:
  • DerivedSources.make:
  • platform/graphics/cocoa/IOSurface.mm:

(WebCore::IOSurface::ensurePlatformContext):

  • platform/ios/wak/WebCoreThread.mm:

Source/WebCore/PAL:

  • Configurations/Base.xcconfig:

Source/WebGPU:

  • Configurations/Base.xcconfig:

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:

Source/WebKit:

  • Configurations/Base.xcconfig:
  • PlatformMac.cmake:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _setInlineMediaPlaybackRequiresPlaysInlineAttribute:]):

Source/WebKitLegacy:

  • PlatformMac.cmake:

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:
  • Configurations/WebKitLegacy.xcconfig:
  • MigrateHeaders.make:

Source/WTF:

  • Configurations/Base.xcconfig:
  • wtf/DisallowCType.h:
  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::toStdFileSystemPath):
(WTF::FileSystemImpl::fromStdFileSystemPath):

  • wtf/PlatformHave.h:
  • wtf/VectorTraits.h:
  • wtf/text/StringOperators.h:

Tools:

  • DumpRenderTree/DerivedSources.make:
  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • MiniBrowser/Configurations/Base.xcconfig:
  • MobileMiniBrowser/Configurations/Base.xcconfig:
  • TestWebKitAPI/Configurations/Base.xcconfig:
  • TestWebKitAPI/Tests/WTF/Expected.cpp:

(TestWebKitAPI::NonCopyable::NonCopyable):

  • TestWebKitAPI/Tests/WTF/URLParser.cpp:

(TestWebKitAPI::TEST_F):

  • WebKitTestRunner/Configurations/Base.xcconfig:
  • WebKitTestRunner/DerivedSources.make:
  • lldb/lldbWebKitTester/Configurations/Base.xcconfig:
10:04 AM Changeset in webkit [287697] by Aditya Keerthi
  • 2 edits in trunk/Source/WebCore

Prevent reentrancy in -[WebCoreThemeView window]
https://bugs.webkit.org/show_bug.cgi?id=234258
<rdar://85927756>

Reviewed by Wenson Hsieh.

Prevent reentrancy in -[WebCoreThemeView window] by eagerly
initializing the window (when WebCoreThemeView is created).

WebCoreThemeView is already only created once per process (as a
static variable in ThemeMac::ensuredView), so a static variable
for the window is unnecessary.

  • platform/mac/ThemeMac.mm:

(-[WebCoreThemeView init]):
(-[WebCoreThemeView window]):

9:51 AM Changeset in webkit [287696] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

Tighten test expectation for imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html

Unreviewed.

  • TestExpectations: Test passes fine in Release -this is an assertion issue in Debug.
9:25 AM Changeset in webkit [287695] by Russell Epstein
  • 2 edits in branches/safari-613.1.12.1-branch/Source/WebKit

Cherry-pick r287648. rdar://problem/86870109

[iOS][WP] Unable to consume mach extension
https://bugs.webkit.org/show_bug.cgi?id=234889
<rdar://86870109>

Reviewed by Brent Fulgham.

The WebContent process on iOS is unable to consume mach extensions to the frontboard service.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:

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

9:25 AM Changeset in webkit [287694] by Russell Epstein
  • 5 edits in branches/safari-613.1.12.1-branch/Source/WebKit

Cherry-pick r287616. rdar://problem/85990387

[macCatalyst][GPUP][NetworkProcess] Block WindowServer connections
https://bugs.webkit.org/show_bug.cgi?id=234432
<rdar://problem/85990387>

Reviewed by Brent Fulgham.

Block WindowServer connections on macCatalyst.

  • GPUProcess/mac/GPUProcessMac.mm: (WebKit::GPUProcess::initializeProcess):
  • NetworkProcess/mac/NetworkProcessMac.mm: (WebKit::NetworkProcess::initializeProcess):
  • Shared/Cocoa/AuxiliaryProcessCocoa.mm: (WebKit::AuxiliaryProcess::setApplicationIsDaemon):
  • WebAuthnProcess/mac/WebAuthnProcessMac.mm: (WebKit::WebAuthnProcess::initializeProcess):

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

9:21 AM Changeset in webkit [287693] by Chris Dumez
  • 28 edits
    2 deletes in trunk

Drop implementation for COOP / COEP violation reporting
https://bugs.webkit.org/show_bug.cgi?id=234899

Reviewed by Geoffrey Garen.

Source/WebCore:

Drop implementation for COOP / COEP violation reporting. The implementation was based on an outdated version of the specification
and has never shipped. Many COOP/COEP reporting tests are also flaky.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • loader/CrossOriginEmbedderPolicy.cpp:

(WebCore::contextURLForReport): Deleted.
(WebCore::sendCOEPPolicyInheritenceViolation): Deleted.
(WebCore::sendCOEPCORPViolation): Deleted.

  • loader/CrossOriginEmbedderPolicy.h:
  • loader/CrossOriginOpenerPolicy.cpp:

(WebCore::enforceResponseCrossOriginOpenerPolicy):
(WebCore::doCrossOriginOpenerHandlingOfResponse):
(WebCore::crossOriginOpenerPolicyValueToEffectivePolicyString): Deleted.
(WebCore::sendViolationReportWhenNavigatingToCOOPResponse): Deleted.
(WebCore::sendViolationReportWhenNavigatingAwayFromCOOPResponse): Deleted.

  • loader/CrossOriginOpenerPolicy.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::doCrossOriginOpenerHandlingOfResponse):
(WebCore::DocumentLoader::responseReceived):

  • loader/PingLoader.cpp:

(WebCore::PingLoader::sendReportToEndpoint): Deleted.

  • loader/PingLoader.h:
  • loader/ReportingEndpointsCache.cpp: Removed.

(WebCore::ReportingEndpointsCache::Endpoint::Endpoint): Deleted.
(WebCore::ReportingEndpointsCache::Endpoint::hasExpired const): Deleted.
(WebCore::ReportingEndpointsCache::create): Deleted.
(WebCore::ReportingEndpointsCache::addEndpointsFromResponse): Deleted.
(WebCore::ReportingEndpointsCache::addEndpointsFromReportToHeader): Deleted.
(WebCore::ReportingEndpointsCache::addEndpointFromDictionary): Deleted.
(WebCore::ReportingEndpointsCache::endpointURL const): Deleted.

  • loader/ReportingEndpointsCache.h: Removed.
  • page/Page.cpp:
  • page/Page.h:

(WebCore::Page::reportingEndpointsCache): Deleted.

  • page/PageConfiguration.cpp:
  • page/PageConfiguration.h:

Source/WebKit:

Drop implementation for COOP / COEP violation reporting. The implementation was based on an outdated version of the specification
and has never shipped. Many COOP/COEP reporting tests are also flaky.

  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::performCORPCheck):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::shouldInterruptNavigationForCrossOriginEmbedderPolicy):
(WebKit::NetworkResourceLoader::shouldInterruptWorkerLoadForCrossOriginEmbedderPolicy):
(WebKit::NetworkResourceLoader::doCrossOriginOpenerHandlingOfResponse):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_appHighlightsVisible):
(WebKit::WebPage::sendCOEPPolicyInheritenceViolation): Deleted.
(WebKit::WebPage::sendCOEPCORPViolation): Deleted.
(WebKit::WebPage::sendViolationReportWhenNavigatingToCOOPResponse): Deleted.
(WebKit::WebPage::sendViolationReportWhenNavigatingAwayFromCOOPResponse): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::WebProcess):

  • WebProcess/WebProcess.h:

(WebKit::WebProcess::webSocketChannelManager):
(WebKit::WebProcess::reportingEndpointsCache): Deleted.

LayoutTests:

Skip all COOP / COEP reporting tests instead of marking individual tests as flaky or failing.

  • TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
9:15 AM Changeset in webkit [287692] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Drop unnecessary data member in WorkerThreadableLoader
https://bugs.webkit.org/show_bug.cgi?id=234907

Reviewed by Youenn Fablet.

Drop unnecessary data member in WorkerThreadableLoader. It is unused and holding a strong
reference to the WorkerGlobalScope for an extended period of time can lead to issues such
as Bug 230109.

  • loader/WorkerThreadableLoader.cpp:

(WebCore::WorkerThreadableLoader::WorkerThreadableLoader):

  • loader/WorkerThreadableLoader.h:
9:15 AM Changeset in webkit [287691] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-613.1.12.1-branch

Cherry-pick r287417. rdar://problem/86841302

REGRESSION(Containment) nullptr deref in RenderBox::styleDidChange
https://bugs.webkit.org/show_bug.cgi?id=234647
<rdar://86841302>

Reviewed by Simon Fraser.

Source/WebCore:

Do not try to propagate the writing mode to the RenderView unless we are attached to one.

Test: fast/dynamic/document-elment-renderer-null-crash.html

  • rendering/RenderBox.cpp: (WebCore::RenderBox::styleDidChange):

LayoutTests:

  • fast/dynamic/document-elment-renderer-null-crash-expected.txt: Added.
  • fast/dynamic/document-elment-renderer-null-crash.html: Added.

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

9:06 AM Changeset in webkit [287690] by Russell Epstein
  • 9 edits in branches/safari-613.1.12.1-branch/Source

Versioning.

WebKit-7613.1.12.1.3

9:00 AM Changeset in webkit [287689] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Potential high CPU usage on macrumors.com
https://bugs.webkit.org/show_bug.cgi?id=234867
<rdar://85382450>

Reviewed by Geoffrey Garen.

The issue would occur when a suspended EventLoopTaskGroup had pending tasks and was getting marked
as ready to stop. The "ready to stop" concept was introduced in r269227 so that we would only stop
event loop groups for a given origin once all groups in that origin are ready to stop. This was so
that promises from detached iframes could resolve when scripted from another frame. The bug here
was that an EventLoopTaskGroup could move from "Suspended" state (a mode in which its tasks are not
executed) and into a "ReadyToStop" state (a mode in which its tasks are executed until all groups
in its origin are ready to stop). As a result, we would take a EventLoopGroup out of suspended
state unintentionally. This was causing a rescheduling loop in DeferredPromise::callFunction()
which would cause high CPU usage. Because activeDOMObjectsAreSuspended() returns true,
callFunction() would not call the JS function and would instead schedule a task on the event loop
to do so. The exception here is that the event loop group is suspended too and thus the scheduled
task will not run until the ActiveDOMObjects (and the event loop group) get resumed (i.e. page is
restored from the back/forward cache). However, due to the bug above, the event loop group was
unexpected NOT suspended and would run the scheduled task on the next runloop iteration and
callFunction() would just keep rescheduling itself in a loop.

To address the issue, we now cancel all tasks in the group and stop it permanently when its state
moves from "suspended" to "ready to stop". The state moves from "suspended" to "ready to stop"
when a CachedPage gets destroyed. As this point, the tasks in this group will never run since
we're suspended and we'll never get out of suspension (ready to stop).

  • bindings/js/JSDOMPromiseDeferred.cpp:

(WebCore::DeferredPromise::callFunction):

  • dom/EventLoop.cpp:

(WebCore::EventLoop::resumeGroup):
(WebCore::EventLoop::run):
(WebCore::EventLoop::clearAllTasks):

  • dom/EventLoop.h:

(WebCore::EventLoopTaskGroup::markAsReadyToStop):
(WebCore::EventLoopTaskGroup::isStoppedPermanently const):
(WebCore::EventLoopTaskGroup::isSuspended const):
(WebCore::EventLoopTaskGroup::isStoppedPermanently): Deleted.
(WebCore::EventLoopTaskGroup::isSuspended): Deleted.

8:40 AM Changeset in webkit [287688] by Martin Robinson
  • 10 edits in trunk/LayoutTests/imported/w3c

REGRESSION (r287323): [iOS] 9 imported/w3c/web-platform-tests/css/css-transforms tests consistently failing
https://bugs.webkit.org/show_bug.cgi?id=234908
<rdar://problem/87172770>

Reviewed by Simon Fraser.

Adjust WPT trasnform reference test fuzziness for iOS. In some cases the reference
matches more closely and in other cases slightly less closely.

  • web-platform-tests/css/css-transforms/2d-rotate-001.html:
  • web-platform-tests/css/css-transforms/css-skew-002.html:
  • web-platform-tests/css/css-transforms/rotate_45deg.html:
  • web-platform-tests/css/css-transforms/rotate_x_45deg.html:
  • web-platform-tests/css/css-transforms/rotate_y_45deg.html:
  • web-platform-tests/css/css-transforms/skew-test1.html:
  • web-platform-tests/css/css-transforms/transform-percent-008.html:
  • web-platform-tests/css/css-transforms/ttwf-transform-skewx-001.html:
  • web-platform-tests/css/css-transforms/ttwf-transform-skewy-001.html:
8:35 AM Changeset in webkit [287687] by Jean-Yves Avenard
  • 11 edits in trunk/Source/WebCore

Content Filtering should be using SharedBuffer instead of copying its data
https://bugs.webkit.org/show_bug.cgi?id=234713
rdar://problem/86947433

Reviewed by Youenn Fablet.

We can directly construct the NSData used by ParentalControlsContentFilter
and NetworkExtensionContentFilter from the SharedBuffer.

No change in observable behaviour.

  • loader/ContentFilter.cpp:

(WebCore::ContentFilter::continueAfterDataReceived):

  • loader/ContentFilter.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::dataReceived):

  • platform/PlatformContentFilter.h:
  • platform/cocoa/NetworkExtensionContentFilter.h:
  • platform/cocoa/NetworkExtensionContentFilter.mm:

(WebCore::NetworkExtensionContentFilter::addData):

  • platform/cocoa/ParentalControlsContentFilter.h:
  • platform/cocoa/ParentalControlsContentFilter.mm:

(WebCore::ParentalControlsContentFilter::addData):

  • testing/MockContentFilter.cpp:

(WebCore::MockContentFilter::addData):

  • testing/MockContentFilter.h:
8:23 AM Changeset in webkit [287686] by Jonathan Bedard
  • 2 edits
    22 adds in trunk/Tools

[webkitbugspy] Initial library commit
https://bugs.webkit.org/show_bug.cgi?id=234400
<rdar://problem/86585683>

Reviewed by Dewei Zhu.

  • Tools/Scripts/libraries/webkitbugspy/MANIFEST.in: Added.
  • Tools/Scripts/libraries/webkitbugspy/README.md: Added.
  • Tools/Scripts/libraries/webkitbugspy/setup.py: Added.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/init.py: Added.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/bugzilla.py: Added.

(Tracker): Bugzilla implementation of generic isssue tracker.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/github.py: Added.

(Tracker): GitHub implementation of generic isssue tracker.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/issue.py: Added.

(Issue): Dynamically fetched generic Issue object referencing parent Tracker.
(Issue.Comment): Issue comment including author and timestamp.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/init.py: Added.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/base.py: Added.

(Base): Base class for mocking http based issue trackers.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/bugzilla.py: Added.

(Bugzilla): Partial mock of Bugzilla webserver.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/data.py: Added.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/github.py: Added.

(GitHub): Partial mock of GitHub webserver.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/tests/init.py: Added.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/tests/bugzilla_unittest.py: Added.

(TestBugzilla):

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/tests/github_unittest.py: Added.

(TestGitHub):

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/tests/user_unittest.py: Added.

(TestUser):

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/tracker.py: Added.

(Tracker): Generic base of all issue trackers.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/user.py: Added.

(User): User object tied to specific tracker.
(User.Encoder): User JSON encoder.
(User.Mapping): Mapping of user alias to User object.

  • Tools/Scripts/webkitpy/test/main.py:

(main): Add webkitbugspy to subdirectories to be tested.

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

7:57 AM Changeset in webkit [287685] by stephan.szabo@sony.com
  • 1 edit
    1 add in trunk/Source/bmalloc

[PlayStation] Fix non-ninja PlayStation build after r285853
https://bugs.webkit.org/show_bug.cgi?id=234922

Unreviewed build fix.

  • PlatformPlayStation.cmake: Added. For MSVS playstatino builds, compile as C++ to

avoid issues with the standard set being invalid.

7:31 AM Changeset in webkit [287684] by Jean-Yves Avenard
  • 173 edits in trunk/Source

Have CachedRawResourceClient and related networking actors use SharedBuffer.
https://bugs.webkit.org/show_bug.cgi?id=232424
rdar://84744687

Reviewed by Youenn Fablet.

Source/WebCore:

We modify all didReceiveData and related methods so that they no longer
use uint8_t*/int and instead use SharedBuffer.
We do the same for any intermediaries used by the various didReceiveData
implementations.
This will facilitate moving networking off the main thread in the GPU
process and allows to remove several memory allocations and copies at the
process boundaries.
We can now consider transfer the underlying SharedMemory created in
the network process all the way to the GPU process.

Fly-by fix: change FragmentedSharedBuffer type to SharedBuffer when appropriate.

No change in observable behaviour. Covered by all existing tests.

  • Modules/fetch/FetchBodyConsumer.cpp:

(WebCore::FetchBodyConsumer::append):

  • Modules/fetch/FetchBodyConsumer.h:
  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::blobChunk):

  • Modules/fetch/FetchBodyOwner.h:
  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::didReceiveData):

  • Modules/fetch/FetchLoader.h:
  • Modules/fetch/FetchLoaderClient.h:

(WebCore::FetchLoaderClient::didReceiveData):

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::BodyLoader::didReceiveData):
(WebCore::FetchResponse::consumeChunk):

  • Modules/fetch/FetchResponse.h:
  • Modules/model-element/HTMLModelElement.cpp:

(WebCore::HTMLModelElement::dataReceived):

  • Modules/model-element/HTMLModelElement.h:
  • Modules/streams/ReadableStreamSink.h:
  • fileapi/FileReaderLoader.cpp:

(WebCore::FileReaderLoader::didReceiveData):

  • fileapi/FileReaderLoader.h:
  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didReceiveDataImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didReceiveData):

  • inspector/NetworkResourcesData.cpp:

(WebCore::NetworkResourcesData::ResourceData::appendData):
(WebCore::NetworkResourcesData::maybeAddResourceData):

  • inspector/NetworkResourcesData.h:
  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::didReceiveResponse):
(WebCore::InspectorNetworkAgent::didReceiveData):
(WebCore::InspectorNetworkAgent::interceptRequestWithResponse):

  • inspector/agents/InspectorNetworkAgent.h:
  • loader/ContentFilter.cpp:

(WebCore::ContentFilter::deliverResourceData):

  • loader/ContentFilterClient.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::finishedLoading):
(WebCore::DocumentLoader::continueAfterContentPolicy):
(WebCore::DocumentLoader::commitLoad):
(WebCore::DocumentLoader::commitData):
(WebCore::DocumentLoader::dataReceived):
(WebCore::DocumentLoader::maybeCreateArchive):
(WebCore::DocumentLoader::maybeFinishLoadingMultipartContent):
(WebCore::DocumentLoader::dataReceivedThroughContentFilter):

  • loader/DocumentLoader.h:
  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::dataReceived):
(WebCore::DocumentThreadableLoader::didReceiveData):
(WebCore::DocumentThreadableLoader::didFinishLoading):
(WebCore::DocumentThreadableLoader::loadRequest):

  • loader/DocumentThreadableLoader.h:
  • loader/DocumentWriter.cpp:

(WebCore::DocumentWriter::addData):

  • loader/DocumentWriter.h:
  • loader/EmptyClients.cpp:

(WebCore::EmptyFrameLoaderClient::committedLoad):

  • loader/EmptyFrameLoaderClient.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::willLoadMediaElementURL):
(WebCore::FrameLoader::commitProvisionalLoad):
(WebCore::FrameLoader::loadResourceSynchronously):
(WebCore::FrameLoader::loadedResourceFromMemoryCache):

  • loader/FrameLoaderClient.h:
  • loader/MediaResourceLoader.cpp:

(WebCore::MediaResource::dataReceived):

  • loader/MediaResourceLoader.h:
  • loader/NetscapePlugInStreamLoader.cpp:

(WebCore::NetscapePlugInStreamLoader::didReceiveData):

  • loader/NetscapePlugInStreamLoader.h:
  • loader/ResourceLoadNotifier.cpp:

(WebCore::ResourceLoadNotifier::didReceiveData):
(WebCore::ResourceLoadNotifier::dispatchDidReceiveData):
(WebCore::ResourceLoadNotifier::sendRemainingDelegateMessages):

  • loader/ResourceLoadNotifier.h:
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::loadDataURL):
(WebCore::ResourceLoader::addBuffer):
(WebCore::ResourceLoader::didReceiveData):
(WebCore::ResourceLoader::didReceiveBuffer):

  • loader/ResourceLoader.h:
  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didReceiveBuffer):

  • loader/SubresourceLoader.h:
  • loader/SubstituteResource.h:

(WebCore::SubstituteResource::append):

  • loader/ThreadableLoaderClient.h:

(WebCore::ThreadableLoaderClient::didReceiveData):

  • loader/ThreadableLoaderClientWrapper.h:

(WebCore::ThreadableLoaderClientWrapper::didReceiveData):

  • loader/WorkerThreadableLoader.cpp:

(WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData):

  • loader/WorkerThreadableLoader.h:
  • loader/appcache/ApplicationCacheHost.cpp:

(WebCore::ApplicationCacheHost::mainResourceDataReceived):

  • loader/appcache/ApplicationCacheHost.h:
  • loader/appcache/ApplicationCacheResource.cpp:

(WebCore::ApplicationCacheResource::deliver):

  • loader/appcache/ApplicationCacheResourceLoader.cpp:

(WebCore::ApplicationCacheResourceLoader::dataReceived):

  • loader/appcache/ApplicationCacheResourceLoader.h:
  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::updateBufferInternal):
(WebCore::CachedImage::updateBuffer):
(WebCore::CachedImage::updateData):

  • loader/cache/CachedImage.h:
  • loader/cache/CachedRawResource.cpp:

(WebCore::CachedRawResource::calculateIncrementalDataChunk const):
(WebCore::CachedRawResource::updateBuffer):
(WebCore::CachedRawResource::updateData):
(WebCore::CachedRawResource::finishLoading):
(WebCore::CachedRawResource::notifyClientsDataWasReceived):
(WebCore::CachedRawResource::didAddClient):

  • loader/cache/CachedRawResource.h:
  • loader/cache/CachedRawResourceClient.h:

(WebCore::CachedRawResourceClient::dataReceived):

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::updateData):

  • loader/cache/CachedResource.h:
  • loader/ios/LegacyPreviewLoader.h:
  • loader/ios/LegacyPreviewLoader.mm:

(WebCore::LegacyPreviewLoader::didReceiveData):
(WebCore::LegacyPreviewLoader::previewConverterDidReceiveData):

  • page/EventSource.cpp:

(WebCore::EventSource::didReceiveData):

  • page/EventSource.h:
  • platform/SharedBuffer.cpp:

(WebCore::FragmentedSharedBuffer::takeData): Update due to DataSegmentVectorEntry::segment being const
(WebCore::FragmentedSharedBuffer::forEachSegmentAsSharedBuffer const): Add convenience method.
(WebCore::SharedBuffer::SharedBuffer):
(WebCore::SharedBufferDataView::SharedBufferDataView):
(WebCore::SharedBufferDataView::createSharedBuffer const):

  • platform/SharedBuffer.h: Make DataSegmentVectorEntry::segment const.

(WebCore::SharedBuffer::create):
(WebCore::SharedBuffer::SharedBuffer):

  • platform/graphics/PlatformMediaResourceLoader.h:

(WebCore::PlatformMediaResourceClient::dataReceived):

  • platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp:

(WebCore::WebCoreAVCFResourceLoader::dataReceived):

  • platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.h:
  • platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:

(WebCore::CachedResourceMediaLoader::dataReceived):
(WebCore::PlatformResourceMediaLoader::dataReceived):

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(CachedResourceStreamingClient::dataReceived):

  • platform/network/ResourceHandleClient.cpp:

(WebCore::ResourceHandleClient::didReceiveBuffer):

  • platform/network/ResourceHandleClient.h:

(WebCore::ResourceHandleClient::didReceiveData):

  • platform/network/SynchronousLoaderClient.cpp:

(WebCore::SynchronousLoaderClient::didReceiveData):

  • platform/network/SynchronousLoaderClient.h:
  • platform/network/cocoa/RangeResponseGenerator.mm:

(WebCore::RangeResponseGenerator::giveResponseToTaskIfBytesInRangeReceived):

  • platform/network/cocoa/WebCoreNSURLSession.h:
  • platform/network/cocoa/WebCoreNSURLSession.mm:

(WebCore::WebCoreNSURLSessionDataTaskClient::dataReceived):
(-[WebCoreNSURLSessionDataTask resource:receivedData:]):

  • platform/network/curl/CurlCacheManager.cpp:

(WebCore::CurlCacheManager::didReceiveData):

  • platform/network/curl/CurlCacheManager.h:
  • platform/network/curl/CurlDownload.cpp:

(WebCore::CurlDownload::curlDidReceiveData):

  • platform/network/curl/CurlDownload.h:
  • platform/network/curl/CurlMultipartHandle.cpp:

(WebCore::CurlMultipartHandle::didReceiveData):

  • platform/network/curl/CurlMultipartHandle.h:
  • platform/network/curl/CurlMultipartHandleClient.h:
  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::didReceiveData):
(WebCore::CurlRequest::didReceiveDataFromMultipart):

  • platform/network/curl/CurlRequest.h:
  • platform/network/curl/CurlRequestClient.h:
  • platform/network/curl/CurlResourceHandleDelegate.cpp:

(WebCore::CurlResourceHandleDelegate::curlDidReceiveData):

  • platform/network/curl/CurlResourceHandleDelegate.h:
  • platform/network/curl/CurlStream.cpp:

(WebCore::CurlStream::tryToReceive):

  • platform/network/curl/CurlStream.h:
  • platform/network/curl/SocketStreamHandleImpl.h:
  • platform/network/curl/SocketStreamHandleImplCurl.cpp:

(WebCore::SocketStreamHandleImpl::didReceiveData):

  • platform/network/ios/LegacyPreviewLoaderClient.h:

(WebCore::LegacyPreviewLoaderClient::didReceiveData):

  • platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:

(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveData:lengthReceived:]):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::dataChanged):

  • workers/WorkerFontLoadRequest.cpp:

(WebCore::WorkerFontLoadRequest::didReceiveData):

  • workers/WorkerFontLoadRequest.h:
  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::didReceiveData):

  • workers/WorkerScriptLoader.h:
  • workers/service/context/ServiceWorkerFetch.h:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::didReceiveData):

  • xml/XMLHttpRequest.h:

Source/WebKit:

  • GPUProcess/media/RemoteMediaResource.cpp:

(WebKit::RemoteMediaResource::dataReceived):

  • GPUProcess/media/RemoteMediaResource.h:
  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/NetworkCORSPreflightChecker.cpp:

(WebKit::NetworkCORSPreflightChecker::didReceiveData):

  • NetworkProcess/NetworkCORSPreflightChecker.h:
  • NetworkProcess/NetworkDataTask.h:
  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::didReceiveData):

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkLoadClient.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didReceiveBuffer):
(WebKit::NetworkResourceLoader::sendBuffer):

  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::didReceiveData):

  • NetworkProcess/PingLoad.h:
  • NetworkProcess/PreconnectTask.cpp:

(WebKit::PreconnectTask::didReceiveBuffer):

  • NetworkProcess/PreconnectTask.h:
  • NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.cpp:

(WebKit::ServiceWorkerDownloadTask::didReceiveData):

  • NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.h:
  • NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.messages.in:
  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:

(WebKit::ServiceWorkerFetchTask::didReceiveData):
(WebKit::ServiceWorkerFetchTask::loadBodyFromPreloader):

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

(WebKit::ServiceWorkerNavigationPreloader::didReceiveBuffer):

  • NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.h:
  • NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp:

(WebKit::ServiceWorkerSoftUpdateLoader::didReceiveBuffer):

  • NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:

(WebKit::NetworkCache::SpeculativeLoad::didReceiveBuffer):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::didReceiveData):

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp:

(WebKit::NetworkDataTaskCurl::curlDidReceiveData):

  • NetworkProcess/curl/NetworkDataTaskCurl.h:
  • Platform/IPC/SharedBufferCopy.h:
  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp:

(WebKit::MediaFormatReader::didParseTracks):

  • Shared/mac/MediaFormatReader/MediaFormatReader.h:
  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::didReceiveData):

  • UIProcess/WebURLSchemeTask.h:
  • WebProcess/GPU/media/RemoteMediaResourceProxy.cpp:

(WebKit::RemoteMediaResourceProxy::dataReceived):

  • WebProcess/GPU/media/RemoteMediaResourceProxy.h:
  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::didReceiveData):
(WebKit::WebResourceLoader::didReceiveResource):

  • WebProcess/Network/WebResourceLoader.h:
  • WebProcess/Network/WebResourceLoader.messages.in:
  • WebProcess/Plugins/PDF/PDFPlugin.h:
  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didReceiveData):
(WebKit::PDFPlugin::streamDidReceiveData):
(WebKit::PDFPlugin::manualStreamDidReceiveData):

  • WebProcess/Plugins/Plugin.h:
  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::Stream::didReceiveData):
(WebKit::PluginView::manualLoadDidReceiveData):
(WebKit::PluginView::redeliverManualStream):

  • WebProcess/Plugins/PluginView.h:
  • WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:

(WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
(WebKit::WebServiceWorkerFetchTaskClient::continueDidReceiveResponse):

  • WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::committedLoad):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
  • WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp:

(WebKit::WebPreviewLoaderClient::didReceiveData):

  • WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::urlSchemeTaskDidReceiveData):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:

(WebKit::WebURLSchemeHandlerProxy::taskDidReceiveData):

  • WebProcess/WebPage/WebURLSchemeHandlerProxy.h:
  • WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:

(WebKit::WebURLSchemeTaskProxy::didReceiveData):

  • WebProcess/WebPage/WebURLSchemeTaskProxy.h:

Source/WebKitLegacy:

  • WebCoreSupport/PingHandle.h:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::committedLoad):
(WebFrameLoaderClient::createPreviewLoaderClient):

  • WebView/WebFrame.mm:

(-[WebFrame _commitData:]):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::committedLoad):

  • WebCoreSupport/WebFrameLoaderClient.h:
6:33 AM Changeset in webkit [287683] by Alan Bujtas
  • 4 edits in trunk

Ensure that the top layer is always anchored to the RenderView
https://bugs.webkit.org/show_bug.cgi?id=231292
<rdar://problem/83941854>

Reviewed by Simon Fraser.

Source/WebCore:

A fixed positioned block level box is not necessarily anchored to the RenderView (see canContainFixedPositionObjects).
This patch ensures that we skip those ancestors and return the RenderView as the containing block for the top layer content.

https://fullscreen.spec.whatwg.org/#new-stacking-layer
"If the top layer position property computes to fixed, its containing block is the viewport, and the initial containing block otherwise."

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::containingBlock const):
(WebCore::containerForElement):

LayoutTests:

  • TestExpectations: offsetFromAncestorContainer expects no transformed renderer in-between the

dialog and the RenderView's layer. It will go away with the layer re-parenting work.

5:41 AM Changeset in webkit [287682] by Razvan Caliman
  • 3 edits
    1 add in trunk/Source/WebInspectorUI

Web Inspector: shape-outside description doesn't make sense
https://bugs.webkit.org/show_bug.cgi?id=234675
<rdar://problem/87036546>

Reviewed by Devin Rousso.

Add the ability to overwrite CSS documentation obtained from the upstream data source
with information sourced from a local JSON file.

  • Scripts/update-inspector-css-documentation:
  • UserInterface/External/CSSDocumentation/CSSDocumentation-overrides.json: Added.

Local JSON file with fields to overwrite specific data.

  • UserInterface/External/CSSDocumentation/CSSDocumentation.js:

Update description for shape-outside CSS property.

5:03 AM Changeset in webkit [287681] by Jean-Yves Avenard
  • 4 edits in trunk/Source/WebCore

length argument passed to didReceiveData can never be negative.
https://bugs.webkit.org/show_bug.cgi?id=234916
rdar://problem/87190340

Reviewed by Youenn Fablet.

Signed int argument will be removed in bug 232424.

No change in observable behaviour. Covered by existing tests.

  • inspector/agents/InspectorNetworkAgent.cpp:
  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::didReceiveData):

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::didReceiveData):

3:41 AM Changeset in webkit [287680] by Russell Epstein
  • 7 edits
    4 adds in branches/safari-612-branch

Apply patch. rdar://problem/87125345

2:50 AM Changeset in webkit [287679] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

WorkerMessagePortChannelProvider::takeAllMessagesForPort should guarantee execution of the takeMessagePort callback
https://bugs.webkit.org/show_bug.cgi?id=234883
<rdar://86708232>

Reviewed by Alex Christensen.

In case we enqueue a worker task, and before the task is executed, the worker is terminated,
the task will not be executed and will be destroyed in worker thread.
Instead, we should make sure to execute the callback in main thread.
Introduce MainThreadCompletionHandler for that purpose.
Covered by existing tests.

  • dom/messageports/WorkerMessagePortChannelProvider.cpp:

(WebCore::MainThreadCompletionHandler::MainThreadCompletionHandler):
(WebCore::MainThreadCompletionHandler::~MainThreadCompletionHandler):
(WebCore::MainThreadCompletionHandler::complete):
(WebCore::WorkerMessagePortChannelProvider::takeAllMessagesForPort):

2:46 AM Changeset in webkit [287678] by graouts@webkit.org
  • 16 edits in trunk

computed style for transition longhand properties is wrong
https://bugs.webkit.org/show_bug.cgi?id=234880

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Mark WPT progressions.

  • web-platform-tests/css/css-transitions/parsing/transition-delay-computed-expected.txt:
  • web-platform-tests/css/css-transitions/parsing/transition-duration-computed-expected.txt:
  • web-platform-tests/css/css-transitions/parsing/transition-property-computed-expected.txt:
  • web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed-expected.txt:
  • web-platform-tests/css/css-transitions/transition-delay-001-expected.txt:
  • web-platform-tests/css/css-transitions/transition-duration-001-expected.txt:

Source/WebCore:

We had two issues in the way we treated animation lists.

First, we would always output the filled-in values in the computed style, which
meant that setting animation-name: one, two; animation-duration: 1s would yield
1s, 1s instead of just 1s for animation-duration. So we now maintain a bit
on Animation to indicate whether a given value was set for filling and
ComputedStyleExtractor::addValueForAnimationPropertyToList() can now query it
before adding this value when returning the computed style.

Second, in RenderStyle::adjustTransitions(), we would mistakenly try to remove entries
if we found a transition-property repeated. However, this is valid so we remove the
code related to this entirely.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::addValueForAnimationPropertyToList):

  • platform/animation/Animation.cpp:

(WebCore::Animation::Animation):

  • platform/animation/Animation.h:

(WebCore::Animation::clearDelay):
(WebCore::Animation::clearDirection):
(WebCore::Animation::clearDuration):
(WebCore::Animation::clearFillMode):
(WebCore::Animation::clearIterationCount):
(WebCore::Animation::clearPlayState):
(WebCore::Animation::clearProperty):
(WebCore::Animation::clearTimingFunction):
(WebCore::Animation::fillDelay):
(WebCore::Animation::fillDirection):
(WebCore::Animation::fillDuration):
(WebCore::Animation::fillFillMode):
(WebCore::Animation::fillIterationCount):
(WebCore::Animation::fillPlayState):
(WebCore::Animation::fillProperty):
(WebCore::Animation::fillTimingFunction):
(WebCore::Animation::isDelayFilled const):
(WebCore::Animation::isDirectionFilled const):
(WebCore::Animation::isDurationFilled const):
(WebCore::Animation::isFillModeFilled const):
(WebCore::Animation::isIterationCountFilled const):
(WebCore::Animation::isPlayStateFilled const):
(WebCore::Animation::isPropertyFilled const):
(WebCore::Animation::isTimingFunctionFilled const):

  • platform/animation/AnimationList.cpp:

(WebCore::AnimationList::fillUnsetProperties):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::adjustTransitions):

LayoutTests:

This test was incorrect since it assumed that filled-in values in animation lists
would be part of the computed style. We update the expectation and add other properties
that weren't being tested.

  • animations/fill-unset-properties-expected.txt:
  • animations/fill-unset-properties.html:
2:29 AM Changeset in webkit [287677] by Nikolas Zimmermann
  • 31 edits
    3 moves in trunk/Source/WebCore

[LBSE] Rename RenderSVGShape -> LegacyRenderSVGShape
https://bugs.webkit.org/show_bug.cgi?id=234877

Reviewed by Rob Buis.

Following the established procedure: rename RenderSVGShape -> LegacyRenderSVGShape.
In a follow-up patch RenderSVGShape will be reintroduced for LBSE, inheriting from
RenderSVGModelObject instead of LegacyRenderSVGModelObject.

Covered by existing tests, no change in behaviour.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::supportsPath const):
(WebCore::AccessibilityRenderObject::elementPath const):

  • accessibility/AccessibilitySVGElement.cpp:

(WebCore::AccessibilitySVGElement::computeAccessibilityIsIgnored const):
(WebCore::AccessibilitySVGElement::determineAccessibilityRole):

  • rendering/RenderObject.h:

(WebCore::RenderObject::isLegacySVGShape const):
(WebCore::RenderObject::isSVGShapeOrLegacySVGShape const):

  • rendering/RenderTreeAsText.cpp:

(WebCore::write):

  • rendering/svg/LegacyRenderSVGModelObject.cpp:

(WebCore::isGraphicsElement):

  • rendering/svg/LegacyRenderSVGShape.cpp: Renamed from Source/WebCore/rendering/svg/RenderSVGShape.cpp.

(WebCore::LegacyRenderSVGShape::LegacyRenderSVGShape):
(WebCore::LegacyRenderSVGShape::updateShapeFromElement):
(WebCore::LegacyRenderSVGShape::isEmpty const):
(WebCore::LegacyRenderSVGShape::fillShape const):
(WebCore::LegacyRenderSVGShape::strokeShape const):
(WebCore::LegacyRenderSVGShape::shapeDependentStrokeContains):
(WebCore::LegacyRenderSVGShape::shapeDependentFillContains const):
(WebCore::LegacyRenderSVGShape::fillContains):
(WebCore::LegacyRenderSVGShape::strokeContains):
(WebCore::LegacyRenderSVGShape::layout):
(WebCore::LegacyRenderSVGShape::nonScalingStrokePath const):
(WebCore::LegacyRenderSVGShape::setupNonScalingStrokeContext):
(WebCore::LegacyRenderSVGShape::nonScalingStrokeTransform const):
(WebCore::LegacyRenderSVGShape::shouldGenerateMarkerPositions const):
(WebCore::LegacyRenderSVGShape::fillShape):
(WebCore::LegacyRenderSVGShape::strokeShape):
(WebCore::LegacyRenderSVGShape::fillStrokeMarkers):
(WebCore::LegacyRenderSVGShape::paint):
(WebCore::LegacyRenderSVGShape::addFocusRingRects):
(WebCore::LegacyRenderSVGShape::isPointInFill):
(WebCore::LegacyRenderSVGShape::isPointInStroke):
(WebCore::LegacyRenderSVGShape::getTotalLength const):
(WebCore::LegacyRenderSVGShape::getPointAtLength const):
(WebCore::LegacyRenderSVGShape::nodeAtFloatPoint):
(WebCore::markerForType):
(WebCore::LegacyRenderSVGShape::markerRect const):
(WebCore::LegacyRenderSVGShape::calculateObjectBoundingBox const):
(WebCore::LegacyRenderSVGShape::calculateStrokeBoundingBox const):
(WebCore::LegacyRenderSVGShape::updateRepaintBoundingBox):
(WebCore::LegacyRenderSVGShape::strokeWidth const):
(WebCore::LegacyRenderSVGShape::hasSmoothStroke const):
(WebCore::LegacyRenderSVGShape::drawMarkers):
(WebCore::LegacyRenderSVGShape::createPath const):
(WebCore::LegacyRenderSVGShape::processMarkerPositions):

  • rendering/svg/LegacyRenderSVGShape.h: Renamed from Source/WebCore/rendering/svg/RenderSVGShape.h.

(WebCore::LegacyRenderSVGShape::setNeedsShapeUpdate):
(WebCore::LegacyRenderSVGShape::hasPath const):
(WebCore::LegacyRenderSVGShape::path const):
(WebCore::LegacyRenderSVGShape::clearPath):
(WebCore::LegacyRenderSVGShape::hasNonScalingStroke const):

  • rendering/svg/LegacyRenderSVGShapeInlines.h: Renamed from Source/WebCore/rendering/svg/RenderSVGShapeInlines.h.

(WebCore::LegacyRenderSVGShape::graphicsElement const):

  • rendering/svg/RenderSVGEllipse.cpp:

(WebCore::RenderSVGEllipse::RenderSVGEllipse):
(WebCore::RenderSVGEllipse::updateShapeFromElement):
(WebCore::RenderSVGEllipse::fillShape const):
(WebCore::RenderSVGEllipse::strokeShape const):
(WebCore::RenderSVGEllipse::shapeDependentStrokeContains):
(WebCore::RenderSVGEllipse::shapeDependentFillContains const):

  • rendering/svg/RenderSVGEllipse.h:
  • rendering/svg/RenderSVGPath.cpp:

(WebCore::RenderSVGPath::RenderSVGPath):
(WebCore::RenderSVGPath::updateShapeFromElement):
(WebCore::RenderSVGPath::strokeShape const):
(WebCore::RenderSVGPath::shapeDependentStrokeContains):

  • rendering/svg/RenderSVGPath.h:
  • rendering/svg/RenderSVGRect.cpp:

(WebCore::RenderSVGRect::RenderSVGRect):
(WebCore::RenderSVGRect::rectElement const):
(WebCore::RenderSVGRect::updateShapeFromElement):
(WebCore::RenderSVGRect::fillShape const):
(WebCore::RenderSVGRect::strokeShape const):
(WebCore::RenderSVGRect::shapeDependentStrokeContains):
(WebCore::RenderSVGRect::shapeDependentFillContains const):

  • rendering/svg/RenderSVGRect.h:
  • rendering/svg/RenderSVGResource.h:

(WebCore::RenderSVGResource::postApplyResource):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage):
(WebCore::RenderSVGResourceClipper::calculateClipContentRepaintRect):
(WebCore::RenderSVGResourceClipper::hitTestClipContent):

  • rendering/svg/RenderSVGResourceContainer.cpp:

(WebCore::RenderSVGResourceContainer::transformOnNonScalingStroke):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::postApplyResource):

  • rendering/svg/RenderSVGResourceFilter.h:
  • rendering/svg/RenderSVGResourceGradient.cpp:

(WebCore::RenderSVGResourceGradient::postApplyResource):

  • rendering/svg/RenderSVGResourceGradient.h:
  • rendering/svg/RenderSVGResourcePattern.cpp:

(WebCore::RenderSVGResourcePattern::postApplyResource):

  • rendering/svg/RenderSVGResourcePattern.h:
  • rendering/svg/RenderSVGResourceSolidColor.cpp:

(WebCore::RenderSVGResourceSolidColor::postApplyResource):

  • rendering/svg/RenderSVGResourceSolidColor.h:
  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::SVGInlineTextBox::releasePaintingResource):

  • rendering/svg/SVGRenderSupport.cpp:

(WebCore::SVGRenderSupport::computeContainerBoundingBoxes):
(WebCore::SVGRenderSupport::layoutChildren):
(WebCore::SVGRenderSupport::applyStrokeStyleToContext):

  • rendering/svg/SVGRenderTreeAsText.cpp:

(WebCore::writeStyle):
(WebCore::operator<<):
(WebCore::write):

  • rendering/svg/SVGRenderTreeAsText.h:
  • svg/SVGGeometryElement.cpp:

(WebCore::SVGGeometryElement::getTotalLength const):
(WebCore::SVGGeometryElement::getPointAtLength const):
(WebCore::SVGGeometryElement::isPointInFill):
(WebCore::SVGGeometryElement::isPointInStroke):

  • svg/SVGLineElement.cpp:

(WebCore::SVGLineElement::svgAttributeChanged):

2:23 AM Changeset in webkit [287676] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

ServiceWorkerNavigationPreloader::didComplete should make sure to call its bodyCallback
https://bugs.webkit.org/show_bug.cgi?id=234884

Reviewed by Alex Christensen.

Covered by existing tests.

  • NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp:

Call to responseCallback may destroy the ServiceWorkerNavigationPreloader.
To make sure to call its bodyCallback, we move it in the stack before calling responseCallback.

1:29 AM Changeset in webkit [287675] by youenn@apple.com
  • 7 edits
    2 adds in trunk

"ReadableStream uploading is not supported" when fetch()ing a Request that has been logged to console
https://bugs.webkit.org/show_bug.cgi?id=203617
<rdar://problem/56772045>

Reviewed by Alex Christensen.

Source/WebCore:

Keep the underlying body even if a stream is created.
This allows to fetch the request even if request.body is accessed.

Test: http/wpt/fetch/fetch-request-with-stream-body.html

  • Modules/beacon/NavigatorBeacon.cpp:
  • Modules/fetch/FetchBody.cpp:
  • Modules/fetch/FetchBody.h:
  • Modules/fetch/FetchBodyOwner.h:

LayoutTests:

  • http/wpt/fetch/fetch-request-with-stream-body-expected.txt: Added.
  • http/wpt/fetch/fetch-request-with-stream-body.html: Added.

Jan 5, 2022:

9:51 PM Changeset in webkit [287674] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Text-decoration color not changing back after input blur with outline removed
https://bugs.webkit.org/show_bug.cgi?id=234800
<rdar://problem/87145636>

Reviewed by Antti Koivisto.

Source/WebCore:

This patch fixes the case when a decoration type of style value changes on the input
element (e.g. text-decoration-color) and the inner renderer does not get notified through the usual styleDidChange
flow because the property is non-inherited.

Test: fast/forms/dynamic-text-decoration-change.html

  • rendering/RenderTextControl.cpp:

(WebCore::RenderTextControl::styleDidChange):

LayoutTests:

  • fast/forms/dynamic-text-decoration-change-expected.html: Added.
  • fast/forms/dynamic-text-decoration-change.html: Added.
8:40 PM Changeset in webkit [287673] by mmaxfield@apple.com
  • 3 edits
    2 adds in trunk

[GPU Process] Small ImageBuffers cause the web process to crash
https://bugs.webkit.org/show_bug.cgi?id=232470
<rdar://problem/84626560>

Reviewed by Tim Horton.

Source/WebKit:

The problem is when the (floating point) size < 1x1, but the size*resolution is >= 1x1.
In this situation, calculateSafeBackendSize() is correctly determining that this
isn't a zero-sized ImageBuffer, but when we go to actually pass the size to the GPU
process, we call this:

IntSize logicalSize() const override { return IntSize(m_parameters.logicalSize); }

So, the logical size gets truncated down to 0, and then the GPU process fails to allocate
the ImageBuffer, and then the web process blocks on the GPU process indefinitely, and then
eventually times out and then crashes. I'm going to deal with that last step (the crash
itself) in a secondary patch - if the web process doesn't hear from the GPU process, it
shouldn't crash.

This patch simply exposes a floatLogicalSize() function on ImageBuffer, so we can get
the full-fidelity logical size to pass that to the GPU process.

This patch is just enough to stop WebKit from crashing. I'm going to continue looking into this bug in
https://bugs.webkit.org/show_bug.cgi?id=225377.

Test: compositing/device-pixel-image-buffer-hidpi.html

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::createRemoteImageBuffer):

LayoutTests:

  • compositing/device-pixel-image-buffer-hidpi-expected.html: Added.
  • compositing/device-pixel-image-buffer-hidpi.html: Added.
7:54 PM Changeset in webkit [287672] by commit-queue@webkit.org
  • 1 edit
    2 adds in trunk/LayoutTests

border radii may have missing values
https://bugs.webkit.org/show_bug.cgi?id=234866

Patch by Brandon Stewart <Brandon> on 2022-01-05
Reviewed by Antti Koivisto.

Add test to verify behavior of CSS border radii.

  • fast/css/border-radius-invalid-pair-expected.txt: Added.
  • fast/css/border-radius-invalid-pair.html: Added.
7:08 PM Changeset in webkit [287671] by Wenson Hsieh
  • 6 edits
    1 add in trunk

Modal container observer should detect and suppress elements that prevent user interaction
https://bugs.webkit.org/show_bug.cgi?id=234695

Reviewed by Tim Horton.

Source/WebCore:

Add support for additionally detecting and hiding viewport-constrained elements whose sole (apparent) purpose
is to prevent the user from interacting with the rest of the page, after suppressing a detected modal
container. See comments below for more details.

Test: ModalContainerObservation.HideUserInteractionBlockingElement

  • page/ModalContainerObserver.cpp:

(WebCore::ModalContainerObserver::setContainer):

When setting (and hiding) a detected modal container, queue an internal task to try and identify an element
underneath the modal container that may be preventing user interaction with the rest of the page (note that this
must be queued as an async task because it may trigger layout, unlike updateModalContainerIfNeeded). See below
for more information.

(WebCore::ModalContainerObserver::hideUserInteractionBlockingElementIfNeeded):

Implement a simple heuristic to detect elements that block user interaction after the modal container has been
hidden. To do this, we hit-test five locations relative to the absolute rect for fixed-position elements: one
hit-test in the center of the rect, and 4 more near all of the corners (shifted by 1px towards the center).

If all 5 hit-tests find the same viewport-constrained element with no rendered children that isn't also the
document or body element, we flag it as the m_userInteractionBlockingElement and hide it during style
adjustment in the same way as the modal container (see below).

(WebCore::ModalContainerObserver::revealModalContainer):

  • page/ModalContainerObserver.h:

(WebCore::ModalContainerObserver::shouldHide const):

Add m_userInteractionBlockingElement and hide both the modal container as well as this new element during
style adjustment.

Tools:

Add an API test (as well as a new test page) to exercise the fix.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/modal-container-with-overlay.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/ModalContainerObservation.mm:

(TestWebKitAPI::TEST):

6:57 PM Changeset in webkit [287670] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Layers: add reference page button
https://bugs.webkit.org/show_bug.cgi?id=234901

Reviewed by Patrick Angle.

  • UserInterface/Views/Layers3DContentView.js:

(WI.Layers3DContentView.prototype.initialLayout):

  • UserInterface/Views/Layers3DContentView.css:

(.content-view.layers-3d .reference-page-link-container): Added.

6:55 PM Changeset in webkit [287669] by graouts@webkit.org
  • 5 edits in trunk

Refactor computed style code for transition-property and the transition shorthand
https://bugs.webkit.org/show_bug.cgi?id=234872

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Rebaseline some test output.

  • web-platform-tests/css/css-pseudo/first-letter-allowed-properties-expected.txt:
  • web-platform-tests/css/css-pseudo/first-line-allowed-properties-expected.txt:

Source/WebCore:

There's no reason for the "transition-property" and "transition" properties to be
handled any differently to any other "transition-" property or the "animation"
shorthand.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::animationShorthandValue):
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
(WebCore::transitionPropertyValue): Deleted.

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

REGRESSION(287556): Domain name not shown in Activity Monitor
https://bugs.webkit.org/show_bug.cgi?id=234903

Reviewed by Brent Fulgham.

After r287556, domain names are no longer shown in Activity Monitor. The Networking process is responsible for setting
process information on behalf of the WebContent process. Before r287556, this worked because a connection to the associated
mach service was established before entering the sandbox. After r287556 we explicitly need to allow access to the service,
since the sandbox has been applied when process information is set. In practice, access to the service was already allowed
before, since an open connection to the service was established before entering the sandbox.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
6:28 PM Changeset in webkit [287667] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

[ Monterey Debug arm64 ] ASSERTION FAILED: result == &worker ./workers/service/server/SWServer.cpp(837) : void WebCore::SWServer::workerContextTerminated(WebCore::SWServerWorker &)
https://bugs.webkit.org/show_bug.cgi?id=233219
<rdar://problem/85478756>

Reviewed by Darin Adler.

The crash would occur when we get notified by the service worker process that a given service worker
was terminated right after we've determined that we no longer needed a given service worker process
and called markAllWorkersForRegistrableDomainAsTerminated(). This race would cause
SWServer::workerContextTerminated() to get called twice for the same worker. During the second call,
we would retrieve a null worker from the HashMap and hit the assertion. I updated the call to ignore
the call to workerContextTerminated() if the worker was already removed from the HashMap and added
an assertion to make sure we've already marked the service worker as "not running" in this case.

No new tests, covered by existing API test that is flakily crashing in debug.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::workerContextTerminated):

6:16 PM Changeset in webkit [287666] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix Windows and Linux builds
https://bugs.webkit.org/show_bug.cgi?id=234405

  • platform/ThemeTypes.h:

Missing semicolon.

6:12 PM Changeset in webkit [287665] by wilander@apple.com
  • 2 edits in trunk/Source/WTF

Change version number for HAVE_RSA_PSS_OID
https://bugs.webkit.org/show_bug.cgi?id=234904
<rdar://86646280>

Reviewed by Alex Christensen.

  • wtf/PlatformHave.h:
6:09 PM Changeset in webkit [287664] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS][WP] Allow syscall used on process launch
https://bugs.webkit.org/show_bug.cgi?id=234898
<rdar://86914492>

Reviewed by Brent Fulgham.

Allow syscall used on WebContent process launch on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
5:39 PM Changeset in webkit [287663] by Megan Gardner
  • 24 edits
    3 adds
    4 deletes in trunk

Remove unneeded webkit specific CSS attribute for Image Control Menu.
https://bugs.webkit.org/show_bug.cgi?id=234405

Reviewed by Darin Adler.

Source/WebCore:

Test: fast/images/mac/image-controls-basic.html

We do not actually need a specific CSS attribute to achieve the image control menu,
so we should remove it to keep WebKit specific clutter out of our CSS implementation
and we should keep track of the presence of the image control menu fully internally.
Doing this also exposed several issues, including the fact that we had already run out
of space for the storing of the ControlPart in RenderStyle. Also added a check to make
sure that will not happen again.

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):

  • css/CSSProperties.json:
  • css/CSSValueKeywords.in:
  • css/parser/CSSParserIdioms.cpp:

(WebCore::isValueAllowedInMode):

  • dom/mac/ImageControlsMac.cpp:

(WebCore::ImageControlsMac::isInsideImageControls):

  • dom/mac/ImageControlsMac.h:
  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::parseAttribute):
(WebCore::HTMLImageElement::setAttachmentElement):
(WebCore::HTMLImageElement::updateImageControls):

  • html/HTMLImageElement.h:
  • html/shadow/mac/imageControlsMac.css:

(div#image-controls button#image-controls-button):

  • platform/ThemeTypes.h:
  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::nodeForImageData const):

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::autoAppearanceForElement const):

  • rendering/RenderTheme.h:

(WebCore::RenderTheme::isImageControl const):

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::isImageControl const):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::setAppearance):
(WebCore::RenderStyle::setEffectiveAppearance):

  • rendering/style/StyleRareNonInheritedData.h:
  • testing/Internals.cpp:

(WebCore::Internals::hasImageControls const):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

We need to move this test to be a mac specific one, as it now has mac specific
test harnessing (using hasImageControls) and it is testing a feature that is only on mac.
Also changed the test to be resistent to the async nature of adding
the shadow dom elements, and checking the shadow dom directly rather than the resulting layout,
which is prone to pixel errors.

  • TestExpectations:
  • fast/images/image-controls-basic-expected.txt:
  • fast/images/image-controls-basic.html: Removed.
  • fast/images/mac/image-controls-basic-expected.txt: Added.
  • fast/images/mac/image-controls-basic.html: Added.
  • platform/mac-catalina/fast/images/image-controls-basic-expected.txt: Removed.
  • platform/mac/TestExpectations:
  • platform/mac/fast/images/image-controls-basic-expected.txt: Removed.
5:21 PM Changeset in webkit [287662] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[selectors] :focus-visible not matching on accessKey focus after focusing something via mouse
https://bugs.webkit.org/show_bug.cgi?id=234077

Unreviewed test gardening.

  • platform/ios/TestExpectations: Disable test for iOS since it relies upon mouse events.
5:06 PM Changeset in webkit [287661] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Audit: reference page button is not vertically aligned with Audit version text
https://bugs.webkit.org/show_bug.cgi?id=234900

Reviewed by Patrick Angle.

  • UserInterface/Views/AuditNavigationSidebarPanel.css:

(.content-view.tab.audit .content-view .reference-page-link-container):

4:49 PM Changeset in webkit [287660] by Devin Rousso
  • 2 edits in trunk/Source/WebKit

REGRESSION(r285521): errors provided to ApplePaySession.prototype.completeCouponCodeChange are ignored
https://bugs.webkit.org/show_bug.cgi?id=234893
<rdar://problem/86780827>

Reviewed by Tim Horton.

  • Platform/cocoa/PaymentAuthorizationPresenter.mm:

(WebKit::PaymentAuthorizationPresenter::completeCouponCodeChange):
Make sure to actually set the errors of the PKPaymentRequestCouponCodeUpdate using the
errors inside ApplePayShippingMethodUpdate. This was accidentally removed in r285521.

4:25 PM Changeset in webkit [287659] by Jonathan Bedard
  • 2 edits in trunk

[EWS] Add Commit Queue and EWS GitHub usernames
https://bugs.webkit.org/show_bug.cgi?id=234905
<rdar://problem/87169628>

Reviewed by Ryan Haddad.

  • metadata/contributors.json:

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

3:55 PM Changeset in webkit [287658] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

REGRESSION (r287609?): imported/w3c/web-platform-tests/css/cssom/css-style-attr-decl-block.html is consistently failing
https://bugs.webkit.org/show_bug.cgi?id=234906

Unreviewed test gardening.

3:48 PM Changeset in webkit [287657] by Chris Dumez
  • 3 edits in trunk/LayoutTests

[ MacOS EWS ] imported/w3c/web-platform-tests/html/dom/idlharness.https.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=229831
<rdar://problem/82694768>

Unreviewed, rebaseline test and unskip.

  • platform/mac-wk2/TestExpectations:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
3:44 PM Changeset in webkit [287656] by Chris Dumez
  • 3 edits in trunk/LayoutTests

[ iOS ] imported/w3c/web-platform-tests/html/dom/idlharness.https.html is flaky failing after rebaselining
https://bugs.webkit.org/show_bug.cgi?id=230407
<rdar://problem/83242343>

Unreviewed, rebaseline test on iOS and unskip it.

  • platform/ios-wk2/TestExpectations:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
3:35 PM Changeset in webkit [287655] by Chris Dumez
  • 5 edits in trunk/LayoutTests

[ iOS Debug ] imported/w3c/web-platform-tests/html/dom/idlharness.worker.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=231030
<rdar://problem/83727147>

Unreviewed, skip test in debug since it is slow and may flakily time out otherwise.

  • TestExpectations:
  • platform/glib/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk1/TestExpectations:
3:21 PM Changeset in webkit [287654] by Russell Epstein
  • 7 edits in branches/safari-612-branch/Source/WebCore

Cherry-pick r287110. rdar://problem/87124750

Clean-up: Adopt Page::forEachDocument in some missed spots
https://bugs.webkit.org/show_bug.cgi?id=234324
<rdar://problem/85443831>

Reviewed by Darin Adler.

Switch manual loops to our 'forEachDocument' style in a few places that were missed
in earlier refactoring.

No change in behavior.

  • history/BackForwardCache.cpp: (WebCore::setBackForwardCacheState)
  • page/EventHandler.cpp: (WebCore::removeDraggedContentDocumentMarkersFromAllFramesInPage):
  • page/Frame.cpp: (WebCore::Frame::orientationChanged):
  • page/Page.cpp: (WebCore::Page::~Page): (WebCore::Page::forEachDocumentFromMainFrame): Added. (WebCore::Page::forEachDocument): Use new method. (WebCore::Page::forEachFrameFromMainFrame): Added. (WebCore::Page::windowScreenDidChange): (WebCore::Page::userAgentChanged):
  • page/ios/FrameIOS.mm: (WebCore::Frame::dispatchPageHideEventBeforePause): (WebCore::Frame::dispatchPageShowEventBeforeResume):

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

3:02 PM Changeset in webkit [287653] by timothy_horton@apple.com
  • 10 edits in trunk/Source

Move more SDK checks to linkedOnOrAfter()
https://bugs.webkit.org/show_bug.cgi?id=234875

Reviewed by Sam Weinig.

Source/WebCore:

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::requiresFullscreenForVideoPlayback const):

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):

  • platform/Timer.cpp:

(WebCore::shouldSuppressThreadSafetyCheck):

  • platform/cocoa/VersionChecks.h:

Source/WebKit:

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultCSSOMViewScrollingAPIEnabled):

Source/WebKitLegacy/mac:

  • WebView/WebPreferencesDefaultValues.mm:

(WebKit::defaultJavaScriptCanOpenWindowsAutomatically):

  • WebView/WebView.mm:

(needsLaBanquePostaleQuirks):

1:58 PM Changeset in webkit [287652] by Kyle Piddington
  • 138 edits
    5 adds in trunk/Source/ThirdParty/ANGLE

Roll ANGLE to aabfe8747d 12-17-2021
https://bugs.webkit.org/show_bug.cgi?id=234523

Reviewed by Kenneth Russell.

The changelog has been removed to improve readability.
The following ANGLE commits were merged:

aabfe8747 Metal: Use the context device to Texture::resize
34ea81111 Reland "Vulkan: Don't expose MSRTT on SwiftShader"
624e3c3d5 Fix dangerous use of AutoObjCPtr after ownership identity change
4a148e9d9 Revert "Vulkan: Suppress VUID-vkCmdDraw-blendEnable"
ede0b8b71 Avoid ANGLE_MTL_AUTORELEASE inside ASSERT, it leaks on Release
cb4f441c8 Roll vulkan-deps from 39f3a18bdfbe to 5568048d205e (8 revisions)
2f78b48db Roll Chromium from 14ca75d254a5 to 81decb7250e1 (191 revisions)
001221f0e Metal: upstream fix from WebKit for texture leak.
dca434bdc Roll Chromium from 3f6c88f5581a to 14ca75d254a5 (401 revisions)
b9f2d9cc1 Use text expectations to skip a test
6c894e829 Vulkan: Replace BufferVk::getBufferAndOffset() with getBuffer()
f2736f6dc Tests: Add My Talking Tom Friends trace.
a93a3930b Vulkan: Track enabled in VertexArray
83a670ab0 Vulkan: Implement BufferPool using VMA's virtual allocator
836797166 Vulkan: Dirty vertex buffers if default attrib values changed
543f5750f (origin/chromium/4771) Vulkan: Disable protected memory for ARM
c7446ac42 Add support for GL_MESA_framebuffer_flip_y 1/*
60383b41e Tests: Add Dota Underlords trace.
f26687a03 Tests: Add My Talking Tom 2 trace.
438de17ee Roll vulkan-deps from a8221eed5970 to 39f3a18bdfbe (5 revisions)
e7413adff system_utils_posix: Check for SEGV_MAPERR si_code.
6e5fd8165 Support more ImageLayout in ConvertImageLayoutToGLImageLayout
b26bb13ab Metal: Remove references to xfbActiveUnpaused uniform
bb5bab031 Roll Chromium from 2dae07eeb163 to 3f6c88f5581a (414 revisions)
c4d434b91 Metal: Enable OES_fbo_render_mipmap
670679918 Metal: Fix Webkit warnings in ANGLE build
bda493258 Add guards for 64 bit types on 32bit systems
e7c9dbb88 Skip SimpleStateChangeTestES3.OutOfBoundsByteAttribute on Pixel4 GLES
89e11878b Vulkan: Fix the UAF issue with BufferData
ee1d3cf74 Metal: Integrate Metal Binary Shader generation
3e7e2758f Metal: Fix macOS ANGLE build on Catalina (10.15) SDK
05a44dd24 Vulkan: Set content undefined on eglSwapBuffers
26fa0fe68 Tests: Add Asphalt 9 trace
5275f487e Vulkan: Disable async command queue with Vulkan SCBs
feb599ad8 Invalidate EGL handles during eglTerminate
32e23bb9d Expand WebGLCompressedTextureAvailabilityTest
d6b9a2597 end2end_tests: Add SwS + AsyncQueue testing.
a0eb6146c Update warning message for invalid include
cac81f077 Return full error info when opening a library with dlopen
90c3038e5 Vulkan: Fix desc set updates with Vulkan SCBs
8419f4fcd Roll vulkan-deps from c03890076954 to a8221eed5970 (2 revisions)
db367bd71 Roll Chromium from 0c0a3654694f to 2dae07eeb163 (450 revisions)
bfc7f09ae Revert "Upgrade restricted traces to new trace format."
800c6971c Modified buffer fallback format to smaller storage format
709d87278 Revert "Trace Tests: Remove auto-generated code."
3da54250b Skip MultithreadingTest.MultiContextDrawWithSwapBuffers
7f1a0f89b Switch to non-deprecated bbagent, remove defunct experiments.
9d49d8438 Add WebGLCompressedTextureAvailabilityTest

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

Fix the build

  • Shared/ios/WebIOSEventFactory.mm:

(WebIOSEventFactory::createWebWheelEvent):

1:44 PM Changeset in webkit [287650] by mark.lam@apple.com
  • 9 edits in branches/safari-612-branch/Source/JavaScriptCore

Cherry-pick r287421. rdar://problem/84260429

2021-12-23 Mark Lam <mark.lam@apple.com>

Make DeferredWorkTimer::addPendingWork() return a Ticket.
https://bugs.webkit.org/show_bug.cgi?id=234628
rdar://84260429

Reviewed by Yusuke Suzuki.

  1. Make Ticket a unique token instead of the JSObject* target object. The Ticket is now a pointer to the TicketData in the pending work list.
  1. Instead of taking a Ticket argument, DeferredWorkTimer::addPendingWork() now takes a JSObject* target argument explicitly, and returns the Ticket for the added TicketData instead.

All the relevant DeferredWorkTimer APIS already take a Ticket as an argument.
This ensures that addPendingWork() is called before we start doing work with
these APIs (especially scheduleWorkSoon()).

  1. Previously, addPendingWork() will only save one instance of TicketData for a given JSObject* key. With this patch, we'll register a new TicketData instance for every call to addPendingWork(), and return a unique Ticket for it.

This is needed because it may be possible for 2 different clients to call
addPendingWork() and scheduleWorkSoon() with the same target JSObject* but with
different sets of dependencies.

Secondly, even is the both sets of dependencies are identical, a client may
call addPendingWork() and scheduleWorkSoon() with the same JSObject* target
more than once because it intended to schedule more than 1 task to run.

Note that DeferredWorkTimer::doWork() consumes the corresponding TicketData
(i.e. removes it from the m_pendingTickets list) for each task as it is run.
To ensure that the dependencies for each task is protected, we'll either need
to ref count the TicketData for the same target object (and hold off on removing
it from the list), or we'll need to register a different TicketData instance
for each task. Ref counting can solve the second issue above, but does not
solve the first. So, this patch goes with the more generic solution to allow
each task to have its own TicketData instance (and, its own unique Ticket).

  1. Previously, if the client cancels pending work, we would remove the TicketData immediately from the m_pendingTickets list. This opens up an opportunity for the same TicketData memory to be re-allocated by another client. This, in turn, would make the Ticket token not unique and potentially allow a cancelled ticket to be reused before DeferredWorkTimer::doWork() is called.

This patch changes DeferredWorkTimer::cancelPendingWork() to only clear the
contents of the TicketData instead. TicketData::scriptExecutionOwner being
null is used as an indication that the ticket has been cancelled. Since the
TicketData itself is not "freed" yet, all TicketData will remain unique until
DeferredWorkTimer::doWork().

Consequently, DeferredWorkTimer::doWork() will now check for cancelled tickets
and remove them from the m_pendingTickets list.

  1. JSFinalizationRegistry was previously calling DeferredWorkTimer::hasPendingWork() to check if it has already scheduled a task, so as not to reschedule again until after the previously scheduled task has been run. This does not play nice with the new Ticket API, because this hasPendingWork() check needs to be done before calling addPendingWork(), and hence, the Ticket is not available yet.

Fortunately, JSFinalizationRegistry should know if it has already scheduled
a task itself. This patch adds a m_hasAlreadyScheduledWork flag to
JSFinalizationRegistry that can be used for this check instead.

  • jsc.cpp: (JSC_DEFINE_HOST_FUNCTION):
  • runtime/DeferredWorkTimer.cpp: (JSC::DeferredWorkTimer::TicketData::TicketData): (JSC::DeferredWorkTimer::TicketData::vm): (JSC::DeferredWorkTimer::TicketData::cancel): (JSC::DeferredWorkTimer::doWork): (JSC::DeferredWorkTimer::addPendingWork): (JSC::DeferredWorkTimer::hasPendingWork): (JSC::DeferredWorkTimer::hasDependancyInPendingWork): (JSC::DeferredWorkTimer::cancelPendingWork):
  • runtime/DeferredWorkTimer.h: (JSC::DeferredWorkTimer::TicketData::target):
  • runtime/JSFinalizationRegistry.cpp: (JSC::JSFinalizationRegistry::finalizeUnconditionally):
  • runtime/JSFinalizationRegistry.h:
  • wasm/WasmStreamingCompiler.cpp: (JSC::Wasm::StreamingCompiler::StreamingCompiler): (JSC::Wasm::StreamingCompiler::~StreamingCompiler): (JSC::Wasm::StreamingCompiler::didComplete): (JSC::Wasm::StreamingCompiler::fail): (JSC::Wasm::StreamingCompiler::cancel):
  • wasm/WasmStreamingCompiler.h:
  • wasm/js/JSWebAssembly.cpp: (JSC::JSWebAssembly::webAssemblyModuleValidateAsync): (JSC::instantiate): (JSC::compileAndInstantiate): (JSC::JSWebAssembly::webAssemblyModuleInstantinateAsync):
1:36 PM Changeset in webkit [287649] by Russell Epstein
  • 1 copy in tags/Safari-613.1.12.1.2

Tag Safari-613.1.12.1.2.

1:36 PM Changeset in webkit [287648] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS][WP] Unable to consume mach extension
https://bugs.webkit.org/show_bug.cgi?id=234889
<rdar://86870109>

Reviewed by Brent Fulgham.

The WebContent process on iOS is unable to consume mach extensions to the frontboard service.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
1:11 PM Changeset in webkit [287647] by Russell Epstein
  • 7 edits
    4 deletes in branches/safari-612-branch

Revert "Cherry-pick r287353. rdar://problem/87125345"

This reverts commit r287633.

12:08 PM Changeset in webkit [287646] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

NetworkRTCProvider::attributedBundleIdentifierFromPageIdentifier should check for m_connection
https://bugs.webkit.org/show_bug.cgi?id=234845
<rdar://82120356>

Reviewed by Eric Carlson.

NetworkRTCProvider may call attributedBundleIdentifierFromPageIdentifier in a background thread,
which will then hop to main thread to get its session.
NetworkRTCProvider might have been closed when getting to main thread so we need to check m_connection.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::attributedBundleIdentifierFromPageIdentifier):

11:59 AM Changeset in webkit [287645] by Russell Epstein
  • 1 copy in tags/Safari-613.1.12.3

Tag Safari-613.1.12.3.

11:54 AM Changeset in webkit [287644] by Russell Epstein
  • 4 edits in branches/safari-613.1.12-branch/Source/ThirdParty

Cherry-pick r287642. rdar://problem/87072368

REGRESSION (r287382): libANGLE is built into a wrong location on iOS
https://bugs.webkit.org/show_bug.cgi?id=234857

Reviewed by Saam Barati.

Reverted to the prior logic to compute INSTALL_PATH. Then added an optional prefix
for the alternate root framework location.

Source/ThirdParty/ANGLE:

  • Configurations/ANGLE-dynamic.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/libwebrtc.xcconfig:

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

11:52 AM Changeset in webkit [287643] by Russell Epstein
  • 9 edits in branches/safari-613.1.12-branch/Source

Versioning.

WebKit-7613.1.12.3

11:42 AM Changeset in webkit [287642] by msaboff@apple.com
  • 4 edits in trunk/Source/ThirdParty

REGRESSION (r287382): libANGLE is built into a wrong location on iOS
https://bugs.webkit.org/show_bug.cgi?id=234857

Reviewed by Saam Barati.

Reverted to the prior logic to compute INSTALL_PATH. Then added an optional prefix
for the alternate root framework location.

Source/ThirdParty/ANGLE:

  • Configurations/ANGLE-dynamic.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/libwebrtc.xcconfig:
11:29 AM Changeset in webkit [287641] by timothy_horton@apple.com
  • 10 edits in trunk/Source

Momentum Event Dispatcher: Momentum tails may get truncated if the duration runs longer than the system's
https://bugs.webkit.org/show_bug.cgi?id=234535
<rdar://problem/86338105>

Reviewed by Simon Fraser.

Source/WebKit:

Currently, synthetic momentum dispatch is strictly tied to the duration
of the real platform momentum phase, which has two unfortunate implications:

  • if our phase runs shorter than the platform phase, we'll keep dispatching zero-delta events until the platform momentum ends
  • more importantly, if our phase runs longer, it will be abruptly terminated when the platform momentum ends

In practice, our synthetic phase is very close in duration to the system one,
so the impact is minimal. But, to be safe, disentagle the two durations,
using a new bit from the platform to determine if the system momentum phase
was interrupted by the user (e.g. by tapping the trackpad) or naturally,
and ignoring the ended event in the natural case, allowing synthetic
events to continue being dispatched.

  • Shared/WebWheelEvent.cpp:

(WebKit::WebWheelEvent::WebWheelEvent):
(WebKit::WebWheelEvent::encode const):
(WebKit::WebWheelEvent::decode):

  • Shared/WebWheelEvent.h:

(WebKit::WebWheelEvent::momentumEndType const):

  • Shared/WebWheelEventCoalescer.cpp:

(WebKit::WebWheelEventCoalescer::coalesce):
Plumb momentumEndType along on WebWheelEvent. Platforms that don't
provide information about the interruption reason will always say Unknown.

  • Shared/mac/WebEventFactory.mm:

(WebKit::WebEventFactory::createWebWheelEvent):
Only bother looking up the CGEvent/IOHIDEvent once, and extract all
relevant details in one go.

  • WebProcess/WebPage/MomentumEventDispatcher.cpp:

(WebKit::MomentumEventDispatcher::handleWheelEvent):
Don't interrupt the synthetic momentum phase if the momentum-ended event
comes from the natural end of the deceleration instead of an interruption
(or an unknown reason).

Keep track of whether we're in the middle of a platform momentum phase
that we chose (at momentum-begin time) to override. When deciding
whether to eat an incoming event, take *both* this new bit and whether
we are currently in the middle of a synthetic phase into account. It
is important to continue eating incoming events in the case where
the synthetic phase ended early (so active became false) but the
platform phase continues.

(WebKit::MomentumEventDispatcher::dispatchSyntheticMomentumEvent):
(WebKit::MomentumEventDispatcher::didEndMomentumPhase):
Adjust some logging wording to be more precise.

(WebKit::MomentumEventDispatcher::setScrollingAccelerationCurve):
Make this log public so that the curve value is visible in logs.

(WebKit::MomentumEventDispatcher::consumeDeltaForCurrentTime):
Make consumeDeltaForCurrentTime inform the client via an optional when
we are at the end of the delta table.

(WebKit::MomentumEventDispatcher::displayWasRefreshed):
Stop the synthetic momentum phase as soon as we run out of deltas.

(WebKit::MomentumEventDispatcher::computeNextDelta):

  • WebProcess/WebPage/MomentumEventDispatcher.h:

Source/WTF:

  • wtf/PlatformHave.h:

Add a HAVE for kIOHIDEventScrollMomentumInterrupted.

11:19 AM Changeset in webkit [287640] by Russell Epstein
  • 4 edits in branches/safari-613.1.12.1-branch

Cherry-pick r287609. rdar://problem/85917218

Unreviewed, reverting r285915.
https://bugs.webkit.org/show_bug.cgi?id=234873

causes crashes

Reverted changeset:

"border-radius inline style should serialize with valid
syntax"
https://bugs.webkit.org/show_bug.cgi?id=183994
https://commits.webkit.org/r285915

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

11:19 AM Changeset in webkit [287639] by Russell Epstein
  • 11 edits in branches/safari-613.1.12.1-branch

Cherry-pick r287377. rdar://problem/86829012

WebsiteDataStore::excludeDirectoryFromBackup should set attribute for existing directories
https://bugs.webkit.org/show_bug.cgi?id=234404

Reviewed by Youenn Fablet.

Source/WebKit:

createDirectoryAtURL returning false means directory cannot be created, but the cause can be that directory
already exists; so we should set exclude attribute on the directory no matter createDirectoryAtURL returns true
or false. Also, we can use existing FileSystem functions.

API test: WKWebView.LocalStorageDirectoryExcludedFromBackup

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: (WebKit::WebsiteDataStore::excludeDirectoryFromBackup): Deleted.
  • UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::parameters):
  • UIProcess/WebsiteData/WebsiteDataStore.h:

Source/WTF:

  • wtf/FileSystem.cpp: (WTF::FileSystemImpl::excludeFromBackup): (WTF::FileSystemImpl::canExcludeFromBackup): Deleted.
  • wtf/FileSystem.h:
  • wtf/cocoa/FileSystemCocoa.mm: (WTF::FileSystemImpl::excludeFromBackup):
  • wtf/mac/FileSystemMac.mm: (WTF::FileSystem::canExcludeFromBackup): Deleted. (WTF::FileSystem::excludeFromBackup): Deleted.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm: (TEST):

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

11:19 AM Changeset in webkit [287638] by Russell Epstein
  • 5 edits in branches/safari-613.1.12.1-branch

Cherry-pick r285827. rdar://problem/85917218

Revert r285235
https://bugs.webkit.org/show_bug.cgi?id=233142

Unreviewed.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-backgrounds/parsing/border-radius-valid-expected.txt:

Source/WebCore:

Causes crash with simple repro

<div id=t style="border-radius: unset"></div>
<script>
t.style.borderRadius;
</script>

  • css/StyleProperties.cpp: (WebCore::StyleProperties::getPropertyValue const): (WebCore::StyleProperties::borderRadiusValue const): Deleted.
  • css/StyleProperties.h:

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

11:09 AM Changeset in webkit [287637] by Russell Epstein
  • 9 edits in branches/safari-613.1.12.1-branch/Source

Versioning.

WebKit-7613.1.12.1.2

10:27 AM Changeset in webkit [287636] by Patrick Angle
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: revert-layer should be autocompleted
https://bugs.webkit.org/show_bug.cgi?id=234646

Reviewed by Devin Rousso.

  • UserInterface/Controllers/CSSManager.js:
  • UserInterface/Models/CSSKeywordCompletions.js:
10:21 AM Changeset in webkit [287635] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-612-branch

Cherry-pick r287593. rdar://problem/86910670

"canceled" wheel events to non-zero deltas cause scrolling jumps in PDFs and CodeMirror
https://bugs.webkit.org/show_bug.cgi?id=234825

Reviewed by Tim Horton.

Source/WebKit:

On some macOS versions, interrupting a momentum scroll via a two-finger tap on the trackpad can
result in the following sequence of wheel events: momentumPhase:end -> phase:mayBegin -> phase:cancelled,
and that last canceled event can have non-zero deltas (rdar://86653042).

Protect against this by zeroing out the deltas for cancelled wheel events when constructing WebEvents
from NSEvents. Code in Element::dispatchWheelEvent() ensures that we don't dispatch wheel events with
zero deltas to script, fixing CodeMirror.

Jumps only affected PDFs (and scrollable selects) because those are the code paths that don't go via
ScrollingEffectsController, which already ignores Cancelled events.

Test: fast/scrolling/mac/canceled-event-with-non-zero-deltas.html

  • Shared/mac/WebEventFactory.mm: (WebKit::WebEventFactory::createWebWheelEvent):

LayoutTests:

  • fast/scrolling/mac/canceled-event-with-non-zero-deltas-expected.txt: Added.
  • fast/scrolling/mac/canceled-event-with-non-zero-deltas.html: Added.

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

10:21 AM Changeset in webkit [287634] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebKit

Cherry-pick r287578. rdar://problem/86228553

Momentum Event Dispatcher: Disable noisy logging
https://bugs.webkit.org/show_bug.cgi?id=234178
<rdar://problem/86228553>

Reviewed by Wenson Hsieh.

  • WebProcess/WebPage/MomentumEventDispatcher.h:

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

10:21 AM Changeset in webkit [287633] by Russell Epstein
  • 7 edits
    4 adds in branches/safari-612-branch

Cherry-pick r287353. rdar://problem/87125345

Use requester when calling updateRequestAndAddExtraFields
https://bugs.webkit.org/show_bug.cgi?id=234507
<rdar://problem/85049490>

Reviewed by Brent Fulgham.

Source/WebCore:

In case of navigation loads, the requester is the fetch request client.
As such, it should be the one used to determine whether the request is cross-origin is not.
Pass the requester to updateRequestAndAddExtraFields to do the correct computation.
Validate that some request fields are now correctly observed in service workers.

Test: http/wpt/service-workers/navigation-iframe-site.https.html

  • loader/FrameLoader.cpp:
  • loader/FrameLoader.h:
  • testing/ServiceWorkerInternals.cpp:
  • testing/ServiceWorkerInternals.h:
  • testing/ServiceWorkerInternals.idl:

LayoutTests:

  • http/wpt/service-workers/navigation-iframe-site-worker.js: Added.
  • http/wpt/service-workers/navigation-iframe-site.https-expected.txt: Added.
  • http/wpt/service-workers/navigation-iframe-site.https.html: Added.
  • http/wpt/service-workers/resources/navigation-iframe-site-frame.html: Added.

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

10:21 AM Changeset in webkit [287632] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebKit

Cherry-pick r287313. rdar://problem/87124922

IPC streams should not accept 0-length stream buffers
https://bugs.webkit.org/show_bug.cgi?id=234552
<rdar://79725420>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-12-21
Reviewed by Antti Koivisto.

Make decoding 0-length stream buffers fail. These buffers are not useful.

No new tests, tests need additional implementation, will be added
in subsequent commits.

  • Platform/IPC/StreamConnectionBuffer.cpp: (IPC::StreamConnectionBuffer::StreamConnectionBuffer): (IPC::StreamConnectionBuffer::decode):

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

10:21 AM Changeset in webkit [287631] by Russell Epstein
  • 3 edits in branches/safari-612-branch/Source/WebCore

Cherry-pick r287286. rdar://problem/87124952

Don't include SVGImageForContainers in allCachedSVGImages
https://bugs.webkit.org/show_bug.cgi?id=234364

Patch by Matt Woodrow <mattwoodrow@apple.com> on 2021-12-20
Reviewed by Dean Jackson.

  • loader/cache/CachedImage.cpp: (WebCore::CachedImage::image const): (WebCore::CachedImage::hasSVGImage const): (WebCore::CachedImage::image): Deleted.
  • loader/cache/CachedImage.h:

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

10:21 AM Changeset in webkit [287630] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebCore

Cherry-pick r287240. rdar://problem/86026618

Fix pointer to blob data in BlobResourceHandle::readDataSync()
<https://webkit.org/b/234459>
<rdar://86026618>

Reviewed by Chris Dumez.

  • platform/network/BlobResourceHandle.cpp: (WebCore::BlobResourceHandle::readDataSync):

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

10:21 AM Changeset in webkit [287629] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebCore

Cherry-pick r287048. rdar://problem/87125012

Adhere to DisplayList iterator's API contract in MemoryDisplayList::~InMemoryDisplayList()
https://bugs.webkit.org/show_bug.cgi?id=234264

Patch by Gabriel Nava Marino <gnavamarino@apple.com> on 2021-12-14
Reviewed by Myles C. Maxfield.

The client is not adhearing to the DisplayList Iterator's API contract in MemoryDisplayList::~InMemoryDisplayList():
"Part of the iterator's API contract is that if the item is nullopt, you're not allowed to keep
iterating - doing this will lead to an infinite loop."

Here we now do so by breaking out of iteration if the item is nullopt.

  • platform/graphics/displaylists/InMemoryDisplayList.cpp: (WebCore::DisplayList::InMemoryDisplayList::~InMemoryDisplayList):

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

10:21 AM Changeset in webkit [287628] by Russell Epstein
  • 15 edits in branches/safari-612-branch

Cherry-pick r287039. rdar://problem/85015428

Move FTP disabling from NetworkLoad::start to NetworkDataTask::NetworkDataTask
https://bugs.webkit.org/show_bug.cgi?id=234280
Source/WebKit:

<rdar://85015428>

Reviewed by Brady Eidson.

A NetworkLoad synchronously failing has caused several issues.
This issue is when a WKDownload is prevented in this way, we don't have a WKDownload in the UI process yet,
and we haven't assigned it an identifier in the network process yet either, so we dereference null and send
unreceived messages in many places. To fix this issue, I move the FTP check to the NetworkDataTask constructor
like we do with blocked port checks and invalid URL checks. I also found that there is a race condition with
CFNetwork also failing to load an empty FTP URL, so we need to prevent us from asking CFNetwork to start a load
for which we have scheduled a failure.

Covered by an API test which used to hit all the horrible failures and now passes reliably.

  • NetworkProcess/NetworkCORSPreflightChecker.cpp: (WebKit::NetworkCORSPreflightChecker::wasBlockedByDisabledFTP):
  • NetworkProcess/NetworkCORSPreflightChecker.h:
  • NetworkProcess/NetworkDataTask.cpp: (WebKit::NetworkDataTask::NetworkDataTask): (WebKit::NetworkDataTask::scheduleFailure):
  • NetworkProcess/NetworkDataTask.h:
  • NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::start): (WebKit::NetworkLoad::wasBlockedByDisabledFTP):
  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/PingLoad.cpp: (WebKit::PingLoad::wasBlockedByDisabledFTP):
  • NetworkProcess/PingLoad.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::resume):
  • Shared/WebErrors.cpp: (WebKit::ftpDisabledError):
  • Shared/WebErrors.h:

Tools:

Reviewed by Brady Eidson.

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

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

10:21 AM Changeset in webkit [287627] by Russell Epstein
  • 6 edits in branches/safari-612-branch

Cherry-pick r286940. rdar://problem/85388372

Implement step 17 of main fetch algorithm
https://bugs.webkit.org/show_bug.cgi?id=234140

Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/fetch-csp.https.html:
  • web-platform-tests/service-workers/service-worker/resources/fetch-csp-iframe.html.sub.headers:

Source/WebCore:

The step was implemented for non DocumentThreadableLoader resources, we need to also do the same step within DocumentThreadableLoader.

Covered by existing updated tests.

  • loader/DocumentThreadableLoader.cpp:
  • loader/DocumentThreadableLoader.h:

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

10:20 AM Changeset in webkit [287626] by Russell Epstein
  • 3 edits
    1 add in branches/safari-612-branch

Cherry-pick r286283. rdar://problem/87125362

[JSC] jumpForTypedArrayOutOfBounds should use asAnyInt since it uses isAnyInt
https://bugs.webkit.org/show_bug.cgi?id=233610
rdar://85820476

Reviewed by Saam Barati.

JSTests:

  • stress/anyint-index.js: Added. (foo):

Source/JavaScriptCore:

Since we are using isAnyInt, then we should use asAnyInt. asUInt32 will crash
if the value is double AnyInt etc.

  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::jumpForTypedArrayOutOfBounds):

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

10:20 AM Changeset in webkit [287625] by Russell Epstein
  • 3 edits
    1 add in branches/safari-612-branch

Cherry-pick r286275. rdar://problem/87125258

[JSC] slice should be aware of TerminationException
https://bugs.webkit.org/show_bug.cgi?id=233593
rdar://85823844

Reviewed by Mark Lam.

JSTests:

  • stress/slice-termination-exception.js: Added. (async infiniteLoop):

Source/JavaScriptCore:

Since termination exception can happen at any time, assertNoException is wrong.

  • runtime/ArrayPrototype.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION):

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

10:20 AM Changeset in webkit [287624] by Russell Epstein
  • 4 edits
    1 add in branches/safari-612-branch

Cherry-pick r286249. rdar://problem/87124979

[JSC] private name operation should use RETURN_IF_EXCEPTION
https://bugs.webkit.org/show_bug.cgi?id=233577
rdar://85813869

Reviewed by Mark Lam.

JSTests:

  • stress/termination-error-in-private-name.js: Added. (C):

Source/JavaScriptCore:

Because of TerminatedExecutionError, error can be thrown at any time.

  • jit/JITOperations.cpp: (JSC::JSC_DEFINE_JIT_OPERATION): (JSC::putPrivateNameOptimize): (JSC::putPrivateName):
  • llint/LLIntSlowPaths.cpp: (JSC::LLInt::LLINT_SLOW_PATH_DECL):

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

10:20 AM Changeset in webkit [287623] by Russell Epstein
  • 6 edits
    1 add in branches/safari-612-branch

Cherry-pick r286228. rdar://problem/87125189

[JSC] GetTypedArrayLengthAsInt52 can get Array::Generic ArrayMode
https://bugs.webkit.org/show_bug.cgi?id=233571
rdar://85812164

Reviewed by Mark Lam.

JSTests:

  • stress/get-typed-array-length-as-int52-generic.js: Added. (foo.bar): (foo):

Source/JavaScriptCore:

If speculation is not populated enough, then GetTypedArrayLengthAsInt52 can get Array::Generic.
In that case, we should convert it to Array::ForceExit as it is done in GetArrayLength.
And blessArrayOperation inserts ForceOSRExit. So GetTypedArrayLengthAsInt52 won't be compiled.

  • dfg/DFGClobberize.h: (JSC::DFG::clobberize):
  • dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode):
  • dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compileGetTypedArrayLengthAsInt52):
  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileGetTypedArrayLengthAsInt52):

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

10:20 AM Changeset in webkit [287622] by Russell Epstein
  • 2 edits in branches/safari-612-branch/JSTests

Cherry-pick r286153. rdar://problem/87124911

Skip new stress test get-array-length-reuse.js if memory-limited
https://bugs.webkit.org/show_bug.cgi?id=233299
rdar://85502079

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-11-24
Reviewed by Yusuke Suzuki.

  • stress/get-array-length-reuse.js:

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

10:20 AM Changeset in webkit [287621] by Russell Epstein
  • 3 edits
    1 add in branches/safari-612-branch

Cherry-pick r285978. rdar://problem/87124911

[JSC] TypedArray GetArrayLength should not use Reuse
https://bugs.webkit.org/show_bug.cgi?id=233299
rdar://85502079

Reviewed by Robin Morisset.

JSTests:

  • stress/get-array-length-reuse.js: Added. (foo):

Source/JavaScriptCore:

We should not perform OSR exit after assigning a value to a reused register, otherwise,
OSR exit cannot recover the proper value. Now TypedArray GetArrayLength can perform
OSR exit after loading a length, so we should not use reused register for length.

  • dfg/DFGSpeculativeJIT.cpp:

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

10:20 AM Changeset in webkit [287620] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-612-branch

Cherry-pick r285710. rdar://problem/87125070

REGRESSION(r285624) Using revert keyword with a css variable hits assert
https://bugs.webkit.org/show_bug.cgi?id=233031
rdar://85332271

Reviewed by Tim Horton.

Source/WebCore:

Test: fast/selectors/variable-revert-crash.html

  • style/StyleBuilderState.h:

Default initialization set the variable to a value that is not in the enumeration.

LayoutTests:

  • fast/selectors/variable-revert-crash-expected.txt: Added.
  • fast/selectors/variable-revert-crash.html: Added.

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

10:20 AM Changeset in webkit [287619] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebKit

Cherry-pick r285431. rdar://problem/87124705

WKSyntheticTapGestureRecognizer's action targets should be weak pointers
https://bugs.webkit.org/show_bug.cgi?id=232812

Reviewed by Tim Horton.

Make WKSyntheticTapGestureRecognizer robust against the case where it outlives its WKContentView, by making its
"reset", "gesture identified", and "gesture failed" targets weak pointers instead of raw pointers.

  • UIProcess/ios/WKSyntheticTapGestureRecognizer.mm: (-[WKSyntheticTapGestureRecognizer lastTouchedScrollView]):

Drive-by fix: we can also make _lastTouchedScrollView use the weak ivar attribute instead of WeakObjCPtr,
now that
weak is enabled in WebKit2.

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

10:20 AM Changeset in webkit [287618] by Russell Epstein
  • 4 edits in branches/safari-612-branch

Cherry-pick r284980. rdar://problem/84223894

Fix CARingBuffer mix mode
https://bugs.webkit.org/show_bug.cgi?id=232427
Source/WebCore:

Reviewed by Eric Carlson.

Like done for Copy, we need to use the destination offset to write data properly.

Covered by API test.

  • platform/audio/cocoa/CARingBuffer.cpp:

Tools:

<rdar://problem/84747657>

Reviewed by Eric Carlson.

  • TestWebKitAPI/Tests/WebCore/CARingBuffer.cpp:

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

10:20 AM Changeset in webkit [287617] by Russell Epstein
  • 8 edits in branches/safari-612-branch/Source/ThirdParty/libwebrtc

Cherry-pick r283610. rdar://problem/83435926

ObjectiveC WebRTC frame buffers are autoreleased late, especially on Debug builds
https://bugs.webkit.org/show_bug.cgi?id=231162

Reviewed by David Kilzer.

Instead of waiting for the autorelease pool to release these objects, we explicitly release them by calling close.
This ensures that pixel buffers get released very quickly.

  • Source/webrtc/sdk/WebKit/WebKitEncoder.mm:
  • Source/webrtc/sdk/objc/api/video_frame_buffer/RTCNativeI420Buffer+Private.h:
  • Source/webrtc/sdk/objc/api/video_frame_buffer/RTCNativeI420Buffer.mm:
  • Source/webrtc/sdk/objc/base/RTCI420Buffer.h:
  • Source/webrtc/sdk/objc/base/RTCVideoFrameBuffer.h:
  • Source/webrtc/sdk/objc/components/video_frame_buffer/RTCCVPixelBuffer.h:
  • Source/webrtc/sdk/objc/components/video_frame_buffer/RTCCVPixelBuffer.mm:
  • Source/webrtc/sdk/objc/native/src/objc_frame_buffer.mm:

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

10:10 AM Changeset in webkit [287616] by pvollan@apple.com
  • 5 edits in trunk/Source/WebKit

[macCatalyst][GPUP][NetworkProcess] Block WindowServer connections
https://bugs.webkit.org/show_bug.cgi?id=234432
<rdar://problem/85990387>

Reviewed by Brent Fulgham.

Block WindowServer connections on macCatalyst.

  • GPUProcess/mac/GPUProcessMac.mm:

(WebKit::GPUProcess::initializeProcess):

  • NetworkProcess/mac/NetworkProcessMac.mm:

(WebKit::NetworkProcess::initializeProcess):

  • Shared/Cocoa/AuxiliaryProcessCocoa.mm:

(WebKit::AuxiliaryProcess::setApplicationIsDaemon):

  • WebAuthnProcess/mac/WebAuthnProcessMac.mm:

(WebKit::WebAuthnProcess::initializeProcess):

7:48 AM Changeset in webkit [287615] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS][WP] Block sandbox access to syscall
https://bugs.webkit.org/show_bug.cgi?id=234846
<rdar://problem/87093120>

Reviewed by Brent Fulgham.

Block sandbox access to syscall which only is needed on MacCatalyst.

  • WebProcess/com.apple.WebProcess.sb.in:
7:41 AM Changeset in webkit [287614] by Jonathan Bedard
  • 4 edits in trunk/Tools

Running layout tests sometimes throws an AssertionError in python2.7/multiprocessing
https://bugs.webkit.org/show_bug.cgi?id=234487

Reviewed by Simon Fraser.

  • Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Scripts/libraries/webkitcorepy/webkitcorepy/task_pool.py:

(_BiDirectionalQueue.send): Log failed queue put.

3:26 AM Changeset in webkit [287613] by youenn@apple.com
  • 9 edits
    2 adds in trunk

MediaRecorder should support the bitsPerSecond option
https://bugs.webkit.org/show_bug.cgi?id=234784

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/mediacapture-record/MediaRecorder-bitrate.https-expected.txt:

Source/WebCore:

In case bitsPerSecond is set, we now compute audioBitsPerSecond and videoBitsPerSecond value according to it.
We set audioBitsPerSecond to a tenth of bitsPerSecond and set videoBitsPerSecond to the remaining available bandwidth.
We then use minimum values of 8kbps for audio and 80kbps for video.
As per spec, we compute these values at creation, start and stop times.
We introduce dedicated class members for audio and video bitrates, similarly to the spec defining corresponding slots.

Test: http/wpt/mediarecorder/MediaRecorder-bitrate.html

  • Modules/mediarecorder/MediaRecorder.cpp:
  • Modules/mediarecorder/MediaRecorder.h:
  • platform/mediarecorder/MediaRecorderPrivate.cpp:
  • platform/mediarecorder/MediaRecorderPrivate.h:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

LayoutTests:

  • http/wpt/mediarecorder/MediaRecorder-bitrate-expected.txt: Added.
  • http/wpt/mediarecorder/MediaRecorder-bitrate.html: Added.
2:46 AM Changeset in webkit [287612] by youenn@apple.com
  • 19 edits
    10 adds in trunk

Fetch using FormData with file doesn't go through Service Worker
https://bugs.webkit.org/show_bug.cgi?id=187461
<rdar://problem/41975544>

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/response/response-consume-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume-stream.any-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume-stream.any.worker-expected.txt:

Source/WebCore:

Add support for reading formData based bodies through streams or regular methods like text.
For that purpose, we add FormDataConsumer which allows serializing form datas that may contain files or blobs.
Add the ability to load blobs from BlobLoader using the internal URL (stored in FormData) in lieu of passing a blob object.
Enable fetch events for form data based fetch events.

Test: http/wpt/service-workers/form-data-upload.html

  • Modules/fetch/FetchBody.cpp:
  • Modules/fetch/FetchBody.h:
  • Modules/fetch/FetchBodyConsumer.cpp:
  • Modules/fetch/FetchBodyConsumer.h:
  • Modules/fetch/FormDataConsumer.cpp: Added.
  • Modules/fetch/FormDataConsumer.h: Added.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • fileapi/BlobLoader.h:
  • fileapi/FileReaderLoader.cpp:
  • fileapi/FileReaderLoader.h:
  • workers/service/context/ServiceWorkerFetch.cpp:

LayoutTests:

In addition to adding a test to http/wpt/fetch/request-consume-stream.html, we fix the other tests that should all be passing.
Add http/wpt/service-workers/form-data-upload.html and translate exiting http/tests scripts for the WPT server.

  • http/wpt/fetch/request-consume-stream-expected.txt:
  • http/wpt/fetch/request-consume-stream.html:
  • http/wpt/service-workers/form-data-upload-expected.txt: Added.
  • http/wpt/service-workers/form-data-upload-worker.js: Added.
  • http/wpt/service-workers/form-data-upload.html: Added.
  • http/wpt/service-workers/resources/create-temp-file-iframe.html: Added.
  • http/wpt/service-workers/resources/reset-temp-file.py: Added.
  • http/wpt/service-workers/resources/temp-file-utils.js: Added.
  • http/wpt/service-workers/resources/touch-temp-file.py: Added.
  • http/wpt/service-workers/resources/write-temp-file.py: Added.
2:35 AM Changeset in webkit [287611] by youenn@apple.com
  • 20 edits
    3 copies
    6 adds
    2 deletes in trunk

Make sure secure websocket connections in service workers can trigger authentication challenge callbacks
https://bugs.webkit.org/show_bug.cgi?id=234809
<rdar://85888177>

Reviewed by Chris Dumez.

Source/WebCore:

  • dom/Document.h:

Source/WebKit:

In case we are not using fast server trust evaluation, we are going to the UIProcess to check certificates.
This is an issue for web socket loads triggered for service workers that have an invalid certificate.
Before the patch, the challenge was not provided a top origin, so the default action would be triggered by UIProcess.
To make sure this is working as expected, we now always pass the origin if it is the same as the top origin for web socket challenges.
This makes sure we get a page with the same top origin and the challenge callback is called on the page.

Covered by updated tests.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:
  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkSession.cpp:
  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/NetworkSocketChannel.cpp:
  • NetworkProcess/NetworkSocketChannel.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:
  • NetworkProcess/cocoa/WebSocketTaskCocoa.h:
  • NetworkProcess/cocoa/WebSocketTaskCocoa.mm:
  • NetworkProcess/soup/NetworkSessionSoup.cpp:
  • NetworkProcess/soup/NetworkSessionSoup.h:
  • WebProcess/Network/WebSocketChannel.cpp:

LayoutTests:

  • http/tests/workers/service/serviceworker-websocket.https-expected.txt:
  • http/tests/workers/service/serviceworker-websocket.https.html:
  • platform/gtk/http/tests/workers/service/serviceworker-websocket.https-expected.txt: Copied from LayoutTests/http/tests/workers/service/serviceworker-websocket.https-expected.txt.
  • platform/ios-wk2/http/tests/workers/service/serviceworker-websocket.https-expected.txt: Removed.
  • platform/mac-bigsur-wk2/http/tests/workers/service/serviceworker-websocket.https-expected.txt: Copied from LayoutTests/http/tests/workers/service/serviceworker-websocket.https-expected.txt.
  • platform/mac-catalina-wk2/http/tests/workers/service/serviceworker-websocket.https-expected.txt: Copied from LayoutTests/http/tests/workers/service/serviceworker-websocket.https-expected.txt.
2:01 AM Changeset in webkit [287610] by Martin Robinson
  • 11 edits in trunk

Change offsetParent to match spec change
https://bugs.webkit.org/show_bug.cgi?id=161788
<rdar://problem/28230510>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-contain/content-visibility/content-visibility-038-expected.txt: Rebase test that fails differently now.
  • web-platform-tests/css/css-transforms/preserve-3d-flat-grouping-properties-containing-block-expected.txt: Ditto.
  • web-platform-tests/css/cssom-view/offsetParent_element_test.html: Increase the test coverage for this test case.
  • web-platform-tests/svg/extensibility/foreignObject/containing-block-expected.txt: Part of this test now passes.

Source/WebCore:

No new tests. This is covered by new test statements in web-platform-tests/css/cssom-view/offsetParent_element_test.html.

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::offsetParent const): Update the offsetParent algorithm to return all elements
that create containing blocks for absolutely positioned items and not just positioned elements.

LayoutTests:

  • fast/clip/hit-test-with-clip-path.html: Rewrite this test to use getBoundingClientRect.
  • fast/forms/resources/common.js:

(searchCancelButtonPosition): Ditto.

  • fast/forms/search-transformed.html: Ditto.
1:52 AM Changeset in webkit [287609] by commit-queue@webkit.org
  • 6 edits in trunk

Unreviewed, reverting r285915.
https://bugs.webkit.org/show_bug.cgi?id=234873

causes crashes

Reverted changeset:

"border-radius inline style should serialize with valid
syntax"
https://bugs.webkit.org/show_bug.cgi?id=183994
https://commits.webkit.org/r285915

12:41 AM Changeset in webkit [287608] by youenn@apple.com
  • 6 edits
    1 add in trunk

Tighten ServiceWorkerRegistrationKey::fromDatabaseKey
https://bugs.webkit.org/show_bug.cgi?id=234838

Reviewed by Chris Dumez.

Source/WebCore:

Add missing input validation checks.
Covered by API test.
In addition, validate that the registration key matches the other database fields.

  • workers/service/ServiceWorkerRegistrationKey.cpp:
  • workers/service/ServiceWorkerRegistrationKey.h:
  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::RegistrationDatabase::importRecords):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/ServiceWorkerRoutines.cpp: Added.
12:24 AM Changeset in webkit [287607] by youenn@apple.com
  • 5 edits
    2 adds in trunk

WebPageProxy::requestUserMediaPermissionForSpeechRecognition should return early in case of no capture devices
https://bugs.webkit.org/show_bug.cgi?id=234837
<rdar://87055505>

Reviewed by Chris Dumez.

Source/WebKit:

Test: fast/speechrecognition/start-recognition-without-devices.html

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestUserMediaPermissionForSpeechRecognition):

LayoutTests:

  • fast/speechrecognition/start-recognition-without-devices-expected.txt: Added.
  • fast/speechrecognition/start-recognition-without-devices.html: Added.
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
12:22 AM Changeset in webkit [287606] by Martin Robinson
  • 4 edits in trunk

CSS transform property should take into account transform reference box
https://bugs.webkit.org/show_bug.cgi?id=234144
<rdar://problem/86630206>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-transforms/transform-percent-009-expected.txt:

Source/WebCore:

No new tests. This is covered by the existing WPT test:

web-platform-tests/css/css-transforms/transform-percent-009.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::computedTransform): Use the transform reference box when computing the
computed transform instead of always using the border box. This function is
modified to take in a RenderElement to avoid casting. All callers pass a RenderElement.

12:02 AM Changeset in webkit [287605] by Fujii Hironori
  • 2 edits in trunk/Tools

[Win][DumpRenderTree] dumpHistoryItem leaks a SafeArray
https://bugs.webkit.org/show_bug.cgi?id=234870

Reviewed by Darin Adler.

r23462 added the following code.

if (arrPtr && SUCCEEDED(::SafeArrayUnlock(arrPtr)))

::SafeArrayDestroy(arrPtr);

However, the array wasn't locked. SafeArrayUnlock always failed.
Thus, SafeArrayDestroy wasn't called.

  • DumpRenderTree/win/DumpRenderTree.cpp:

(dumpHistoryItem): Don't use SafeArrayUnlock. Fixed a typo 'arrary'.

Note: See TracTimeline for information about the timeline view.