Timeline



Jan 17, 2021:

11:56 PM Changeset in webkit [271573] by ysuzuki@apple.com
  • 4 edits
    1 add in trunk

[JSC] DFG/FTL Atomics should not accept Float32/Float64 typed arrays
https://bugs.webkit.org/show_bug.cgi?id=220692
<rdar://problem/73238369>

Reviewed by Mark Lam.

JSTests:

  • stress/atomics-float-edge.js: Added.

(foo):

Source/JavaScriptCore:

We accidentally accept Float32/Float64 typed arrays. We should accept only integer TypedArrays (Int8, Uint8, ... etc.)
as specified in [1]. If the other types come, we just make it Array::Generic and call slow path which can handle them.

[1]: https://tc39.es/ecma262/#sec-validateintegertypedarray

  • dfg/DFGArrayMode.h:

(JSC::DFG::ArrayMode::isOneOfTypedArrayView const): Deleted.

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

11:41 PM Changeset in webkit [271572] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

GraphicsContextGLOpenGL::reshapeFBOs() ANGLE variant calls into makeContextCurrent()
https://bugs.webkit.org/show_bug.cgi?id=220460

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-01-17
Reviewed by Dean Jackson.

The call is problematic if it is taken, since in some cases makeContextCurrent() fails
due to reshapeFBOs being in middle of a reshape. The problematic case is taken if
the reshape call happens before first getExtensions().

Fix by
1) Resolving the needed depth-stencil buffer format during validateDepthStencil.
2) Always enable the packed depth-stencil extension if it is present. Otherwise

depth-stencil bindings will not work for the context that does not have
default stencil buffer, since the enable call was not taken before
WebGLRenderingContextBase uses the "isEnabled" to enable DEPTH_STENCIL
features.

Tested by WebGL 1/2 conformance tests, but only reveals the bug after
applying the patch in the depending bug.

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::validateAttributes):
(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):
(WebCore::GraphicsContextGLOpenGL::validateDepthStencil):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
11:16 PM Changeset in webkit [271571] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] FTL OSR entry FlushFormat array is reversed
https://bugs.webkit.org/show_bug.cgi?id=220695
<rdar://problem/72930932>

Reviewed by Mark Lam.

JSTests:

  • stress/ftl-osr-entry-order-reverse.js: Added.

(shouldThrow):
(foo):

Source/JavaScriptCore:

After r268783, FlushFormat array is erroneously sorted in reversed order.
This patch fixes that.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::lower):

10:36 PM Changeset in webkit [271570] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] GenericArguments<Type>::defineOwnProperty's assumption about error is not correct
https://bugs.webkit.org/show_bug.cgi?id=220693
<rdar://problem/72929171>

Reviewed by Mark Lam.

JSTests:

  • stress/freeze-invokes-out-of-memory.js: Added.

(shouldThrow):

Source/JavaScriptCore:

Any function taking JSGlobalObject* can cause out-of-memory error potentially. And we have a way to invoke it.
But GenericArguments<Type>::defineOwnProperty didn't assume OutOfMemory error. This patch fixes it.

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::defineOwnProperty):

10:25 PM Changeset in webkit [271569] by Jonathan Bedard
  • 2 edits in trunk/Tools

[webkitscmpy] Add GitHub credentials (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=220562
<rdar://problem/73063457>

Unreviewed follow-up fix.

  • Scripts/webkitpy/init.py: Ensure that webkitscmpy's dependencies are auto installed.
10:03 PM Changeset in webkit [271568] by ysuzuki@apple.com
  • 3 edits
    2 adds in trunk

[JSC] Add some more exception checks in globalFuncCopyDataProperties
https://bugs.webkit.org/show_bug.cgi?id=220691

Reviewed by Mark Lam.

JSTests:

  • stress/spread-object-check.js: Added.
  • stress/spread-object-check2.js: Added.

Source/JavaScriptCore:

This patch add some missing exception checks in globalFuncCopyDataProperties to fix tests attached in this patch.

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

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

[LFC][IFC] Extend simplified vertical alignment for cases when the line has only "empty" runs
https://bugs.webkit.org/show_bug.cgi?id=220689

Reviewed by Antti Koivisto.

Quirks::inlineLevelBoxAffectsLineBox now does not need to check for empty inline boxes as
those cases would always end up in the simplified vertical alignment path.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::inlineLevelBoxAffectsLineBox const):

4:06 PM Changeset in webkit [271566] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Add the root inline collapsing case to simplified vertical alignment
https://bugs.webkit.org/show_bug.cgi?id=220685

Reviewed by Antti Koivisto.

Let's produce a 0 height line box when there are no runs on the line as part of the simplified vertical alignment optimization.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):

3:51 PM Changeset in webkit [271565] by ysuzuki@apple.com
  • 6 edits
    1 delete in trunk/Source/WebKit

JITOperation does not exist in WebKit
https://bugs.webkit.org/show_bug.cgi?id=220686

Reviewed by Mark Lam.

Now, we do not register host functions as JIT operations. As a result, WebKit.framework does not have any JITOperations.
We should remove population of JITOperations code in WebKit.framework.

  • Shared/API/c/WKString.cpp:

(WKStringCopyJSString):

  • Shared/Cocoa/WebKit2InitializeCocoa.mm:

(WebKit::runInitializationCode):

  • Shared/WebKit2Initialize.cpp:

(WebKit::InitializeWebKit2):

  • Shared/WebKitJITOperations.cpp: Removed.
  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
1:06 PM Changeset in webkit [271564] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

Unreviewed, fix the internal iOS build after r271559

Fix the build with IOS_TOUCH_EVENTS enabled.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::handleTouchEvent): Deleted.
(WebCore::RenderLayer::registerAsTouchEventListenerForScrolling): Deleted.
(WebCore::RenderLayer::unregisterAsTouchEventListenerForScrolling): Deleted.

Remove a few undeclared method definitions. These methods were relocated to RenderLayerScrollableArea.

  • rendering/RenderLayerScrollableArea.cpp:

Remove several methods that have duplicate implementations.

11:55 AM Changeset in webkit [271563] by Fujii Hironori
  • 13 edits in trunk/Source/WebKit

[non-Cocoa] Add a new AuxiliaryProcessMainBase class for auxiliary processes without singleton()
https://bugs.webkit.org/show_bug.cgi?id=220615

Reviewed by Don Olmstead.

non-Cocoa ports auxiliary processes are using AuxiliaryProcessMain
as the entry points. AuxiliaryProcessMain supports both kinds of
auxiliary processes with and without singleton() method by using
initializeAuxiliaryProcess template function. However, all
initializeAuxiliaryProcess look similar code. They can share more
code.

Added a AuxiliaryProcessMainBaseNoSingleton template class for
auxiliary processes without singleton().

Moved the code that was in AuxiliaryProcessMain to
AuxiliaryProcessMainBase::run() to remove
takeInitializationParameters().

  • GPUProcess/gstreamer/GPUProcessMainGStreamer.cpp:

(WebKit::GPUProcessMain):
(WebKit::initializeAuxiliaryProcess<GPUProcess>): Deleted.

  • GPUProcess/playstation/GPUProcessMainPlayStation.cpp:

(WebKit::GPUProcessMain):
(WebKit::initializeAuxiliaryProcess<GPUProcess>): Deleted.

  • GPUProcess/win/GPUProcessMainWin.cpp:

(WebKit::GPUProcessMain):
(WebKit::initializeAuxiliaryProcess<GPUProcess>): Deleted.

  • NetworkProcess/curl/NetworkProcessMainCurl.cpp:

(WebKit::NetworkProcessMain):
(WebKit::initializeAuxiliaryProcess<NetworkProcess>): Deleted.

  • NetworkProcess/soup/NetworkProcessMainSoup.cpp:

(WebKit::NetworkProcessMain):
(WebKit::initializeAuxiliaryProcess<NetworkProcess>): Deleted.

  • Shared/AuxiliaryProcessMain.h:

(WebKit::AuxiliaryProcessMainBase::platformInitialize):
(WebKit::AuxiliaryProcessMainBase::platformFinalize):
(WebKit::AuxiliaryProcessMainBase::initializeAuxiliaryProcess):
(WebKit::AuxiliaryProcessMainBase::run):
(WebKit::AuxiliaryProcessMainBaseNoSingleton::process):
(WebKit::AuxiliaryProcessMain):
(WebKit::AuxiliaryProcessMainBase::initializationParameters): Deleted.
(WebKit::AuxiliaryProcessMainBase::takeInitializationParameters): Deleted.
(WebKit::initializeAuxiliaryProcess): Deleted.

  • Shared/unix/AuxiliaryProcessMain.cpp:

(WebKit::AuxiliaryProcessMainCommon::parseCommandLine):
(WebKit::AuxiliaryProcessMainBase::parseCommandLine): Deleted.

  • Shared/win/AuxiliaryProcessMainWin.cpp:

(WebKit::AuxiliaryProcessMainCommon::parseCommandLine):
(WebKit::AuxiliaryProcessMainBase::parseCommandLine): Deleted.

  • WebProcess/gtk/WebProcessMainGtk.cpp:

(WebKit::WebProcessMain):

  • WebProcess/playstation/WebProcessMainPlayStation.cpp:

(WebKit::WebProcessMain):

  • WebProcess/win/WebProcessMainWin.cpp:

(WebKit::WebProcessMain):

  • WebProcess/wpe/WebProcessMainWPE.cpp:

(WebKit::WebProcessMain):

6:44 AM Changeset in webkit [271562] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][IFC] No need to maintain the "is considered empty" bit anymore.
https://bugs.webkit.org/show_bug.cgi?id=220228

Reviewed by Antti Koivisto.

Now that isConsideredEmpty() bit is only used as input to line breaking, let's change it to a more
focused check and remove the concept of "is considered empty" completely.

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::processInlineContent):
(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):

  • layout/inlineformatting/InlineContentBreaker.h:
  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::initialize):
(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::append):
(WebCore::Layout::Line::appendTextContent):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::isConsideredEmpty const): Deleted.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::handleInlineContent):

4:36 AM Changeset in webkit [271561] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Add CoreMedia aavds entitlement to WebContent and GPU processes
https://bugs.webkit.org/show_bug.cgi?id=220238

Reviewed by Brent Fulgham.

Manually tested.

  • Scripts/process-entitlements.sh:
12:50 AM Changeset in webkit [271560] by ysuzuki@apple.com
  • 9 edits in trunk/Source

Add JSC API configuring GC signals in Linux
https://bugs.webkit.org/show_bug.cgi?id=220641

Reviewed by Mark Lam.

Source/JavaScriptCore:

Add JSConfigureSignalForGC function for Linux and FreeBSD (non Apple, non Windows platforms).

  • API/JSBase.cpp:

(JSConfigureSignalForGC):

  • API/JSBasePrivate.h:

Source/WTF:

In Linux and FreeBSD, we need to use signals to suspend and resume threads.
By default, we are using SIGUSR1, but it is possible that some embedders want to use
the other signals since they are using SIGUSR1 already. To work-around that, this
patch offers the way for embedders to configure signals.

  • wtf/Threading.h:
  • wtf/WTFConfig.h:
  • wtf/posix/ThreadingPOSIX.cpp:

(WTF::Thread::signalHandlerSuspendResume):
(WTF::Thread::initializePlatformThreading):
(WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
(WTF::Thread::initializeCurrentTLS):
(WTF::Thread::suspend):
(WTF::Thread::resume):

  • wtf/threads/Signals.cpp:

(WTF::addSignalHandler):

  • wtf/win/ThreadingWin.cpp:

(WTF::Thread::initializeCurrentTLS):

Jan 16, 2021:

4:26 PM Changeset in webkit [271559] by Nikolas Zimmermann
  • 21 edits in trunk/Source/WebCore

Separate scrolling code out of RenderLayer
https://bugs.webkit.org/show_bug.cgi?id=60305

Reviewed by Simon Fraser.

Move all scrolling/overflow handling out of RenderLayer, to
streamline its interface and make it re-usable for layer
types that do not need nor support scrolling/overflow.

Many variables tracking scrolling/overflow state were migrated to
RenderLayerScrollableArea, which is only created if the renderer
corresponding to the layer has a CSS 'resize' property != 'none',
has potentially scrollable overflow content or <marquee>.

For the common case (no scrollable overflow), the RenderLayer
overhead is reduced: less memory, less state tracking.

Covered by existing tests.

  • WebCore.xcodeproj/project.pbxproj: Make RenderLayerScrollableArea.h

include work in WebKit project.

  • accessibility/AccessibilityRenderObject.cpp: Adapt to the fact that

RenderLayer is no longer a ScrollableArea.
(WebCore::AccessibilityRenderObject::getScrollableAreaIfScrollable const):

  • html/TextFieldInputType.cpp: Adapt to the fact that RenderLayer is

no longer a ScrollableArea.
(WebCore::TextFieldInputType::elementDidBlur):

  • page/EventHandler.cpp: Ditto.

(WebCore::EventHandler::enclosingScrollableArea):
(WebCore::EventHandler::handleWheelEventInAppropriateEnclosingBox):

  • page/FrameView.cpp: Ditto.

(WebCore::FrameView::enclosingScrollableArea const):

  • page/ios/FrameIOS.mm: Ditto.

(WebCore::Frame::overflowScrollPositionChangedForNode):

  • page/mac/EventHandlerMac.mm:

(WebCore::scrollableAreaForBox):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::requiresLayerWithScrollableArea const): Decides
whether a RenderLayer needs a RenderLayerScrollableArea. The presence
of resize/marquee/overflow triggers creation of a
RenderLayerScrollableArea object.

  • rendering/RenderBox.h:
  • rendering/RenderLayer.cpp: Move all overflow/resize/marquee/scroll

handling to RenderLayerScrollableArea and adapt the affected code.
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::~RenderLayer):
(WebCore::RenderLayer::currentScrollType const):
(WebCore::RenderLayer::scrollAnimator const):
(WebCore::RenderLayer::scrollOffset const):
(WebCore::RenderLayer::scrollToOffset):
(WebCore::RenderLayer::scrollToXPosition):
(WebCore::RenderLayer::scrollToYPosition):
(WebCore::RenderLayer::setScrollPosition):
(WebCore::RenderLayer::scrollByRecursively):
(WebCore::RenderLayer::setRequiresScrollPositionReconciliation):
(WebCore::RenderLayer::setAdjustForIOSCaretWhenScrolling):
(WebCore::RenderLayer::setScrollShouldClearLatchedState):
(WebCore::RenderLayer::shouldPlaceBlockDirectionScrollbarOnLeft const):
(WebCore::RenderLayer::containsDirtyOverlayScrollbars const):
(WebCore::RenderLayer::hasScrollableOrRubberbandableAncestor):
(WebCore::RenderLayer::marquee const):
(WebCore::RenderLayer::updateLayerPositionsAfterDocumentScroll):
(WebCore::RenderLayer::hitTestOverflowControls):
(WebCore::RenderLayer::paintOverflowControls):
(WebCore::RenderLayer::paintResizer):
(WebCore::RenderLayer::paintScrollCorner):
(WebCore::RenderLayer::paintOverlayScrollbars):
(WebCore::RenderLayer::reachableTotalContentsSize const):
(WebCore::RenderLayer::horizontalScrollbarHiddenByStyle const):
(WebCore::RenderLayer::verticalScrollbarHiddenByStyle const):
(WebCore::RenderLayer::setPostLayoutScrollPosition):
(WebCore::RenderLayer::panScrollFromPoint):
(WebCore::RenderLayer::scrollPosition const):
(WebCore::RenderLayer::layerForHorizontalScrollbar const):
(WebCore::RenderLayer::layerForVerticalScrollbar const):
(WebCore::RenderLayer::horizontalScrollbar const):
(WebCore::RenderLayer::verticalScrollbar const):
(WebCore::RenderLayer::scrollingMayRevealBackground const):
(WebCore::RenderLayer::hasScrollableHorizontalOverflow const):
(WebCore::RenderLayer::hasScrollableVerticalOverflow const):
(WebCore::RenderLayer::verticalScrollbarWidth const):
(WebCore::RenderLayer::horizontalScrollbarHeight const):
(WebCore::RenderLayer::scroll):
(WebCore::RenderLayer::setConstrainsScrollingToContentEdge):
(WebCore::RenderLayer::updateLayerPositions):
(WebCore::RenderLayer::updateLayerPositionsAfterScroll):
(WebCore::RenderLayer::updateLayerPosition):
(WebCore::RenderLayer::enclosingFrameRenderLayer const):
(WebCore::RenderLayer::enclosingContainingBlockLayer const):
(WebCore::RenderLayer::enclosingScrollableLayer const):
(WebCore::frameElementAndViewPermitScroll):
(WebCore::RenderLayer::allowsCurrentScroll const):
(WebCore::RenderLayer::scrollRectToVisible):
(WebCore::RenderLayer::resize):
(WebCore::RenderLayer::visibleSize const):
(WebCore::RenderLayer::overflowControlsRects const):
(WebCore::RenderLayer::debugDescription const):
(WebCore::RenderLayer::offsetFromResizeCorner const):
(WebCore::RenderLayer::scrollWidth const):
(WebCore::RenderLayer::scrollHeight const):
(WebCore::RenderLayer::updateScrollInfoAfterLayout):
(WebCore::RenderLayer::canUseCompositedScrolling const):
(WebCore::RenderLayer::hasCompositedScrollableOverflow const):
(WebCore::RenderLayer::hasOverlayScrollbars const):
(WebCore::RenderLayer::usesCompositedScrolling const):
(WebCore::RenderLayer::isPointInResizeControl const):
(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::paintOverflowControlsForFragments):
(WebCore::RenderLayer::hitTest):
(WebCore::RenderLayer::hitTestLayer):
(WebCore::RenderLayer::calculateClipRects const):

  • rendering/RenderLayer.h: Ditto.

(WebCore::RenderLayer::hasScrollbars const):
(WebCore::RenderLayer::hasHorizontalScrollbar const):
(WebCore::RenderLayer::hasVerticalScrollbar const):
(WebCore::RenderLayer::scrollToXOffset):
(WebCore::RenderLayer::scrollToYOffset):

  • rendering/RenderLayerBacking.cpp: Adapt to the fact that

RenderLayer is no longer a ScrollableArea.
(WebCore::RenderLayerBacking::updateOverflowControlsLayers):

  • rendering/RenderLayerCompositor.cpp: Adapt to the fact that

