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

Timeline



Oct 24, 2020:

11:20 PM Changeset in webkit [268956] by ysuzuki@apple.com
  • 16 edits
    7 adds in trunk

[ECMA-402] Implement Intl.ListFormat
https://bugs.webkit.org/show_bug.cgi?id=209775

Reviewed by Ross Kirsling.

JSTests:

  • stress/intl-listformat.js: Added.

(shouldBe):
(shouldNotThrow):
(shouldThrow):
(test.DerivedListFormat):
(test.get shouldThrow):
(test):

Source/JavaScriptCore:

This patch implements Intl.ListFormat. Intl.ListFormat requires ulistfmt_openForType.
But it is available after ICU 67, and it is draft (unstable) API in ICU 67.
But now, this function is stable in ICU 68 without signature change and no major
change happened to this API. Thus, we can assume that this API signature won't be changed.
We specially undef U_HIDE_DRAFT_API for unicode/ulistformatter.h to use this draft (but stable) APIs.

While macOS / iOS shipping ICU (AppleICU) is ICU 66, AppleICU has ulistfmt_openForType and related APIs
even in ICU 66. We use these APIs in AppleICU 66 to implement Intl.ListFormat.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • runtime/CommonIdentifiers.h:
  • runtime/IntlDisplayNames.cpp:

(JSC::IntlDisplayNames::initializeDisplayNames):

  • runtime/IntlListFormat.cpp: Added.

(JSC::UListFormatterDeleter::operator()):
(JSC::IntlListFormat::create):
(JSC::IntlListFormat::createStructure):
(JSC::IntlListFormat::IntlListFormat):
(JSC::IntlListFormat::finishCreation):
(JSC::IntlListFormat::initializeListFormat):
(JSC::stringListFromIterable):
(JSC::ListFormatInput::ListFormatInput):
(JSC::ListFormatInput::size const):
(JSC::ListFormatInput::stringPointers const):
(JSC::ListFormatInput::stringLengths const):
(JSC::IntlListFormat::format const):
(JSC::IntlListFormat::formatToParts const):
(JSC::IntlListFormat::resolvedOptions const):
(JSC::IntlListFormat::styleString):
(JSC::IntlListFormat::typeString):

  • runtime/IntlListFormat.h: Added.
  • runtime/IntlListFormatConstructor.cpp: Added.

(JSC::IntlListFormatConstructor::create):
(JSC::IntlListFormatConstructor::createStructure):
(JSC::IntlListFormatConstructor::IntlListFormatConstructor):
(JSC::IntlListFormatConstructor::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/IntlListFormatConstructor.h: Added.
  • runtime/IntlListFormatPrototype.cpp: Added.

(JSC::IntlListFormatPrototype::create):
(JSC::IntlListFormatPrototype::createStructure):
(JSC::IntlListFormatPrototype::IntlListFormatPrototype):
(JSC::IntlListFormatPrototype::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/IntlListFormatPrototype.h: Added.
  • runtime/IntlObject.cpp:

(JSC::createListFormatConstructor):
(JSC::IntlObject::finishCreation):

  • runtime/IntlObject.h:

(JSC::intlListFormatAvailableLocales):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::listFormatStructure):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
9:27 PM Changeset in webkit [268955] by Simon Fraser
  • 13 edits
    3 copies
    1 add in trunk/Source/WebCore

[LFC Display] Implement background image painting
https://bugs.webkit.org/show_bug.cgi?id=218155

Reviewed by Zalan Bujtas.

Introduce BoxDecorationData, which stores per-Box box pixel-snapped geometry for
backgrounds and borders. A BoxModelBox that has box decorations will own one.

BoxDecorationData has a vector of FillLayerImageGeometry, which stores pixel-snapped
geometry for background image painting. Code in DisplayFillLayerImageGeometry computes
this geometry (code based on rendering code).

BoxModelBox needs to store pixel snapped padding and content boxes for decoration painting.

Currently TreeBuilder::computeBoxDecorationData() sets up these rects and makes BoxDecorationData,
but this isn't really tree building, so I'd like to move that code somewhere else in
future patches.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::computeBoxDecorationData const):
(WebCore::Display::TreeBuilder::displayBoxForLayoutBox const):

  • display/DisplayTreeBuilder.h:
  • display/css/DisplayBox.cpp:
  • display/css/DisplayBox.h:
  • display/css/DisplayBoxDecorationData.cpp: Copied from Source/WebCore/display/css/DisplayBox.cpp.

(WebCore::Display::BoxDecorationData::create):

  • display/css/DisplayBoxDecorationData.h: Copied from Source/WebCore/display/css/DisplayCSSPainter.h.

(WebCore::Display::BoxDecorationData::backgroundImageGeometry const):
(WebCore::Display::BoxDecorationData::setBackgroundImageGeometry):
(WebCore::Display::BoxDecorationData::roundedBorderRect const):
(WebCore::Display::BoxDecorationData::setRoundedBorderRect):

  • display/css/DisplayBoxModelBox.cpp:

(WebCore::Display::BoxModelBox::setBoxDecorationData):

  • display/css/DisplayBoxModelBox.h:

(WebCore::Display::BoxModelBox::absolutePaddingBoxRect const):
(WebCore::Display::BoxModelBox::setAbsolutePaddingBoxRect):
(WebCore::Display::BoxModelBox::absoluteContentBoxRect const):
(WebCore::Display::BoxModelBox::setAbsoluteContentBoxRect):
(WebCore::Display::BoxModelBox::boxDecorationData const):

  • display/css/DisplayCSSPainter.cpp:

(WebCore::Display::CSSPainter::paintFillLayer):
(WebCore::Display::CSSPainter::paintBackgroundImages):
(WebCore::Display::CSSPainter::paintBoxDecorations):

  • display/css/DisplayCSSPainter.h:
  • display/css/DisplayFillLayerImageGeometry.cpp: Added.

(WebCore::Display::resolveWidthForRatio):
(WebCore::Display::resolveHeightForRatio):
(WebCore::Display::resolveAgainstIntrinsicWidthOrHeightAndRatio):
(WebCore::Display::resolveAgainstIntrinsicRatio):
(WebCore::Display::calculateImageIntrinsicDimensions):
(WebCore::Display::calculateFillTileSize):
(WebCore::Display::getSpace):
(WebCore::Display::resolveEdgeRelativeLength):
(WebCore::Display::pixelSnappedFillLayerImageGeometry):
(WebCore::Display::geometryForLayer):
(WebCore::Display::calculateFillLayerImageGeometry):

  • display/css/DisplayFillLayerImageGeometry.h: Copied from Source/WebCore/display/DisplayTreeBuilder.h.

(WebCore::Display::FillLayerImageGeometry::FillLayerImageGeometry):
(WebCore::Display::FillLayerImageGeometry::destRect const):
(WebCore::Display::FillLayerImageGeometry::phase const):
(WebCore::Display::FillLayerImageGeometry::tileSize const):
(WebCore::Display::FillLayerImageGeometry::spaceSize const):
(WebCore::Display::FillLayerImageGeometry::hasNonLocalGeometry const):
(WebCore::Display::FillLayerImageGeometry::relativePhase const):
(WebCore::Display::FillLayerImageGeometry::clip):

  • display/css/DisplayStyle.cpp:

(WebCore::Display::deepCopy):
(WebCore::Display::Style::Style):
(WebCore::Display::Style::hasBackgroundImage const):

  • display/css/DisplayStyle.h:

(WebCore::Display::Style::backgroundLayers const):
(WebCore::Display::Style::hasBackgroundImage const): Deleted.

3:55 PM Changeset in webkit [268954] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

[LFC Display] Create display boxes for atomic inlines and inline blocks
https://bugs.webkit.org/show_bug.cgi?id=218153

Reviewed by Zalan Bujtas.

When iterating line runs, recurse into container layout boxes for inline-block, and
make display boxes for other textless runs for other atomic inlines like replaced
elements.

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::buildInlineDisplayTree const):

1:19 PM Changeset in webkit [268953] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

[LFC Display] Simplify display tree building
https://bugs.webkit.org/show_bug.cgi?id=218152

Reviewed by Zalan Bujtas.