RenderLayer is no longer a ScrollableArea.
(WebCore::RenderLayerCompositor::parentRelativeScrollableRect const):
(WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
(WebCore::RenderLayerCompositor::scrollableAreaForScrollingNodeID const):

  • rendering/RenderLayerModelObject.cpp: Adapt to the fact that

RenderLayer is no longer a ScrollableArea.
(WebCore::RenderLayerModelObject::styleDidChange):

  • rendering/RenderLayerScrollableArea.cpp: Mostly moved from

RenderLayer.
(WebCore::RenderLayerScrollableArea::RenderLayerScrollableArea):
(WebCore::RenderLayerScrollableArea::~RenderLayerScrollableArea):
(WebCore::RenderLayerScrollableArea::storeScrollPosition):
(WebCore::RenderLayerScrollableArea::handleTouchEvent):
(WebCore::RenderLayerScrollableArea::registerAsTouchEventListenerForScrolling):
(WebCore::RenderLayerScrollableArea::unregisterAsTouchEventListenerForScrolling):
(WebCore::RenderLayerScrollableArea::scrollableAreaBoundingBox const):
(WebCore::RenderLayerScrollableArea::isUserScrollInProgress const):
(WebCore::RenderLayerScrollableArea::isRubberBandInProgress const):
(WebCore::RenderLayerScrollableArea::forceUpdateScrollbarsOnMainThreadForPerformanceTesting const):
(WebCore::RenderLayerScrollableArea::usesAsyncScrolling const):
(WebCore::RenderLayerScrollableArea::setPostLayoutScrollPosition):
(WebCore::RenderLayerScrollableArea::applyPostLayoutScrollPositionIfNeeded):
(WebCore::RenderLayerScrollableArea::scrollToXPosition):
(WebCore::RenderLayerScrollableArea::scrollToYPosition):
(WebCore::RenderLayerScrollableArea::setScrollPosition):
(WebCore::RenderLayerScrollableArea::clampScrollOffset const):
(WebCore::RenderLayerScrollableArea::requestScrollPositionUpdate):
(WebCore::RenderLayerScrollableArea::scrollToOffset):
(WebCore::RenderLayerScrollableArea::scrollTo):
(WebCore::RenderLayerScrollableArea::updateCompositingLayersAfterScroll):
(WebCore::RenderLayerScrollableArea::scrollWidth const):
(WebCore::RenderLayerScrollableArea::scrollHeight const):
(WebCore::RenderLayerScrollableArea::updateMarqueePosition):
(WebCore::RenderLayerScrollableArea::createOrDestroyMarquee):
(WebCore::RenderLayerScrollableArea::scrollsOverflow const):
(WebCore::RenderLayerScrollableArea::canUseCompositedScrolling const):
(WebCore::RenderLayerScrollableArea::setScrollOffset):
(WebCore::RenderLayerScrollableArea::scrollingNodeID const):
(WebCore::RenderLayerScrollableArea::handleWheelEventForScrolling):
(WebCore::RenderLayerScrollableArea::visibleContentRectInternal const):
(WebCore::RenderLayerScrollableArea::overhangAmount const):
(WebCore::RenderLayerScrollableArea::scrollCornerRect const):
(WebCore::RenderLayerScrollableArea::isScrollCornerVisible const):
(WebCore::RenderLayerScrollableArea::convertFromScrollbarToContainingView const):
(WebCore::RenderLayerScrollableArea::convertFromContainingViewToScrollbar const):
(WebCore::RenderLayerScrollableArea::visibleSize const):
(WebCore::RenderLayerScrollableArea::contentsSize const):
(WebCore::RenderLayerScrollableArea::reachableTotalContentsSize const):
(WebCore::RenderLayerScrollableArea::availableContentSizeChanged):
(WebCore::RenderLayerScrollableArea::shouldSuspendScrollAnimations const):
(WebCore::RenderLayerScrollableArea::didStartScroll):
(WebCore::RenderLayerScrollableArea::didEndScroll):
(WebCore::RenderLayerScrollableArea::didUpdateScroll):
(WebCore::RenderLayerScrollableArea::overflowControlsRects const):
(WebCore::RenderLayerScrollableArea::scrollbarOffset const):
(WebCore::RenderLayerScrollableArea::invalidateScrollbarRect):
(WebCore::RenderLayerScrollableArea::invalidateScrollCornerRect):
(WebCore::scrollbarHiddenByStyle):
(WebCore::RenderLayerScrollableArea::horizontalScrollbarHiddenByStyle const):
(WebCore::RenderLayerScrollableArea::verticalScrollbarHiddenByStyle const):
(WebCore::rendererForScrollbar):
(WebCore::RenderLayerScrollableArea::createScrollbar):
(WebCore::RenderLayerScrollableArea::destroyScrollbar):
(WebCore::RenderLayerScrollableArea::setHasHorizontalScrollbar):
(WebCore::RenderLayerScrollableArea::setHasVerticalScrollbar):
(WebCore::RenderLayerScrollableArea::enclosingScrollableArea const):
(WebCore::RenderLayerScrollableArea::isScrollableOrRubberbandable):
(WebCore::RenderLayerScrollableArea::hasScrollableOrRubberbandableAncestor):
(WebCore::RenderLayerScrollableArea::verticalScrollbarWidth const):
(WebCore::RenderLayerScrollableArea::horizontalScrollbarHeight const):
(WebCore::RenderLayerScrollableArea::hasOverflowControls const):
(WebCore::RenderLayerScrollableArea::positionOverflowControls):
(WebCore::RenderLayerScrollableArea::overflowTop const):
(WebCore::RenderLayerScrollableArea::overflowBottom const):
(WebCore::RenderLayerScrollableArea::overflowLeft const):
(WebCore::RenderLayerScrollableArea::overflowRight const):
(WebCore::RenderLayerScrollableArea::computeScrollDimensions):
(WebCore::RenderLayerScrollableArea::computeHasCompositedScrollableOverflow):
(WebCore::RenderLayerScrollableArea::hasScrollableHorizontalOverflow const):
(WebCore::RenderLayerScrollableArea::hasScrollableVerticalOverflow const):
(WebCore::RenderLayerScrollableArea::hasHorizontalOverflow const):
(WebCore::RenderLayerScrollableArea::hasVerticalOverflow const):
(WebCore::styleRequiresScrollbar):
(WebCore::styleDefinesAutomaticScrollbar):
(WebCore::RenderLayerScrollableArea::updateScrollbarsAfterLayout):
(WebCore::RenderLayerScrollableArea::updateScrollInfoAfterLayout):
(WebCore::RenderLayerScrollableArea::overflowControlsIntersectRect const):
(WebCore::RenderLayerScrollableArea::showsOverflowControls const):
(WebCore::RenderLayerScrollableArea::paintOverflowControls):
(WebCore::RenderLayerScrollableArea::paintScrollCorner):
(WebCore::RenderLayerScrollableArea::drawPlatformResizerImage):
(WebCore::RenderLayerScrollableArea::paintResizer):
(WebCore::RenderLayerScrollableArea::hitTestOverflowControls):
(WebCore::RenderLayerScrollableArea::scroll):
(WebCore::RenderLayerScrollableArea::isActive const):
(WebCore::RenderLayerScrollableArea::lastKnownMousePositionInView const):
(WebCore::RenderLayerScrollableArea::isHandlingWheelEvent const):
(WebCore::RenderLayerScrollableArea::useDarkAppearance const):
(WebCore::RenderLayerScrollableArea::updateSnapOffsets):
(WebCore::RenderLayerScrollableArea::isScrollSnapInProgress const):
(WebCore::RenderLayerScrollableArea::paintOverlayScrollbars):
(WebCore::RenderLayerScrollableArea::hitTestResizerInFragments const):
(WebCore::RenderLayerScrollableArea::layerForHorizontalScrollbar const):
(WebCore::RenderLayerScrollableArea::layerForVerticalScrollbar const):
(WebCore::RenderLayerScrollableArea::layerForScrollCorner const):
(WebCore::RenderLayerScrollableArea::scrollingMayRevealBackground const):
(WebCore::RenderLayerScrollableArea::updateScrollbarsAfterStyleChange):
(WebCore::RenderLayerScrollableArea::updateScrollableAreaSet):
(WebCore::RenderLayerScrollableArea::updateScrollCornerStyle):
(WebCore::RenderLayerScrollableArea::clearScrollCorner):
(WebCore::RenderLayerScrollableArea::updateResizerStyle):
(WebCore::RenderLayerScrollableArea::clearResizer):
(WebCore::RenderLayerScrollableArea::updateAllScrollbarRelatedStyle):
(WebCore::RenderLayerScrollableArea::usesCompositedScrolling const):
(WebCore::adjustedScrollDelta):
(WebCore::RenderLayerScrollableArea::panScrollFromPoint):
(WebCore::RenderLayerScrollableArea::updateScrollPosition):
(WebCore::RenderLayerScrollableArea::scrollByRecursively):
(WebCore::RenderLayerScrollableArea::updateLayerPositionsAfterDocumentScroll):
(WebCore::RenderLayerScrollableArea::updateLayerPositionsAfterOverflowScroll):
(WebCore::RenderLayerScrollableArea::usesMockScrollAnimator const):
(WebCore::RenderLayerScrollableArea::logMockScrollAnimatorMessage const):
(WebCore::RenderLayerScrollableArea::debugDescription const):

  • rendering/RenderLayerScrollableArea.h:
  • rendering/RenderListBox.cpp: Adapt to the fact that

RenderLayer is no longer a ScrollableArea.
(WebCore::RenderListBox::enclosingScrollableArea const):

  • rendering/RenderObject.cpp: Add 'S' state in debug output,

indicating whether the RenderLayer has a RenderLayerScrollableArea.
(WebCore::outputRenderTreeLegend):
(WebCore::RenderObject::outputRenderObject const):

  • rendering/RenderObject.h: Add friendship with

RenderLayerScrollableArea.

  • testing/Internals.cpp: Adapt to the fact that

RenderLayer is no longer a ScrollableArea.
(WebCore::Internals::scrollBySimulatingWheelEvent):
(WebCore:: const):

12:20 PM Changeset in webkit [271558] by bshafiei@apple.com
  • 8 edits in tags/Safari-611.1.10.0.1/Source

Versioning.

WebKit-7611.1.10.0.1

12:09 PM Changeset in webkit [271557] by bshafiei@apple.com
  • 1 copy in tags/Safari-611.1.10.0.1

New tag.

12:05 PM Changeset in webkit [271556] by bshafiei@apple.com
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.1.14

6:28 AM Changeset in webkit [271555] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][IFC] Do not use LineBox::isConsideredEmpty when checking if inline box stretches the line box.
https://bugs.webkit.org/show_bug.cgi?id=220259

Reviewed by Antti Koivisto.

  1. Inline box always have a strut in standards mode and it stretches the line box even when the inline box itself has no content.

<!DOCTYPE html><div>this is a ~100px tall line<span style="font-size: 100px;"></span></div>

  1. except when the line is completely empty (the inline box still has a strut but it does not affect the line box).

<!DOCTYPE html><div><span style="font-size: 100px;"></span><span style="font-size: 200px;"></span></div>

  1. but not empty like this:

<!DOCTYPE html><div><span style="font-size: 100px;"></span><br></div>

  1. or this:

<!DOCTYPE html><div><span style="font-size: 100px;"></span><img src="foo" style="width: 0px; height: 0px;"></div>

While #2 produces a 0px tall line box, #1, #3 and #4 produce ~100px tall lines.
This change also enables us to remove LineBox:isConsideredEmpty().

  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

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

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::inlineLevelBoxAffectsLineBox const):

  • layout/inlineformatting/InlineLineBox.cpp:

(WebCore::Layout::LineBox::LineBox):
(WebCore::Layout::m_isConsideredEmpty): Deleted.

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::horizontalAlignmentOffset const):
(WebCore::Layout::LineBox::isConsideredEmpty const): Deleted.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::layoutInlineContent):

  • layout/inlineformatting/InlineLineBuilder.h:

Jan 15, 2021:

11:57 PM Changeset in webkit [271554] by commit-queue@webkit.org
  • 5 edits in trunk

https://bugs.webkit.org/show_bug.cgi?id=220224
Support transferred min/max block size for aspect-ratio

Patch by Rob Buis <rbuis@igalia.com> on 2021-01-15
Reviewed by Darin Adler.

Source/WebCore:

Add logic to transfer min-height/max-height for minmax logical width
calculation in case aspect-ratio should be applied [1]. Both absolute
and normally positioned elements are handled.

[1] https://drafts.csswg.org/css-sizing-4/#aspect-ratio-size-transfers

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::constrainLogicalWidthInFragmentByMinMax const):
(WebCore::RenderBox::computePositionedLogicalWidth const):
(WebCore::RenderBox::computeMinMaxLogicalWidthFromAspectRatio const):

  • rendering/RenderBox.h:

LayoutTests:

Enable some tests that pass now.

8:15 PM Changeset in webkit [271553] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLIB] Gardening a couple failures

Unreviewed test gardening.

  • platform/glib/TestExpectations:
7:47 PM Changeset in webkit [271552] by lingho@apple.com
  • 2 edits in trunk/Websites/bugs.webkit.org

Bugzilla patch upload no longer displays the agreement for some users
https://bugs.webkit.org/show_bug.cgi?id=220678

Reviewed by Alexey Proskuryakov.

  • template/en/default/attachment/patchlegalese.html.tmpl:
7:44 PM Changeset in webkit [271551] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Scroll position is lost when homing out and resuming Safari on iOS
https://bugs.webkit.org/show_bug.cgi?id=220676

Reviewed by Tim Horton.

When homing out on iOS, UIKit snapshotting causes multiple web view resizes, which runs
the dynamicViewportSizeUpdate() logic. This can trigger programmatic scrolls via
FrameView::setContentsSize(), which get stored in the scrolling state tree. When
that tree is committed on resume, we then erroneously apply the programmatic
scrolls.

Fix by ignoring requested scroll positions updates when snapshotting, as we do when
we're in the page cache.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):

7:38 PM Changeset in webkit [271550] by ap@apple.com
  • 4 edits in trunk

Build fixes with newer clang
https://bugs.webkit.org/show_bug.cgi?id=220679

Reviewed by Mark Lam.

Source/JavaScriptCore:

Class needs type casting to be used as map key in Objective-C. After https://reviews.llvm.org/D67983,
Objective-C++ also requires this (see discussion there for why it's OK to just cast).

  • API/JSWrapperMap.mm: (-[JSWrapperMap classInfoForClass:]):

Tools:

  • DumpRenderTree/mac/LayoutTestHelper.m:

(lockDownDiscreteGraphics):
(addSleepAssertions):
Added "static" to functions without prototypes.

5:32 PM Changeset in webkit [271549] by rniwa@webkit.org
  • 4 edits in trunk/LayoutTests

Release assert in Document::updateStyleIfNeeded() via PrintContext::end() inside HTMLTitleElement::insertedIntoAncestor and removedFromAncestor
https://bugs.webkit.org/show_bug.cgi?id=218496

Reviewed by Darin Adler.

Remove the title element to eliminiate the non-determinism.

  • http/tests/loading/redirect-with-no-location-crash-expected.txt:
  • http/tests/loading/redirect-with-no-location-crash.html:
  • platform/wk2/http/tests/loading/redirect-with-no-location-crash-expected.txt:
5:13 PM Changeset in webkit [271548] by Russell Epstein
  • 1 copy in tags/Safari-610.4.3.1.4

Tag Safari-610.4.3.1.4.

5:12 PM Changeset in webkit [271547] by Russell Epstein
  • 1 copy in tags/Safari-610.4.3.0.3

Tag Safari-610.4.3.0.3.

4:09 PM Changeset in webkit [271546] by Russell Epstein
  • 2 edits in branches/safari-610.4.3.1-branch/Source/JavaScriptCore

Cherry-pick r271544. rdar://problem/73267306

[JSC] Clean up DFGPreciseLocalClobberize to avoid duplicate code
https://bugs.webkit.org/show_bug.cgi?id=220670

Reviewed by Filip Pizlo.

This patch cleans up DFGPreciseLocalClobberize by extracting code to lambda to remove duplicate code.

  • dfg/DFGPreciseLocalClobberize.h: (JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):

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

4:09 PM Changeset in webkit [271545] by Russell Epstein
  • 2 edits in branches/safari-610.4.3.0-branch/Source/JavaScriptCore

Cherry-pick r271544. rdar://problem/73267289

[JSC] Clean up DFGPreciseLocalClobberize to avoid duplicate code
https://bugs.webkit.org/show_bug.cgi?id=220670

Reviewed by Filip Pizlo.

This patch cleans up DFGPreciseLocalClobberize by extracting code to lambda to remove duplicate code.

  • dfg/DFGPreciseLocalClobberize.h: (JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):

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

4:02 PM Changeset in webkit [271544] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Clean up DFGPreciseLocalClobberize to avoid duplicate code
https://bugs.webkit.org/show_bug.cgi?id=220670

Reviewed by Filip Pizlo.

This patch cleans up DFGPreciseLocalClobberize by extracting code to lambda to remove duplicate code.

  • dfg/DFGPreciseLocalClobberize.h:

(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):

3:57 PM Changeset in webkit [271543] by Wenson Hsieh
  • 9 edits
    2 adds in trunk

[iOS] Emoji keyboard covers text field on twitter.com/messages
https://bugs.webkit.org/show_bug.cgi?id=220664
<rdar://problem/68400471>

Reviewed by Devin Rousso.

Source/WebKit:

After iOS 14, the emoji software keyboard layout now includes a search field that can be used to filter for
specific emojis. This slightly increases the overall height of the software keyboard when the emoji keyplane is
active; in turn, this means that if the selection or caret is positioned right above the top of the software
keyboard when the normal (alphabetic) keyplane is active, switching to the emoji keyplane will cause the
keyboard to overlap the selection, making it difficult to see inserted text.

To address this, add a mechanism to detect when a change in the bounds of the software keyboard causes a visible
selection or caret rect to become overlapped, and react by scrolling to keep the selection visible. This has the
effect of fixing this bug by scrolling to reveal the text field after switching to the emoji keyboard, but it
also has the effect of scrolling to keep the selection visible after detaching a connected hardware keyboard,
in the case where it would've otherwise been overlapped by the (much taller) software keyboard that appears.

Test: editing/selection/ios/scroll-to-reveal-selection-when-showing-software-keyboard.html

  • UIProcess/API/ios/WKWebViewIOS.h:
  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _selectionRectIsFullyVisibleAndNonEmpty]):

Add an internal helper to check whether the selection bounds are fully visible.

(-[WKWebView _scrollToRevealSelectionIfNeeded]):
(-[WKWebView _zoomToFocusRect:selectionRect:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):
(-[WKWebView _keyboardChangedWithInfo:adjustScrollView:]):

In the case where changing input view bounds causes a previously visible selection to become overlapped, call
-_scrollToRevealSelectionIfNeeded to make the selection visible again.

(-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]): Deleted.

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

(-[WKContentView _zoomToFocusRect:selectionRect:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):
(-[WKContentView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]): Deleted.

Drive-by fix: remove the unused insideFixed: parameter from this adjacent method.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView rectToRevealWhenZoomingToFocusedElement]):
(-[WKContentView _zoomToRevealFocusedElement]):
(rectToRevealWhenZoomingToFocusedElement): Deleted.

Pull this into the -rectToRevealWhenZoomingToFocusedElement internal helper method instead, and use the new
selectionBoundingRectInRootViewCoordinates method below.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::selectionBoundingRectInRootViewCoordinates const):

Pull out code to compute the selection bounding rect (for both ranged and caret selections) into a method on
WebPageProxy, so that it can be used in WKContentView and WKWebView.

LayoutTests:

Add a test to verify that after disconnecting a hardware keyboard and showing the software keyboard, we scroll
up to reveal the caret in a focused text field.

  • editing/selection/ios/scroll-to-reveal-selection-when-showing-software-keyboard-expected.txt: Added.
  • editing/selection/ios/scroll-to-reveal-selection-when-showing-software-keyboard.html: Added.
3:47 PM Changeset in webkit [271542] by Peng Liu
  • 4 edits in trunk/Source/WebCore

(REGRESSION) Playback pauses upon entering PiP via media controls on trailers.apple.com
https://bugs.webkit.org/show_bug.cgi?id=220669

Reviewed by Jer Noble.

Add a quirk to disable the "webkitendfullscreen" event when a video enters picture-in-picture
from fullscreen for the sites which cannot handle the event properly.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::enterFullscreen):

  • page/Quirks.cpp:

(WebCore::Quirks::shouldDisableEndFullscreenEventWhenEnteringPictureInPictureFromFullscreenQuirk const):

  • page/Quirks.h:
3:35 PM Changeset in webkit [271541] by Russell Epstein
  • 1 copy in tags/Safari-611.1.13

Tag Safari-611.1.13.

3:32 PM Changeset in webkit [271540] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Cache credentials from keychain
https://bugs.webkit.org/show_bug.cgi?id=220671
<rdar://problem/73262349>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:

(GitHub.credentials): Cache credentials from keychain even when not specified by the user.

3:22 PM Changeset in webkit [271539] by Russell Epstein
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.1.13

3:21 PM Changeset in webkit [271538] by Russell Epstein
  • 1 copy in tags/Safari-611.1.12