Rather than tracking container/current child display boxes in various places in the code,
wrap it up in a small InsertionPosition struct and TreeBuilder::insert() which handles
the setFirstChild/setNextSibling logic.

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::build const):
(WebCore::Display::TreeBuilder::insert const):
(WebCore::Display::TreeBuilder::buildInlineDisplayTree const):
(WebCore::Display::TreeBuilder::recursiveBuildDisplayTree const):

  • display/DisplayTreeBuilder.h:
12:30 PM Changeset in webkit [268952] by jer.noble@apple.com
  • 14 edits
    4 adds in trunk

[BigSur] Appending a new WebM init segment between Cluster elements throws an error
https://bugs.webkit.org/show_bug.cgi?id=218149
<rdar://problem/70416537>

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Add an "OnElementEnd()" callback to libwebm.

  • Source/third_party/libwebm/webm_parser/include/webm/callback.h:
  • Source/third_party/libwebm/webm_parser/src/callback.cc:
  • Source/third_party/libwebm/webm_parser/src/master_parser.cc:
  • Source/third_party/libwebm/webm_parser/src/webm_parser.cc:

Source/WebCore:

Test: media/media-source/media-source-webm-init-inside-segment.html

The WebM Byte Stream Format specification states that an "initialization segment" consists
of both a leading Ebml element and Segment element, and a "media segment" consists of a
single Cluster element. However, while both Ebml and Segment elements are top-level, Cluster
elements are contained within a Segment. This means if a client pushes a new "initialization
segment" after parsing some-but-not-all Clusters within a Segment, the new Ebml and Segment
elements will be parsed as children of the preceeding Segment, and the subsquent Segment
will overflow its "parent's" size.

In order to support appending a new "initialization segment" while still in the middle of
parsing the previous Segment element, first improve our state tracking in order to determine
what the current parent element is. Then, when we detect that an Ebml element is parsed
while still inside a Segment, abort with a simulated error, which when caught, will indicate
that the parser needs to be reset, and the reader "rewound" to the Ebml's position.

To allow the reader to rewind, we must not throw away appended data as we iterate over them.
Instead, we will only discard read samples once each parsing pass is fully complete. This
allows us to "rewind" across appended segment boundaries, if necessary.

Because all WTF::Deque iterators are invalidated whenever any element is removed, and
because we do not need random-access to the elements in the deque, replace the Deque with a
StdList to store the incoming data.

  • platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.h:
  • platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:

(WebCore::SourceBufferParserAVFObjC::setLogger):

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

(WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):

  • platform/graphics/cocoa/SourceBufferParser.h:
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WTF::LogArgument<webm::Id>::toString):
(WTF::LogArgument<WebCore::SourceBufferParserWebM::State>::toString):
(WebCore::logChannel):
(WebCore::logClassName):
(WebCore::SourceBufferParserWebM::appendData):
(WebCore::SourceBufferParserWebM::resetParserState):
(WebCore::SourceBufferParserWebM::invalidate):
(WebCore::SourceBufferParserWebM::setLogger):
(WebCore::SourceBufferParserWebM::OnElementBegin):
(WebCore::SourceBufferParserWebM::OnElementEnd):
(WebCore::SourceBufferParserWebM::OnEbml):
(WebCore::SourceBufferParserWebM::OnSegmentBegin):
(WebCore::SourceBufferParserWebM::OnInfo):
(WebCore::SourceBufferParserWebM::OnTrackEntry):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

LayoutTests:

  • media/media-source/content/test-vp9-long-manifest.json: Added.
  • media/media-source/content/test-vp9-long.webm: Added.
  • media/media-source/media-source-webm-init-inside-segment-expected.txt: Added.
  • media/media-source/media-source-webm-init-inside-segment.html: Added.
  • platform/mac/TestExpectations:
6:46 AM Changeset in webkit [268951] by Antti Koivisto
  • 3 edits
    2 adds in trunk

[LFC][Integration] Replaced elements in newly created line layout should always be updated
https://bugs.webkit.org/show_bug.cgi?id=218150

Reviewed by Zalan Bujtas.

Source/WebCore:

Test: fast/inline/inline-with-img-dynamic.html

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutLFCLines):

We may need to recreate line layout while children still have valid style.
Ensure that replaced dimensions are still updated.

LayoutTests:

  • fast/inline/inline-with-img-dynamic-expected.html: Added.
  • fast/inline/inline-with-img-dynamic.html: Added.
6:22 AM Changeset in webkit [268950] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Negative margin start pulls the replaced box to logical left direction
https://bugs.webkit.org/show_bug.cgi?id=218147

Reviewed by Antti Koivisto.

Account for negative margin start when computing the logical left position on the line.
This patch fixes LayoutTests/imported/w3c/web-platform-tests/css/css-multicol/multicol-inherit-002-expected.xht.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendNonReplacedInlineBox):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::inlineItemWidth const):
(WebCore::Layout::LineBuilder::nextContentForLine):

6:18 AM Changeset in webkit [268949] by Caio Lima
  • 2 edits in trunk/JSTests

[EWS][ARMv7] Flaky test stress/json-stringify-stack-overflow.js
https://bugs.webkit.org/show_bug.cgi?id=218129

Unreviewed test gardening.

  • stress/json-stringify-stack-overflow.js:
5:43 AM Changeset in webkit [268948] by Alan Bujtas
  • 19 edits in trunk/Source/WebCore

[LFC] BoxGeometry logicalWidth/Height/Rect functions are confusing
https://bugs.webkit.org/show_bug.cgi?id=218145

Reviewed by Antti Koivisto.

BoxGeometry represents the layout node both as a box relative to the containing block (BoxGeometry::logicalRect(), logicalLeft(), logicalWidth())
and as a box relative to the border box (BoxGeometry::marginBox(), paddingBox(), contentBox()).
These 2 sets of geometries may be confusing in certain cases, e.g. logicalWidth() does not say whether it's border, padding or content box.
BoxGometry is mostly used as a box relative to the border box (0, 0, border box width, border box height) so let's make the other set as a
static API.

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::build const):
(WebCore::Display::TreeBuilder::recursiveBuildDisplayTree const):
(WebCore::Display::TreeBuilder::displayBoxForRootBox const):
(WebCore::Display::TreeBuilder::displayBoxForLayoutBox const):

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::staticHorizontalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):

  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider):
(WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear):
(WebCore::Layout::BlockFormattingContext::verticalPositionWithMargin const):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::staticVerticalPosition const):

  • layout/flexformatting/FlexFormattingContext.cpp:

(WebCore::Layout::FlexFormattingContext::sizeAndPlaceFlexItems):

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::positionForNonFloatingFloatAvoider const):
(WebCore::Layout::FloatingContext::mapTopLeftToFloatingStateRoot const):
(WebCore::Layout::FloatingContext::mapPointFromFormattingContextRootToFloatingStateRoot const):

  • layout/floats/FloatingState.h:

(WebCore::Layout::FloatingState::FloatItem::rectWithMargin const):
(WebCore::Layout::FloatingState::FloatItem::bottom const):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::inlineItemWidth const):

  • layout/layouttree/LayoutBoxGeometry.cpp:

(WebCore::Layout::BoxGeometry::borderBox const):

  • layout/layouttree/LayoutBoxGeometry.h:

(WebCore::Layout::BoxGeometry::logicalTop):
(WebCore::Layout::BoxGeometry::logicalLeft):
(WebCore::Layout::BoxGeometry::logicalTopLeft):
(WebCore::Layout::BoxGeometry::borderRect):
(WebCore::Layout::BoxGeometry::marginRect):
(WebCore::Layout::BoxGeometry::logicalBottom const): Deleted.
(WebCore::Layout::BoxGeometry::logicalRight const): Deleted.
(WebCore::Layout::BoxGeometry::logicalBottomRight const): Deleted.
(WebCore::Layout::BoxGeometry::logicalSize const): Deleted.
(WebCore::Layout::BoxGeometry::logicalWidth const): Deleted.
(WebCore::Layout::BoxGeometry::logicalHeight const): Deleted.
(WebCore::Layout::BoxGeometry::isEmpty const): Deleted.
(WebCore::Layout::BoxGeometry::logicalRect const): Deleted.
(WebCore::Layout::BoxGeometry::logicalRectWithMargin const): Deleted.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputLayoutBox):

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::setUsedGeometryForSections):

  • layout/tableformatting/TableFormattingContextGeometry.cpp:

(WebCore::Layout::TableFormattingContext::Geometry::cellHeigh const):

  • layout/tableformatting/TableLayout.cpp:

(WebCore::Layout::TableFormattingContext::TableLayout::distributedVerticalSpace):

  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::layoutUsingFormattingContext):

Oct 23, 2020:

11:30 PM Changeset in webkit [268947] by Simon Fraser
  • 7 edits
    2 adds in trunk

REGRESSION (r260276): Unable to click on image and text link at the bottom of https://www.nytimes.com/ article
https://bugs.webkit.org/show_bug.cgi?id=218137
<rdar://problem/70439526>

Reviewed by Zalan Bujtas.
Source/WebCore:

r238725 made RenderLayers for accelerated overflow:scroll be self-painting, but that
changes paint and hit-testing order, which affected this nytimes article (the failing
element has large negative margin-top).

This is the fundamental compositing bug, but we can work around it in this case by
only making the layer self-painting if it does actually scroll.

Test: fast/layers/overflow-scroll-self-painting.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::updateScrollInfoAfterLayout): Need to update isSelfPaintingLayer()
after layout because now it depends on scrollable overflow.
(WebCore::RenderLayer::shouldBeSelfPaintingLayer const): Consult hasCompositedScrollableOverflow()
rather than canUseCompositedScrolling().

LayoutTests:

New test. Rebaseline tests affected by the self-painting layer change.

  • compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness-expected.txt:
  • compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping-expected.txt:
  • fast/layers/overflow-scroll-self-painting-expected.html: Added.
  • fast/layers/overflow-scroll-self-painting.html: Added.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness-expected.txt:
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping-expected.txt:
5:02 PM Changeset in webkit [268946] by rniwa@webkit.org
  • 7 edits in trunk

IPC testing API should expose ArrayBuffer for an unknown decoded argument
https://bugs.webkit.org/show_bug.cgi?id=218113

Reviewed by Darin Adler.

Source/WebKit:

Expose the decoded argument as an ArrayBuffer when it can't be encoded as a JS value.

Also make the treatment of a JS array as a tuple or a Vector explicit in argument encoding.

Test: TestWebKitAPI.IPCTestingAPI.CanInterceptAlert

  • Platform/IPC/Decoder.h:

(IPC::Decoder::currentBufferPosition const): Added.

  • Platform/IPC/JSIPCBinding.cpp:

(IPC::putJSValueForDecodedArgumentAtIndexOrArrayBufferIfUndefined): Added.

  • Platform/IPC/JSIPCBinding.h:

(IPC::DecodedArgumentJSValueConverter): Deleted.
(IPC::putJSValueForDecodeArgumentInArray): Replaced DecodedArgumentJSValueConverter.
Take Decoder and decode each tuple argument and create a JS value at a time.
(IPC::jsValueForArgumentTuple): Deleted. Merged into jsValueForDecodedArguments.
(IPC::jsValueForDecodedArguments):

  • WebProcess/WebPage/IPCTestingAPI.cpp:

(WebKit::IPCTestingAPI::VectorEncodeHelper::encode const):
(WebKit::IPCTestingAPI::encodeArrayArgument): Extracted out of encodeArgument.
(WebKit::IPCTestingAPI::encodeArgument): Treat an array as a tuple unless it's explicitly
specified that the argument's type is a Vector.

Tools:

Updated a test case to check that the unknown type produces an ArrayBuffer.

  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:

(IPCTestingAPI.CanInterceptAlert):

4:09 PM Changeset in webkit [268945] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, mark imported/w3c/web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/test-analyser-output.html as flaky.

It was unskipped recently but it is still flaky.

4:02 PM Changeset in webkit [268944] by Russell Epstein
  • 1 copy in tags/Safari-610.2.11.51.6

Tag Safari-610.2.11.51.6.

4:00 PM Changeset in webkit [268943] by Alan Coon
  • 8 edits in branches/safari-610.2.11.51-branch/Source

Versioning.

WebKit-7610.2.11.51.6

3:53 PM Changeset in webkit [268942] by keith_miller@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

Using WASM function size as the cap for choosing a register allocator causes performance regressions.
https://bugs.webkit.org/show_bug.cgi?id=217290

Reviewed by Michael Saboff.

Previously in https://bugs.webkit.org/show_bug.cgi?id=212105 we
limited the size of WASM functions we compile with OMG because
sufficiently large functions caused us to OOM while register
allocating. The memory growth we saw is because the memory usage
of graph coloring is O((number of tmps)2). However, some large
WASM functions may not have that many tmps by the time we get to
register allocation. This patch changes our heuristic to instead
use the total number of tmps right before register allocation
instead of the WASM function size. The number of tmps is more
likely to represent the worst case memory usage of register
allocation. This fixes a performance regression in Safari 14 when running
https://dos.zone/en/play/https%3A%2F%2Fdoszone-uploads.s3.dualstack.eu-central-1.amazonaws.com%2Foriginal%2F2X%2Fb%2Fb4b5275904d86a4ab8a20917b2b7e34f0df47bf7.jsdos

  • b3/air/AirGenerate.cpp:

(JSC::B3::Air::prepareForGeneration):

  • runtime/OptionsList.h:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::AirIRGenerator):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::parseAndCompile):

  • wasm/WasmCompilationMode.cpp:

(JSC::Wasm::wasmFunctionSizeCanBeOMGCompiled): Deleted.

  • wasm/WasmCompilationMode.h:
  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

2:27 PM Changeset in webkit [268941] by Hector Lopez
  • 2 edits
    3 adds in trunk/LayoutTests

2 fast/canvas/canvas* tests are flaky failures
<rdar://70623742>

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
2:04 PM Changeset in webkit [268940] by Darin Adler
  • 17 edits
    2 adds in trunk

Source/WebCore:
REGRESSION(r266295): DOMSelection's addRange and containsNode behave incorrectly when selection crosses shadow boundaries
https://bugs.webkit.org/show_bug.cgi?id=218007

Reviewed by Ryosuke Niwa.

Test: editing/selection/selections-across-trees.html

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::linkClickPoint): Update for the new name of
isPointInRange, contains<ComposedTree>. We can return and change it from ComposedTree
to something else since that's likely not the tree we need here.
(WebCore::AccessibilityRenderObject::setSelectedTextRange): Ditto.
(WebCore::AccessibilityRenderObject::setSelectedVisiblePositionRange const): Ditto.

  • accessibility/atk/WebKitAccessibleInterfaceText.cpp:

(isWhiteSpaceBetweenSentences): Ditto.

  • dom/BoundaryPoint.h: Update to use TreeType enumeration instead of classes.
  • dom/Node.cpp:

(WebCore::depth): Ditto.
(WebCore::commonInclusiveAncestorAndChildren): Ditto.
(WebCore::treeOrder): Ditto.

  • dom/Node.h: Ditto.
  • dom/Range.cpp:

(WebCore::Range::isPointInRange): Updated since we renamed isPointInRange to be
an overload of contains.

  • dom/SimpleRange.cpp:

(WebCore::treeOrder): Update to use TreeType enumeration instead of classes.
(WebCore::contains): Ditto. Also renamed isPointInRange to an overload of contains.
Also added converted the contains that takes two ranges to a function template.
(WebCore::intersects): Ditto.

  • dom/SimpleRange.h: Reorganized the functions so all the deprecated functions

that silently use ComposedTree are grouped together. Updated the function templates
to use TreeType enumeration instead of classes. Added a couple more function
templates that we used to fix DOMSelection.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::contains const): Update for the new name of sPointInRange,
contains<ComposedTree>. We can return and change it from ComposedTree to something
else since that's likely not the tree we need here.

  • editing/mac/DictionaryLookupLegacy.mm:

(WebCore::selectionContainsPosition): Ditto.

  • page/DOMSelection.cpp:

(WebCore::DOMSelection::addRange): Use intersects<Tree> because we don't want to
use the composed tree here.
(WebCore::DOMSelection::containsNode const): Use intersects<Tree> and contains<Tree>.
Evantually <Tree> will be the default and we can come back here and edit down these
calls for brevity, but first we have to make all the uses of ComposedTree explicit.