Tag Safari-611.1.12.

2:58 PM Changeset in webkit [271537] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebKit

REGRESSION(r267763) Uploading zipped directories does not work on iOS
https://bugs.webkit.org/show_bug.cgi?id=220666
<rdar://problem/72940505>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-15
Reviewed by Geoffrey Garen.

r267763 removed indexedDatabaseTempBlobDirectoryExtensionHandle with no replacement, which used to give the network process
read/write access to /tmp inside the parent process's container. This seems to have been unused for IndexedDB, but it was used
by createTemporaryZipArchive when uploading directories, such as Pages, Numbers, and Keynote documents.

Unfortunately the unit test added by r248139 is macOS-only because WKOpenPanelParameters is only available on macOS and it would
require a large and risky amount of refactoring to add SPI on iOS to test this because iOS uses WKFileUploadPanel instead.
I did manually verify that the bug is fixed using my phone, though.

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::sendCreationParametersToNewProcess):

2:54 PM Changeset in webkit [271536] by Chris Fleizach
  • 5 edits in trunk

AX: increment/decrement synthetic arrow events don't work in ARIA slider examples
https://bugs.webkit.org/show_bug.cgi?id=220626
<rdar://problem/73228924>

Reviewed by Zalan Bujtas.

Source/WebCore:

keyCode is still expected to be filled in with standard codes for arrow keys.

Updated test: accessibility/keyevents-posted-for-increment-actions.html

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::postKeyboardKeysForValueChange):

LayoutTests:

  • accessibility/keyevents-posted-for-increment-actions-expected.txt:
  • accessibility/keyevents-posted-for-increment-actions.html:
2:28 PM Changeset in webkit [271535] by Russell Epstein
  • 8 edits in branches/safari-610.4.3.0-branch/Source

Versioning.

WebKit-7610.4.3.0.3

2:26 PM Changeset in webkit [271534] by Russell Epstein
  • 8 edits in branches/safari-610.4.3.1-branch/Source

Versioning.

WebKit-7610.4.3.1.4

1:51 PM Changeset in webkit [271533] by Chris Dumez
  • 25 edits in trunk/Source

[GPUProcess] Move DOM / Canvas rendering off the main thread in the GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=220476

Reviewed by Simon Fraser.

Source/WebCore:

Make some caches thread-safe now that we do rendering off the main thread in
the GPUProcess.

No new tests, covered by existing tests.

  • platform/graphics/ImageBuffer.h:
  • platform/graphics/MediaPlayer.h:
  • platform/graphics/ShadowBlur.cpp:

(WebCore::ScratchBuffer::ScratchBuffer):
(WebCore::ScratchBuffer::getScratchBuffer):
(WebCore::ScratchBuffer::setCachedShadowValues):
(WebCore::ScratchBuffer::setCachedInsetShadowValues):
(WebCore::ScratchBuffer::scheduleScratchBufferPurge):
(WebCore::ScratchBuffer::purgeTimerFired):
(WebCore::ScratchBuffer::clearScratchBuffer):
(WebCore::ScratchBuffer::singleton):
(WebCore::ScratchBuffer::lock):
(WebCore::ShadowBlur::drawRectShadowWithTiling):
(WebCore::ShadowBlur::drawInsetShadowWithTiling):

  • platform/graphics/cg/ImageBufferUtilitiesCG.cpp:

(WebCore::utiFromImageBufferMIMEType):

  • platform/graphics/cg/SubimageCacheWithTimer.cpp:

(WebCore::SubimageCacheWithTimer::SubimageCacheWithTimer):
(WebCore::SubimageCacheWithTimer::pruneCacheTimerFired):
(WebCore::SubimageCacheWithTimer::subimage):
(WebCore::SubimageCacheWithTimer::clearImageAndSubimages):
(WebCore::SubimageCacheWithTimer::clearAll):
(WebCore::SubimageCacheWithTimer::subimageCache):

  • platform/graphics/cg/SubimageCacheWithTimer.h:
  • platform/network/mac/UTIUtilities.mm:

(WebCore::UTIFromUnknownMIMEType):
(WebCore::UTIFromMIMETypeCachePolicy::createValueForKey):
(WebCore::UTIFromMIMETypeCachePolicy::createKeyForStorage):
(WebCore::cacheUTIFromMimeType):
(WebCore::UTIFromMIMEType):

  • platform/text/cf/HyphenationCF.cpp:
  • platform/text/hyphen/HyphenationLibHyphen.cpp:

https://bugs.webkit.org/show_bug.cgi?id=220476

Source/WebKit:

Move DOM / Canvas rendering off the main thread (and on a high-priority serial WorkQueue) in the
GPUProcess by making RemoteRenderingBackend a WorkQueueMessageReceiver. There is a serial WorkQueue
per RemoteRenderingBackend, which means each WebPage gets its own WorkQueue.

A/B testing shows this mostly perf-neutral (could be a slight progression on some hardware). I believe
this new architecture should also give us more optimization opportunities in the future. For example,
we may be able to more aggressively wait on the cross-process semaphore when waiting for new DisplayList
entries without worrying about blocking the main thread.

I have run layout tests in Debug on both macOS & iOS with the GPUProcess enabled and I believe I
have fixed all the crashes that were discovered.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::GPUConnectionToWebProcess):
(WebKit::GPUConnectionToWebProcess::didClose):
(WebKit::GPUConnectionToWebProcess::createRenderingBackend):
(WebKit::GPUConnectionToWebProcess::RemoteRenderingBackendWrapper::RemoteRenderingBackendWrapper):
(WebKit::GPUConnectionToWebProcess::RemoteRenderingBackendWrapper::~RemoteRenderingBackendWrapper):

  • GPUProcess/GPUConnectionToWebProcess.h:

(WebKit::GPUConnectionToWebProcess::remoteMediaPlayerManagerProxy):

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::create):
(WebKit::RemoteRenderingBackend::RemoteRenderingBackend):
(WebKit::RemoteRenderingBackend::~RemoteRenderingBackend):
(WebKit::RemoteRenderingBackend::disconnect):
(WebKit::RemoteRenderingBackend::messageSenderConnection const):
(WebKit::RemoteRenderingBackend::applyMediaItem):
(WebKit::RemoteRenderingBackend::createImageBuffer):
(WebKit::RemoteRenderingBackend::wakeUpAndApplyDisplayList):
(WebKit::RemoteRenderingBackend::getImageData):
(WebKit::RemoteRenderingBackend::getDataURLForImageBuffer):
(WebKit::RemoteRenderingBackend::getDataForImageBuffer):
(WebKit::RemoteRenderingBackend::getBGRADataForImageBuffer):
(WebKit::RemoteRenderingBackend::cacheNativeImage):
(WebKit::RemoteRenderingBackend::cacheFont):
(WebKit::RemoteRenderingBackend::deleteAllFonts):
(WebKit::RemoteRenderingBackend::releaseRemoteResource):
(WebKit::RemoteRenderingBackend::didCreateSharedDisplayListHandle):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • GPUProcess/media/RemoteLegacyCDMProxy.cpp:

(WebKit::RemoteLegacyCDMProxy::cdmMediaPlayer const):

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:

(WebKit::RemoteMediaPlayerManagerProxy::createMediaPlayer):
(WebKit::RemoteMediaPlayerManagerProxy::deleteMediaPlayer):
(WebKit::RemoteMediaPlayerManagerProxy::didReceivePlayerMessage):
(WebKit::RemoteMediaPlayerManagerProxy::didReceiveSyncPlayerMessage):
(WebKit::RemoteMediaPlayerManagerProxy::mediaPlayer):

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
  • Platform/SharedMemory.h:
  • Shared/ShareableBitmap.cpp:

(WebKit::ShareableBitmap::ShareableBitmap):
(WebKit::ShareableBitmap::~ShareableBitmap):

  • Shared/ShareableBitmap.h:
  • Shared/cg/ShareableBitmapCG.cpp:

(WebKit::ShareableBitmap::createGraphicsContext):
(WebKit::ShareableBitmap::releaseBitmapContextData):
(WebKit::ShareableBitmap::releaseDataProviderData):

Source/WTF:

Add trait function that gets called TinyLRUCache to convert the key before storing
it. It is useful for clients that need to call isolatedCopy() on the key String before
storing it.

  • wtf/TinyLRUCache.h:

(WTF::TinyLRUCachePolicy::createKeyForStorage):
(WTF::TinyLRUCache::get):

12:57 PM Changeset in webkit [271532] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Make UI parsing for parent commits more flexible
https://bugs.webkit.org/show_bug.cgi?id=220661
<rdar://problem/73256932>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:

(GitHub.init): Handle commit links in the UI using both 'commits/' URLs and 'tree-commit/'.

12:53 PM Changeset in webkit [271531] by jer.noble@apple.com
  • 3 edits
    2 adds in trunk

Playback fails at marketwatch.com
https://bugs.webkit.org/show_bug.cgi?id=220646
<rdar://72950166>

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Test: media/media-play-promise-reject-play-notallowed-audio.html

When audio playback is blocked by settings, the HTMLMediaElement must load its source
media's metadata in order to determine whether the media should be allowed to play without a
user gesture. If a play promise is pending, the expectation is that those promises will
reject with a NotAllowedError to indicate that a user gesture is needed. However, by calling
pauseInternal() to block (possibly) existing playback, this causes those promises to be
rejected with an AbortError, as if the pause() method had been called. Call
scheduleRejectPendingPlayPromises() with NotAllowedError to ensure the correct error is used
to reject.

Drive-by fix: no reason to dispatch and call rejectPendingPlayPromises() or
resolvePendingPlayPromises() if there are no promises to reject or resolve, and not calling
these methods makes the logs less noisy.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::scheduleResolvePendingPlayPromises):
(WebCore::HTMLMediaElement::scheduleRejectPendingPlayPromises):
(WebCore::HTMLMediaElement::setVolume):
(WebCore::HTMLMediaElement::mediaPlayerDidAddAudioTrack):
(WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged):
(WebCore::HTMLMediaElement::updateShouldPlay):

LayoutTests:

  • media/media-play-promise-reject-play-notallowed-audio-expected.txt: Added.
  • media/media-play-promise-reject-play-notallowed-audio.html: Added.
12:43 PM Changeset in webkit [271530] by jer.noble@apple.com
  • 4 edits in trunk/Source/WebCore

CRASH in MediaSourcePrivateAVFObjC::removeSourceBuffer()
https://bugs.webkit.org/show_bug.cgi?id=220647
<rdar://73173684>

Reviewed by Darin Adler.

In exceptional circumstances, the MediaPlayerPrivateMediaSourceAVFObjC can be destroyed before
MediaSourcePrivateAVFObjC, which leaves behind a null WeakPtr. Null check m_player before
using everywhere in MediaSourcePrivateAVFObjC.

Drive-by fix: it would be invalid to pass in a null player to MediaSourcePrivateAVFObjC::create(),
so modify that method to take a reference rather than a pointer.

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

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::load):

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

(WebCore::MediaSourcePrivateAVFObjC::create):
(WebCore::MediaSourcePrivateAVFObjC::MediaSourcePrivateAVFObjC):
(WebCore::MediaSourcePrivateAVFObjC::removeSourceBuffer):
(WebCore::MediaSourcePrivateAVFObjC::durationChanged):
(WebCore::MediaSourcePrivateAVFObjC::markEndOfStream):
(WebCore::MediaSourcePrivateAVFObjC::readyState const):
(WebCore::MediaSourcePrivateAVFObjC::setReadyState):
(WebCore::MediaSourcePrivateAVFObjC::waitForSeekCompleted):
(WebCore::MediaSourcePrivateAVFObjC::seekCompleted):
(WebCore::MediaSourcePrivateAVFObjC::currentMediaTime const):
(WebCore::MediaSourcePrivateAVFObjC::sourceBufferPrivateDidChangeActiveState):
(WebCore::MediaSourcePrivateAVFObjC::sourceBufferKeyNeeded):
(WebCore::MediaSourcePrivateAVFObjC::setSourceBufferWithSelectedVideo):

12:33 PM Changeset in webkit [271529] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Remove non-inclusively named WKBrowsingContextGroup SPI
https://bugs.webkit.org/show_bug.cgi?id=220604

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-15
Reviewed by Anders Carlsson.

Once rdar://problem/73167624 has been integrated, we can remove the old SPI, which has been replaced in r263099

  • UIProcess/API/Cocoa/WKBrowsingContextGroup.h:
  • UIProcess/API/Cocoa/WKBrowsingContextGroup.mm:

(-[WKBrowsingContextGroup addUserStyleSheet:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:mainFrameOnly:]): Deleted.
(-[WKBrowsingContextGroup addUserScript:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:injectionTime:mainFrameOnly:]): Deleted.

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

Web Inspector: Font Details sidebar - Improve line wrapping of table row titles when space is available
https://bugs.webkit.org/show_bug.cgi?id=219997

Reviewed by Devin Rousso.

Adjust the width of the title in each row to 105px, which provides space for both Historical Figures which is
an always-present row and Optical Size (opsz) which is a registed variation axis and is used in numerous
fonts including San Francisco. This overrides the normal fixed width of these titles of 85px, which causes these
and numerous other unregistered axis names and tags to wrap their title more aggresively than is stricly
necessary.

  • UserInterface/Views/FontDetailsPanel.css:

(.sidebar > .panel.details.style-font > .content .details-section > .content > .group > .row.simple > .label):

12:08 PM Changeset in webkit [271527] by Russell Epstein
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.1.12

10:29 AM Changeset in webkit [271526] by Chris Dumez
  • 7 edits in trunk/Source

[GPUProcess] Improve the GPUProcess' memory pressure handler
https://bugs.webkit.org/show_bug.cgi?id=220659

Reviewed by Simon Fraser.

Improve the GPUProcess' memory pressure handler to clear things like the IOSurfacePool
and the SubimageCacheWithTimer.

Source/WebCore:

  • page/MemoryRelease.cpp:

(WebCore::releaseGraphicsMemory):
(WebCore::platformReleaseGraphicsMemory):

  • page/MemoryRelease.h:
  • page/cocoa/MemoryReleaseCocoa.mm:

(WebCore::platformReleaseGraphicsMemory):

Source/WebKit:

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::lowMemoryHandler):
(WebKit::GPUProcess::initializeGPUProcess):
(WebKit::GPUProcess::prepareToSuspend):

  • GPUProcess/GPUProcess.h:
10:03 AM Changeset in webkit [271525] by Russell Epstein
  • 1 copy in tags/Safari-611.1.11

Tag Safari-611.1.11.

9:47 AM Changeset in webkit [271524] by graouts@webkit.org
  • 11 edits
    6 adds in trunk

Reversed transform animation not applied alongside other transform animations
https://bugs.webkit.org/show_bug.cgi?id=218655
<rdar://problem/71116284>

Reviewed by Simon Fraser.

Source/WebCore:

Tests: webanimations/combining-transform-animations-with-different-acceleration-capabilities-2.html

webanimations/combining-transform-animations-with-different-acceleration-capabilities-3.html
webanimations/combining-transform-animations-with-different-acceleration-capabilities.html

While, in theory, animations for a transform-related CSS property (translate, rotate, scale and transform)
can be accelerated, there are various reasons why it might not, in fact, run accelerated.

One example is that the timing function is not something we can translate in terms Core Animation can
understand, such as the steps() timing function. In this case, the KeyframeEffect itself is aware of
the limitation and the method KeyframeEffect::canBeAccelerated() returns false.

Another example is that the playback rate of the animation is not 1, which we currently don't support for
Core Animation animations (see bug 211839). In this case, GraphicsLayerCA is where the impossibility to
run an animation accelerated is determined.

While we support running transform-related animations with or without acceleration, one thing we cannot
support is, for the same element, running some transform-related animations with acceleration, and some
without.

Thus, regardless of where we determine that a transform-related animation cannot be accelerated, we need
to send this information up to the KeyframeEffectStack in which this animation's effect belongs to make
sure that any other transform-related animation that may already be running accelerated no longer does
and continues running without acceleration.

There are two locations where we determine that a transform-related animation cannot be accelerated:

  1. in DocumentTimeline::applyPendingAcceleratedAnimations() under which we start, update or stop accelerated animations that have been invalidated since the last page rendering,
  2. in KeyframeEffect::updateAcceleratedActions() which is called for each page rendering, including animations that cannot be accelerated.

In the first case, we catch situations where an animation that could have been accelerated but failed
to be started due to the internal logic of GraphicsLayerCA. We use the new KeyframeEffect method
applyPendingAcceleratedActions() return value to determine this, and for each effect where the result
indicates that a transform-related animation could not be accelerated, we add the KeyframeEffectStack
to which it belongs and, once we're done with updating all effects, call the new
stopAcceleratingTransformRelatedProperties() method on the keyframe effect stack.

In the second case, we catch situations where an animation is known to not be able to run accelerated
even without involving GraphicsLayerCA. We check whether the animation targets a transform-related
property and if it is active, and if so call stopAcceleratingTransformRelatedProperties()
on the keyframe effect stack there as well.

When KeyframeEffectStack::stopAcceleratingTransformRelatedProperties() is called, we go
through all the registered effects and call stopAcceleratingTransformRelatedProperties(). This new
KeyframeEffect method will either add a pending accelerated action to stop the accelerated animation,
or if we're currently apply accelerated actions (ie. during DocumentTimeline::applyPendingAcceleratedAnimations()),
we stop the accelerated animation right away.

In both cases we know not to try running this animation again with acceleration by setting m_runningAccelerated
to RunningAccelerated::No.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::applyPendingAcceleratedAnimations):

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::isTargetingTransformRelatedProperty const):
(WebCore::KeyframeEffect::isRunningAcceleratedTransformRelatedAnimation const):
(WebCore::KeyframeEffect::updateAcceleratedActions):
(WebCore::KeyframeEffect::applyPendingAcceleratedActions):
(WebCore::KeyframeEffect::stopAcceleratingTransformRelatedProperties):

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

(WebCore::KeyframeEffectStack::stopAcceleratingTransformRelatedProperties):

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

(WebCore::WebAnimation::applyPendingAcceleratedActions): Deleted.

  • animation/WebAnimation.h:
  • animation/WebAnimationTypes.h:

LayoutTests:

Add new tests that start a transform-related animation that runs accelerated, then add another
transform-related animation that either initially or eventually is not accelerated. In all cases,
we check that once the second animation is no longer accelerated that the first animation is also
no longer accelerated.

  • platform/win/TestExpectations:
  • webanimations/combining-transform-animations-with-different-acceleration-capabilities-2-expected.txt: Added.
  • webanimations/combining-transform-animations-with-different-acceleration-capabilities-2.html: Added.
  • webanimations/combining-transform-animations-with-different-acceleration-capabilities-3-expected.txt: Added.
  • webanimations/combining-transform-animations-with-different-acceleration-capabilities-3.html: Added.
  • webanimations/combining-transform-animations-with-different-acceleration-capabilities-expected.txt: Added.
  • webanimations/combining-transform-animations-with-different-acceleration-capabilities.html: Added.
8:53 AM Changeset in webkit [271523] by Tomoki Imai
  • 3 edits
    2 adds in trunk

When non-integer tabindex is set, the behavior of element should be same as the tabindex is omitted.
https://bugs.webkit.org/show_bug.cgi?id=220648

Reviewed by Antti Koivisto.

Source/WebCore:

When non-integer tabindex is specified, the element should behave the same way as the tabindex is omitted.
https://html.spec.whatwg.org/multipage/interaction.html#attr-tabindex

WebKit didn't overwrite the internal tabindex value when the new value is non-integer.

Test: LayoutTests\fast\html\tabindex-overwrite-with-non-integer.html

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::parseAttribute): If the new value cannot be parsed as the integer, clear the existing tabindex.

LayoutTests:

Add LayoutTest case for tabindex which is overwritten by non-integers.
When non-integer tabindex is specified, the element should behave the same way as the tabindex is omitted.
https://html.spec.whatwg.org/multipage/interaction.html#attr-tabindex

  • fast/html/tabindex-overwrite-with-non-integer-expected.txt: Added.
  • fast/html/tabindex-overwrite-with-non-integer.html: Added.
7:24 AM Changeset in webkit [271522] by commit-queue@webkit.org
  • 5 edits in trunk/Tools/buildstream

[Flatpak SDK] Cargo recipes improvements
https://bugs.webkit.org/show_bug.cgi?id=220656

Patch by Philippe Normand <pnormand@igalia.com> on 2021-01-15
Reviewed by Adrian Perez de Castro.

  • elements/freedesktop-sdk.bst: Update junction.
  • elements/sdk/cargo-c.bst: Properly separate build command from install command.
  • elements/sdk/gst-plugin-closedcaption.bst: Ditto.
  • elements/sdk/gst-plugin-dav1d.bst: Ditto.
6:57 AM Changeset in webkit [271521] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Mark only child for layout
https://bugs.webkit.org/show_bug.cgi?id=218554

Patch by Rob Buis <rbuis@igalia.com> on 2021-01-15
Reviewed by Antti Koivisto.

Mark only child for layout in applyStretchAlignmentToChildIfNeeded.

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::applyStretchAlignmentToChildIfNeeded):

6:39 AM Changeset in webkit [271520] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC] Rename inNoQuirksMode to inStandardsMode
https://bugs.webkit.org/show_bug.cgi?id=220655

Reviewed by Antti Koivisto.

"inStandardsMode" reads better.

  • layout/LayoutState.h:

(WebCore::Layout::LayoutState::inStandardsMode const):
(WebCore::Layout::LayoutState::inNoQuirksMode const): Deleted.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

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

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::initialLineHeight const):
(WebCore::Layout::InlineFormattingContext::Quirks::inlineLevelBoxAffectsLineBox const):

6:10 AM Changeset in webkit [271519] by Philippe Normand
  • 14 edits
    1 delete in trunk/Tools/buildstream

[Flatpak SDK] Update GStreamer and Mesa
https://bugs.webkit.org/show_bug.cgi?id=220237

Reviewed by Adrian Perez de Castro.

This patch updates several SDK components:

  • GStreamer 1.18.0 -> 1.18.2
  • Mesa 20.1.10 -> 20.3.2

Additionally some libdrm-related cleanups are included, since we have our own version of
this component, it is better to use it everywhere instead of the upstream SDK version, to
avoid collisions.

This patch also updates the pipenv dependencies used by Buildstream.

  • Pipfile.lock:
  • elements/freedesktop-sdk.bst:
  • elements/qt5/qtbase.bst:
  • elements/qt5/qtwayland.bst:
  • elements/sdk/gst-libav.bst:
  • elements/sdk/gst-plugins-bad.bst:
  • elements/sdk/gst-plugins-base.bst:
  • elements/sdk/gst-plugins-good.bst:
  • elements/sdk/gst-plugins-ugly.bst:
  • elements/sdk/gstreamer.bst:
  • elements/sdk/mesa.bst:
  • elements/sdk/xorg-server.bst:
  • patches/mesa/0004-mesa-clear-texture-s-views-when-texture-is-remove.patch: Removed.
  • patches/mesa/mesa_libdrm_deps.patch:
6:03 AM Changeset in webkit [271518] by Philippe Normand
  • 3 edits
    5 adds in trunk/Tools/buildstream

[Flatpak SDK] Updates for gst-build and gst-plugins-rs support
https://bugs.webkit.org/show_bug.cgi?id=220418

Reviewed by Adrian Perez de Castro.

This patch:

  • bumps from Meson 0.55.3 to Meson 0.56.1 in the FDO junction
  • includes cargo-c in the SDK, this is a new dependency for gst-build (only if gst-plugins-rs is enabled though)
  • includes the latest release of the rsclosedcaption GStreamer plugin in the SDK. This plugin includes several elements (ccconverter, cea608tott) that will be useful in order to support CEA608 rendering in WebKit GStreamer ports.
  • elements/freedesktop-sdk.bst:
  • elements/sdk-platform.bst:
  • elements/sdk/cargo-c.bst: Added.
  • elements/sdk/gst-plugin-closedcaption.bst: Added.
  • files/gst-plugin-closedcaption/Cargo.lock: Added.
  • patches/fdo-0001-meson-Bump-to-0.56.1.patch: Added.
5:59 AM Changeset in webkit [271517] by Philippe Normand
  • 7 edits in trunk

[GStreamer] Clean-up the TextSink
https://bugs.webkit.org/show_bug.cgi?id=220651

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

The GStreamer sink used to collect WebVTT cues is now more self-contained and uses the
player only to hand-off samples to the corresponding TextTrack implementation for further
processing. This is only a refactoring, existing tests in media/track cover this change.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::handleTextSample):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/gstreamer/TextSinkGStreamer.cpp:

(webkitTextSinkHandleSample):
(webkitTextSinkConstructed):
(webkitTextSinkQuery):
(webkit_text_sink_class_init):
(webkitTextSinkNew):

  • platform/graphics/gstreamer/TextSinkGStreamer.h:

Tools:

  • Scripts/webkitpy/style/checker.py: Add GStreamer TextSink implementation to GObject

classes allow-list.

5:22 AM WebKitGTK/2.30.x edited by berto@igalia.com
(diff)
4:39 AM Changeset in webkit [271516] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][Integration] REGRESSION (r270123) facebook.com birthday dropdown do not work when creating new account
https://bugs.webkit.org/show_bug.cgi?id=220638
<rdar://problem/73175259>

Reviewed by Simon Fraser.

Source/WebCore:

This patch fixes incorrect hittest results when the hittest target

  1. participates in the modern line layout and
  2. prior to the hittesting its style changes in a way that it does not trigger layout.

e.g.
<div><div id=inner style="display: inline-block; visibility: hidden"><div></div>
<script>inner.style.visibility = "visible"</script>

Any subsequent hittest will miss the inner <div> as the loop in LineLayout::hitTest() early returns due to stale style information.
The reason why we end up with stale style is because we only update the layout box's style when the style diff >= StyleDifference::Layout () in RenderBox::styleDidChange.

Test: fast/inline-block/hittest-fails-on-inline-block-with-visibility-change.html

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::styleDidChange):

LayoutTests:

  • fast/inline-block/hittest-fails-on-inline-block-with-visibility-change-expected.txt: Added.
  • fast/inline-block/hittest-fails-on-inline-block-with-visibility-change.html: Added.
3:23 AM Changeset in webkit [271515] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

REGRESSION(r269813): PLT5 regressed by 0.5%
https://bugs.webkit.org/show_bug.cgi?id=220652
<rdar://problem/71517335>

Reviewed by Antti Koivisto.

In r269813 we added support for animating more pseudo-elements besides ::after and ::before. However, the only other
pseudo-element we realistically should be supporting animations for at this juncture is ::marker. So instead of
calling Style::TreeResolver::resolvePseudoStyle() for all public pseudo-elements, we call it for ::after, ::before
and ::marker alone.

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveElement):

2:51 AM Changeset in webkit [271514] by commit-queue@webkit.org
  • 19 edits
    1 copy in trunk

Use event loop to set title
https://bugs.webkit.org/show_bug.cgi?id=218496

Patch by Rob Buis <rbuis@igalia.com> on 2021-01-15
Reviewed by Ryosuke Niwa.

Source/WebCore:

Use event loop to set title to avoid calling WebFrameLoaderClient
within HTMLTitleElement::insertedIntoAncestor.

  • dom/Document.cpp:

(WebCore::Document::updateTitle):

  • dom/Document.h:

Tools:

Adapt unit tests to wait for title change tasks
to be processed.

  • TestWebKitAPI/Tests/WebKit/PageLoadState.cpp:

(TestWebKitAPI::didChangeTitle):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(TEST):

LayoutTests:

Adapt tests to make sure pending title change tasks
are processed before the test is done.

  • fast/dom/title-text-property-2.html:
  • fast/dom/title-text-property-assigning-empty-string.html:
  • fast/dom/title-text-property.html:
  • http/tests/globalhistory/history-delegate-basic-title-expected.txt:
  • http/tests/globalhistory/history-delegate-basic-title.html:
  • http/tests/loading/basic-auth-load-URL-with-consecutive-slashes-expected.txt:
  • http/tests/loading/basic-auth-load-URL-with-consecutive-slashes.html:
  • http/tests/loading/redirect-with-no-location-crash-expected.txt:
  • http/tests/loading/redirect-with-no-location-crash.html:
  • platform/mac-wk2/TestExpectations:
  • platform/win/http/tests/loading/basic-auth-load-URL-with-consecutive-slashes-expected.txt: Copied from LayoutTests/http/tests/loading/basic-auth-load-URL-with-consecutive-slashes-expected.txt.
  • platform/wk2/http/tests/loading/basic-auth-load-URL-with-consecutive-slashes-expected.txt:
  • platform/wk2/http/tests/loading/redirect-with-no-location-crash-expected.txt:
1:45 AM Changeset in webkit [271513] by Philippe Normand
  • 9 edits in trunk/Source

[GStreamer] UI<->WebPocess IPC needed for enumerateDevices support
https://bugs.webkit.org/show_bug.cgi?id=220542

Reviewed by Eric Carlson.

Source/WebCore:

  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::ensureGStreamerInitialized): Re-instate release assert ensuring this code path is
not hit from the UIProcess.

Source/WebKit:

For GLib ports the UIProcess will now send a message to the WebProcess to retrieve the
MediaStream devices. This is required because we want to avoid initializing GStreamer in the
UIProcess as much as possible.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::platformGetMediaStreamDevices):
(WebKit::UserMediaPermissionRequestManagerProxy::computeFilteredDeviceList):

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/glib/UserMediaPermissionRequestManagerProxyGLib.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::platformGetMediaStreamDevices):

  • WebProcess/glib/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::validateUserMediaRequestConstraints):
(WebKit::UserMediaCaptureManager::getMediaStreamDevices):

  • WebProcess/glib/UserMediaCaptureManager.h:
  • WebProcess/glib/UserMediaCaptureManager.messages.in:
1:27 AM Changeset in webkit [271512] by Philippe Normand
  • 8 edits
    1 copy
    1 add in trunk

[GStreamer] Clean-up the TextCombiner
https://bugs.webkit.org/show_bug.cgi?id=220463

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

The code style now conforms WebKit's. The GhostPad subclass moved to its own code unit,
because the WEBKIT_DEFINE_TYPE cannot be used multiple times in the same file (it defines a
parent_class symbol). The GhostPad was also decoupled as much as possible from the Combiner.
Most mentions of the funnel GStreamer element were made more generic because we might need
to use a different element in situations where the pipeline is playbin3-based, which requires
the concat element.

No new tests, existing tests cover this patch.

  • platform/GStreamer.cmake:
  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::gstElementFactoryEquals):

  • platform/graphics/gstreamer/GStreamerCommon.h:
  • platform/graphics/gstreamer/TextCombinerGStreamer.cpp:

(webKitTextCombinerHandleCapsEvent):
(webkitTextCombinerRequestNewPad):
(webkitTextCombinerReleasePad):
(webKitTextCombinerConstructed):
(webkit_text_combiner_class_init):
(webkitTextCombinerNew):

  • platform/graphics/gstreamer/TextCombinerGStreamer.h:
  • platform/graphics/gstreamer/TextCombinerPadGStreamer.cpp: Added.

(webkitTextCombinerPadEvent):
(webkitTextCombinerPadGetProperty):
(webkitTextCombinerPadSetProperty):
(webkitTextCombinerPadConstructed):
(webkit_text_combiner_pad_class_init):
(webKitTextCombinerPadLeakInternalPadRef):

  • platform/graphics/gstreamer/TextCombinerPadGStreamer.h: Copied from Source/WebCore/platform/graphics/gstreamer/TextCombinerGStreamer.h.

Tools:

  • Scripts/webkitpy/style/checker.py: Add GStreamer TextCombiner implementation to GObject

classes allow-list.

Jan 14, 2021:

11:24 PM Changeset in webkit [271511] by Ross Kirsling
  • 2 edits in trunk/JSTests

Unreviewed. Add skips for Big Sur-dependent test262 tests.

  • test262/config.yaml:
11:14 PM Changeset in webkit [271510] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Crash from CompositeEditCommand::moveParagraphs() being passed null end
https://bugs.webkit.org/show_bug.cgi?id=220630

Patch by Julian Gonzalez <julian_a_gonzalez@apple.com> on 2021-01-14
Reviewed by Ryosuke Niwa.

Source/WebCore:

If the start or end VisiblePositions inside InsertListCommand::unlistifyParagraph()
are null VisiblePositions (even if they are not null Positions), passing them to the
call to moveParagraphs() at the end of the function isn't meaningful and will result
in a crash - so return early in this case.

Test: editing/inserting/paragraph-outdent-crash.html

  • editing/InsertListCommand.cpp:

(WebCore::InsertListCommand::unlistifyParagraph):

LayoutTests:

Add a test to verify that the crash here is resolved, and also remove a newline
from another related test that now renders one fewer newline
(in that case, the ultimate bug is similar, so the result should be similar).

  • editing/inserting/insert-list-in-iframe-in-list-expected.txt:
  • editing/inserting/paragraph-outdent-crash-expected.txt: Added.
  • editing/inserting/paragraph-outdent-crash.html: Added.
9:55 PM Changeset in webkit [271509] by Ross Kirsling
  • 6 edits
    1 add in trunk

[JSC] Correctly handle escaped keyword identifiers
https://bugs.webkit.org/show_bug.cgi?id=220634

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/escaped-keyword-identifiers.js: Added.
  • test262/expectations.yaml: Mark 16 test cases as passing.

Source/JavaScriptCore:

When let, await, and yield are accepted as identifiers, they should be accepted even in escaped form.
This patch ensures this behavior for variable, parameter, and label names.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::isArrowFunctionParameters):
(JSC::Parser<LexerType>::parseStatementListItem):
(JSC::Parser<LexerType>::parseVariableDeclarationList):
(JSC::Parser<LexerType>::parseFormalParameters):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parsePrimaryExpression):
Make use of new parser functions.

  • parser/Parser.h:

(JSC::isContextualKeyword): Renamed from isAnyContextualKeyword.
(JSC::Parser::matchSpecIdentifier): Allow escaped contextual keywords.
(JSC::Parser::matchIdentifierOrPossiblyEscapedContextualKeyword): Added.
(JSC::Parser::isAllowedIdentifierLet): Renamed from isLETMaskedAsIDENT.
(JSC::Parser::isPossiblyEscapedLet): Added.
(JSC::Parser::isDisallowedIdentifierAwait): Added.
(JSC::Parser::isAllowedIdentifierAwait): Added.
(JSC::Parser::isPossiblyEscapedAwait): Added.
(JSC::Parser::canUseIdentifierAwait): Added.
(JSC::Parser::isDisallowedIdentifierYield): Added.
(JSC::Parser::isAllowedIdentifierYield): Renamed from isYIELDMaskedAsIDENT.
(JSC::Parser::isPossiblyEscapedYield): Added.
(JSC::Parser::canUseIdentifierYield): Added.
(JSC::Parser::matchAllowedEscapedContextualKeyword): Added.
(JSC::Parser::disallowedIdentifierAwaitReason): Fix mistake (left over from previous patch).
(JSC::isIdentifierOrAnyContextualKeyword): Deleted.
(JSC::isSafeContextualKeyword): Deleted.
(JSC::Parser::isDisallowedIdentifierLet): Deleted.

  • parser/ParserTokens.h:

Remove obsolete notion of "safe contextual keyword".

9:12 PM Changeset in webkit [271508] by Simon Fraser
  • 5 edits
    2 adds in trunk

[Async scrolling] Slow-scrolling reasons should not propagate across frame boundaries
https://bugs.webkit.org/show_bug.cgi?id=220635

Reviewed by Tim Horton.

Source/WebCore:

We should be able to do fast scrolling of the main frame when a subframe has background-attachment:fixed
content in it, but currently we propagate the "slow scrolling reasons" up to the root of
the scrolling tree, which crosses frame boundaries.

This is a partial fix for the problem; ThreadedScrollingTree::canUpdateLayersOnScrollingThread()
is still consulting tree-wide state.

Test: scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-in-iframe.html

  • page/scrolling/ScrollingStateFrameScrollingNode.cpp:

(WebCore::ScrollingStateFrameScrollingNode::dumpProperties const):

  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::propagateSynchronousScrollingReasons):
(WebCore::ThreadedScrollingTree::canUpdateLayersOnScrollingThread const):

  • page/scrolling/ThreadedScrollingTree.h:

LayoutTests:

  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-in-iframe-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-in-iframe.html: Added.
6:00 PM Changeset in webkit [271507] by Aditya Keerthi
  • 9 edits
    2 adds in trunk

[Cocoa] Strip DataDetectors links when copying content to the pasteboard
https://bugs.webkit.org/show_bug.cgi?id=220526
<rdar://problem/71045590>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Currently, when DataDetectors links are written to the pasteboard when
copied. This is problematic, since clicking on a DataDetector link
outside of a valid context results in an attempt to open an invalid
URL. Instead, DataDetectors links should be stripped when copied.

To remove the link, while preserving any custom styles, the <a> element
created by Data Detection is replaced with a <span> element. Any
attributes and styles added by WebKit are removed as a part of this
transformation.

Tests: editing/pasteboard/copy-paste-data-detected-links.html

CopyRTF.StripsDataDetectedLinks
PasteWebArchive.StripsDataDetectedLinks

  • editing/cocoa/DataDetection.h:
  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::isDataDetectorElement):

Add a helper to check if an element was created through Data Detection.

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::_addLinkForElement):

Do not add NSLinkAttributeName for DataDetectors links.

(HTMLConverter::_exitElement):

Factor out link creation logic.

  • editing/markup.cpp:

(WebCore::StyledMarkupAccumulator::spanReplacementForElement):

Centralize the logic that determines whether or not an element should
be replaced by a <span>. Previously, this only applied to <slot>
elements. Now, it applies to <slot> and DataDetectors links.

(WebCore::StyledMarkupAccumulator::appendStartTag):

If the element was created through DataDetection, append a <span>
rather than an <a>, to drop the link. The DataDetectors and href
attributes are also dropped from the markup string. Finally, remove
the text decoration style that was added by WebKit to style the
DataDetectors link.

(WebCore::StyledMarkupAccumulator::appendEndTag):

Consult shouldReplaceElementWithSpan when appending the end tag.

Tools:

Added API tests to verify DataDetectors links are not preserved when
copying/pasting WebArchives and rich text.

  • TestWebKitAPI/Tests/WebKitCocoa/CopyRTF.mm:

(StripsDataDetectorsLinks):

  • TestWebKitAPI/Tests/WebKitCocoa/PasteWebArchive.mm:

(StripsDataDetectorsLinks):

LayoutTests:

Added a test which copies content containing two data detected links
and verifies that the links are removed.

  • editing/pasteboard/copy-paste-data-detected-links-expected.txt: Added.
  • editing/pasteboard/copy-paste-data-detected-links.html: Added.
4:58 PM Changeset in webkit [271506] by Jonathan Bedard
  • 7 edits in trunk/Tools

[webkitscmpy] Add GitHub credentials
https://bugs.webkit.org/show_bug.cgi?id=220562
<rdar://problem/73063457>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version, add keyring.
  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/git_hub.py:

(GitHub):
(GitHub.enter): Set username and token in environment.
(GitHub.exit): Unset username and token in environment.

  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:

(GitHub.init):
(GitHub.credentials): Search for credentials in both environment and keyring before
prompting user.
(GitHub.request): Use GitHub credentials, if they are available.

  • Scripts/webkitpy/init.py: Move keyring to webkitscmpy.
  • Scripts/webkitpy/common/net/credentials.py: New version of keyring prints output when

Imported, suppress this output.

4:14 PM Changeset in webkit [271505] by Alan Coon
  • 8 edits in trunk/Source

Versioning.

WebKit-7612.1.1

3:32 PM Changeset in webkit [271504] by Russell Epstein
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.1.11

3:17 PM Changeset in webkit [271503] by Peng Liu
  • 18 edits in trunk/Source

Add a quirk to disable "return to element fullscreen from picture-in-picture" for some sites
https://bugs.webkit.org/show_bug.cgi?id=220606

Reviewed by Eric Carlson.

Source/WebCore:

For iPads, we add the support of "return to element fullscreen from picture-in-picture" in r265562.
Unfortunately, some sites do not set element's styles properly when a video returns to fullscreen
from picture-in-picture. This patch adds a quirk to disable the feature for those sites for now.

  • page/Quirks.cpp:

(WebCore::Quirks::blocksReturnToFullscreenFromPictureInPictureQuirk const):

  • page/Quirks.h:
  • platform/ios/VideoFullscreenInterfaceAVKit.h:
  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(VideoFullscreenInterfaceAVKit::setupFullscreen):
(VideoFullscreenInterfaceAVKit::didStartPictureInPicture):

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(VideoFullscreenControllerContext::setUpFullscreen):

Source/WebKit:

  • UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:

(WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID):

  • UIProcess/WebFullScreenManagerProxy.cpp:

(WebKit::WebFullScreenManagerProxy::blocksReturnToFullscreenFromPictureInPicture const):
(WebKit::WebFullScreenManagerProxy::enterFullScreen):

  • UIProcess/WebFullScreenManagerProxy.h:
  • UIProcess/WebFullScreenManagerProxy.messages.in:
  • UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:

(-[WKFullScreenWindowController enterFullScreen]):
(-[WKFullScreenWindowController didEnterPictureInPicture]):

  • WebProcess/FullScreen/WebFullScreenManager.cpp:

(WebKit::WebFullScreenManager::enterFullScreenForElement):

  • WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.cpp:

(WebKit::InjectedBundlePageFullScreenClient::enterFullScreenForElement):

  • WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.h:
  • WebProcess/cocoa/VideoFullscreenManager.mm:

(WebKit::VideoFullscreenManager::enterVideoFullscreenForVideoElement):

3:07 PM Changeset in webkit [271502] by Russell Epstein
  • 1 copy in tags/Safari-611.1.10

Tag Safari-611.1.10.

2:51 PM Changeset in webkit [271501] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed, apply post-landing review comments from Darin for r271495.

  • Shared/cg/ShareableBitmapCG.cpp:

(WebKit::ShareableBitmap::calculateBytesPerRow):
(WebKit::ShareableBitmap::createGraphicsContext):
(WebKit::ShareableBitmap::makeCGImageCopy):

2:48 PM Changeset in webkit [271500] by commit-queue@webkit.org
  • 9 edits
    2 adds in trunk/Source/JavaScriptCore

[JSC] Implement a B3::ValueRep replacement for wasm-llint
https://bugs.webkit.org/show_bug.cgi?id=220412

Patch by Xan Lopez <Xan Lopez> on 2021-01-14
Reviewed by Yusuke Suzuki.

The LLInt code in WebAssembly uses B3::ValueRep to store
information about the calling convention for functions. We will
use instead a new class with just enough functionality for those
needs (basically, whether a value in a function call will be in a
register or the stack) and convert to B3::ValueRep when
transitioning into B3/Air. This is part of the work needed to
allow WebAssembly to work without B3, and eventually in
interpreted mode only.

  • Sources.txt: add new sources.
  • b3/B3ValueRep.h:

(JSC::B3::ValueRep::ValueRep): include WasmValueLocation.h and add
a method to convert B3::ValueRep to Wasm::ValueLocation.

  • JavaScriptCore.xcodeproj/project.pbxproj: add new sources.
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::emitCallPatchpoint): covert existing Wasm::ValueLocation into B3::ValueRep.

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::createCallPatchpoint): ditto.

  • wasm/WasmCallingConvention.h:

(JSC::Wasm::CallInformation::computeResultsOffsetList): use Wasm::ValueLocation.

  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION): ditto.

  • wasm/WasmValueLocation.cpp: new class, basically B3::ValueRep

without all the stuff we don't need in WasmLLInt.
(JSC::Wasm::ValueLocation::dump const):
(WTF::printInternal):

  • wasm/WasmValueLocation.h: ditto.

(JSC::Wasm::ValueLocation::ValueLocation):
(JSC::Wasm::ValueLocation::reg):
(JSC::Wasm::ValueLocation::stack):
(JSC::Wasm::ValueLocation::stackArgument):
(JSC::Wasm::ValueLocation::kind const):
(JSC::Wasm::ValueLocation::isReg const):
(JSC::Wasm::ValueLocation::reg const):
(JSC::Wasm::ValueLocation::isGPR const):
(JSC::Wasm::ValueLocation::isFPR const):
(JSC::Wasm::ValueLocation::gpr const):
(JSC::Wasm::ValueLocation::fpr const):
(JSC::Wasm::ValueLocation::isStack const):
(JSC::Wasm::ValueLocation::offsetFromFP const):
(JSC::Wasm::ValueLocation::isStackArgument const):
(JSC::Wasm::ValueLocation::offsetFromSP const):

  • wasm/js/JSToWasm.cpp:

(JSC::Wasm::marshallJSResult): use Wasm::ValueLocation.

2:37 PM Changeset in webkit [271499] by commit-queue@webkit.org
  • 4 edits in trunk

Add dotless j and small N to unicode lookalike character list
https://bugs.webkit.org/show_bug.cgi?id=220632
<rdar://problem/72101901>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-14
Reviewed by David Kilzer.

Source/WTF:

They are visually distinguishable from j and n, but they are also not used in any common languages like dotless i is,
(I know, all my international phonetic alphabet enthusiast friends are disappointed)
so there's not much reason not to add them. Chrome and Firefox have already added them, so let's do it too.

  • wtf/URLHelpers.cpp:

(WTF::URLHelpers::isLookalikeCharacter):

Tools:

  • TestWebKitAPI/Tests/WTF/cocoa/URLExtras.mm:

(TestWebKitAPI::TEST):

1:40 PM Changeset in webkit [271498] by Peng Liu
  • 2 edits
    3 copies
    1 move
    2 adds in trunk/Source/WebKit

[Cocoa] Add a script to generate the "Feature Flags" plist file
https://bugs.webkit.org/show_bug.cgi?id=220080

Reviewed by Daniel Bates.

Add a script to combine a plist file from WebKitAdditions with the corresponding plist
file in this repo to generate a WebKit.plist required by the Feature Flags interface.

  • FeatureFlags/WebKit-appletvos.plist: Copied from Source/WebKit/FeatureFlags/WebKit.plist.
  • FeatureFlags/WebKit-ios.plist: Copied from Source/WebKit/FeatureFlags/WebKit.plist.
  • FeatureFlags/WebKit-macos.plist: Copied from Source/WebKit/FeatureFlags/WebKit.plist.
  • FeatureFlags/WebKit-watchos.plist: Renamed from Source/WebKit/FeatureFlags/WebKit.plist.
  • Scripts/combine-feature-flags-plist.py: Added.

(main):

  • Scripts/generate-feature-flags-plist.sh: Added.
  • WebKit.xcodeproj/project.pbxproj:
12:56 PM Changeset in webkit [271497] by timothy_horton@apple.com
  • 4 edits in trunk/Source

Exceptions thrown when invoking a <select> on an iPhone-idiom app running on macOS
https://bugs.webkit.org/show_bug.cgi?id=220628
<rdar://problem/70546547>

Reviewed by Wenson Hsieh.
Source/WebCore/PAL:

  • pal/spi/ios/MobileGestaltSPI.h:

Source/WebKit:

iPhone-idiom apps running on macOS need to behave exactly like iPhone apps,
even in ways that might not totally make sense on the platform (e.g.
using input accessory views for <select> instead of popover) for two reasons:

  • we want to maximize compatibility, so they should behave exactly as they do

on the only platform they're tested on

  • other frameworks (mostly UIKit) enforce the use of iPhone UI in iPhone-idiom

apps, even on macOS

  • Shared/UserInterfaceIdiom.mm:

(WebKit::currentUserInterfaceIdiomIsPadOrMac):
(WebKit::setCurrentUserInterfaceIdiomIsPadOrMac):
(WebKit::updateCurrentUserInterfaceIdiom):
(WebKit::userInterfaceIdiomIsPad): Deleted.
Simplify our UIUserInterfaceIdiom-caching code.

currentUserInterfaceIdiomIsPadOrMac now does what it says on the tin, globally;
previously on macOS it said YES for iPhone-idiom apps, but now it says NO,
like you would expect.

Use UIDevice everywhere instead of the soft-deprecated UICurrentUserInterfaceIdiomIsPad,
both because it is soft-deprecated, and because it lets us elide the static helper.

12:54 PM Changeset in webkit [271496] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

Unreviewed. Remove unused variable warning.

No new tests, no behavior change.

  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::adjustScrollOffsetForSnappingIfNeeded):

12:19 PM Changeset in webkit [271495] by Chris Dumez
  • 5 edits in trunk/Source/WebKit

[Hardening] Protect against overflows in calculateBytesPerRow()
https://bugs.webkit.org/show_bug.cgi?id=220625
<rdar://73040899>

Reviewed by Alex Christensen.

Protect against overflows in calculateBytesPerRow().

  • Shared/ShareableBitmap.h:
  • Shared/cairo/ShareableBitmapCairo.cpp:

(WebKit::ShareableBitmap::calculateBytesPerPixel):

  • Shared/cg/ShareableBitmapCG.cpp:

(WebKit::ShareableBitmap::calculateBytesPerRow):
(WebKit::ShareableBitmap::calculateBytesPerPixel):
(WebKit::ShareableBitmap::createGraphicsContext):
(WebKit::ShareableBitmap::createCGImage const):

  • Shared/win/ShareableBitmapDirect2D.cpp:

(WebKit::ShareableBitmap::calculateBytesPerPixel):

10:47 AM Changeset in webkit [271494] by Jonathan Bedard
  • 2 edits in trunk

[GitHub] Reference GitHub repository in readme
https://bugs.webkit.org/show_bug.cgi?id=220611
<rdar://problem/73173367>

Reviewed by Aakash Jain.

  • ReadMe.md: Reference GitHub repository.
10:44 AM Changeset in webkit [271493] by ggaren@apple.com
  • 53 edits in trunk/Source

Removed most uses of dispatch_async(dispatch_get_main_queue(), ...)
https://bugs.webkit.org/show_bug.cgi?id=220066

Reviewed by Antti Koivisto.

dispatch_async has two downsides:

(1) Its order is undefined (and in practice highly variable) relative to
other WebKit operations. This sometimes causes flakiness.

(2) It doesn't honor the RunLoop first paint optimization.

We can use RunLoop::dispatch() instead.

Source/WebCore:

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityPerformPressAction]):
(-[WebAccessibilityObjectWrapper accessibilityPerformIncrementAction]):
(-[WebAccessibilityObjectWrapper accessibilityPerformDecrementAction]):

  • platform/audio/cocoa/AudioSampleDataSource.mm:

(WebCore::AudioSampleDataSource::setupConverter):
(WebCore::AudioSampleDataSource::pushSamplesInternal):
(WebCore::AudioSampleDataSource::pullSamplesInternal):

  • platform/audio/ios/MediaSessionHelperIOS.mm:

(-[WebMediaSessionHelper initWithCallback:]):
(-[WebMediaSessionHelper dealloc]):

  • platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:

(WebCore::ContentFilterUnblockHandler::requestUnblockAsync const):
(WebCore::dispatchToMainThread): Deleted.

  • platform/cocoa/PowerSourceNotifier.mm:

(WebCore::PowerSourceNotifier::PowerSourceNotifier):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::setAVPlayerItem):

  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(WebCore::PlatformCALayerCocoa::clone const):
(WebCore::PlatformCALayer::setBoundsOnMainThread):
(WebCore::PlatformCALayer::setPositionOnMainThread):
(WebCore::PlatformCALayer::setAnchorPointOnMainThread):

  • platform/graphics/cocoa/WebCoreDecompressionSession.mm:

(WebCore::WebCoreDecompressionSession::maybeBecomeReadyForMoreMediaData):
(WebCore::WebCoreDecompressionSession::enqueueDecodedSample):
(WebCore::WebCoreDecompressionSession::requestMediaDataWhenReady):
(WebCore::WebCoreDecompressionSession::notifyWhenHasAvailableVideoFrame):

  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(-[WebAVPlayerLayer layoutSublayers]):
(VideoFullscreenInterfaceAVKit::finalizeSetup):
(VideoFullscreenInterfaceAVKit::doExitFullscreen):

  • platform/ios/WebSQLiteDatabaseTrackerClient.mm:

(WebCore::WebSQLiteDatabaseTrackerClient::willBeginFirstTransaction):
(WebCore::WebSQLiteDatabaseTrackerClient::didFinishLastTransaction):

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(VideoFullscreenControllerContext::requestUpdateInlineRect):
(VideoFullscreenControllerContext::requestVideoContentLayer):
(VideoFullscreenControllerContext::returnVideoContentLayer):
(VideoFullscreenControllerContext::didSetupFullscreen):
(VideoFullscreenControllerContext::didExitFullscreen):
(VideoFullscreenControllerContext::fullscreenMayReturnToInline):
(VideoFullscreenControllerContext::durationChanged):
(VideoFullscreenControllerContext::currentTimeChanged):
(VideoFullscreenControllerContext::bufferedTimeChanged):
(VideoFullscreenControllerContext::rateChanged):
(VideoFullscreenControllerContext::hasVideoChanged):
(VideoFullscreenControllerContext::videoDimensionsChanged):
(VideoFullscreenControllerContext::seekableRangesChanged):
(VideoFullscreenControllerContext::canPlayFastReverseChanged):
(VideoFullscreenControllerContext::audioMediaSelectionOptionsChanged):
(VideoFullscreenControllerContext::legibleMediaSelectionOptionsChanged):
(VideoFullscreenControllerContext::wirelessVideoPlaybackDisabledChanged):
(VideoFullscreenControllerContext::mutedChanged):
(VideoFullscreenControllerContext::volumeChanged):
(VideoFullscreenControllerContext::setUpFullscreen):
(VideoFullscreenControllerContext::exitFullscreen):

  • platform/ios/wak/WebCoreThread.mm:

(MainThreadAdoptAndRelease):
(WebThreadPostNotification):

  • platform/mac/VideoFullscreenInterfaceMac.mm:

(WebCore::VideoFullscreenInterfaceMac::setupFullscreen):

  • platform/mediastream/mac/AVCaptureDeviceManager.mm:

(-[WebCoreAVCaptureDeviceManagerObserver deviceConnectedDidChange:]):

Source/WebKit:

  • Platform/cocoa/WKPaymentAuthorizationDelegate.mm:

(-[WKPaymentAuthorizationDelegate _didRequestMerchantSession:]):

  • Shared/Cocoa/DefaultWebBrowserChecks.mm:

(WebKit::determineITPState):

  • UIProcess/API/C/mac/WKContextPrivateMac.mm:

(WKContextGetInfoForInstalledPlugIns):

  • UIProcess/API/Cocoa/NSAttributedString.mm:

(+[NSAttributedString _loadFromHTMLWithOptions:contentLoader:completionHandler:]):

  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:

(+[WKBrowsingContextController registerSchemeForCustomProtocol:]):
(+[WKBrowsingContextController unregisterSchemeForCustomProtocol:]):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _evaluateJavaScript:asAsyncFunction:withSourceURL:withArguments:forceUserGesture:inFrame:inWorld:completionHandler:]):
(-[WKWebView _internalDoAfterNextPresentationUpdate:withoutWaitingForPainting:withoutWaitingForAnimatedResize:]):

  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _doAfterNextVisibleContentRectUpdate:]):

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _scheduleVisibleContentRectUpdateAfterScrollInView:]):
(-[WKWebView _updateVisibleContentRects]):
(-[WKWebView _firePresentationUpdateForPendingStableStatePresentationCallbacks]):
(-[WKWebView _doAfterNextStablePresentationUpdate:]):

  • UIProcess/Cocoa/AutomationClient.mm:

(WebKit::AutomationClient::requestAutomationSession):

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::tryInterceptNavigation):

  • UIProcess/Cocoa/PreferenceObserver.mm:

(-[WKPreferenceObserver preferenceDidChange:key:encodedValue:]):

  • UIProcess/Cocoa/WebInspectorPreferenceObserver.mm:

(-[WKWebInspectorPreferenceObserver observeValueForKeyPath:ofObject:change:context:]):

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::requestThumbnailWithOperation):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::webProcessPoolHighDynamicRangeDidChangeCallback):

  • UIProcess/Cocoa/WebViewImpl.mm:

(-[WKDOMPasteMenuDelegate menuDidClose:]):
(WebKit::WebViewImpl::updateWindowAndViewFrames):
(WebKit::WebViewImpl::setTopContentInset):
(WebKit::WebViewImpl::didBecomeEditable):
(WebKit::WebViewImpl::requestCandidatesForSelectionIfNeeded):
(WebKit::WebViewImpl::performDragOperation):

  • UIProcess/EndowmentStateTracker.mm:

(WebKit::EndowmentStateTracker::registerMonitorIfNecessary):

  • UIProcess/_WKTouchEventGenerator.mm:

(-[_WKTouchEventGenerator _sendHIDEvent:]):
(-[_WKTouchEventGenerator _sendMarkerHIDEventWithCompletionBlock:]):

  • UIProcess/ios/ProcessAssertionIOS.mm:

(-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]):
(-[WKProcessAssertionBackgroundTaskManager _handleBackgroundTaskExpirationOnMainThread]):
(-[WKRBSAssertionDelegate assertion:didInvalidateWithError:]):
(WebKit::ProcessAssertion::ProcessAssertion):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView resignFirstResponderForWebView]):

  • UIProcess/ios/WKPDFView.mm:

(-[WKPDFView pdfHostViewControllerExtensionProcessDidCrash:]):

  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[WKFileUploadPanel imagePickerController:didFinishPickingMediaWithInfo:]):
(-[WKFileUploadPanel imagePickerController:didFinishPickingMultipleMediaWithInfo:]):

  • UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:

(-[WKFullScreenWindowController placeholderWillMoveToSuperview:]):

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:

(WebKit::PlatformCALayerRemoteCustom::clone const):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::updateRendering):

  • WebProcess/cocoa/VideoFullscreenManager.mm:

(WebKit::VideoFullscreenManager::requestVideoContentLayer):
(WebKit::VideoFullscreenManager::returnVideoContentLayer):
(WebKit::VideoFullscreenManager::didSetupFullscreen):
(WebKit::VideoFullscreenManager::willExitFullscreen):
(WebKit::VideoFullscreenManager::didEnterFullscreen):
(WebKit::VideoFullscreenManager::didExitFullscreen):
(WebKit::VideoFullscreenManager::didCleanupFullscreen):

Source/WebKitLegacy/ios:

  • Misc/WebGeolocationProviderIOS.mm:

(-[WebGeolocationProviderIOS registerWebView:]):
(-[WebGeolocationProviderIOS unregisterWebView:]):
(-[WebGeolocationProviderIOS setEnableHighAccuracy:]):
(-[WebGeolocationProviderIOS initializeGeolocationForWebView:listener:]):

  • WebCoreSupport/WebChromeClientIOS.mm:

(WebChromeClientIOS::runOpenPanel):

  • WebCoreSupport/WebInspectorClientIOS.mm:

(WebInspectorClient::didSetSearchingForNode):

Source/WebKitLegacy/mac:

  • Plugins/npapi.mm:

(NPN_PluginThreadAsyncCall):

  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::requestCandidatesForSelection):

  • WebCoreSupport/WebFrameLoaderClient.mm:
  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController immediateActionRecognizerWillPrepare:]):

  • WebView/WebView.mm:

(+[WebView willEnterBackgroundWithCompletionHandler:]):
(-[_WebSafeAsyncForwarder forwardInvocation:]):
(-[WebView performDragOperation:]):
(-[WebView setEditable:]):

Source/WTF:

  • wtf/cocoa/MainThreadCocoa.mm:

(WTF::dispatchAsyncOnMainThreadWithWebThreadLockIfNeeded):
(WTF::callOnWebThreadOrDispatchAsyncOnMainThread):

10:30 AM Changeset in webkit [271492] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

EWS should correctly identify the OS for Big Sur dot releases
https://bugs.webkit.org/show_bug.cgi?id=220622

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(PrintConfiguration.convert_build_to_os_name): Change 11.0 to 11 since we use startswith() for matching.

10:15 AM Changeset in webkit [271491] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r271477. rdar://problem/73204264

REGRESSION(r270961): Flipgrid can no longer capture video
https://bugs.webkit.org/show_bug.cgi?id=220609
<rdar://73168009>

Reviewed by Darin Adler.

Add back line in RemoteAudio::setStorage() that was initializing m_buffer and that was
dropped by mistake in the refactoring in r270961. This was causing
RemoteCaptureSampleManager::RemoteAudio::audioSamplesAvailable() to return early because
m_buffer was not initialized.

No new tests, unsure how to test this.

  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp: (WebKit::RemoteCaptureSampleManager::RemoteAudio::setStorage):

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

10:12 AM Changeset in webkit [271490] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

SpeculativeJIT::compileGetEnumerableLength should not use GPRFlushedCallResult
https://bugs.webkit.org/show_bug.cgi?id=220557

Reviewed by Yusuke Suzuki.

It wasn't used as the result from a call, so we're overly restricting the
register we allocate for no good reason.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetEnumerableLength):

10:10 AM Changeset in webkit [271489] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Baseline JIT should emit mutatorFence after inline allocations
https://bugs.webkit.org/show_bug.cgi?id=220572

Reviewed by Yusuke Suzuki.

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_new_object):
(JSC::JIT::emit_op_create_this):

9:19 AM Changeset in webkit [271488] by youenn@apple.com
  • 6 edits in trunk

MediaSessionManager should update its state as soon as an audio capture track is ended
https://bugs.webkit.org/show_bug.cgi?id=220619

Reviewed by Eric Carlson.

Source/WebCore:

We were updating the audio session category on track destruction.
It should be done as soon as track is ended (either by web page or underlying)
instead of when GC might happen.

Covered by updated test.

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::~MediaStreamTrack):
(WebCore::MediaStreamTrack::trackEnded):

  • platform/audio/PlatformMediaSessionManager.h:

(WebCore::PlatformMediaSessionManager::hasAudioCaptureSource const):

LayoutTests:

  • fast/mediastream/audio-track-enabled-expected.txt:
  • fast/mediastream/audio-track-enabled.html:
9:17 AM Changeset in webkit [271487] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Use AVAudioSessionModeDefault in AVAudioSessionCaptureDeviceManager::createAudioSession
https://bugs.webkit.org/show_bug.cgi?id=220618
<rdar://problem/73185920>

Reviewed by Eric Carlson.

Manually tested.

  • platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:

(WebCore::AVAudioSessionCaptureDeviceManager::createAudioSession):
AVAudioSessionModeDefault is less disruptive than video chat mode.
In particular, if the page is playing audio, the potential audio level bump when activating
this session will be largely less noticeable.

9:17 AM Changeset in webkit [271486] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Use callOnMainRunLoop in MediaPermissionUtilities
https://bugs.webkit.org/show_bug.cgi?id=220616
<rdar://problem/73002655>

Reviewed by Chris Dumez.

This ensures that we are in main thread and not in web thread.

  • UIProcess/Cocoa/MediaPermissionUtilities.mm:

(WebKit::requestAVCaptureAccessForType):
(WebKit::requestSpeechRecognitionAccess):

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

Update buttons of media permission prompt on macOS
https://bugs.webkit.org/show_bug.cgi?id=220613

Patch by Sihui Liu <sihui_liu@appe.com> on 2021-01-14
Reviewed by Eric Carlson.

Make allow button on the right and not selected to match TCC prompts.

  • UIProcess/Cocoa/MediaPermissionUtilities.mm:

(WebKit::alertForPermission):

8:43 AM Changeset in webkit [271484] by Alan Coon
  • 1 copy in tags/Safari-611.1.9.12

Tag Safari-611.1.9.12.

8:41 AM Changeset in webkit [271483] by Alan Coon
  • 8 edits in branches/safari-611.1.9-branch/Source

Versioning.

WebKit-7611.1.9.12

7:31 AM Changeset in webkit [271482] by pvollan@apple.com
  • 7 edits in trunk/Source

[GPUP][iOS] Create sandbox extensions for cache and temp directory
https://bugs.webkit.org/show_bug.cgi?id=220595
<rdar://problem/72450307>

Reviewed by Chris Dumez.

Source/WebKit:

Create sandbox extensions for GPU process access to cache and temp directory.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::initializeGPUProcess):

  • GPUProcess/GPUProcessCreationParameters.cpp:

(WebKit::GPUProcessCreationParameters::encode const):
(WebKit::GPUProcessCreationParameters::decode):

  • GPUProcess/GPUProcessCreationParameters.h:
  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::GPUProcessProxy):

Source/WTF:

Add USE define for using sandbox extensions to grant access to cache and temp directory.

  • wtf/PlatformUse.h:
6:30 AM Changeset in webkit [271481] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC][Quirk] Let's adopt a less quirky behavior for line breaks on non-empty lines
https://bugs.webkit.org/show_bug.cgi?id=220252

Reviewed by Antti Koivisto.

WebKit has this quirk behavior where <br> stretches the line box vertically only when the line is empty.
e.g.

<div><span><br></span></div>
We make the line as tall as the <br> is but

<div>some content<span style="font-size: 200px;"><br></span></div>
does not produce a ~200px tall line.

However when horizontal padding/border added, the line suddenly becomes ~200px tall:
<div>some content<span style="font-size: 200px; padding: 1px;"><br></span></div>

Removing this quirk makes the inlineLevelBoxAffectsLineBox logic simpler since we don't have to check against
whether the line is considered empty and the result is aligned with Chrome's behavior.
(This is in preparation for getting rid of the is-considered-empty concept for line/line box.)

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::inlineLevelBoxAffectsLineBox const):

3:02 AM Changeset in webkit [271480] by commit-queue@webkit.org
  • 13 edits in trunk

[css-scroll-snap] scroll-snap-align parsing is incorrect/backwards
https://bugs.webkit.org/show_bug.cgi?id=191865
<rdar://problem/46346516>

Patch by Martin Robinson <mrobinson@igalia.com> on 2021-01-14
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-change-expected.txt: Update test expectations.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-on-root-element-expected.txt: Ditto.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-expected.txt: Ditto.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets-expected.txt: Ditto.
  • web-platform-tests/css/css-scroll-snap/snap-inline-block-expected.txt: Ditto.

Source/WebCore:

An earlier version of the scroll snap specification specified that the arguments to
scroll-snap-align should be <inline> and then <block>, but a later version reversed
the order. This change aligns the WebKit implementation with the specification.

This has some web compatibility implications, but current measurements show that
the use of the two value variant is still low.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::valueForScrollSnapAlignment): Reverse the order of scroll-snap-align serialization.

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertScrollSnapAlign): Reverse the order of scroll-snap-align parsing.

LayoutTests:

  • TestExpectations: Update test expectations.
  • css3/scroll-snap/scroll-snap-mismatch.html: Flip scroll-snap-align arguments in this test.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-snap-type-on-root-element-expected.txt: Update results to reflect new pass.

Jan 13, 2021:

10:46 PM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
10:31 PM Changeset in webkit [271479] by timothy_horton@apple.com
  • 5 edits in trunk

REGRESSION (r266634): Messages crashes sometimes while scrolling around and playing YouTube videos
https://bugs.webkit.org/show_bug.cgi?id=220602
<rdar://problem/70402593>

Reviewed by Wenson Hsieh.

Source/WebKit:

No new tests; we are unable to API test video full-screen because of the lack of UIApp;
I have written a stand-alone test app that can reliably reproduce before this patch
and not afterwards.

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::scheduleActivityStateUpdate):
We can't call dispatchActivityStateChange directly underneath a post-commit callback,
because it has side-effects (like un-parenting the full-screen window) that may result
in other frameworks (e.g. UIKit) trying to install commit handlers for the same phase,
which is not allowed.

To fix this, add a dispatch_async; we _only_ care that the activity state change
doesn't apply until after the active commit is complete.

Tools:

  • TestWebKitAPI/PlatformWebView.h:

Mark PlatformWebView noncopyable, since it is effectively noncopyable
(at least, the macOS implementation will overrelease the view if you
copy it, whoops).

  • TestWebKitAPI/Tests/WebKit/DeferredViewInWindowStateChange.mm:

(TestWebKitAPI::TEST):
Add a matching dispatch_async, or this test fails.

8:28 PM Changeset in webkit [271478] by Lauro Moura
  • 3 edits
    1 delete in trunk/LayoutTests

[WPE] Rebaseline and gardening a few tests

Unreviewed test gardening.

The windowClient one differs from GTK's by running a few test cases
instead of stopping near the start in a Harness timeout.

  • platform/wpe/TestExpectations:
  • platform/wpe/imported/w3c/web-platform-tests/service-workers/service-worker/windowclient-navigate.https-expected.txt:
  • platform/wpe/webgl/1.0.3/conformance/context/methods-expected.txt: Removed.
5:37 PM Changeset in webkit [271477] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

REGRESSION(r270961): Flipgrid can no longer capture video
https://bugs.webkit.org/show_bug.cgi?id=220609
<rdar://73168009>

Reviewed by Darin Adler.

Add back line in RemoteAudio::setStorage() that was initializing m_buffer and that was
dropped by mistake in the refactoring in r270961. This was causing
RemoteCaptureSampleManager::RemoteAudio::audioSamplesAvailable() to return early because
m_buffer was not initialized.

No new tests, unsure how to test this.

  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

(WebKit::RemoteCaptureSampleManager::RemoteAudio::setStorage):

5:17 PM Changeset in webkit [271476] by Andres Gonzalez
  • 2 edits in trunk/Source/WebCore

Crash ASSERT in AccessibilityRenderObject::textUnderElement during AXIsolatedObject initialization.
https://bugs.webkit.org/show_bug.cgi?id=220446

Reviewed by Chris Fleizach.

AXIsolatedObject methods that need to forward the call to the associated
AXObject on the main thread, should call the updateBackingStore method
on the AXObject.
This fixes the issue with AccessibilityRenderObject::textUnderElement
shown in the stack trace.

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::associatedAXObject const):

4:48 PM Changeset in webkit [271475] by achristensen@apple.com
  • 2 edits in trunk/Tools

Remove deprecated script and stylesheet SPI, replaced with more inclusively-named SPI
https://bugs.webkit.org/show_bug.cgi?id=214937

Fix iOS build after r271457.

  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:

(TEST):

4:48 PM Changeset in webkit [271474] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKitLegacy/win

Use more inclusive language in legacy Windows plugin code
https://bugs.webkit.org/show_bug.cgi?id=220605

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

  • Plugins/PluginPackage.h:
  • Plugins/PluginPackageWin.cpp:

(WebCore::PluginPackage::isPluginForbidden):
(WebCore::PluginPackage::fetchInfo):
(WebCore::PluginPackage::isPluginBlacklisted): Deleted.

4:10 PM Changeset in webkit [271473] by wilander@apple.com
  • 5 edits in trunk/Source

PCM: Output logs by default, including to Web Inspector
https://bugs.webkit.org/show_bug.cgi?id=220596
<rdar://problem/73159180>

Reviewed by Brent Fulgham.

This change turns on PCM output to Web Inspector and logs
Source/WebCore:

by default. In the case of WebCore::PrivateClickMeasurement,
this means we no longer need the debugModeEnabled()
convenience function.

  • loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::parseAttributionRequest):
(WebCore::PrivateClickMeasurement::debugModeEnabled): Deleted.

  • loader/PrivateClickMeasurement.h:

Source/WebKit:

by default. In some of the cases, the syslog output was
deleted since it doesn't make sense to log those messages
now that we have output in Web Inspector.

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::storeUnattributed):
(WebKit::PrivateClickMeasurementManager::handleAttribution):
(WebKit::PrivateClickMeasurementManager::attribute):
(WebKit::PrivateClickMeasurementManager::fireConversionRequest):

4:07 PM Changeset in webkit [271472] by Said Abou-Hallawa
  • 18 edits in trunk/Source/WebCore

Move the space transform outside the Gradient class
https://bugs.webkit.org/show_bug.cgi?id=220079

Reviewed by Simon Fraser.

Move the SpaceTransform from the Gradient class to the GraphicsContextState.
The client will set it when calling GraphicsContext::setFillGradient()
and GraphicsContext::setFillGradient().

  • platform/graphics/Gradient.cpp:

(WebCore::Gradient::hash const):
(WebCore::Gradient::setGradientSpaceTransform): Deleted.

  • platform/graphics/Gradient.h:

(WebCore::Gradient::encode const):
(WebCore::Gradient::decode):
(WebCore::Gradient::gradientSpaceTransform const): Deleted.

  • platform/graphics/GradientImage.h:

Need to initialize m_cachedGeneratorHash.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContextStateChange::apply const):
(WebCore::GraphicsContext::setStrokeGradient):
(WebCore::GraphicsContext::setFillGradient):

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::setStrokeGradient):
(WebCore::GraphicsContext::setFillGradient):
Clients of GraphicsContext have to send the Gradient and SpaceTransform
to setStrokeGradient() and setFillGradient().

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::FillSource::FillSource):
(WebCore::Cairo::StrokeSource::StrokeSource):

  • platform/graphics/cairo/GradientCairo.cpp:

(WebCore::Gradient::createPattern):
(WebCore::Gradient::fill):

  • platform/graphics/cairo/GraphicsContextImplCairo.cpp:

(WebCore::GraphicsContextImplCairo::fillRect):
For Cairo ports, Gradient::createPattern() will take SpaceTransform as
a new argument. Clients will get it from the GraphicsContextState since
the Gradient and the SpaceTransform are set in it in the same call.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::fillPath):
(WebCore::GraphicsContext::strokePath):
(WebCore::GraphicsContext::fillRect):
(WebCore::GraphicsContext::strokeRect):

  • platform/graphics/displaylists/DisplayListDrawGlyphsRecorder.h:
  • platform/graphics/displaylists/DisplayListDrawGlyphsRecorderCoreText.cpp:

(WebCore::DisplayList::DrawGlyphsRecorder::populateInternalState):
(WebCore::DisplayList::DrawGlyphsRecorder::populateInternalContext):

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::SetInlineFillGradient::SetInlineFillGradient):
(WebCore::DisplayList::SetInlineFillGradient::gradient const):
(WebCore::DisplayList::SetInlineFillGradient::apply const):

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

(WebCore::DisplayList::Recorder::appendStateChangeItem):

  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:

(Nicosia::CairoOperationRecorder::fillRect):

  • rendering/svg/RenderSVGPath.cpp:

(WebCore::useStrokeStyleToFill):

  • rendering/svg/RenderSVGResourceGradient.cpp:

(WebCore::RenderSVGResourceGradient::applyResource):
(WebCore::RenderSVGResourceGradient::postApplyResource):
userspaceTransform is calculated inside the lambda of m_gradientMap.ensure().
It is stored in GradientData. It is retrieved later to setStrokeGradient()
and setFillGradient().

4:01 PM Changeset in webkit [271471] by jer.noble@apple.com
  • 14 edits in trunk

Source/WebCore:
[HANG] 496ms to 1360ms in WebCore::AVAudioSessionCaptureDeviceManager::refreshAudioCaptureDevices()
https://bugs.webkit.org/show_bug.cgi?id=220471

Reviewed by Youenn Fablet.

Refactor RealtimeMediaSourceCenter::getMediaStreamDevices() to take a completion handler, rather than
synchronously return a Vector of CaptureDevices. This also requires all CaptureDeviceManager subclasses
to support taking a completion handler themselves. By default, all CaptureDeviceManagers will support
the CompletionHandler path by just synchronously calling the completion handler with the existing
synchronous method. But for AVAudioSessionCaptureDeviceManager, override that default implementation by
activating the AVAudioSession on a background thread, and querying that session's inputs on a background
thread as well.

  • platform/mediastream/CaptureDeviceManager.h:
  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices):

  • platform/mediastream/RealtimeMediaSourceCenter.h:
  • platform/mediastream/RealtimeMediaSourceFactory.h:

(WebCore::AudioCaptureFactory::getSpeakerDevices const):

  • platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h:
  • platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:

(WebCore::AVAudioSessionCaptureDeviceManager::audioSessionDeviceWithUID):
(WebCore::AVAudioSessionCaptureDeviceManager::scheduleUpdateCaptureDevices):
(WebCore::AVAudioSessionCaptureDeviceManager::refreshAudioCaptureDevices):
(WebCore::AVAudioSessionCaptureDeviceManager::getCaptureDevices):
(WebCore::AVAudioSessionCaptureDeviceManager::activateAudioSession):
(WebCore::AVAudioSessionCaptureDeviceManager::retrieveAudioSessionCaptureDevices const):
(WebCore::AVAudioSessionCaptureDeviceManager::setAudioCaptureDevices):
(WebCore::AVAudioSessionCaptureDeviceManager::audioSessionCaptureDevices): Deleted.

Source/WebKit:
[HANG] 496ms to 1360ms in WebCore::AVAudioSessionCaptureDeviceManager::refreshAudioCaptureDevices()
https://bugs.webkit.org/show_bug.cgi?id=220471

Reviewed by Youenn Fablet.

Use the completion-handler version of RealtimeMediaSourceCenter::getMediaStreamDevices().

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::computeFilteredDeviceList):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/UserMediaProcessManager.cpp:

(WebKit::UserMediaProcessManager::updateCaptureDevices):
(WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices):

  • UIProcess/UserMediaProcessManager.h:

LayoutTests:
[Cocoa] Support key rotation with HLS-backed encrypted media streams
https://bugs.webkit.org/show_bug.cgi?id=220493
<rdar://68227709>

Reviewed by Youenn Fablet.

Fix a broken layout test; the test enumerates devices, then uses the deviceIds returned to generate
constraints for a call to getUserMedia(). However, it assumes all devices will either be of kind
'audioinput' or 'videoinput'. If an 'audiooutput' device is returned (as the MockRealtimeMediaSourceCenter
does), then the test turns that into a video capture constraint, which fails.

  • fast/mediastream/get-user-media-device-id.html:
3:32 PM Changeset in webkit [271470] by jer.noble@apple.com
  • 4 edits in trunk/Source/WebCore

Facebook pauses video in PiP during scroll
https://bugs.webkit.org/show_bug.cgi?id=220581
<rdar://67273166>

Reviewed by Eric Carlson.

Add a Quirk which blocks Facebook from pausing videos in Picture-in-Picture mode without that
pause() occurring during a User Gesture. This blocks Facebook from pausing a PiP'd video when
the <video> element hosting that video scrolls out of the viewport, without blocking Facebook's
own custom pause control from working correctly.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::playbackPermitted const):

  • page/Quirks.cpp:

(WebCore::Quirks::requiresUserGestureToPauseInPictureInPicture const):

  • page/Quirks.h:
3:27 PM Changeset in webkit [271469] by pvollan@apple.com
  • 10 edits in trunk/Source/WebKit