Source/WebKitLegacy/win:
REGRESSION(r266295): DOMSelection's addRange and containsNode behave incorrectly when selection crosses shadow boundaries
https://bugs.webkit.org/show_bug.cgi?id=218007

Reviewed by Ryosuke Niwa.

  • AccessibleTextImpl.cpp:

(AccessibleText::isInRange): Updated since we renamed isPointInRange to be
an overload of contains.

Tools:
REGRESSION(r266295): DOMSelection's addRange and containsNode behave incorrectly when selection crosses shadow boundaries
https://bugs.webkit.org/show_bug.cgi?id=218007

Reviewed by Ryosuke Niwa.

  • TestWebKitAPI/Tests/WebCore/DocumentOrder.cpp: Disabled the isPointInRange

test and added comments about how we will restore it in the future.

LayoutTests:
REGRESSION(r266295): DOMSelection's addRange and containsNode behaves incorrectly when selection crosses shadow boundaries
https://bugs.webkit.org/show_bug.cgi?id=218007

Reviewed by Ryosuke Niwa.

  • editing/selection/selections-across-trees-expected.txt: Added.
  • editing/selection/selections-across-trees.html: Added.
1:19 PM Changeset in webkit [268939] by eric.carlson@apple.com
  • 7 edits in trunk

[Media in GPU Process] in-band metadata cues sometimes crash
https://bugs.webkit.org/show_bug.cgi?id=218106
<rdar://problem/70226170>

Reviewed by Jer Noble.

Source/WebCore:

No new tests, enabled existing test in the GPU process.

  • platform/SerializedPlatformDataCueValue.h:

(WebCore::SerializedPlatformDataCueValue::SerializedPlatformDataCueValue):
(WebCore::SerializedPlatformDataCueValue::nativeValue const):
Make m_nativeValue a RetainPtr<> so the ownership and lifetime of the object is
explicit and managed correctly.

  • platform/mac/SerializedPlatformDataCueMac.mm:

(WebCore::SerializedPlatformDataCueMac::encodableValue const): Update for change
to native value.
(WebCore::jsValueWithAVMetadataItemInContext): Ditto.
(WebCore::NSDictionaryWithAVMetadataItem): Return a RetainPtr<NSDictionary> instead
of an auto-released dictionary.

Source/WebKit:

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<WebCore::SerializedPlatformDataCueValue>::encodePlatformData):
SerializedPlatformDataCueValue::nativeValue() is a RetainPtr<>.

LayoutTests:

  • gpu-process/TestExpectations: Mark test as passing.
1:13 PM Changeset in webkit [268938] by Truitt Savell
  • 5 edits in trunk/Tools

Unreviewed, reverting r268761.

May have casued webrtc crashes on Catalina Debug.

Reverted changeset:

"[webkitpy] Use allowlist and blocklist"
https://bugs.webkit.org/show_bug.cgi?id=217985
https://trac.webkit.org/changeset/268761

12:27 PM Changeset in webkit [268937] by Jonathan Bedard
  • 3 edits
    1 delete in trunk/Tools

[webkitpy] Remove the old autointaller
https://bugs.webkit.org/show_bug.cgi?id=218131
<rdar://problem/70627699>

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/test/main.py:

(Tester._run_tests): Remove reference to old autoinstaller.

  • Scripts/webkitpy/thirdparty/init.py: Deleted content.

(autoinstall_everything): Deleted.

12:20 PM Changeset in webkit [268936] by Jonathan Bedard
  • 7 edits in trunk/Tools

[webkitscmpy] Use 'which' to find git and svn paths
https://bugs.webkit.org/show_bug.cgi?id=217717
<rdar://problem/70299192>

Rubber-stamped by Aakash Jain.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git):
(Git.executable): Generate git path from 'which' call.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/scm.py:

(Scm.executable): Generate a program path from a 'which' call.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn):
(Svn.executable): Generate svn path from 'which' call.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:

(Git):

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/svn.py:

(Svn.init):

11:54 AM Changeset in webkit [268935] by aakash_jain@apple.com
  • 5 edits in trunk/Tools

[build.webkit.org] Add python 3 support - part 2
https://bugs.webkit.org/show_bug.cgi?id=218130

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/build.webkit.org-config/buildbot.tac:
  • BuildSlaveSupport/build.webkit.org-config/htdigestparser_unittest.py:
  • BuildSlaveSupport/build.webkit.org-config/loadConfig.py:
  • BuildSlaveSupport/build.webkit.org-config/loadConfig_unittest.py:
11:51 AM Changeset in webkit [268934] by Aditya Keerthi
  • 2 edits in trunk/Source/WebCore

webkit.org/status/ is missing input type=date (and related) features
https://bugs.webkit.org/show_bug.cgi?id=195666

Reviewed by Darin Adler.

  • features.json: Updated to include date and time input types.
11:49 AM Changeset in webkit [268933] by Simon Fraser
  • 3 edits in trunk/LayoutTests

[ macOS wk2 ] fast/scrolling/latching/latched-scroll-remove-iframe.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=216059
<rdar://problem/68177922>

Reviewed by Sam Weinig.

Deflake the test by not using a 16ms timeout, and remove the expectation.

  • fast/scrolling/latching/latched-scroll-remove-iframe.html:
  • platform/mac-wk2/TestExpectations:
11:35 AM Changeset in webkit [268932] by graouts@webkit.org
  • 20 edits in trunk

REGRESSION(r268615): certain animations break when moving from one to display to another or resizing the window
https://bugs.webkit.org/show_bug.cgi?id=218080
<rdar://problem/70547132>

Reviewed by Dean Jackson.

Source/WebCore:

Since transform-related animations include non-interpolating animations meant to insert the static base value for a given
transform-related CSS property, we need to update animations on GraphicsLayerCA whenever one of the transform-related CSS
properties have a new value.

We used to rely on GraphicsLayerCA::setTransform() being called with a different transform than the current one to identify
such cases, but that is suboptimal because that method can be called with a compound interpolated value of transform-related
CSS properties when a rendering update occurs, such as during resizing or moving a window between displays. In those cases,
the static base value of the transform-related CSS properties hasn't actually changed.

Instead, we now provide the non-animated style from the last style change event to the function resolving keyframe effects
so that for a given element we can compare that style with the new, as-yet-non-animated style and see if any of the transform-
related CSS properties have been changed. If that is the case, we inform any KeyframeEffect that has a running accelerated
animation for any of those CSS properties so that the effect may enqueue an accelerated action that will then notify the
GraphicsLayer of such a change, and trigger an animation update.

Since we were changing the applyKeyframeEffects() method signature to add the extra RenderStyle needed to compare the current
and previous non-animated styles, we also moved that method from Element to KeyframeEffectStack since no Element private
API was required.

No new test since this was already tested by webanimations/accelerated-translate-animation-underlying-transform-changed-in-flight.html
and it's not clear how to test the live-resizing or display-change scenario.

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::isRunningAcceleratedTransformRelatedAnimation const): New method called from KeyframeEffectStack::applyKeyframeEffects()
to indicate that a keyframe effect has a running accelerated animation targeting a transform-related property.
(WebCore::KeyframeEffect::addPendingAcceleratedAction): Ensure that the new AcceleratedAction::TransformChange accelerated action
recorded in transformRelatedPropertyDidChange() is not ever set as m_lastRecordedAcceleratedAction as we use this member to identify
whether we have a pending running, pause or stop action.
(WebCore::KeyframeEffect::transformRelatedPropertyDidChange): New method meant to be called for an effect that has a running
accelerated animation targeting a transform-related property to notify that one or more of the target element's transform-related
CSS property static values was changed.
(WebCore::KeyframeEffect::applyPendingAcceleratedActions): Call transformRelatedPropertyDidChange() on the composited renderer for
a AcceleratedAction::TransformChange action.

  • animation/KeyframeEffect.h:
  • animation/KeyframeEffectStack.cpp:

(WebCore::KeyframeEffectStack::applyKeyframeEffects): Move the method previously exposed on Element to KeyframeEffectStack. Additionally,
accept an extra RenderStyle parameter to provide the non-animated style from the last style change event so that we can compare that style
with the new, as-yet-non-animated style and see if any of the transform-related CSS properties have been changed and notify the effect
should it run an accelerated animation for one of those properties.

  • animation/KeyframeEffectStack.h:
  • dom/Element.cpp:

(WebCore::Element::applyKeyframeEffects): Deleted. Moved to KeyframeEffectStack.

  • dom/Element.h:
  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::transformRelatedPropertyDidChange):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setTransform): Move the animation-update logic to transformRelatedPropertyDidChange()
(WebCore::GraphicsLayerCA::transformRelatedPropertyDidChange):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • rendering/RenderElement.h:

(WebCore::RenderElement::transformRelatedPropertyDidChange):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::transformRelatedPropertyDidChange):

  • rendering/RenderLayerBacking.h:
  • rendering/RenderLayerModelObject.cpp:

(WebCore::RenderLayerModelObject::transformRelatedPropertyDidChange):

  • rendering/RenderLayerModelObject.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::createAnimatedElementUpdate): Pass the non-animated style from the last style change event to
KeyframeEffectStack::applyKeyframeEffects() to determine whether this style change event includes a change to any of the
transform-related properties.

  • style/Styleable.h:

(WebCore::Styleable::applyKeyframeEffects const):

LayoutTests:

Increase the fidelity of this test where the scale transform would sometimes yield some 0.01% ImageOnlyFailure results.

  • webanimations/accelerated-translate-animation-additional-animation-added-in-flight-expected.html:
  • webanimations/accelerated-translate-animation-additional-animation-added-in-flight.html:
11:23 AM Changeset in webkit [268931] by aakash_jain@apple.com
  • 2 edits
    1 add in trunk/Tools

[build.webkit.org] Create master.cfg for newer buildbot
https://bugs.webkit.org/show_bug.cgi?id=218102

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/build.webkit.org-config/buildbot.tac:
  • BuildSlaveSupport/build.webkit.org-config/master_buildbot2.cfg: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg.
11:15 AM Changeset in webkit [268930] by Jonathan Bedard
  • 7 edits
    2 adds
    1 delete in trunk/Tools

[webkitpy] Use webkitcorepy's autoinstaller for buildbot and twisted
https://bugs.webkit.org/show_bug.cgi?id=218105
<rdar://problem/70593576>

Rubber-stamped by Aakash Jain.

  • BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:

(BuildBotConfigLoader._add_dependent_modules_to_sys_modules):

  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py:

(Package.archives): tar.bz2 archives are tar.gz archives.
(Package.install): After r267056, we don't need "old-and-unmanageable" and
"single-version-externally-managed", handle case of nested modules more completely.

  • Scripts/webkitpy/autoinstalled/buildbot.py: Added.
  • Scripts/webkitpy/autoinstalled/twisted.py: Added.
  • Scripts/webkitpy/benchmark_runner/http_server_driver/http_server/twisted_http_server.py:

Import new auto installed twisted.

  • Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py:

(SimpleHTTPServerDriver._ensure_http_server_dependencies): Import new auto installed twisted.

  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module): Remove all modules.
(AutoinstallImportHook._install_buildbot): Deleted.
(AutoinstallImportHook._install_twisted_15_5_0): Deleted.

  • Scripts/webkitpy/thirdparty/init_unittest.py: Removed.
11:08 AM Changeset in webkit [268929] by Nikita Vasilyev
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Typo in experimentalEnableStyelsJumpToVariableDeclaration
https://bugs.webkit.org/show_bug.cgi?id=218119

Reviewed by Devin Rousso.

Replace "Styels" with "Styles".

  • UserInterface/Base/Setting.js:
  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype._addVariableTokens):

11:03 AM Changeset in webkit [268928] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests/imported/w3c

REGRESSION (r267402): [ iOS Mojave+ Release ] imported/w3c/web-platform-tests/user-timing/measure-l3.any.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217414

Reviewed by Alex Christensen.

Sometimes lhs of comparison is higher by an infinitisimal margin.
Round number to two-digit precision to prevent such scenarios.

  • web-platform-tests/user-timing/measure-l3.any.js:

(test):

10:10 AM Changeset in webkit [268927] by Hector Lopez
  • 2 edits in trunk/LayoutTests