[Cocoa] Network extension sandbox extensions are sometimes issued too late
https://bugs.webkit.org/show_bug.cgi?id=220525
<rdar://problem/68443565>

Reviewed by Brent Fulgham.

Currently, Network extension sandbox extensions are sent to the WebContent process as part of the load parameters, but this is too late in some cases.
In these cases, the extensions can be sent along with the DidReceivePolicyDecision message.

  • Shared/Cocoa/LoadParametersCocoa.mm:

(WebKit::LoadParameters::platformEncode const):
(WebKit::LoadParameters::platformDecode):

  • Shared/LoadParameters.h:
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::addPlatformLoadParameters):

  • UIProcess/WebPageProxy.cpp:

(WebKit::createNetworkExtensionsSandboxExtensions):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponseShared):

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::platformDidReceiveLoadParameters):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didReceivePolicyDecision):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
3:20 PM Changeset in webkit [271468] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WTF

Delete sexist comment
https://bugs.webkit.org/show_bug.cgi?id=220603

Reviewed by Alex Christensen.

  • wtf/StdLibExtras.h:
3:19 PM Changeset in webkit [271467] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

Crash at SOAuthorizationSession::dismissViewController
https://bugs.webkit.org/show_bug.cgi?id=220482
<rdar://problem/72375494>

Reviewed by Darin Adler.

A crash report suggests that SOAuthorizationSession::dismissViewController could crash at evaluating m_page.
This could only happen if the SOAuthorizationSession object is freed. The stack trace starts with callbacks
from NSNotificationCenter, which capture a RefPtr of the SOAuthorizationSession object and should guarantee
the lifetime of the object. So it contradicts the crash report.

One of the possible explanations is that the RefPtr is somehow over-released within NSNotificationCenter since
it's not thread-safe. To fix that, the RefPtr can be made thread-safe.

No tests.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:

(WebKit::SOAuthorizationSession::dismissViewController):

3:18 PM Changeset in webkit [271466] by Russell Epstein
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r271448. rdar://problem/73168438

PCM: Experimental debug mode needs to be read from defaults differently on iOS
https://bugs.webkit.org/show_bug.cgi?id=220573
<rdar://problem/73092137>

Reviewed by Brent Fulgham.

Experimental features on iOS use the prefix "WebKitExperimental" so we
need to read it that way on that platform. PCM is not supported on other
platforms than macOS and iOS at this point.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeNetworkProcess):

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

3:18 PM Changeset in webkit [271465] by Russell Epstein
  • 4 edits in branches/safari-611-branch

Revert r270664. rdar://problem/73165685

3:18 PM Changeset in webkit [271464] by Russell Epstein
  • 6 edits in branches/safari-611-branch

Revert r270665. rdar://problem/73165685

3:18 PM Changeset in webkit [271463] by Russell Epstein
  • 2 edits in branches/safari-611-branch/Source/JavaScriptCore

Revert r270700. rdar://problem/73165685

3:18 PM Changeset in webkit [271462] by Russell Epstein
  • 2 edits in branches/safari-611-branch/Source/JavaScriptCore

Revert r270719. rdar://problem/73165685

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

[macOS WK1] ASSERTION FAILED: !needsLayout() in WebCore::FrameView::paintContents
https://bugs.webkit.org/show_bug.cgi?id=219219

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations: Skip crashing tests.
3:00 PM Changeset in webkit [271460] by Ryan Haddad
  • 1 edit
    2 deletes in trunk/LayoutTests

Unreviewed test gardening, remove old iOS 13 test directories.

  • platform/ios-13/TestExpectations: Removed.
  • platform/ios-13/fast/forms/slider-thumb-shared-style-expected.txt: Removed.
  • platform/ios-13/fast/text/international/system-language/navigator-language/navigator-language-en-US-expected.txt: Removed.
  • platform/ios-13/fast/text/international/system-language/navigator-language/navigator-language-en-expected.txt: Removed.
  • platform/ios-13/fast/text/international/system-language/navigator-language/navigator-language-es-ES-expected.txt: Removed.
  • platform/ios-13/fast/text/international/system-language/navigator-language/navigator-language-es-MX-expected.txt: Removed.
  • platform/ios-13/fast/text/international/system-language/navigator-language/navigator-language-es-expected.txt: Removed.
  • platform/ios-13/fast/text/international/system-language/navigator-language/navigator-language-fr-expected.txt: Removed.
  • platform/ios-13/fast/text/international/system-language/navigator-language/navigator-language-hi-expected.txt: Removed.
  • platform/ios-13/fast/text/international/system-language/navigator-language/navigator-language-pt-BR-expected.txt: Removed.
  • platform/ios-13/fast/text/international/system-language/navigator-language/navigator-language-ru-expected.txt: Removed.
  • platform/ios-13/http/tests/xmlhttprequest/methods-async-expected.txt: Removed.
  • platform/ios-13/http/tests/xmlhttprequest/methods-expected.txt: Removed.
  • platform/ios-13/http/tests/xmlhttprequest/workers/methods-async-expected.txt: Removed.
  • platform/ios-13/http/tests/xmlhttprequest/workers/methods-expected.txt: Removed.
  • platform/ios-13/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt: Removed.
  • platform/ios-13/imported/w3c/web-platform-tests/css/css-flexbox/inline-flex-editing-with-updating-text-crash-expected.txt: Removed.
  • platform/ios-13/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any-expected.txt: Removed.
  • platform/ios-13/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any.worker-expected.txt: Removed.
  • platform/ios-13/imported/w3c/web-platform-tests/fetch/redirect-navigate/preserve-fragment-expected.txt: Removed.
  • platform/ios-13/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt: Removed.
  • platform/ios-13/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002-expected.txt: Removed.
  • platform/ios-13/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt: Removed.
  • platform/ios-13/imported/w3c/web-platform-tests/xhr/send-entity-body-empty-expected.txt: Removed.
  • platform/ios-13/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-async-expected.txt: Removed.
  • platform/ios-13/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-expected.txt: Removed.
  • platform/ios-13/imported/w3c/web-platform-tests/xhr/send-entity-body-none-expected.txt: Removed.
  • platform/ios-13/platform/TestExpectations: Removed.
  • platform/ios-13/platform/ios/ios/fast/text/opticalFont-expected.txt: Removed.
  • platform/ios-13/platform/ios/ios/fast/text/opticalFontWithTextStyle-expected.txt: Removed.
  • platform/ios-13/platform/ios/ios/fast/text/opticalFontWithWeight-expected.txt: Removed.
  • platform/ipad-13/platform/ios/ios/fast/text/opticalFontWithTextStyle-expected.txt: Removed.
2:50 PM Changeset in webkit [271459] by Wenson Hsieh
  • 16 edits
    3 adds in trunk

[macOS] "Correct Spelling Automatically" menu items are inconsistent when autocorrect="off"
https://bugs.webkit.org/show_bug.cgi?id=220598
<rdar://problem/71713611>

Reviewed by Tim Horton.

Source/WebCore:

Disable the context menu item to toggle automatic spelling correction, as well as the menu bar item to toggle
automatic spelling correction, in the case where the autocorrect attribute is set to "off". See below for more
details.

Tests: editing/mac/spelling/disable-automatic-spelling-correction-context-menu-item.html

DisableAutomaticSpellingCorrection.AutocorrectAttribute

  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::canEnableAutomaticSpellingCorrection const):

Factor out logic for checking the autocorrect attribute into a separate helper function; this is used to
determine whether or not we should enable both the context menu item and menu item in the menu bar.

(WebCore::AlternativeTextController::isAutomaticSpellingCorrectionEnabled):

  • editing/AlternativeTextController.h:

(WebCore::AlternativeTextController::UNLESS_ENABLED):

  • editing/Editor.cpp:

(WebCore::Editor::canEnableAutomaticSpellingCorrection const):

  • editing/Editor.h:
  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::checkOrEnableIfNeeded const):

Source/WebKit:

Plumb the new canEnableAutomaticSpellingCorrection flag through EditorState to the UI process, where we can
consult it when validating user interface items (namely, the "Correct Spelling Automatically" menu item, which
corresponds to the -toggleAutomaticSpellingCorrection: selector).

  • Shared/EditorState.cpp:

(WebKit::EditorState::PostLayoutData::encode const):
(WebKit::EditorState::PostLayoutData::decode):
(WebKit::operator<<):

  • Shared/EditorState.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::validateUserInterfaceItem):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::getPlatformEditorState const):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/mac/DisableAutomaticSpellingCorrection.mm: Added.

Add a new API test to verify that the NSMenuItem for toggling automatic spelling correction is invalid when
editing inside a form control with autocorrect="off".

  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::getMenuItemEnabledCallback):

Add the readonly enabled JS property on context menu items. See the new layout test,
editing/mac/spelling/disable-automatic-spelling-correction-context-menu-item.html, for more information.

LayoutTests:

Add a new API test to verify that the context menu item to toggle "Correct Spelling Automatically" is disabled
when autocorrect="off".

  • editing/mac/spelling/disable-automatic-spelling-correction-context-menu-item-expected.txt: Added.
  • editing/mac/spelling/disable-automatic-spelling-correction-context-menu-item.html: Added.
  • platform/mac-wk1/TestExpectations:

Disable the test in DumpRenderTree, due to lack of support for context menu testing in WebKit1.

2:42 PM Changeset in webkit [271458] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL content inside elements is reversed and unreadable
https://bugs.webkit.org/show_bug.cgi?id=220241

Patch by Ebrahim Byagowi <ebrahim@gnu.org> on 2021-01-13
Reviewed by BJ Burg.

Use appropiate unicode-bidi value so that it won't reverse RTL text
inside elements.

  • UserInterface/Views/DOMTreeOutline.css:

(.tree-outline.dom li > span > .html-text-node):

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

Remove deprecated script and stylesheet SPI, replaced with more inclusively-named SPI
https://bugs.webkit.org/show_bug.cgi?id=214937

Reviewed by Youenn Fablet.

Once rdar://problem/66227777 is done we will be able to remove this old SPI.

  • UIProcess/API/Cocoa/WKUserScript.mm:

(-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:userContentWorld:]): Deleted.
(-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:associatedURL:userContentWorld:]): Deleted.
(-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:contentWorld:]): Deleted.
(-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:associatedURL:contentWorld:]): Deleted.
(-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:associatedURL:contentWorld:deferRunningUntilNotification:]): Deleted.

  • UIProcess/API/Cocoa/WKUserScriptPrivate.h:
  • UIProcess/API/Cocoa/_WKUserStyleSheet.h:
  • UIProcess/API/Cocoa/_WKUserStyleSheet.mm:

(-[_WKUserStyleSheet initWithSource:forWKWebView:forMainFrameOnly:level:userContentWorld:]): Deleted.
(-[_WKUserStyleSheet initWithSource:forWKWebView:forMainFrameOnly:baseURL:level:userContentWorld:]): Deleted.
(-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:userContentWorld:]): Deleted.
(-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:userContentWorld:]): Deleted.
(-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:level:userContentWorld:]): Deleted.

2:40 PM Changeset in webkit [271456] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKitLegacy/mac

Remove deprecated script and stylesheet injection SPI, replaced with more inclusively-named SPI
https://bugs.webkit.org/show_bug.cgi?id=214936

Reviewed by Youenn Fablet.

rdar://64376341 tracks the adoption of the replacement. Once that is done, we can remove the old SPI.

  • WebView/WebView.mm:

(+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:]): Deleted.
(+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]): Deleted.
(+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:]): Deleted.
(+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]): Deleted.

  • WebView/WebViewPrivate.h:
2:33 PM Changeset in webkit [271455] by Jonathan Bedard
  • 5 edits in trunk/Tools

[webkitscmpy] Handle single commit touching multiple branches
https://bugs.webkit.org/show_bug.cgi?id=220601
<rdar://problem/73165609>

Reviewed by Stephanie Lewis.

In WebKit's history, there are a few cases of commits that touch multiple branches (like
https://trac.webkit.org/changeset/92419/webkit). These types of commits are not correct,
but we need to handle them if they are in the history of a branch.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn._cache_revisions): Branches only intersect trunk when two sequential commits are from trunk.
(Svn.commit): Support case where no commit time can be found.

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

(Svn._cache_revisions): Branches only intersect trunk when two sequential commits are from trunk.
(Svn.commit): Support case where no commit time can be found.

1:38 PM Changeset in webkit [271454] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION (r269627?): ASSERTION FAILED: &layoutState().establishedFormattingState(layoutBox.formattingContextRoot()) == this in WebCore::Layout::FormattingState::boxGeometry
https://bugs.webkit.org/show_bug.cgi?id=219905

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
1:22 PM Changeset in webkit [271453] by Andres Gonzalez
  • 3 edits in trunk/LayoutTests

Fix for LayoutTests/accessibility/mac/details-summary.html in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=220597

Reviewed by Chris Fleizach.

  • Use Promises to wait for the expanded state change.
  • Added a comment to clarify why it is necessary to fetch a new

accessible object by ID every time after setting the AXExpanded
attribute for <details> elements.

  • accessibility/mac/details-summary-expected.txt:

The order in which the notifications come through changed.

  • accessibility/mac/details-summary.html:
1:05 PM Changeset in webkit [271452] by Fujii Hironori
  • 15 edits
    1 delete in trunk/Source

Reimplement WebCore::isInWebProcess() family as cross-platform by using AuxiliaryProcessInitializationParameters.processType
https://bugs.webkit.org/show_bug.cgi?id=220529

Reviewed by Alex Christensen.

Source/WebCore:

isInWebProcess(), isInGPUProcess() and isInNetworkProcess() can be
implemented as cross-platform.

  • platform/RuntimeApplicationChecks.cpp:

(WebCore::auxiliaryProcessType): Added.
(WebCore::setAuxiliaryProcessType): Added.
(WebCore::checkAuxiliaryProcessType): Added.

  • platform/RuntimeApplicationChecks.h:

(WebCore::isInWebProcess):
(WebCore::isInNetworkProcess):
(WebCore::isInGPUProcess):

  • platform/SourcesGLib.txt:
  • platform/cocoa/RuntimeApplicationChecksCocoa.mm:

(WebCore::isInWebProcess): Deleted.
(WebCore::isInGPUProcess): Deleted.
(WebCore::isInNetworkProcess): Deleted.

  • platform/glib/RuntimeApplicationChecksGLib.cpp: Removed.

Source/WebKit:

Replaced AuxiliaryProcess::ProcessType with WebCore::AuxiliaryProcessType.

  • GPUProcess/GPUProcess.h:
  • NetworkProcess/NetworkProcess.h:
  • PluginProcess/PluginProcess.h:
  • Shared/AuxiliaryProcess.cpp:

(WebKit::AuxiliaryProcess::initialize):

  • Shared/AuxiliaryProcess.h: Removed ProcessType.
  • Shared/AuxiliaryProcessMain.h:

(WebKit::AuxiliaryProcessMainBase::AuxiliaryProcessMainBase):
(WebKit::AuxiliaryProcessMain):
(WebKit::AuxiliaryProcessMainBase::takeInitializationParameters): Deleted.

  • Shared/mac/AuxiliaryProcessMac.mm:

(WebKit::SandboxInfo::SandboxInfo):
(WebKit::processStorageClass):
(WebKit::sandboxDirectory):
(WebKit::applySandbox):

  • WebAuthnProcess/WebAuthnProcess.h:
  • WebProcess/WebProcess.h:
1:04 PM Changeset in webkit [271451] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Null check selector.argumentList()
https://bugs.webkit.org/show_bug.cgi?id=220392

Patch by Rob Buis <rbuis@igalia.com> on 2021-01-13
Reviewed by Wenson Hsieh.

Source/WebCore:

Null check selector.argumentList().

Test: highlight/highlight-crash.html

  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::checkOne const):

LayoutTests:

Add test that triggers the relevant code path.

  • highlight/highlight-crash-expected.txt: Added.
  • highlight/highlight-crash.html: Added.
12:21 PM Changeset in webkit [271450] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[build.webkit.org] Use PostgreSQL for new build.webkit.org database
https://bugs.webkit.org/show_bug.cgi?id=220589

Reviewed by Jonathan Bedard.

  • CISupport/build-webkit-org/master_buildbot2.cfg:
12:16 PM Changeset in webkit [271449] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Remove the unused compilation byproducts from the wasm embedder entrypoint
https://bugs.webkit.org/show_bug.cgi?id=220587

Patch by Xan Lopez <Xan Lopez> on 2021-01-13
Reviewed by Yusuke Suzuki.

This is just passed around uninitialized, remove it.

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

(JSC::Wasm::BBQPlan::didCompleteCompilation):

11:42 AM Changeset in webkit [271448] by wilander@apple.com
  • 2 edits in trunk/Source/WebKit

PCM: Experimental debug mode needs to be read from defaults differently on iOS
https://bugs.webkit.org/show_bug.cgi?id=220573
<rdar://problem/73092137>

Reviewed by Brent Fulgham.

Experimental features on iOS use the prefix "WebKitExperimental" so we
need to read it that way on that platform. PCM is not supported on other
platforms than macOS and iOS at this point.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

11:25 AM Changeset in webkit [271447] by commit-queue@webkit.org
  • 14 edits in trunk

[css-logical] Implement logical border-radius
https://bugs.webkit.org/show_bug.cgi?id=218093

Patch by Ziran Sun <Ziran Sun> on 2021-01-13
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-logical/logical-box-border-radius-expected.txt:

Source/WebCore:

Specifically, the following logical properties are included:

  • border-start-start-radius
  • border-start-end-radius
  • border-end-start-radius
  • border-end-end-radius

These properties correspond to the border-top-left-radius,
border-bottom-left-radius, border-top-right-radius,
and border-bottom-right-radius properties. The flow-relative
Corner Rounding properties (border-*-radius) will allow to
set top-left, bottom-left, top-right and bottom-right box
corners with logical mappings rather than physical.

No new tests as the test already exists in WPT.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json:
  • css/CSSProperty.cpp:

(WebCore::resolveToPhysicalProperty):
(WebCore::CSSProperty::resolveDirectionAwareProperty):
(WebCore::CSSProperty::isDirectionAwareProperty):

  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue const):
(WebCore::StyleProperties::asText const):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::parseSingleValue):

  • platform/text/WritingMode.h:

(WebCore::mapLogicalCornerToPhysicalCorner):

11:20 AM Changeset in webkit [271446] by Antti Koivisto
  • 5 edits
    2 adds in trunk

REGRESSION (r257839): Broken focus when 'display' changes in an attribute selector
https://bugs.webkit.org/show_bug.cgi?id=217240
<rdar://problem/69891684>

Reviewed by Wenson Hsieh.

Source/WebCore:

Focus optimization that avoids full style resolution when setting focus in unrendered subtrees
misbehaves when the style is invalidated via an attribute change.

Test case by Ali Juma.

Test: fast/dom/focus-style-resolution-attribute-change.html

  • dom/Element.cpp:

(WebCore::Element::invalidateStyle):

  • dom/Node.cpp:

(WebCore::Node::invalidateStyle):

We need to set the computed style invalidity bit on all style invalidation code paths.

  • html/InputType.cpp:

(WebCore::InputType::setValue):

Don't invalidate style when nothing changes.

LayoutTests:

  • fast/dom/focus-style-resolution-attribute-change-expected.html: Added.
  • fast/dom/focus-style-resolution-attribute-change.html: Added.
11:05 AM Changeset in webkit [271445] by Megan Gardner
  • 3 edits in trunk/Source/WebKit

Defer setting up app highlight menus until needed to not delay launch time.
https://bugs.webkit.org/show_bug.cgi?id=220577
rdar://72940219

Delay adding the app highlight menus to the callout bar until a selection happens,
as the creation of these menus is expensive, and they are only needed if a selection is
made on the page, which is not guaranteed to happen.

Reviewed by Tim Horton.

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _processDidExit]):

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setUpInteraction]):
(-[WKContentView _selectionChanged]):
(-[WKContentView setupAppHighlightMenus]):

10:56 AM Changeset in webkit [271444] by commit-queue@webkit.org
  • 18 edits in trunk

[WebGL2] fbostatequery, negativebufferapi, negativevertexarrayapi, shaderstatequery conformance failures
https://bugs.webkit.org/show_bug.cgi?id=220372

Patch by Kenneth Russell <kbr@chromium.org> on 2021-01-13
Reviewed by Darin Adler.

Source/ThirdParty/ANGLE:

Add a needed early-out in drawArraysInstanced validation when the
primitive count is zero. This patch will be upstreamed to ANGLE
afterward.

  • src/libANGLE/validationES.h:

(gl::ValidateDrawArraysAttribs):
(gl::ValidateDrawArraysCommon):

Source/WebCore:

Fix validation of program and shader objects to address
conformance test failures. Unify and clean up validation of some
other object types.

Fix bugs in queries of framebuffer attachments and integer vertex
attributes.

Remove an old macOS workaround from GraphicsContextGLANGLE which
was causing test failures of maximum renderbuffer sizes.

Generate tests' expected OpenGL errors for a few APIs.

Covered by existing WebGL 2.0 conformance tests.

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::copyBufferSubData):
(WebCore::WebGL2RenderingContext::bindFramebuffer):
(WebCore::WebGL2RenderingContext::getFragDataLocation):
(WebCore::WebGL2RenderingContext::vertexAttribIPointer):
(WebCore::WebGL2RenderingContext::drawBuffers):
(WebCore::WebGL2RenderingContext::isQuery):
(WebCore::WebGL2RenderingContext::beginQuery):
(WebCore::WebGL2RenderingContext::getQueryParameter):
(WebCore::WebGL2RenderingContext::isSampler):
(WebCore::WebGL2RenderingContext::isSync):
(WebCore::WebGL2RenderingContext::deleteSync):
(WebCore::WebGL2RenderingContext::clientWaitSync):
(WebCore::WebGL2RenderingContext::waitSync):
(WebCore::WebGL2RenderingContext::getSyncParameter):
(WebCore::WebGL2RenderingContext::deleteTransformFeedback):
(WebCore::WebGL2RenderingContext::isTransformFeedback):
(WebCore::WebGL2RenderingContext::bindTransformFeedback):
(WebCore::WebGL2RenderingContext::transformFeedbackVaryings):
(WebCore::WebGL2RenderingContext::getTransformFeedbackVarying):
(WebCore::WebGL2RenderingContext::setIndexedBufferBinding):
(WebCore::WebGL2RenderingContext::getUniformIndices):
(WebCore::WebGL2RenderingContext::getActiveUniforms):
(WebCore::WebGL2RenderingContext::getUniformBlockIndex):
(WebCore::WebGL2RenderingContext::getActiveUniformBlockParameter):
(WebCore::WebGL2RenderingContext::getActiveUniformBlockName):
(WebCore::WebGL2RenderingContext::uniformBlockBinding):
(WebCore::WebGL2RenderingContext::deleteVertexArray):
(WebCore::WebGL2RenderingContext::isVertexArray):
(WebCore::WebGL2RenderingContext::bindVertexArray):
(WebCore::WebGL2RenderingContext::getFramebufferAttachmentParameter):

  • html/canvas/WebGLObject.cpp:

(WebCore::WebGLObject::deleteObject):

  • html/canvas/WebGLObject.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::attachShader):
(WebCore::WebGLRenderingContextBase::bindAttribLocation):
(WebCore::WebGLRenderingContextBase::validateNullableWebGLObject):
(WebCore::WebGLRenderingContextBase::bindBuffer):
(WebCore::WebGLRenderingContextBase::bindFramebuffer):
(WebCore::WebGLRenderingContextBase::bindRenderbuffer):
(WebCore::WebGLRenderingContextBase::bindTexture):
(WebCore::WebGLRenderingContextBase::compileShader):
(WebCore::WebGLRenderingContextBase::detachShader):
(WebCore::WebGLRenderingContextBase::validateWebGLObject):
(WebCore::WebGLRenderingContextBase::validateWebGLProgramOrShader):
(WebCore::WebGLRenderingContextBase::framebufferRenderbuffer):
(WebCore::WebGLRenderingContextBase::framebufferTexture2D):
(WebCore::WebGLRenderingContextBase::getActiveAttrib):
(WebCore::WebGLRenderingContextBase::getActiveUniform):
(WebCore::WebGLRenderingContextBase::getAttachedShaders):
(WebCore::WebGLRenderingContextBase::getAttribLocation):
(WebCore::WebGLRenderingContextBase::getProgramInfoLog):
(WebCore::WebGLRenderingContextBase::getShaderInfoLog):
(WebCore::WebGLRenderingContextBase::getShaderSource):
(WebCore::WebGLRenderingContextBase::getUniform):
(WebCore::WebGLRenderingContextBase::getUniformLocation):
(WebCore::WebGLRenderingContextBase::getVertexAttrib):
(WebCore::WebGLRenderingContextBase::isBuffer):
(WebCore::WebGLRenderingContextBase::isFramebuffer):
(WebCore::WebGLRenderingContextBase::isProgram):
(WebCore::WebGLRenderingContextBase::isRenderbuffer):
(WebCore::WebGLRenderingContextBase::isShader):
(WebCore::WebGLRenderingContextBase::isTexture):
(WebCore::WebGLRenderingContextBase::linkProgramWithoutInvalidatingAttribLocations):
(WebCore::WebGLRenderingContextBase::shaderSource):
(WebCore::WebGLRenderingContextBase::useProgram):
(WebCore::WebGLRenderingContextBase::validateProgram):
(WebCore::WebGLRenderingContextBase::vertexAttribPointer):
(WebCore::WebGLRenderingContextBase::drawArraysInstanced):
(WebCore::WebGLRenderingContextBase::drawElementsInstanced):
(WebCore::WebGLRenderingContextBase::checkObjectToBeBound): Deleted.

  • html/canvas/WebGLRenderingContextBase.h:
  • html/canvas/WebGLVertexArrayObjectBase.cpp:

(WebCore::WebGLVertexArrayObjectBase::setVertexAttribState):

  • html/canvas/WebGLVertexArrayObjectBase.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::getIntegerv):

LayoutTests:

Rebaseline tests which are either now passing or which have
progressed.

  • webgl/2.0.0/conformance/programs/program-test-expected.txt:
  • webgl/2.0.0/conformance2/state/gl-object-get-calls-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbostatequery-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/negativebufferapi-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/negativevertexarrayapi-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shaderstatequery-expected.txt:
10:51 AM Changeset in webkit [271443] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Avoid over-aggressive clearing of *.pyc files running webkitpy tests
https://bugs.webkit.org/show_bug.cgi?id=220594

Patch by Sam Sneddon <Sam Sneddon> on 2021-01-13
Reviewed by Darin Adler.

  • Scripts/webkitpy/test/finder.py:

(source_from_cache): Added fallback for PY2
(_DirectoryTree.clean): Change to use imported/fallback source_from_cache

10:43 AM Changeset in webkit [271442] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GPU process] Some more Layout tests failures in TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=220570

Patch by Rini Patel <rini_patel@apple.com> on 2021-01-13
Reviewed by Simon Fraser.

  • gpu-process/TestExpectations:
10:40 AM Changeset in webkit [271441] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Null check native image in createBitmapImageAfterScalingIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=220348

Patch by Rob Buis <rbuis@igalia.com> on 2021-01-13
Reviewed by Alex Christensen.

Source/WebCore:

Null check native image in createBitmapImageAfterScalingIfNeeded
as well as the result of sinkIntoImage.

Test: fast/css/border-image-scale-crash.html

  • platform/graphics/GradientImage.cpp:

(WebCore::GradientImage::drawPattern):

  • platform/graphics/cg/ImageBufferCGBackend.cpp:

(WebCore::createBitmapImageAfterScalingIfNeeded):

LayoutTests:

Add test for border-image with large scale factor.

  • fast/css/border-image-scale-crash-expected.txt: Added.
  • fast/css/border-image-scale-crash.html: Added.
7:53 AM Changeset in webkit [271440] by commit-queue@webkit.org
  • 13 edits in trunk

Unreviewed, reverting r271401.
https://bugs.webkit.org/show_bug.cgi?id=220591

It is breaking iOS audio rendering

Reverted changeset:

"Unmuting a track in case of end of interruption by another
web process tab is not working well with capture muting icons"
https://bugs.webkit.org/show_bug.cgi?id=220058
https://trac.webkit.org/changeset/271401

6:18 AM Changeset in webkit [271439] by commit-queue@webkit.org
  • 52 edits
    2 adds in trunk

Scroll-snap points should be triggered during programmatic scroll
https://bugs.webkit.org/show_bug.cgi?id=145330
<rdar://problem/21467780>

Patch by Martin Robinson <mrobinson@igalia.com> on 2021-01-13
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Update test expectations for newly passing tests and tests that now
fail in a different way.

  • web-platform-tests/css/css-scroll-snap/overflowing-snap-areas-expected.txt:
  • web-platform-tests/css/css-scroll-snap/scroll-margin-expected.txt:
  • web-platform-tests/css/css-scroll-snap/scroll-padding-expected.txt:
  • web-platform-tests/css/css-scroll-snap/scroll-snap-stop-expected.txt:
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-expected.txt:
  • web-platform-tests/css/css-scroll-snap/scrollTo-scrollBy-snaps-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-snap-area-while-snapped-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/move-current-target-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/remove-current-target-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-area-capturing-add-scroll-container-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-inline-block-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-to-transformed-target-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-both-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-both-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-x-axis-expected.txt:
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-y-axis-expected.txt:
  • web-platform-tests/css/css-scroll-snap/unreachable-snap-positions-expected.txt:

Source/WebCore:

Add support for scroll snapping when scroll via DOM APIs. This change also
introduces ScrollPositionChangeOptions which holds common parameters for
operations that from DOM that set scroll position.

  • dom/Element.cpp:

(WebCore::Element::scrollBy): When calling scrollTo mark that this call is a "directional"
scroll, so that directional scroll snapping is done.
(WebCore::Element::scrollTo): Accept the new enum argument marking directional scroll
and also properly set up the ScrollPositionChangeOptions.
(WebCore::Element::setScrollLeft): Use ScrollPositionChangeOptions.
(WebCore::Element::setScrollTop): Ditto.

  • dom/Element.h: Update method definitions.
  • page/DOMWindow.cpp:

(WebCore::DOMWindow::scrollBy const): Pass the new ScrollSnapPointSelectionMethod argument
to scrollTo.
(WebCore::DOMWindow::scrollTo const): Accept the new argument and also properly instantiate
a ScrollPositionChangeOptions argument doing the scroll operation.

  • page/DOMWindow.h: Update method definitions.
  • page/FrameView.cpp:

(WebCore::FrameView::setScrollPosition): Accept the new ScrollPositionChangeOptions argument
and also properly snap the destination location based on scroll snapping rules.

  • page/FrameView.h: Update method definition.
  • page/ScrollBehavior.cpp:

(WebCore::useSmoothScrolling): Move the check which translates the scrollingElement to the
root document element here to avoid as much repetition.

  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::closestSnapOffset): Modify argument names to clarify that this function takes
scroll offsets.

  • page/scrolling/ScrollSnapOffsetsInfo.h: ditto.
  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::scroll): Change to reflect rename of adjustScrollDestinationForDirectionalSnapping.
(WebCore::ScrollAnimator::adjustScrollOffsetForSnappingIfNeeded): Added this helper which does
snapping in both the x and the y axis.

  • platform/ScrollAnimator.h: Update method definitions.
  • platform/ScrollTypes.h: Added ScrollPositionChangeOptions and ScrollSnapPointSelectionMethod.

(WebCore::ScrollPositionChangeOptions::createProgrammatic): Added.
(WebCore::ScrollPositionChangeOptions::createUser): Added.
(WebCore::ScrollPositionChangeOptions::createProgrammaticUnclamped): Added.
(WebCore::ScrollPositionChangeOptions::setAnimated): Added.
(WebCore::ScrollPositionChangeOptions::enableDirectionalScrollSnapping): Added.

  • platform/ScrollView.cpp:

(WebCore::ScrollView::setContentsScrollPosition): Update to reflect ScrollPositionChangeOptions.
(WebCore::ScrollView::setScrollPosition): Ditto.

  • platform/ScrollView.h: Ditto.
  • platform/cocoa/ScrollController.h: Rename adjustScrollDestinationForDirectionalSnapping to

adjustScrollDestination and allow it to do non-directional snapping.

  • platform/cocoa/ScrollController.mm:

(WebCore::ScrollController::adjustScrollDestination):
(WebCore::ScrollController::adjustScrollDestinationForDirectionalSnapping): Deleted.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::setScrollLeft): Update to reflect ScrollPositionChangeOptions.
(WebCore::RenderBox::setScrollTop): Ditto.
(WebCore::RenderBox::setScrollPosition): Ditto.

  • rendering/RenderBox.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollToXPosition): Ditto.
(WebCore::RenderLayer::scrollToYPosition): Ditto.
(WebCore::RenderLayer::setScrollPosition): Ditto.
(WebCore::RenderLayer::scrollToOffset): Combine with scrollToOffset and also start doing
snapping during this operation.
(WebCore::RenderLayer::scrollRectToVisible): Create ScrollPositionChangeOptions when doing
scrolling operations.
(WebCore::RenderLayer::scrollToOffsetWithAnimation): Deleted.

  • rendering/RenderLayer.h: Update method definitions.
  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::setScrollLeft): Update to use ScrollPositionChangeOptions.
(WebCore::RenderListBox::setScrollTop): Ditto.

  • rendering/RenderListBox.h: Ditto.
  • rendering/RenderMarquee.cpp: Ditto.

(WebCore::RenderMarquee::start): Ditto.

  • rendering/RenderTextControlSingleLine.cpp: Ditto.

(WebCore::RenderTextControlSingleLine::setScrollLeft): Ditto.
(WebCore::RenderTextControlSingleLine::setScrollTop): Ditto.

  • rendering/RenderTextControlSingleLine.h: Ditto.

Source/WebKitLegacy/mac:

  • DOM/DOMHTML.mm:

(-[DOMHTMLElement setScrollXOffset:scrollYOffset:adjustForIOSCaret:]): Update to use
ScrollPositionChangeOptions.

LayoutTests:

  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-scroll-snap/scrollTo-scrollBy-snaps-expected.txt: Update expectation.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-script-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-script.html: Added.
5:21 AM Changeset in webkit [271438] by Diego Pino Garcia
  • 2 edits in trunk/Tools

[buildbot] WebKitGTK(GTK4) isn't triggered after a binary build
https://bugs.webkit.org/show_bug.cgi?id=220586

Reviewed by Aakash Jain.

r269945 added a new WebKitGTK (GTK4) post-commit bot that runs several test suites
(layout-test, api-tests and webdriver-tests). The bot was expected to run after
every binary build, however that wasn't happening because the bot wasn't set as
triggerable.

  • CISupport/build-webkit-org/config.json:
4:52 AM Changeset in webkit [271437] by calvaris@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer][EME][Thunder] Bail out on failed response message for challenges
https://bugs.webkit.org/show_bug.cgi?id=220583

Reviewed by Philippe Normand.

When parsing the challenge message, sometimes the message length
is 0 and parsing fails. This should not happen in principle and
that's why we just asserted on that but it looks like the
framework is not as careful as expected here. Hence we need to
bail out to not crash in release mode.

  • platform/graphics/gstreamer/eme/CDMThunder.cpp:

(WebCore::CDMInstanceSessionThunder::challengeGeneratedCallback):

3:54 AM Changeset in webkit [271436] by svillar@igalia.com
  • 4 edits in trunk

REGRESSION(r268666) Incorrect vertical position inside grid items with padding
https://bugs.webkit.org/show_bug.cgi?id=220524

Reviewed by Manuel Rego Casasnovas.

Source/WebCore:

In r268666 we sanitized and renamed the old overrideLogicalXXX sizes so that they store what they say.
There was a mistake in one of those renames, in availableLogicalHeightForPercentageComputation() we were
returning the border box size for the case of grid items. That's clearly wrong as we should return the
content box size. That's why adding a padding to a grid item was causing their children to wrongly
evaluate the available logical height.

This fixes a WPT that was marked as failure.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::availableLogicalHeightForPercentageComputation const): Return the
overridingContentLogicalHeight instead of the overridingLogicalHeight.

LayoutTests:

  • TestExpectations: remove web-platform-tests/css/css-grid/grid-items/percentage-size-subitems-001.html

from the list of image failures.

2:11 AM Changeset in webkit [271435] by graouts@webkit.org
  • 7 edits
    2 adds in trunk

REGRESSION (r267571): black line appears upon navigating back from apple.com shopping bag
https://bugs.webkit.org/show_bug.cgi?id=220550
<rdar://problem/72459816>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Mark two additional PASS results for ::marker tests.

  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:

Source/WebCore:

Test: webanimations/no-transition-on-after-pseudo-element-upon-creation.html

In r267571, we refactored the code to use Styleable instead of Element in pseudo-element resolution code. While there
should have been no behavior change, there was a change in Style::TreeResolver::createAnimatedElementUpdate() that
mistakenly introduced one.

In order to get the "before" style to be used to consider CSS Transitions, we used to simply call Element::renderOrDisplayContentsStyle()
on the element provided to createAnimatedElementUpdate(), which would be either an Element or a PseudoElement in the
case of ::before and ::after. When we switched to using Styleable, we made a change where we'd call renderOrDisplayContentsStyle()
on the Styleable's element, if it didn't a pseudo-element, or try to get the matching PseudoElement in the case of
::before and ::after. However, if we got a nullptr RenderStyle in the PseudoElement case, we'd fall back to using the
style from the host element.

This yielded this regression on apple.com where a transition is started on an ::after pseudo-element which has an
"opacity: 0" style and a "transition" style set for "opacity". The host element is created first, and later the
::after pseudo-element added. While it should not consider starting a transition in this case since upon creation
there is no existing style to work with, it did start a transition since it would use the host element's style
and see "opacity: 1" to start a transition.

In this patch, we address the FIXME we'd left behind in TreeResolver::createAnimatedElementUpdate() and make
Element::renderOrDisplayContentsStyle() take in a PseudoId, defaulting to PseudoId::None. In case we have a
pseudo-element, we first try to call renderOrDisplayContentsStyle() on the matching PseudoElement if it exists,
or we return the existing computed style for this pseudo-element.

If there is no existing computed style, we return nullptr, which means that in the apple.com scenario, no transition
is started because we correctly don't have a "before" style to work within upon creation of the ::after pseudo-element.

  • dom/Element.cpp:

(WebCore::beforeOrAfterPseudoElement):
(WebCore::Element::renderOrDisplayContentsStyle const):

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

(WebCore::Style::TreeResolver::createAnimatedElementUpdate):

LayoutTests:

Add a test that checks that adding a pseudo-element for an existing host element does not use
the host element's style to consider starting a transition.

  • webanimations/no-transition-on-after-pseudo-element-upon-creation-expected.html: Added.
  • webanimations/no-transition-on-after-pseudo-element-upon-creation.html: Added.
1:50 AM Changeset in webkit [271434] by youenn@apple.com
  • 2 edits in trunk/LayoutTests/imported/w3c

Use promise_test in WPT beacon/beacon-common.sub.js instead of async_test
https://bugs.webkit.org/show_bug.cgi?id=220541
<rdar://problem/72940308>

Reviewed by Geoffrey Garen.

Use promise_test to limit the number of requests sent in parallel.
This helps the server responds properly.

  • web-platform-tests/beacon/beacon-common.sub.js:

(runTests):

Note: See TracTimeline for information about the timeline view.