2 compositing/contents-scale/* tests are flaky failures
<rdar://70623742>

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
9:22 AM Changeset in webkit [268926] by Chris Dumez
  • 6 edits in trunk

AnalyserNode's output should only have one channel
https://bugs.webkit.org/show_bug.cgi?id=218125

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

Rebaseline WPT test that is now passing.

  • web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/test-analyser-output-expected.txt:

Source/WebCore:

AnalyserNode's output should only have one channel. We were using 2 channels, which
was inconsistent with Blink and Gecko.

No new tests, rebaselined existing test.

  • Modules/webaudio/AnalyserNode.cpp:

(WebCore::AnalyserNode::AnalyserNode):

LayoutTests:

Unskip test that is no longer flaky, now that it passes.

9:13 AM Changeset in webkit [268925] by aakash_jain@apple.com
  • 11 edits in trunk/Tools

Rename slave to worker in webkitpy
https://bugs.webkit.org/show_bug.cgi?id=218123

Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/common/net/buildbot/buildbot.py:
  • Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
  • Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:
  • Scripts/webkitpy/common/system/crashlogs_unittest.py:
  • Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py:
  • Scripts/webkitpy/layout_tests/controllers/manager.py:
  • Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:
  • Scripts/webkitpy/port/leakdetector_unittest.py:
  • Scripts/webkitpy/style/checkers/jsonchecker_unittest.py:
7:40 AM Changeset in webkit [268924] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Add initial support for vertical-align: <length> and <percentage>
https://bugs.webkit.org/show_bug.cgi?id=218109

Reviewed by Antti Koivisto.

Raise (positive value) or lower (negative value) the box by this distance.
It fixes css2.1/20110323/vertical-align-boxes-001.htm.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::alignInlineLevelBoxesVerticallyAndComputeLineBoxHeight):

5:53 AM Changeset in webkit [268923] by magomez@igalia.com
  • 13 edits in trunk

[GTK][WPE] Implement antialiased rounded rectangle clipping in TextureMapper
https://bugs.webkit.org/show_bug.cgi?id=174457

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Implement rounded rectangle clipping in TextureMapperGL, supporting up to 10 simultaneous
rounded rectangle clips. TextureMapper::beginClip() now receives a rounded rectangle, and
it applies the appropriate clipping method as required.

The rounded rectangle clip implementation uses the fragment shader to calculate whether
each pixel is inside the defined rounded rectangles, and paints or skips it as needed.

  • platform/graphics/texmap/ClipStack.cpp:

(WebCore::ClipStack::addRoundedRect):

  • platform/graphics/texmap/ClipStack.h:

(WebCore::ClipStack::State::State):
(WebCore::ClipStack::roundedRectComponents const):
(WebCore::ClipStack::roundedRectInverseTransformComponents const):
(WebCore::ClipStack::roundedRectCount const):
(WebCore::ClipStack::isRoundedRectClipEnabled const):
(WebCore::ClipStack::isRoundedRectClipAllowed const):

  • platform/graphics/texmap/TextureMapper.h:
  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::prepareRoundedRectClip):
(WebCore::TextureMapperGL::drawTexture):
(WebCore::TextureMapperGL::drawTexturePlanarYUV):
(WebCore::TextureMapperGL::drawTextureSemiPlanarYUV):
(WebCore::TextureMapperGL::drawTexturePackedYUV):
(WebCore::TextureMapperGL::drawSolidColor):
(WebCore::TextureMapperGL::beginRoundedRectClip):
(WebCore::TextureMapperGL::beginClip):

  • platform/graphics/texmap/TextureMapperGL.h:
  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::paintSelf):
(WebCore::TextureMapperLayer::paintSelfAndChildren):
(WebCore::TextureMapperLayer::paintUsingOverlapRegions):

  • platform/graphics/texmap/TextureMapperShaderProgram.cpp:

(WebCore::TextureMapperShaderProgram::create):

  • platform/graphics/texmap/TextureMapperShaderProgram.h:

Source/WebKit:

Use the new TextureMapper::beginClip() method that receives a FloatRoundedRect.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):

LayoutTests:

Update expectations for passing test.

  • platform/gtk/TestExpectations:
5:44 AM Changeset in webkit [268922] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Fix inline box relative alignment when line-height is set
https://bugs.webkit.org/show_bug.cgi?id=218107

Reviewed by Antti Koivisto.

Inline box relative vertical alignment logic should use the combination of the layout bounds
and the font metric values of the parent inline box.

The layout bound values (ascent and descent adjusted with half leading) normally match the font metric values,
unless the line-height is set to something other than normal.
In such cases the gap affects the vertical position of the child inline level boxes (e.g. text-top aligns with the
top of the text (use font metrics) and not with the layout bounds).

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::alignInlineLevelBoxesVerticallyAndComputeLineBoxHeight):

5:24 AM Changeset in webkit [268921] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.30.2

WPE WebKit 2.30.2

5:23 AM Changeset in webkit [268920] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.30

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

.:

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

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.30.2.
2:55 AM Changeset in webkit [268919] by svillar@igalia.com
  • 22 edits in trunk/Source/WebCore

Rename override sizes to overriding sizes
https://bugs.webkit.org/show_bug.cgi?id=217898

Reviewed by Darin Adler.

We've been traditionally using the word "override" to refer to those sizes that were explicitly set by
layout systems like tables, flex or grid. However that's a grammatical mistake. override is a verb which
does not work well as a noun. It'd be more correct to refer to them as "overriding" sizes.

No new tests required as this is just a renaming.

  • WebCore.order:
  • rendering/ComplexLineLayout.cpp:

(WebCore::ComplexLineLayout::updateRubyForJustifiedText):

  • rendering/GridLayoutFunctions.cpp:

(WebCore::GridLayoutFunctions::hasOverridingContainingBlockContentSizeForChild):
(WebCore::GridLayoutFunctions::overridingContainingBlockContentSizeForChild):
(WebCore::GridLayoutFunctions::hasOverrideContainingBlockContentSizeForChild): Deleted.
(WebCore::GridLayoutFunctions::overrideContainingBlockContentSizeForChild): Deleted.

  • rendering/GridLayoutFunctions.h:
  • rendering/GridTrackSizingAlgorithm.cpp:

(WebCore::shouldClearOverridingContainingBlockContentSizeForChild):
(WebCore::setOverridingContainingBlockContentSizeForChild):
(WebCore::GridTrackSizingAlgorithmStrategy::logicalHeightForChild const):
(WebCore::GridTrackSizingAlgorithmStrategy::minContentForChild const):
(WebCore::GridTrackSizingAlgorithmStrategy::maxContentForChild const):
(WebCore::GridTrackSizingAlgorithmStrategy::updateOverridingContainingBlockContentSizeForChild const):
(WebCore::GridTrackSizingAlgorithmStrategy::minLogicalSizeForChild const):
(WebCore::DefiniteSizeStrategy::minLogicalSizeForChild const):
(WebCore::DefiniteSizeStrategy::minContentForChild const):
(WebCore::shouldClearOverrideContainingBlockContentSizeForChild): Deleted.
(WebCore::setOverrideContainingBlockContentSizeForChild): Deleted.
(WebCore::GridTrackSizingAlgorithmStrategy::updateOverrideContainingBlockContentSizeForChild const): Deleted.

  • rendering/GridTrackSizingAlgorithm.h:
  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::insertPositionedObject):
(WebCore::RenderBlock::computeChildPreferredLogicalWidths const):
(WebCore::RenderBlock::availableLogicalHeightForPercentageComputation const):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::fitBorderToLinesIfNeeded):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::willBeDestroyed):
(WebCore::RenderBox::styleDidChange):
(WebCore::RenderBox::hasOverridingLogicalHeight const):
(WebCore::RenderBox::hasOverridingLogicalWidth const):
(WebCore::RenderBox::setOverridingLogicalHeight):
(WebCore::RenderBox::setOverridingLogicalWidth):
(WebCore::RenderBox::clearOverridingLogicalHeight):
(WebCore::RenderBox::clearOverridingLogicalWidth):
(WebCore::RenderBox::clearOverridingContentSize):
(WebCore::RenderBox::overridingLogicalWidth const):
(WebCore::RenderBox::overridingLogicalHeight const):
(WebCore::RenderBox::overridingContainingBlockContentWidth const):
(WebCore::RenderBox::overridingContainingBlockContentHeight const):
(WebCore::RenderBox::hasOverridingContainingBlockContentWidth const):
(WebCore::RenderBox::hasOverridingContainingBlockContentHeight const):
(WebCore::RenderBox::overridingContainingBlockContentLogicalWidth const):
(WebCore::RenderBox::overridingContainingBlockContentLogicalHeight const):
(WebCore::RenderBox::hasOverridingContainingBlockContentLogicalWidth const):
(WebCore::RenderBox::hasOverridingContainingBlockContentLogicalHeight const):
(WebCore::RenderBox::setOverridingContainingBlockContentLogicalWidth):
(WebCore::RenderBox::setOverridingContainingBlockContentLogicalHeight):
(WebCore::RenderBox::clearOverridingContainingBlockContentSize):
(WebCore::RenderBox::clearOverridingContainingBlockContentLogicalHeight):
(WebCore::RenderBox::containingBlockLogicalWidthForContent const):
(WebCore::RenderBox::containingBlockLogicalHeightForContent const):
(WebCore::RenderBox::perpendicularContainingBlockLogicalHeight const):
(WebCore::RenderBox::computeLogicalWidthInFragment const):
(WebCore::RenderBox::cacheIntrinsicContentLogicalHeightForFlexItem const):
(WebCore::RenderBox::computeLogicalHeight const):
(WebCore::RenderBox::computePercentageLogicalHeight const):
(WebCore::RenderBox::computeReplacedLogicalHeightUsing const):
(WebCore::RenderBox::availableLogicalHeightUsing const):
(WebCore::RenderBox::containingBlockLogicalWidthForPositioned const):
(WebCore::RenderBox::containingBlockLogicalHeightForPositioned const):
(WebCore::RenderBox::hasOverrideLogicalHeight const): Deleted.
(WebCore::RenderBox::hasOverrideLogicalWidth const): Deleted.
(WebCore::RenderBox::setOverrideLogicalHeight): Deleted.
(WebCore::RenderBox::setOverrideLogicalWidth): Deleted.
(WebCore::RenderBox::clearOverrideLogicalHeight): Deleted.
(WebCore::RenderBox::clearOverrideLogicalWidth): Deleted.
(WebCore::RenderBox::clearOverrideContentSize): Deleted.
(WebCore::RenderBox::overrideLogicalWidth const): Deleted.
(WebCore::RenderBox::overrideLogicalHeight const): Deleted.
(WebCore::RenderBox::overrideContainingBlockContentWidth const): Deleted.
(WebCore::RenderBox::overrideContainingBlockContentHeight const): Deleted.
(WebCore::RenderBox::hasOverrideContainingBlockContentWidth const): Deleted.
(WebCore::RenderBox::hasOverrideContainingBlockContentHeight const): Deleted.
(WebCore::RenderBox::overrideContainingBlockContentLogicalWidth const): Deleted.
(WebCore::RenderBox::overrideContainingBlockContentLogicalHeight const): Deleted.
(WebCore::RenderBox::hasOverrideContainingBlockContentLogicalWidth const): Deleted.
(WebCore::RenderBox::hasOverrideContainingBlockContentLogicalHeight const): Deleted.
(WebCore::RenderBox::setOverrideContainingBlockContentLogicalWidth): Deleted.
(WebCore::RenderBox::setOverrideContainingBlockContentLogicalHeight): Deleted.
(WebCore::RenderBox::clearOverrideContainingBlockContentSize): Deleted.
(WebCore::RenderBox::clearOverrideContainingBlockContentLogicalHeight): Deleted.

  • rendering/RenderBox.h:

(WebCore::RenderBox::overridingContentLogicalWidth const):
(WebCore::RenderBox::overridingContentLogicalHeight const):
(WebCore::RenderBox::overrideContentLogicalWidth const): Deleted.
(WebCore::RenderBox::overrideContentLogicalHeight const): Deleted.

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::hasAutoHeightOrContainingBlockWithAutoHeight const):
(WebCore::RenderBoxModelObject::relativePositionOffset const):

  • rendering/RenderBoxModelObject.h:

(WebCore::RenderBoxModelObject::overridingContainingBlockContentWidth const):
(WebCore::RenderBoxModelObject::overridingContainingBlockContentHeight const):
(WebCore::RenderBoxModelObject::hasOverridingContainingBlockContentWidth const):
(WebCore::RenderBoxModelObject::hasOverridingContainingBlockContentHeight const):
(WebCore::RenderBoxModelObject::overrideContainingBlockContentWidth const): Deleted.
(WebCore::RenderBoxModelObject::overrideContainingBlockContentHeight const): Deleted.
(WebCore::RenderBoxModelObject::hasOverrideContainingBlockContentWidth const): Deleted.
(WebCore::RenderBoxModelObject::hasOverrideContainingBlockContentHeight const): Deleted.

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::widthForChild):
(WebCore::heightForChild):
(WebCore::gatherFlexChildrenInfo):
(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):
(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):
(WebCore::RenderDeprecatedFlexibleBox::clearLineClamp):

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::childIntrinsicLogicalWidth const):
(WebCore::RenderFlexibleBox::computeInnerFlexBaseSizeForChild):
(WebCore::RenderFlexibleBox::crossSizeForPercentageResolution):
(WebCore::RenderFlexibleBox::mainSizeForPercentageResolution):
(WebCore::RenderFlexibleBox::constructFlexItem):
(WebCore::RenderFlexibleBox::setOverrideMainAxisContentSizeForChild):
(WebCore::RenderFlexibleBox::applyStretchAlignmentToChild):

  • rendering/RenderFullScreen.cpp:

(WebCore::RenderFullScreen::unwrapRenderer):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::layoutBlock):
(WebCore::RenderGrid::placeItemsOnGrid const):
(WebCore::overrideSizeChanged):
(WebCore::RenderGrid::updateGridAreaLogicalSize const):
(WebCore::RenderGrid::layoutPositionedObject):
(WebCore::RenderGrid::applyStretchAlignmentToChildIfNeeded):
(WebCore::RenderGrid::updateAutoMarginsInRowAxisIfNeeded):
(WebCore::RenderGrid::updateAutoMarginsInColumnAxisIfNeeded):
(WebCore::RenderGrid::gridAreaPositionForOutOfFlowChild const):

  • rendering/RenderRubyBase.cpp:

(WebCore::RenderRubyBase::adjustInlineDirectionLineBounds const):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::updateLogicalWidth):

  • rendering/RenderTableCell.cpp:

(WebCore::RenderTableCell::setOverridingLogicalHeightFromRowHeight):
(WebCore::RenderTableCell::setOverrideLogicalHeightFromRowHeight): Deleted.

  • rendering/RenderTableCell.h:
  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::calcRowLogicalHeight):
(WebCore::RenderTableSection::relayoutCellIfFlexed):

2:44 AM Changeset in webkit [268918] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Fix argument order for double and/or ops on ARMv7
https://bugs.webkit.org/show_bug.cgi?id=218118

Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2020-10-23
Reviewed by Adrian Perez de Castro.

The andDouble and orDouble macro assembler methods for ARMv7
incorrectly pass the destination register as the last argument,
whereas the assembler expects the destination to be the first
argument.

This fixes a failing testmasm test.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::andDouble):
(JSC::MacroAssemblerARMv7::orDouble):

2:23 AM Changeset in webkit [268917] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.30

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.30.2 release

.:

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

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.30.2.
1:26 AM Changeset in webkit [268916] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.30/Source/WebKit

Merge r267875 - [GTK] WPE and backend versions are mixed up in webkit://gpu
https://bugs.webkit.org/show_bug.cgi?id=217210

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2020-10-02
Reviewed by Adrian Perez de Castro.

  • UIProcess/API/glib/WebKitProtocolHandler.cpp:

(WebKit::WebKitProtocolHandler::handleGPU):

1:26 AM WebKitGTK/2.30.x edited by Carlos Garcia Campos
(diff)
1:26 AM Changeset in webkit [268915] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.30/Source/WebCore

Merge r268000 - [GTK][X11] WebProcess crash in WebCore::GLContextGLX::createPbufferContext() with NVidia proprietary drivers
https://bugs.webkit.org/show_bug.cgi?id=217323

Reviewed by Adrian Perez de Castro.

The returnedElements variable might remain uninitialized if the glXChooseFBConfig()
function call fails, leading to execution of the wrong code branch later.

  • platform/graphics/glx/GLContextGLX.cpp:

(WebCore::GLContextGLX::createPbufferContext): Initialized the returnedElements variable.

1:26 AM Changeset in webkit [268914] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.30/Source/WebKit

Merge r268472 - [GLIB] Fix linking error for systems not providing <sys/memfd.h>
https://bugs.webkit.org/show_bug.cgi?id=217514

Reviewed by Carlos Garcia Campos.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp: Unconditionally check for <sys/mman.h> which should always exist instead

of <sys/memfd.h>. Also define the fallback with syscall() only for linux systems (as it requires <linux/memfd.h>).

1:25 AM Changeset in webkit [268913] by Carlos Garcia Campos
  • 24 edits in releases/WebKitGTK/webkit-2.30/Source

Merge r268522 - [GTK][WPE] Add support for smooth scrolling animation with async scrolling
https://bugs.webkit.org/show_bug.cgi?id=210382

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Respect smooth-scrolling setting and fix deadlock issues with async
scrolling on nicosia path.

No new tests, no functional change.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::scrollAnimatorEnabled const):

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

(WebCore::ThreadedScrollingTree::ThreadedScrollingTree):

  • page/scrolling/ThreadedScrollingTree.h:

(WebCore::ThreadedScrollingTree::scrollAnimatorEnabled const):

  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeFrameScrollingNodeNicosia::ScrollingTreeFrameScrollingNodeNicosia):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::commitStateAfterChildren):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::ensureScrollAnimationKinetic):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::ensureScrollAnimationSmooth):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::handleWheelEvent):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::stopScrollAnimations):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::repositionRelatedLayers):

  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.h:
  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::ScrollingTreeOverflowScrollingNodeNicosia):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::commitStateAfterChildren):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::repositionScrollingLayers):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::ensureScrollAnimationKinetic):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::ensureScrollAnimationSmooth):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::handleWheelEvent):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::stopScrollAnimations):

  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.h:
  • platform/PlatformWheelEvent.h:
  • platform/ScrollAnimation.h:
  • platform/ScrollAnimationKinetic.cpp:

(WebCore::ScrollAnimationKinetic::isActive const):

  • platform/ScrollAnimationKinetic.h:
  • platform/ScrollAnimationSmooth.cpp:

(WebCore::ScrollAnimationSmooth::scroll):
(WebCore::ScrollAnimationSmooth::isActive const):

  • platform/ScrollAnimationSmooth.h:
  • platform/generic/ScrollAnimatorGeneric.cpp:

(WebCore::ScrollAnimatorGeneric::ensureSmoothScrollingAnimation):

Source/WebKit:

Add hasPreciseScrollingDeltas to GTK/WPE wheel events.

No new tests needed.

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent):

  • Shared/WebWheelEvent.cpp:

(WebKit::WebWheelEvent::WebWheelEvent):
(WebKit::WebWheelEvent::encode const):
(WebKit::WebWheelEvent::decode):

  • Shared/WebWheelEvent.h:
  • Shared/WebWheelEventCoalescer.cpp:

(WebKit::WebWheelEventCoalescer::canCoalesce):
(WebKit::WebWheelEventCoalescer::coalesce):

  • Shared/gtk/NativeWebWheelEventGtk.cpp:

(WebKit::NativeWebWheelEvent::NativeWebWheelEvent):

  • Shared/gtk/WebEventFactory.cpp:

(WebKit::WebEventFactory::createWebWheelEvent):

  • Shared/libwpe/WebEventFactory.cpp:

(WebKit::WebEventFactory::createWebWheelEvent):

1:25 AM Changeset in webkit [268912] by Carlos Garcia Campos
  • 13 edits in releases/WebKitGTK/webkit-2.30/Source/WebCore

Merge r266390 - [GTK][WPE] Add support for smooth scrolling animation with async scrolling
https://bugs.webkit.org/show_bug.cgi?id=210382

Reviewed by Carlos Garcia Campos.

This removes the dependency on ScrollableArea from
ScrollAnimationSmooth, which allows its use as a utility class for
smooth scrolling. This class is then used in the Nicosia async layer
composition scrolling code to provide smooth scrolling, when the
feature is enabled. This mirrors the work done in bug 209230 for
kinetic scrolling.

No new tests, enabling existing functionality in more situations.

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::scrollTo):

  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeFrameScrollingNodeNicosia::ScrollingTreeFrameScrollingNodeNicosia):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::commitStateAfterChildren):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::handleWheelEvent):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::stopScrollAnimations):

  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.h:
  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::ScrollingTreeOverflowScrollingNodeNicosia):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::commitStateAfterChildren):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::handleWheelEvent):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::stopScrollAnimations):

  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.h:
  • platform/ScrollAnimation.h:

(WebCore::ScrollAnimation::serviceAnimation):

  • platform/ScrollAnimationKinetic.cpp:
  • platform/ScrollAnimationKinetic.h:
  • platform/ScrollAnimationSmooth.cpp:

(WebCore::ScrollAnimationSmooth::ScrollAnimationSmooth):
(WebCore::ScrollAnimationSmooth::scroll):
(WebCore::ScrollAnimationSmooth::stop):
(WebCore::ScrollAnimationSmooth::updateVisibleLengths):
(WebCore::ScrollAnimationSmooth::animationTimerFired):

  • platform/ScrollAnimationSmooth.h:
  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::ScrollAnimator):

  • platform/generic/ScrollAnimatorGeneric.cpp:

(WebCore::ScrollAnimatorGeneric::ScrollAnimatorGeneric):
(WebCore::ScrollAnimatorGeneric::ensureSmoothScrollingAnimation):

1:25 AM Changeset in webkit [268911] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.30/Source/WTF

Merge r267789 - [GTK] Chassis type check fails if the value is quoted
https://bugs.webkit.org/show_bug.cgi?id=217123

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2020-09-30
Reviewed by Carlos Garcia Campos.

Sometimes the chassis type can be quoted, in this case we'll fail to
parse it and fall back to desktop type. Unquote the string before
attempting to parse it.

  • wtf/glib/ChassisType.cpp:

(WTF::readMachineInfoChassisType):

1:25 AM Changeset in webkit [268910] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.30/Source/WebKit

Merge r268906 - [SOUP] Fix crash in WebSocketTask
https://bugs.webkit.org/show_bug.cgi?id=217892

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-10-23
Reviewed by Carlos Garcia Campos.

The WebSocketTask connects to the "starting" signal of its SoupMessage and never disconnects
this signal, which is only safe if it is guaranteed to outlive its SoupMessage. However, it
is not. We crash when the signal is emitted after the WebSocketTask is destroyed. To solve
this, we just need to disconnect the signal when required. Normally that would be done in
the destructor, but the WebSocketTask drops its ownership of the SoupMessage prior to that
point, so we need to disconnect on each possible paths.

  • NetworkProcess/soup/WebSocketTaskSoup.cpp:

(WebKit::WebSocketTask::~WebSocketTask):
(WebKit::WebSocketTask::didConnect):
(WebKit::WebSocketTask::didFail):

1:25 AM Changeset in webkit [268909] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.30/Source/WebCore

Merge r268394 - [SOUP] webkit_web_view_get_https_status() broken with service workers
https://bugs.webkit.org/show_bug.cgi?id=216038

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-10-13
Reviewed by Carlos Garcia Campos.

This implements CertificateInfo::isolatedCopy for libsoup ports. This is impossible to do
completely, because we cannot copy the private key portion of the GTlsCertificate, because
it is a write-only property, because it might be backed by a hardware token and therefore
really impossible to write software to get it. If we were to implement g_tls_certificate_copy()
in GLib -- which I will probably do eventually, because I need this outside WebKit as well --
then GTlsCertificate implementations could copy the private key or PKCS#11 handle or
whatever.

But anyway, let not perfect be the enemy of the good. We only need this for service workers
currently. (Probably that's all we'll *ever* need it for.) So we are only working with
server certificates, and the private portion of the certificate is guaranteed to not exist
(because servers don't send us their private keys), and we can just forget about it. As
long as nobody tries to copy a client certificate in the future -- where we really would
need the private key portion of the certificate -- this will be perfectly fine.

Actually copying the certificate is kind of annoying, because a chain of certificates is
represented by having the main (server) certificate keep a reference to its issuer, which is
not referenced anywhere else, so we have to reconstruct the chain in reverse order starting
from the final certificate, working back towards the server cert. Fun. Let's also be
careful to construct a completely new GByteArray rather than expecting the GTlsCertificate
implementation to copy it for us. Because GTlsCertificate is implemented by an extension
point and applications and system administrators can -- and do -- implement their own,
implementations could do anything, including keep a reference to the GByteArray that we
pass in.

It would be nice to have a test for this, but writing tests is hard. Also, I don't really
want to learn what service workers are. :)

Drive-by fix: also remove explicit from a constructor that doesn't need it.

  • platform/network/soup/CertificateInfo.h:

(WebCore::CertificateInfo::isolatedCopy const):

  • platform/network/soup/CertificateInfoSoup.cpp:

(WebCore::createCertificate):
(WebCore::CertificateInfo::isolatedCopy const):

1:25 AM Changeset in webkit [268908] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.30

Merge r268392 - [GStreamer] Crash in WebCore::GStreamerRegistryScanner::isAVC1CodecSupported
https://bugs.webkit.org/show_bug.cgi?id=217647

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

The registry scanner was assuming the avc1 codec field is always of the form
avc1.codecprofile, which is wrong.

Covered by test: media/media-can-play-mpeg4-video.html

  • platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:

(WebCore::GStreamerRegistryScanner::isAVC1CodecSupported const): Check for '.' presence and
fallback to unconstrained check if no profile or level information was extracted.

LayoutTests:

  • media/media-can-play-mpeg4-video-expected.txt:
  • media/media-can-play-mpeg4-video.html: Add test for "avc1" codec.
1:06 AM Changeset in webkit [268907] by commit-queue@webkit.org
  • 7 edits in trunk

[GStreamer] Replace USE(WEBAUDIO_GSTREAMER) with USE(GSTREAMER)
https://bugs.webkit.org/show_bug.cgi?id=218083

Patch by Philippe Normand <pnormand@igalia.com> on 2020-10-23
Reviewed by Xabier Rodriguez-Calvar.

.:

A separate define was introduced back when we thought enabling WebAudio without enabling
<audio> would be a highly relevant scenario. I don't think it is very relevant, let's clean
this up.

  • Source/cmake/GStreamerChecks.cmake: Wrap the WebAudio platform bits in the USE(GSTREAMER) umbrella.

Source/WebCore:

  • platform/audio/FFTFrame.h: No need for G_{BEGIN,END}_DECLS dance anymore, these were added

upstream 9 years ago.

  • platform/audio/FFTFrameStub.cpp:
  • platform/audio/HRTFElevation.cpp:
  • platform/audio/gstreamer/FFTFrameGStreamer.cpp:
12:33 AM Changeset in webkit [268906] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[SOUP] Fix crash in WebSocketTask
https://bugs.webkit.org/show_bug.cgi?id=217892

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-10-23
Reviewed by Carlos Garcia Campos.

The WebSocketTask connects to the "starting" signal of its SoupMessage and never disconnects
this signal, which is only safe if it is guaranteed to outlive its SoupMessage. However, it
is not. We crash when the signal is emitted after the WebSocketTask is destroyed. To solve
this, we just need to disconnect the signal when required. Normally that would be done in
the destructor, but the WebSocketTask drops its ownership of the SoupMessage prior to that
point, so we need to disconnect on each possible paths.

  • NetworkProcess/soup/WebSocketTaskSoup.cpp:

(WebKit::WebSocketTask::~WebSocketTask):
(WebKit::WebSocketTask::didConnect):
(WebKit::WebSocketTask::didFail):

Note: See TracTimeline for information about the timeline view.