Timeline



Nov 6, 2020:

10:55 PM Changeset in webkit [269560] by commit-queue@webkit.org
  • 3 edits in trunk/Tools
REGRESSION (r269435): [iOS Debug] ASSERTION FAILED: !m_impl
Thread::mayBeGCThread() m_impl->wasConstructedOnMainThread() == isMainThread()

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

Patch by Alex Christensen <achristensen@webkit.org> on 2020-11-06
Reviewed by Chris Dumez.

We were missing a few WebThreadLock calls, which changes the return value of isMainThread() in UIWebView.

  • TestWebKitAPI/Tests/WebKitLegacy/ios/WebGLNoCrashOnOtherThreadAccess.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitLegacy/ios/WebGLPrepareDisplayOnWebThread.mm:

(TestWebKitAPI::TEST):

9:38 PM Changeset in webkit [269559] by Simon Fraser
  • 13 edits in trunk/Source/WebCore

A programmatic scroll to a new location should stop rubberbanding
https://bugs.webkit.org/show_bug.cgi?id=218672

Reviewed by Tim Horton.

This is a better version of the fix in r269373. That fix attempted to stop a rubberband if there
was a programmatic scroll that moved you away from the edge where any active rubberband was happening.
However, the code ran too late; by the time ScrollController::scrollPositionChanged() is called,
the position has already changed, but more importantly the requested scroll position had
already been clamped between min and max scroll position, where the behavior of
maximumScrollPosition() is affected by whether the rubberbanding is active (see ScrollingTreeFrameScrollingNodeMac::maximumScrollPosition()
and its use of totalContentsSizeForRubberBand()).

The result of this was that the active rubberband triggered clamping of the requested scroll position
before we got a chance to stop the rubberband, breaking some programmatic scrolls on netflix.com.

Fix by plumbing through willDoProgrammaticScroll() which stops the rubberband before maximumScrollPosition()
gets a chance to clamp the position.

Will be tested after one additional required patch to come.

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::scrollTo):
(WebCore::ScrollingTreeScrollingNode::isRubberBanding const): Deleted.

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::willDoProgrammaticScroll):
(WebCore::ScrollingTreeFrameScrollingNodeMac::currentScrollPositionChanged):

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

(WebCore::ScrollingTreeOverflowScrollingNodeMac::willDoProgrammaticScroll):
(WebCore::ScrollingTreeOverflowScrollingNodeMac::currentScrollPositionChanged):

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

(WebCore::ScrollingTreeScrollingNodeDelegateMac::willDoProgrammaticScroll):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::scrollPositionIsNotRubberbandingEdge const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::currentScrollPositionChanged):

  • platform/RectEdges.h:

(WebCore::operator<<):

  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::notifyPositionChanged):

  • platform/cocoa/ScrollController.h:

(WebCore::ScrollController::rubberBandingEdges const):

  • platform/cocoa/ScrollController.mm:

(WebCore::ScrollController::scrollPositionChanged):
(WebCore::ScrollController::stopRubberbanding):

9:34 PM Changeset in webkit [269558] by Simon Fraser
  • 3 edits
    2 adds in trunk

Programmatic scrolls need updated scrolling geometry
https://bugs.webkit.org/show_bug.cgi?id=218676

Reviewed by Tim Horton.

Source/WebCore:

Part of rdar://problem/69599531: Scrolling on netflix.com sometimes jumps to the top.

A programmatic scroll can happen right after content changes affect the scrolled content size,
and need to be committed right away to avoid the scrolling thread continuing to process events
or run rubberbanding based on stale state.

So when we get requestScrollPositionUpdate(), update the scrolling node geometry and
immediately commit the scrolling tree.

Test: fast/scrolling/mac/programmatic-scroll-overrides-rubberband.html

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):

LayoutTests:

  • fast/scrolling/mac/programmatic-scroll-overrides-rubberband-expected.txt: Added.
  • fast/scrolling/mac/programmatic-scroll-overrides-rubberband.html: Added.
9:23 PM Changeset in webkit [269557] by Peng Liu
  • 29 edits in trunk/Source

PiP return to element full screen is not smooth on some websites
https://bugs.webkit.org/show_bug.cgi?id=218419

Reviewed by Jer Noble.

Source/WebCore:

In r265562, we added the support that a video in picture-in-picture can return to
element fullscreen directly if the fullscreen API is supported. The basic idea of
the implementation is to request the element to enter fullscreen when the video
needs to exit picture-in-picture, and start exiting picture-in-picture after the
element fullscreen transition is completed.

On the iOS port, the entering element fullscreen transition needs to be done in
500 ms. Otherwise, AVKit will start the exiting picture-in-picture animation and
notify VideoFullscreenInterfaceAVKit about the progress before the element
fullscreen implementation has done the job. When that happens, the exiting
picture-in-picture animation will be incorrect and we have to use mechanisms to
protect the state of VideoFullscreenInterfaceAVKit. Unfortunately, on some websites,
the entering element fullscreen transition does take longer than than 500 ms due
to complex CSS style updates.

In this patch, when a video in picture-in-picture needs to return to element
fullscreen, it will return to a temporary fullscreen state (video fullscreen)
with a smooth animation implemented by AVKit. The video will continue playing
in the temporary fullscreen state while the element fullscreen transition is
happening in the background which is invisible to users. After the element
fullscreen transition is done, VideoFullscreenInterfaceAVKit exits the temporary
fullscreen state and returns to standby. Users won't notice the temporary
fullscreen state because media controls are hidden in that state.

This patch also fixes issues found in stress tests.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::exitFullscreen):
For exitVideoFullscreenToModeWithoutAnimation(), we should not set
m_changingVideoFullscreenMode to true, because there won't be confirmation
to reset m_changingVideoFullscreenMode to false.
(WebCore::HTMLMediaElement::setVideoFullscreenStandby):
When the exit fullscreen request is rejected, we should not set
m_videoFullscreenStandby to false.

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::webkitSetPresentationMode):
Only protect too fast setPresentationMode() calls from JS code.
(WebCore::HTMLVideoElement::setPresentationMode):
(WebCore::HTMLVideoElement::didEnterFullscreenOrPictureInPicture):
(WebCore::HTMLVideoElement::didExitFullscreenOrPictureInPicture):
(WebCore::HTMLVideoElement::setVideoFullscreenFrame):
Rename m_isEnteringPictureInPicture to m_enteringPictureInPicture
and m_isExitingPictureInPicture to m_exitingPictureInPicture.

  • html/HTMLVideoElement.h: Ditto.
  • page/ChromeClient.h:

(WebCore::ChromeClient::exitVideoFullscreenForVideoElement):
Add a completion handler parameter so that the caller can be notified
that the request is rejected.

  • platform/cocoa/VideoFullscreenChangeObserver.h:

Remove an unused function fullscreenWillReturnToInline().

  • platform/cocoa/VideoFullscreenModel.h:

(WebCore::VideoFullscreenModelClient::prepareToExitPictureInPicture): Deleted.

  • platform/ios/VideoFullscreenInterfaceAVKit.h:

Function exitFullscreen() now returns a boolean value indicating the request
is accepted or rejected.
Add a function preparedToReturnToStandby(), which is used to notify
VideoFullscreenInterfaceAVKit that the video is ready to return to standby.
Add a parameter shouldNotifyModel to setMode() and clearMode().
shouldNotifyModel is true when a request to enter/exit picture-in-picture
is from AVKit.
Remove unused m_stopPictureInPictureTimer and the related function.

  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(VideoFullscreenInterfaceAVKit::VideoFullscreenInterfaceAVKit):
Remove unused m_stopPictureInPictureTimer.
(VideoFullscreenInterfaceAVKit::exitFullscreen):
We don't need to check whether m_watchdogTimer is active before stopping it.
When a video is entering picture-in-picture, we should reject the request to
exit fullscreen.
(VideoFullscreenInterfaceAVKit::cleanupFullscreen): Remove unused code.
(VideoFullscreenInterfaceAVKit::invalidate): Fix an issue in stress tests.
(VideoFullscreenInterfaceAVKit::prepareForPictureInPictureStop):
(VideoFullscreenInterfaceAVKit::didStartPictureInPicture):
When a video is entering picture-in-picture from standby, we may need to return
to element fullscreen in the future. So we may need to return to the video
fullscreen state implemented by AVKit.
Also, we should delay the didEnterPictureInPicture notification in doEnterFullscreen()
until VideoFullscreenInterfaceAVKit completely enters picture-in-picture.
(VideoFullscreenInterfaceAVKit::failedToStartPictureInPicture): A minor clean-up.
(VideoFullscreenInterfaceAVKit::willStopPictureInPicture): A minor clean-up.
(VideoFullscreenInterfaceAVKit::didStopPictureInPicture):
Notify the observer that a video has exited picture-in-picture. If the video needs to
return to element fullscreen, the video is actually in the temporary fullscreen state.
Also, move didExitPictureInPicture() to cleanupFullscreen().
(VideoFullscreenInterfaceAVKit::prepareForPictureInPictureStopWithCompletionHandler):
Minor clean-up and disable picture-in-picture support temporarily. Explained in
WebKit/ChangeLog.
(VideoFullscreenInterfaceAVKit::setHasVideoContentLayer):
When a video is entering standby state, we need to call returnToStandby() if
m_returningToStandby is true.
(VideoFullscreenInterfaceAVKit::doSetup): Remove unused code.
(VideoFullscreenInterfaceAVKit::preparedToReturnToStandby):
Return to standby after the element fullscreen transition is completed.
(VideoFullscreenInterfaceAVKit::doEnterFullscreen):
Move m_videoFullscreenModel->didEnterPictureInPicture() from didStartPictureInPicture()
to this function.
(VideoFullscreenInterfaceAVKit::doExitFullscreen): Minor clean-up.
(VideoFullscreenInterfaceAVKit::exitFullscreenHandler):
(VideoFullscreenInterfaceAVKit::enterFullscreenHandler):
Hide the media controls provided by AVKit when the video is in the temporary fullscreen state.
(VideoFullscreenInterfaceAVKit::returnToStandby):
Call didSetupFullscreen() to return to standby.
(VideoFullscreenInterfaceAVKit::setMode):
(VideoFullscreenInterfaceAVKit::clearMode):
(VideoFullscreenInterfaceAVKit::stopPictureInPictureTimerFired): Deleted.
(VideoFullscreenInterfaceAVKit::setReadyToStopPictureInPicture): Deleted.

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(VideoFullscreenControllerContext::fullscreenMayReturnToInline):
(VideoFullscreenControllerContext::fullscreenWillReturnToInline): Deleted.

  • platform/mac/VideoFullscreenInterfaceMac.h:
  • platform/mac/VideoFullscreenInterfaceMac.mm:

(WebCore::VideoFullscreenInterfaceMac::setMode):
(WebCore::VideoFullscreenInterfaceMac::exitFullscreen):

Source/WebKit:

In r265562, VideoFullscreenInterfaceAVKit uses fullscreenMayReturnToInline()
to request the observer (WKFullScreenWindowController) to enter element fullscreen
before exiting picture-in-picture, and calls fullscreenWillReturnToInline() to
proceed returning to inline or element fullscreen after WKFullScreenWindowController
is ready.

In this patch, VideoFullscreenInterfaceAVKit will directly enter a temporary
video fullscreen from picture-in-picture, so the preparation step (entering element
fullscreen) is not needed.

Some important points regarding edge cases:
1) A video enters picture-in-picture and exits picture-in-picture immediately
before WKFullScreenWindowController is notified to exit element fullscreen.
In this case, WKFullScreenWindowController will do nothing when it is notified
that the video has exited picture-in-picture. It will directly tell
VideoFullscreenInterfaceAVKit to enter standby.

2) A video exits picture-in-picture when WKFullScreenWindowController is exiting
element fullscreen but not complete yet. In this case, WKFullScreenWindowController
needs to hold the enter element fullscreen request and exits element fullscreen
first before entering element fullscreen.

3) The ancestor element of the video element exits fullscreen and asks the video
element to exit standby (in web process) while the video is entering picture-in-picture
(in UI process). In this case, VideoFullscreenInterfaceAVKit (in UI process) should
ignore the request to exit standby and tell the web process the request is rejected.

4) A user may try to enter picture-in-picture when the video is exiting picture-in-picture
and returning to element fullscreen. In this case, VideoFullscreenInterfaceAVKit
(in UI process) should temporarily disable the picture-in-picture support.

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

Remove the message EnterFullscreen for the iOS port because the UI process can enter
fullscreen/picture-in-picture directly.

  • UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:

(WebKit::VideoFullscreenManagerProxy::exitFullscreen):
(WebKit::VideoFullscreenManagerProxy::preparedToReturnToInline):
We need to call m_page->fullscreenMayReturnToInline() in this function after
removing fullscreenWillReturnToInline().
(WebKit::VideoFullscreenManagerProxy::didSetupFullscreen):
For the iOS port, we should enter fullscreen directly.
(WebKit::VideoFullscreenManagerProxy::didCleanupFullscreen):
(WebKit::VideoFullscreenManagerProxy::fullscreenMayReturnToInline):
(WebKit::VideoFullscreenModelContext::fullscreenWillReturnToInline): Deleted.
(WebKit::VideoFullscreenManagerProxy::fullscreenWillReturnToInline): Deleted.

  • UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:

(-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
(-[WKFullScreenWindowController requestEnterFullScreen]):
(-[WKFullScreenWindowController exitFullScreen]):
(-[WKFullScreenWindowController _completedExitFullScreen]):
(-[WKFullScreenWindowController didEnterPictureInPicture]):
(-[WKFullScreenWindowController didExitPictureInPicture]):
(-[WKFullScreenWindowController _exitFullscreenImmediately]):
We should force to exit fullscreen because the current exiting fullscreen process
might be stuck.
(-[WKFullScreenWindowController prepareToExitPictureInPicture]): Deleted.

  • UIProcess/mac/WKFullScreenWindowController.mm:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::exitVideoFullscreenForVideoElement):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/cocoa/VideoFullscreenManager.h:

(WebKit::VideoFullscreenManager::exitVideoFullscreenForVideoElement):

  • WebProcess/cocoa/VideoFullscreenManager.messages.in:
  • WebProcess/cocoa/VideoFullscreenManager.mm:

(WebKit::VideoFullscreenManager::enterVideoFullscreenForVideoElement):
(WebKit::VideoFullscreenManager::exitVideoFullscreenForVideoElement):
The request to exit fullscreen (standby) may be rejected.
(WebKit::VideoFullscreenManager::didSetupFullscreen):
Only the macOS port needs to implement this function.
(WebKit::VideoFullscreenManager::didEnterFullscreen):
(WebKit::VideoFullscreenManager::didExitFullscreen):
(WebKit::VideoFullscreenManager::fullscreenMayReturnToInline):
(WebKit::VideoFullscreenManager::fullscreenWillReturnToInline): Deleted.

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.h:

(WebChromeClient::exitVideoFullscreenForVideoElement):

  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::exitVideoFullscreenForVideoElement):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebChromeClient.cpp:

(WebChromeClient::exitVideoFullscreenForVideoElement):

  • WebCoreSupport/WebChromeClient.h:
7:53 PM Changeset in webkit [269556] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

Remove localBounds and globalBounds methods from display list items that are not drawing items
https://bugs.webkit.org/show_bug.cgi?id=218675

Reviewed by Tim Horton and Devin Rousso.

In r269525, I refactored display list items to no longer derive from base classes (i.e. DisplayList::Item and
DisplayList::DrawingItem). In doing so, I ended up adding the localBounds and globalBounds methods
everywhere, since these methods are called from within the templated DisplayList::Recorder::append method
if the given type is a drawing item (that is, the static isDrawingItem flag is set).

However, for non-drawing items such as state change items, FlushContext, and MetaCommandSwitchTo, having
these methods makes no sense. We can fix this by leveraging constexpr if to only update item extents for
display list item types that are drawing items.

This allows us to remove these two methods from all display list items that are not drawing items.

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::Save::localBounds const): Deleted.
(WebCore::DisplayList::Save::globalBounds const): Deleted.
(WebCore::DisplayList::Restore::localBounds const): Deleted.
(WebCore::DisplayList::Restore::globalBounds const): Deleted.
(WebCore::DisplayList::Translate::localBounds const): Deleted.
(WebCore::DisplayList::Translate::globalBounds const): Deleted.
(WebCore::DisplayList::Rotate::localBounds const): Deleted.
(WebCore::DisplayList::Rotate::globalBounds const): Deleted.
(WebCore::DisplayList::Scale::localBounds const): Deleted.
(WebCore::DisplayList::Scale::globalBounds const): Deleted.
(WebCore::DisplayList::SetCTM::localBounds const): Deleted.
(WebCore::DisplayList::SetCTM::globalBounds const): Deleted.
(WebCore::DisplayList::ConcatenateCTM::localBounds const): Deleted.
(WebCore::DisplayList::ConcatenateCTM::globalBounds const): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::localBounds const): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::globalBounds const): Deleted.
(WebCore::DisplayList::SetInlineFillColor::localBounds const): Deleted.
(WebCore::DisplayList::SetInlineFillColor::globalBounds const): Deleted.
(WebCore::DisplayList::SetInlineStrokeColor::localBounds const): Deleted.
(WebCore::DisplayList::SetInlineStrokeColor::globalBounds const): Deleted.
(WebCore::DisplayList::SetStrokeThickness::localBounds const): Deleted.
(WebCore::DisplayList::SetStrokeThickness::globalBounds const): Deleted.
(WebCore::DisplayList::SetState::localBounds const): Deleted.
(WebCore::DisplayList::SetState::globalBounds const): Deleted.
(WebCore::DisplayList::SetLineCap::localBounds const): Deleted.
(WebCore::DisplayList::SetLineCap::globalBounds const): Deleted.
(WebCore::DisplayList::SetLineDash::localBounds const): Deleted.
(WebCore::DisplayList::SetLineDash::globalBounds const): Deleted.
(WebCore::DisplayList::SetLineJoin::localBounds const): Deleted.
(WebCore::DisplayList::SetLineJoin::globalBounds const): Deleted.
(WebCore::DisplayList::SetMiterLimit::localBounds const): Deleted.
(WebCore::DisplayList::SetMiterLimit::globalBounds const): Deleted.
(WebCore::DisplayList::ClearShadow::localBounds const): Deleted.
(WebCore::DisplayList::ClearShadow::globalBounds const): Deleted.
(WebCore::DisplayList::Clip::localBounds const): Deleted.
(WebCore::DisplayList::Clip::globalBounds const): Deleted.
(WebCore::DisplayList::ClipOut::localBounds const): Deleted.
(WebCore::DisplayList::ClipOut::globalBounds const): Deleted.
(WebCore::DisplayList::ClipOutToPath::localBounds const): Deleted.
(WebCore::DisplayList::ClipOutToPath::globalBounds const): Deleted.
(WebCore::DisplayList::ClipPath::localBounds const): Deleted.
(WebCore::DisplayList::ClipPath::globalBounds const): Deleted.
(WebCore::DisplayList::ClipToDrawingCommands::localBounds const): Deleted.
(WebCore::DisplayList::ClipToDrawingCommands::globalBounds const): Deleted.
(WebCore::DisplayList::ApplyStrokePattern::localBounds const): Deleted.
(WebCore::DisplayList::ApplyStrokePattern::globalBounds const): Deleted.
(WebCore::DisplayList::ApplyFillPattern::localBounds const): Deleted.
(WebCore::DisplayList::ApplyFillPattern::globalBounds const): Deleted.
(WebCore::DisplayList::ApplyDeviceScaleFactor::localBounds const): Deleted.
(WebCore::DisplayList::ApplyDeviceScaleFactor::globalBounds const): Deleted.
(WebCore::DisplayList::FlushContext::localBounds const): Deleted.
(WebCore::DisplayList::FlushContext::globalBounds const): Deleted.
(WebCore::DisplayList::MetaCommandSwitchTo::localBounds const): Deleted.
(WebCore::DisplayList::MetaCommandSwitchTo::globalBounds const): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::appendWithoutUpdatingExtents):
(WebCore::DisplayList::Recorder::append):

6:09 PM Changeset in webkit [269555] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Speed up ews status bubble loading speed
https://bugs.webkit.org/show_bug.cgi?id=214821

Reviewed by Jonathan Bedard.

  • CISupport/ews-app/ews/views/statusbubble.py:

(StatusBubble): This significantly reduces the calculations done to estimate the position in queue. The position is queue
is calculated based on patches sent to buildbot in last DAYS_TO_CHECK days, and results received from buildbot. However, in
case any queue has a huge backlog (of more than 1 day), the position in queue might not be accurate. Slight trade-off for
speed vs accuracy.

5:38 PM Changeset in webkit [269554] by jiewen_tan@apple.com
  • 4 edits
    1 add in trunk/Source/WebKit

[WebAuthn] [iOS] WebAuthn process doesn't start on iOS devices
https://bugs.webkit.org/show_bug.cgi?id=218479
<rdar://problem/70560399>

Reviewed by Brent Fulgham.

One of the reasons is missing the iOS sandbox profile. Therefore, this patch adds one.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb: Added.

Copied from the GPU process. Will strip it down once the process is fully functional.

  • Scripts/process-entitlements.sh:

Adds some missing entitlements.

  • UIProcess/WebAuthentication/WebAuthnProcessProxy.h:

Deals with CompletionHandler assertion.

  • WebKit.xcodeproj/project.pbxproj:

Adds some plumbings for the sandbox profile.

5:11 PM Changeset in webkit [269553] by Andres Gonzalez
  • 5 edits in trunk

Fix for LayoutTests/accessibility/Mac/accesskey.html in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=218669

Reviewed by Chris Fleizach.

Source/WebCore:

Test: LayoutTests/accessibility/mac/accesskey.html.

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):
String properties need to be isolated-copied to be used on AX secondary thread.

LayoutTests:

Re-wrote this test to work in both isolated tree mode on and off.

  • accessibility/mac/accesskey-expected.txt:
  • accessibility/mac/accesskey.html:
5:10 PM Changeset in webkit [269552] by commit-queue@webkit.org
  • 36 edits
    4 moves in trunk

[WASM-References] Rename anyref to externref
https://bugs.webkit.org/show_bug.cgi?id=218331

Patch by Dmitry Bezhetskov <dbezhetskov> on 2020-11-06
Reviewed by Keith Miller.

JSTests:

  • wasm/Builder.js:

(const._isValidValue):

  • wasm/references/externref_globals.js: Renamed from JSTests/wasm/references/anyref_globals.js.
  • wasm/references/externref_modules.js: Renamed from JSTests/wasm/references/anyref_modules.js.
  • wasm/references/externref_table.js: Renamed from JSTests/wasm/references/anyref_table.js.
  • wasm/references/externref_table_import.js: Renamed from JSTests/wasm/references/anyref_table_import.js.

(makeImport):
(string_appeared_here.fullGC.assert.eq.1.exports.get_tbl.makeImport):
(string_appeared_here.fullGC.assert.eq.1.exports.get_tbl):
(fullGC.assert.eq):
(doSet):
(assert.throws):

  • wasm/references/func_ref.js:
  • wasm/references/is_null.js:
  • wasm/references/multitable.js:

(assert.throws.1.exports.set_tbl0):
(assert.throws):
(string_appeared_here.vm.isMemoryLimited.tableInsanity):

  • wasm/references/table_misc.js:

(TableSize.0.End.End.WebAssembly):
(GetLocal.0.GetLocal.1.TableGrow.0.End.End.WebAssembly):

  • wasm/references/validation.js:

(assert.throws):

  • wasm/stress/immutable-globals.js:

(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.assert.eq):

  • wasm/stress/mutable-globals.js:

(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.instance.exports.setI32AsI64):

  • wasm/wasm.json:

LayoutTests/imported/w3c:

  • web-platform-tests/wasm/jsapi/wasm-module-builder.js:

(WasmModuleBuilder.prototype.addTable):
(WasmModuleBuilder.prototype.toBuffer):

Source/JavaScriptCore:

  • bytecode/BytecodeDumper.cpp:

(JSC::Wasm::BytecodeDumper::formatConstant const):

  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::gExternref):
(JSC::Wasm::AirIRGenerator::tmpForType):
(JSC::Wasm::AirIRGenerator::emitCCall):
(JSC::Wasm::AirIRGenerator::moveOpForValueType):
(JSC::Wasm::AirIRGenerator::AirIRGenerator):
(JSC::Wasm::AirIRGenerator::addLocal):
(JSC::Wasm::AirIRGenerator::addConstant):
(JSC::Wasm::AirIRGenerator::setGlobal):
(JSC::Wasm::AirIRGenerator::gAnyref): Deleted.

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addLocal):
(JSC::Wasm::B3IRGenerator::addTableGet):
(JSC::Wasm::B3IRGenerator::setGlobal):

  • wasm/WasmCallingConvention.h:

(JSC::Wasm::WasmCallingConvention::marshallLocation const):
(JSC::Wasm::JSCallingConvention::marshallLocation const):

  • wasm/WasmFormat.h:

(JSC::Wasm::isValueType):
(JSC::Wasm::isSubtype):
(JSC::Wasm::TableInformation::wasmType const):

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parseExpression):

  • wasm/WasmGlobal.cpp:

(JSC::Wasm::Global::get const):
(JSC::Wasm::Global::set):
(JSC::Wasm::Global::visitAggregate):

  • wasm/WasmGlobal.h:
  • wasm/WasmInstance.cpp:

(JSC::Wasm::Instance::Instance):
(JSC::Wasm::Instance::setGlobal):

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::jsNullConstant):
(JSC::Wasm::LLIntGenerator::callInformationForCaller):
(JSC::Wasm::LLIntGenerator::callInformationForCallee):
(JSC::Wasm::LLIntGenerator::addArguments):
(JSC::Wasm::LLIntGenerator::addLocal):
(JSC::Wasm::LLIntGenerator::setGlobal):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):
(JSC::Wasm::setWasmTableElement):

  • wasm/WasmSectionParser.cpp:

(JSC::Wasm::SectionParser::parseTableHelper):

  • wasm/WasmTable.cpp:

(JSC::Wasm::Table::tryCreate):
(JSC::Wasm::Table::set):

  • wasm/WasmTable.h:

(JSC::Wasm::Table::isExternrefTable const):
(JSC::Wasm::Table::isAnyrefTable const): Deleted.

  • wasm/js/JSToWasm.cpp:

(JSC::Wasm::boxWasmResult):

  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::set):

  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::WebAssemblyFunction::jsCallEntrypointSlow):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):

  • wasm/js/WebAssemblyTableConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/wasm.json:

LayoutTests:

  • workers/wasm-references/test.js:
4:39 PM Changeset in webkit [269551] by Wenson Hsieh
  • 12 edits in trunk

Add new display list item types in preparation for webkit.org/b/218426
https://bugs.webkit.org/show_bug.cgi?id=218588

Reviewed by Simon Fraser.

Source/WebCore:

Introduce these new item types. See below for more details.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::append):

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::copyTo):
(WebCore::DisplayList::ItemBuffer::swapWritableBufferIfNeeded):

Let ItemBuffer automatically append "switch to command buffer" item whenever it runs out of space in its
current writable buffer, and either allocates a new buffer or calls into the client to grab a new buffer.

  • platform/graphics/displaylists/DisplayListItemType.cpp:

(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):

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

(WebCore::DisplayList::FlushContext::apply const):
(WebCore::DisplayList::operator<<):
(WebCore::DisplayList::MetaCommandSwitchTo::apply const):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::FlushContext::FlushContext):
(WebCore::DisplayList::FlushContext::identifier const):
(WebCore::DisplayList::FlushContext::localBounds const):
(WebCore::DisplayList::FlushContext::globalBounds const):

Add FlushContext, which will indicate to the client that it should flush its backing graphics context. The
only data in this item is a DisplayList::FlushIdentifier, which will be used by the display list client to
coordinate flush timing.

(WebCore::DisplayList::MetaCommandSwitchTo::MetaCommandSwitchTo):
(WebCore::DisplayList::MetaCommandSwitchTo::identifier const):
(WebCore::DisplayList::MetaCommandSwitchTo::localBounds const):
(WebCore::DisplayList::MetaCommandSwitchTo::globalBounds const):

Add an item to represent switching to a new item buffer. This is automatically appended by the display list
itself when it runs out of space on the current writable buffer, and will allow display list clients (in
particular, the remote rendering backend in the GPU process) to seamlessly continue reading display list items
when all item data in a display list item buffer has been exhausted.

Also, add a FIXME here for pulling MetaCommandSwitchTo out of the set of display list items. We plan on
tackling this as a part of generalizing concurrent display list architecture in a way that can be used for
serializing WebGL commands as well.

Source/WebKit:

Simply treat these new items as no-ops for the time being. See Source/WebCore/ChangeLog for more details.

  • GPUProcess/graphics/RemoteImageBuffer.h:
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

Tools:

Adjust an API test. See other ChangeLogs for more detail.

  • TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:

(TestWebKitAPI::TEST):

4:31 PM Changeset in webkit [269550] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Add IOKIt message filtering
https://bugs.webkit.org/show_bug.cgi?id=218657
<rdar://problem/71118545>

Reviewed by Brent Fulgham.

Like on iOS, the WebContent process on macOS should have IOKit message filtering. This patch also allows reading
of some IOKIt properties, which was reported when running layout tests.

No new tests, covered by existing tests.

  • WebProcess/com.apple.WebProcess.sb.in:
4:21 PM Changeset in webkit [269549] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Text gets clobbered when assigning to input.defaultValue
https://bugs.webkit.org/show_bug.cgi?id=217156

Disabling fast/forms/defaultValue-clobbering.html since it fails on
iOS

Patch by Joey Arhar <jarhar@chromium.org> on 2020-11-06
Reviewed by Darin Adler.

  • platform/ios/TestExpectations:
4:09 PM Changeset in webkit [269548] by Wenson Hsieh
  • 11 edits in trunk/Source

Add a display list item to represent stroking a single line
https://bugs.webkit.org/show_bug.cgi?id=218589

Reviewed by Tim Horton.

Source/WebCore:

Add support for the new display list item, and append it when we know we're stroking a Path that consists of a
single line.

No change in behavior.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::append):

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::copyTo const):

  • platform/graphics/displaylists/DisplayListItemType.cpp:

(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):

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

(WebCore::DisplayList::StrokeLine::localBounds const):
(WebCore::DisplayList::StrokeLine::apply const):
(WebCore::DisplayList::operator<<):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::StrokeLine::StrokeLine):
(WebCore::DisplayList::StrokeLine::start const):
(WebCore::DisplayList::StrokeLine::end const):
(WebCore::DisplayList::StrokeLine::globalBounds const):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::strokePath):

Source/WebKit:

  • GPUProcess/graphics/RemoteImageBuffer.h:
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
3:39 PM Changeset in webkit [269547] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Sources: default breakpoint action should be evaluate
https://bugs.webkit.org/show_bug.cgi?id=218674

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/BreakpointPopover.js:

(WI.BreakpointPopover.prototype._handleAddActionButtonClick):

3:28 PM Changeset in webkit [269546] by Chris Dumez
  • 12 edits
    6 adds in trunk

Event targets should be cleared after dispatch if target pointed to a shadow tree
https://bugs.webkit.org/show_bug.cgi?id=218638

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

  • web-platform-tests/dom/events/relatedTarget.window-expected.txt:
  • web-platform-tests/shadow-dom/event-post-dispatch-expected.txt:

Source/WebCore:

Event target & relatedTarget should be cleared after dispatch if target pointed to a shadow
tree:

Tests: fast/events/shadow-tree-resetTargets-after-move-in.html

fast/events/shadow-tree-resetTargets-after-move-out.html
fast/events/shadow-tree-resetTargets.html

  • dom/Event.h:

(WebCore::Event::setRelatedTarget):

  • dom/EventContext.cpp:

(WebCore::MouseOrFocusEventContext::handleLocalEvents const):

  • dom/EventContext.h:

(WebCore::EventContext::relatedTarget const):

  • dom/EventDispatcher.cpp:

(WebCore::isInShadowTree):
(WebCore::EventDispatcher::dispatchEvent):

  • dom/FocusEvent.h:
  • dom/MouseEvent.h:

LayoutTests:

  • fast/events/shadow-tree-resetTargets-after-move-in-expected.txt: Added.
  • fast/events/shadow-tree-resetTargets-after-move-in.html: Added.
  • fast/events/shadow-tree-resetTargets-after-move-out-expected.txt: Added.
  • fast/events/shadow-tree-resetTargets-after-move-out.html: Added.
  • fast/events/shadow-tree-resetTargets-expected.txt: Added.
  • fast/events/shadow-tree-resetTargets.html: Added.

Extend layout test coverage.

  • fast/shadow-dom/event-path-with-window.html:

Update the test to expect the the event.target is null after dispatching. Note that this test
was failing in both Firefox and Chrome before this test change, and is now passing with these
engine after the test change.

3:27 PM Changeset in webkit [269545] by weinig@apple.com
  • 17 edits
    1 delete in trunk/Source

Further progress towards merging Settings.yaml into WebPreferences.yaml
https://bugs.webkit.org/show_bug.cgi?id=218663

Reviewed by Tim Horton.

Source/WebCore:

  • Scripts/GenerateSettings.rb:

Change GenerateSettings.rb to take the list of templates in as arguments rather than
hard coding it. This matches GeneratePreferences and will make it easier to switch over.

  • DerivedSources.make:

Update call to GenerateSettings.rb to pass templates and adopt static pattern list to
make it very clear what needs to be generated.

  • WebCoreMacros.cmake:

Update call to GenerateSettings.rb to pass templates

  • page/SettingsDefaultValues.h: Removed.
  • Scripts/SettingsTemplates/Settings.cpp.erb:
  • WebCore.xcodeproj/project.pbxproj:

Remove SettingsDefaultValues.h inlining defaults directly in the yaml files.

  • page/Settings.yaml:

Add defaults directly in the definition rather than relying on compiled constants.

  • page/SettingsBase.cpp:

(WebCore::SettingsBase::initializeDefaultFontFamilies):
(WebCore::SettingsBase::defaultMinimumZoomFontSize): Deleted.
(WebCore::SettingsBase::defaultTextAutosizingEnabled): Deleted.
(WebCore::SettingsBase::defaultDownloadableBinaryFontsEnabled): Deleted.
(WebCore::SettingsBase::defaultContentChangeObserverEnabled): Deleted.
(WebCore::SettingsBase::defaultMediaContentTypesRequiringHardwareSupport): Deleted.

  • page/SettingsBase.h:
  • page/cocoa/SettingsBaseCocoa.mm:

(WebCore::SettingsBase::defaultTextAutosizingEnabled): Deleted.
(WebCore::SettingsBase::defaultMediaContentTypesRequiringHardwareSupport): Deleted.
Remove defaults that are now inlined into the yaml files. Move some that have to
remain to more appropriate / private locations.

  • platform/graphics/BitmapImage.h:

Update comment to indicate the the default is now defined in the settings definition.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
Replace call to WebCore::Settings::defaultMediaContentTypesRequiringHardwareSupport() which always returned
the empty string with a literal empty string. This was the only caller so the function is really no needed.

Source/WebKitLegacy/ios:

  • Misc/WebUIKitSupport.mm:

(WebKitGetMinimumZoomFontSize):
Use generated default value macro as the one in WebCore has now been removed.

Source/WTF:

  • Scripts/Preferences/WebPreferences.yaml:

Replace some use of WebCore constants with the inlined values of those constants
as this was the only user and it is clearer for the values to be here too.

2:55 PM Changeset in webkit [269544] by Alan Coon
  • 1 copy in tags/Safari-610.3.7.1.2

Tag Safari-610.3.7.1.2.

2:05 PM Changeset in webkit [269543] by Alan Coon
  • 1 copy in tags/Safari-610.3.7.0.2

Tag Safari-610.3.7.0.2.

2:01 PM Changeset in webkit [269542] by Wenson Hsieh
  • 2 edits
    1 add in trunk/Tools

[Concurrent display lists] Add API tests for WebCore::DisplayList::DisplayList and related classes
https://bugs.webkit.org/show_bug.cgi?id=218425

Reviewed by Tim Horton.

Add two new API tests:

  • One that covers basic display list functionality (i.e. appending items, checking whether a display list is

empty, clearing a display list and iterating over items).

  • Another that exercises the item buffer client hooks to provide data for writing and encode and decode out-

of-line display list items. This test uses toy Reader/Writer classes that know how to "encode" and "decode"
StrokePath items by storing and reading 8-byte indices into a shared Vector<StrokePath>.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp: Added.

(TestWebKitAPI::createGradient):
(TestWebKitAPI::createComplexPath):
(TestWebKitAPI::TEST):

1:59 PM Changeset in webkit [269541] by Alan Coon
  • 1 copy in tags/Safari-610.2.11.51.10

Tag Safari-610.2.11.51.10.

1:59 PM Changeset in webkit [269540] by Aditya Keerthi
  • 2 edits in trunk/Source/WebKit

[macOS] Align left edge of presented calendar with left edge of date inputs
https://bugs.webkit.org/show_bug.cgi?id=218668

Reviewed by Tim Horton.

When a date input is activated, a calendar is presented by adding an
NSWindow containing an NSDatePicker to the screen. The frame of the
window is set to ensure proper alignment with the date input. However,
since the window's hasShadow is set to true, AppKit draws a thin border
and shadow around the window's contentView. This results in left border
of the window being drawn further out than the left border of the input
itself. If the hasShadow property is set to false, the issue is no longer
observed, and the calendar aligns with the input. However, this is not an
acceptable solution, since we lose the border and the shadow.

To ensure alignment between the border of the calendar view and the border
of the date input, we can inset the edges of the view. Note that the inset
is not applied along the y-axis, to avoid a gap between the bottom of the
date input and the top of the calendar view.

  • UIProcess/mac/WebDateTimePickerMac.mm:

(-[WKDateTimePickerBackdropView drawRect:]):

1:58 PM Changeset in webkit [269539] by Alan Coon
  • 8 edits in branches/safari-610.2.11.51-branch/Source

Versioning.

WebKit-7610.2.11.51.10

1:55 PM Changeset in webkit [269538] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Only restore saved layer scroll position for RenderBox
https://bugs.webkit.org/show_bug.cgi?id=218502

Patch by Rob Buis <rbuis@igalia.com> on 2020-11-06
Reviewed by Simon Fraser.

The layer scroll position is only used by RenderBox
renderers, so when restoring the saved scroll position
only restore for RenderBox renderers.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::RenderLayer):

1:45 PM Changeset in webkit [269537] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Null check anchorBox
https://bugs.webkit.org/show_bug.cgi?id=218499

Patch by Rob Buis <rbuis@igalia.com> on 2020-11-06
Reviewed by Zalan Bujtas.

Null check anchorBox before calling the renderer method on it.

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):

1:34 PM Changeset in webkit [269536] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[build.webkit.org] Use workerEnvironment instead of slaveEnvironment for new Buildbot
https://bugs.webkit.org/show_bug.cgi?id=218656

Reviewed by Jonathan Bedard.

  • CISupport/build-webkit-org/steps.py:
1:07 PM Changeset in webkit [269535] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

Empty text runs can't be split any further.
https://bugs.webkit.org/show_bug.cgi?id=218506

Reviewed by David Kilzer and Ryosuke Niwa.

This patch ensures that when we can't fit an empty text run on the line (available space is negative) we don't
try to split it even when the style says so.

  • layout/inlineformatting/InlineContentBreaker.cpp:

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

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::fixedPitchWidth):
(WebCore::Layout::TextUtil::split):

1:05 PM Changeset in webkit [269534] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix build with different unified source arrangement.

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
12:32 PM Changeset in webkit [269533] by Wenson Hsieh
  • 12 edits
    1 delete in trunk/Source

Move DisplayListFlushIdentifier into WebCore as DisplayList::FlushIdentifier
https://bugs.webkit.org/show_bug.cgi?id=218586

Reviewed by Simon Fraser.

Source/WebCore:

Add DisplayList::FlushIdentifier. See WebKit for more ChangeLogs.

  • platform/graphics/displaylists/DisplayList.h:

Source/WebKit:

In preparation for adding a display list item to represent flushing the graphics context, move WebKit's
DisplayListFlushIdentifier to the DisplayList namespace in WebCore, and rename it to
DisplayList::FlushIdentifier.

No change in behavior.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::flushDisplayListWasCommitted):
(WebKit::RemoteRenderingBackend::flushDisplayListAndCommit):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Scripts/webkit/messages.py:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/DisplayListFlushIdentifier.h: Removed.
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::commitFlushDisplayList):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::flushDisplayListAndCommit):
(WebKit::RemoteRenderingBackendProxy::flushDisplayListWasCommitted):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in:
12:29 PM Changeset in webkit [269532] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Web Inspector: use weak collections for holding event listeners
https://bugs.webkit.org/show_bug.cgi?id=196956

Patch by Devin Rousso <Devin Rousso> on 2020-11-06
Reviewed by Joseph Pecoraro.

  • inspector/unit-tests/heap-snapshot-collection-event.html:

Followup from r269359 which replaced the string literal "HeapSnapshot.CollectionEvent"
with a defined WI.HeapSnapshotWorkerProxy.Event.Collection value.

12:23 PM Changeset in webkit [269531] by ysuzuki@apple.com
  • 57 edits
    1 add in trunk

Re-enable SharedArrayBuffer for JSC shell and Testers
https://bugs.webkit.org/show_bug.cgi?id=212069

Reviewed by Keith Miller.

JSTests:

Update tests to align to the latest spec.

  • stress/SharedArrayBuffer-opt.js:

(shouldSucceed):
(idx.of.string_appeared_here.a.of.arrays.m.of.atomics):
(string_appeared_here.a.of.arrays.m.of.atomics): Deleted.

  • stress/SharedArrayBuffer.js:

(shouldSucceed):
(Symbol):

  • stress/array-buffer-byte-length.js:

(shouldThrow):
(Symbol):

  • stress/atomics-add-uint32.js:
  • stress/atomics-known-int-use.js:
  • stress/atomics-neg-zero.js:
  • stress/atomics-store-return.js:
  • stress/lars-sab-workers.js:

(resources):
(notify):
(wake): Deleted.

  • stress/regress-170473.js:
  • stress/regress-189317.js:
  • stress/shared-array-buffer-sort-while-different-thread-is-modifying.js: Added.

(262.agent.waitUntil):
(262.agent.start.262.agent.receiveBroadcast):

  • test262/config.yaml:
  • test262/expectations.yaml:

LayoutTests/imported/w3c:

  • web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any-expected.txt:
  • web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.serviceworker-expected.txt:
  • web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/memory/constructor.any-expected.txt:
  • web-platform-tests/wasm/jsapi/memory/constructor.any.worker-expected.txt:
  • web-platform-tests/workers/postMessage_block.https-expected.txt:

Source/JavaScriptCore:

This patch revives SharedArrayBuffer and Atomics and aligning them to the latest spec.

  1. SharedArrayBuffer's sort should be done in JS side. C++ sort is not safe for SharedArrayBuffer since the buffer can be modified by different threads while sorting.
  2. Atomics.wait should be renamed to Atomics.notify.
  3. Atomics operation should be VarArgs in DFG because DFGSSALoweringPhase assumes that they are VarArgs and they can have another arg for CheckInBounds dependency.
  4. For test262, JSC shell should support "--can-block-is-false" flag. If it is true, the main thread's CanBlock? becomes false. This means that Atomics.wait cannot be used.
  • builtins/BuiltinNames.h:
  • builtins/TypedArrayPrototype.js:

(sort):

  • bytecode/LinkTimeConstant.h:
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGNode.h:

(JSC::DFG::Node::mustGenerate const):
(JSC::DFG::Node::hasVarArgs const):
(JSC::DFG::Node::mustGenerate): Deleted.

  • dfg/DFGNodeType.h:
  • dfg/DFGSSALoweringPhase.cpp:

(JSC::DFG::SSALoweringPhase::handleNode):

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileAtomicsIsLockFree):

  • jsc.cpp:

(printUsageStatement):
(CommandLine::parseArguments):
(runJSC):

  • runtime/AtomicsObject.cpp:

(JSC::AtomicsObject::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::JSC_DEFINE_JIT_OPERATION):

  • runtime/CommonIdentifiers.h:
  • runtime/Intrinsic.cpp:

(JSC::intrinsicName):

  • runtime/Intrinsic.h:
  • runtime/JSArrayBufferPrototype.cpp:

(JSC::arrayBufferSlice):
(JSC::arrayBufferByteLength):
(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::JSArrayBufferPrototype::finishCreation):

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::toIntegerOrInfinity const):

  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::genericTypedArrayViewProtoFuncReverse):
(JSC::genericTypedArrayViewPrivateFuncSort):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSTypedArrayViewPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSTypedArrayViewPrototype.h:
  • runtime/OptionsList.h:
  • runtime/SimpleTypedArrayController.cpp:

(JSC::SimpleTypedArrayController::SimpleTypedArrayController):
(JSC::SimpleTypedArrayController::isAtomicsWaitAllowedOnCurrentThread):

  • runtime/SimpleTypedArrayController.h:
  • runtime/SmallStrings.cpp:

(JSC::SmallStrings::initializeCommonStrings):
(JSC::SmallStrings::visitStrongReferences):

  • runtime/SmallStrings.h:

(JSC::SmallStrings::notEqualString const):
(JSC::SmallStrings::timedOutString const):
(JSC::SmallStrings::okString const):

Source/WTF:

  • wtf/PlatformEnable.h:

Tools:

  • Scripts/test262/Runner.pm:

(getFeatureFlags):

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(main):

LayoutTests:

  • webaudio/dom-exceptions-expected.txt:
12:22 PM Changeset in webkit [269530] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix the Windows 10 debug build after r269525

Speculative fix: add NO_RETURN_DUE_TO_ASSERT to method declarations in DisplayListItems.h as well.

  • platform/graphics/displaylists/DisplayListItems.h:
12:21 PM Changeset in webkit [269529] by achristensen@apple.com
  • 5 edits in trunk/Source/WebKit

Fix build after adding files to UIProcess/API/Cocoa
https://bugs.webkit.org/show_bug.cgi?id=218664

There is some code that assumes that unified sources always combine sources into the same translation units.
inspectorWebView is used from _WKInspectorTesting.mm, but only defined in _WKInspector.mm so it should be added to a header.
_WKUserContentWorld also doesn't include WKObject.h or RetainPtr.h but uses both.

  • UIProcess/API/Cocoa/_WKInspector.mm:

(-[_WKInspector inspectorWebView]): Deleted.

  • UIProcess/API/Cocoa/_WKInspectorPrivateForTesting.h:
  • UIProcess/API/Cocoa/_WKInspectorTesting.mm:

(-[_WKInspector inspectorWebView]):

  • UIProcess/API/Cocoa/_WKUserContentWorldInternal.h:
12:17 PM Changeset in webkit [269528] by commit-queue@webkit.org
  • 2 edits
    2 adds in trunk

Text gets clobbered when assigning to input.defaultValue
https://bugs.webkit.org/show_bug.cgi?id=217156

Patch by Joey Arhar <jarhar@chromium.org> on 2020-11-06
Reviewed by Darin Adler.

This fixes a bug where script assigning to the defaultValue property
of a number or email input causes the text the user entered into the
input to be clobbered when it doesn't perfectly match the sanitized
string returned by the .value property.

Test: LayoutTests/fast/forms/defaultValue-clobbering.html

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::parseAttribute):

11:37 AM Changeset in webkit [269527] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

Accelerated animations of individual transform properties should apply rotate before scale
https://bugs.webkit.org/show_bug.cgi?id=218659

Reviewed by Simon Fraser.

Not that applying scale before rotate makes any difference, but applying the operations in
the order specified in the CSS Transforms spec will make the code easier to understand between
this and RenderStyle::applyTransform().

No test since there is no change of behavior.

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::updateAnimations):

11:29 AM Changeset in webkit [269526] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Encoding PutImageData should not serialize separate IPC attachments for the image data
https://bugs.webkit.org/show_bug.cgi?id=218649

Reviewed by Simon Fraser.

The argument coder for WebCore::ImageData currently sends its image data by allocating a separate shared
memory buffer and sending it over to the GPU process via a separate IPC::Attachment. This isn't compatible
with the new "concurrent display list" model for processing display list items, wherein all out-of-line items
are encoded as raw bytes directly into reusable shared memory buffers and decoded from the corresponding buffer
in the GPU process.

Instead, encode and decode image data directly into and out of the main IPC data buffer. This also addresses a
couple of existing FIXMEs in the ImageData coder methods by avoiding the need for redundant copies to and from
temporary WebCore::SharedBuffers.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Ref<WebCore::ImageData>>::encode):
(IPC::ArgumentCoder<Ref<WebCore::ImageData>>::decode):

10:54 AM Changeset in webkit [269525] by Wenson Hsieh
  • 36 edits
    2 copies
    2 adds in trunk

[Concurrent display lists] Encode display list items directly into shared memory
https://bugs.webkit.org/show_bug.cgi?id=218406

Reviewed by Tim Horton.

Source/WebCore:

This patch refactors display lists (and display list items) in preparation for upcoming changes to allow the
GPU and web processes to concurrently read and write display list item data, which allows us to achieve
significant improvements in performance on many graphics benchmarks in MotionMark by removing overhead involved
in serializing and deserializing display list items over IPC. To implement this, rather than using IPC to encode
and decode each item, we will instead store display list items directly in memory shared between the web and GPU
processes.

This strategy, of course, will not work for display list items that contain pointers. Unfortunately, this
affects all display list items at the moment, since all items are subclasses of DisplayList::Item, and
therefore contain vtable pointers, even if all members are plain data types. Thus, the first step towards being
able to read and write items directly in shared memory is to remove this vtable pointer by making display list
items no longer inherit from DrawingItem or Item.

Currently, display lists are backed by Vector<Ref<Item>>; however, this no longer works once none of the
display list items are descended from a common base class. To address this, we introduce
DisplayList::ItemBuffer, which encapsulates logic to manage one or more data segments that contain display
list item data (i.e. display list items stacked adjacent to each other in memory). Display lists now append
inline display list items by constructing these items directly inside the item buffer using placement-new.

However, many types of display list items do not consist entirely of inline data; some of these are obvious,
such as DrawImage, DrawGlyphs, or StrokePath (since a Path may be arbitrarily complex). Other out-of-
line item types are less obvious: for instance, FillRoundedRect is an out-of-line item due to the fact that
the color of the rect (FillRoundedRect::m_color) may be an extended color, which then contains a pointer. In
these cases, we can't simply encode the item in shared memory and read it in the GPU process, since the pointer
(if it pointed to anything other than null in the web process) will point to arbitrary memory in the GPU
process. Instead, we can leverage our existing IPC infrastructure here by encoding each of these out-of-line
items as data and decoding them from this data in the GPU process. To do this, we delegate out to WebKit2 to
encode out-of-line display list items using WebKit's IPC::Encoder, and pass back a SharedBuffer which we
then copy into the item buffer. This delegation happens through the ItemBufferWritingClient class, which has
an implementation in WebKit2. On the decoding side in the GPU process, we then ask ItemBufferReadingClient (if
set) to convert this encoded data back into a display list item. In WebKit2, we implement this interface and use
the corresponding IPC::Decoder to decode the data we serialized earlier.

If no client is specified or the client does not require custom encoding/decoding for the given item type, we
fall back to constructing the item directly inside the writable item buffer data.

To make it easier to reason about these new (inheritance-free) display list items, we additionally introduce
ItemHandle, which wraps a pointer to a display list item and provides several helper methods. The first byte
of each item handle always points to an ItemType, and the following N bytes contain the item itself, where
N is the size of the item class. Here are some examples of how to use an ItemHandle:

DisplayList::ItemType type = itemHandle.type(); (This matches the current inheritance model)

if (itemHandle.is<StrokePath>()) {... (Replaces is<> in the current model)

auto& setStateItem = itemHandle.get<SetState>(); (Replaces downcast<> in the current model)

itemHandle.apply(myGraphicsContext); (This matches the current inheritance model)

bool isDrawingItem = itemHandle.isDrawingItem(); (Replaces checks for is<DrawingItem>(item))

When writing display lists for the GPU process, the writing client (a ItemBufferWritingClient) will be asked
to provide ItemBufferHandles where the item buffer will place item data (whether encoded, or as an inline
object). However, when using display lists outside of this context (e.g. in other parts of WebCore, such as the
glyph drawing cache), we don't have a ItemBufferWritingClient. To handle this, the item buffer instead
allocates its own (non-shared-memory) buffers, which it manages and deletes when it is done. If any out-of-line
items are constructed within these buffers, ItemBuffer will additionally call their destructors prior to
deleting these buffers.

See per-change comments below for more details.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/GraphicsContext.h:
  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::DisplayList):
(WebCore::DisplayList::DisplayList::operator=):

Implement the move assignment operator and move constructor by exchanging ownership of the item buffer.

(WebCore::DisplayList::DisplayList::clear):
(WebCore::DisplayList::DisplayList::shouldDumpForFlags):
(WebCore::DisplayList::DisplayList::asText const):
(WebCore::DisplayList::DisplayList::dump const):

Adjust the format when printing display lists to TextStream. Now that drawing item extents are tracked on the
display list rather than being on each drawing item, we print them out after each item (as opposed to being in
the middle of each item).

(WebCore::DisplayList::DisplayList::sizeInBytes const):

Tally up the size of the display list by taking the sum of the sizes of each readonly segment, as well as the
writable buffer size.

(WebCore::DisplayList::DisplayList::isEmpty const):

A DisplayList is empty if it contains no item data: in other words, there are no readonly buffer segments, and
there is also nothing written to the writable buffer segment.

(WebCore::DisplayList::DisplayList::itemBuffer):
(WebCore::DisplayList::DisplayList::setItemBufferClient):
(WebCore::DisplayList::DisplayList::forEachItemBuffer const):

Add a helper to iterate over each ItemBufferHandle in the display list. This includes all readonly handles, and
then the writable handle (if it exists).

(WebCore::DisplayList::DisplayList::setTracksDrawingItemExtents):

Add an option to allow the display list to track drawing item extents. Currently, display lists always track
extents for drawing items; however, when propagating display lists to the GPU process for playback, these
extents were never sent along with IPC, and so this ended up just being unnecessary work. Additionally, the
initial clip in the GPU process is also never set, so computing these extents never helped.

That said, drawing item extents are still printed out for the purposes of testing, so we need to keep this
logic intact; this refactoring only disables extent computation for display lists being sent to the GPU process
via remote image buffers. In a future patch, we could refactor this so that drawing items contain extent rects
as inline data that can be consulted in the GPU process.

(WebCore::DisplayList::DisplayList::append):

Display list items are no longer constructed ahead of time, and then appended to the display list. Instead,
append now takes the type of the item to append as a template typename argument, as well as the arguments that
will be used to construct the item.

(WebCore::DisplayList::DisplayList::iterator::atEnd const):
(WebCore::DisplayList::DisplayList::iterator::updateCurrentItem):
(WebCore::DisplayList::DisplayList::iterator::advance):
(WebCore::DisplayList::DisplayList::iterator::clearCurrentItem):
(WebCore::DisplayList::DisplayList::iterator::moveToEnd):
(WebCore::DisplayList::DisplayList::iterator::moveCursorToStartOfCurrentBuffer):

Implement a C++ iterator for DisplayList. This makes it possible to write code like this:
`
Suppose displayList is an instance of DisplayList::DisplayList.
for (auto [item, extent] : displayList) {

Do things with item, which is a DisplayList::ItemHandle.
Maybe do things with extent, which is an Optional<FloatRect>.

}
`

  • platform/graphics/displaylists/DisplayList.h:

(WebCore::DisplayList::DisplayList::tracksDrawingItemExtents const):
(WebCore::DisplayList::DisplayList::iterator::iterator):
(WebCore::DisplayList::DisplayList::iterator::~iterator):
(WebCore::DisplayList::DisplayList::iterator::operator==):
(WebCore::DisplayList::DisplayList::iterator::operator!=):
(WebCore::DisplayList::DisplayList::iterator::operator++):
(WebCore::DisplayList::DisplayList::iterator::operator* const):
(WebCore::DisplayList::DisplayList::begin const):
(WebCore::DisplayList::DisplayList::end const):
(WebCore::DisplayList::DisplayList::itemBufferIfExists const):
(WebCore::DisplayList::DisplayList::addDrawingItemExtent):
(WebCore::DisplayList::DisplayList::append):
(WebCore::DisplayList::Item::type const): Deleted.
(WebCore::DisplayList::Item::isDrawingItem const): Deleted.
(WebCore::DisplayList::DisplayList::list const): Deleted.
(WebCore::DisplayList::DisplayList::itemAt): Deleted.
(WebCore::DisplayList::DisplayList::isEmpty const): Deleted.
(WebCore::DisplayList::DisplayList::appendItem): Deleted.
(WebCore::DisplayList::DisplayList::list): Deleted.
(WebCore::DisplayList::DisplayList::encode const): Deleted.
(WebCore::DisplayList::DisplayList::decode): Deleted.

Remove the ability to encode and decode display lists, for the time being. For the communication between the
web and GPU processes, we now use SharedDisplayListHandle.

Unfortunately, this does mean that the extant ClipToDrawingCommands display list item will be broken for the
time being. In a followup patch, I plan to reimplement DisplayList::encode and decode in the new inline item
model by encoding each item (either as inline data or via IPC::Encoder::encodeSingleObject). However, this is
contingent on all display list item types (e.g. DrawImage and DrawGlyph) not relying on IPC::Attachment
for encoding, so support for ClipToDrawingCommands will need to wait until after fonts and images are working.

  • platform/graphics/displaylists/DisplayListDrawGlyphsRecorderCoreText.cpp:

(WebCore::DisplayList::DrawGlyphsRecorder::recordDrawGlyphs):
(WebCore::DisplayList::DrawGlyphsRecorder::recordDrawImage):

  • platform/graphics/displaylists/DisplayListDrawGlyphsRecorderHarfBuzz.cpp:

(WebCore::DisplayList::DrawGlyphsRecorder::drawGlyphs):

  • platform/graphics/displaylists/DisplayListDrawGlyphsRecorderWin.cpp:

(WebCore::DisplayList::DrawGlyphsRecorder::drawGlyphs):

Change these to use the new templated DisplayList::append method.

  • platform/graphics/displaylists/DisplayListDrawingContext.h:

(WebCore::DisplayList::DrawingContext::takeDisplayList):

Use std::exchange instead of WTFMove. This is actually necessary in order to ensure correctness (i.e. no
leaks or double-freeing), since the DisplayList instance that is being moved from needs to be empty so that it
does not try to call destructors on the items formerly inside of it.

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp: Added.

(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):

Add helper methods to apply a display list item to a GraphicsContext and call the display list item's
destructor, respectively.

(WebCore::DisplayList::ItemHandle::copyTo const):

Add a helper method to copy the item into the destination handle (calling the copy constructor of the item type
in the process). This is used when copying a validated display list item into the temporary item buffer in
DisplayList::iterator.

(WebCore::DisplayList::ItemBuffer::ItemBuffer):
(WebCore::DisplayList::ItemBuffer::~ItemBuffer):
(WebCore::DisplayList::m_allocatedBuffers):

In the case where there is no m_writingClient (for instance, when using in-process DisplayLists to optimize
text painting), the display list item buffer is responsible for creating and managing data buffers. As such, it
needs to remember to free any buffers that it allocated when appending, and must also destroy any out-of-line
display list items (i.e. items with nontrivial destructors) when it is finished.

(WebCore::DisplayList::m_readOnlyBuffers):
(WebCore::DisplayList::m_writableBuffer):
(WebCore::DisplayList::m_writtenNumberOfBytes):

See main ChangeLog entry above for more details.

(WebCore::DisplayList::ItemBuffer::operator=):
(WebCore::DisplayList::ItemBuffer::createItemBuffer):
(WebCore::DisplayList::ItemBuffer::forEachItemBuffer const):
(WebCore::DisplayList::ItemBuffer::clear):
(WebCore::DisplayList::ItemBuffer::swapWritableBufferIfNeeded):
(WebCore::DisplayList::ItemBuffer::appendDataAndLength):

  • platform/graphics/displaylists/DisplayListItemBuffer.h: Added.

(WebCore::DisplayList::ItemBufferHandle::operator bool const):
(WebCore::DisplayList::ItemBufferHandle::operator! const):
(WebCore::DisplayList::ItemHandle::operator bool const):
(WebCore::DisplayList::ItemHandle::operator! const):
(WebCore::DisplayList::ItemHandle::type const):
(WebCore::DisplayList::ItemHandle::size const):
(WebCore::DisplayList::ItemHandle::is const):
(WebCore::DisplayList::ItemHandle::get const):
(WebCore::DisplayList::ItemBufferWritingClient::~ItemBufferWritingClient):
(WebCore::DisplayList::ItemBufferReadingClient::~ItemBufferReadingClient):
(WebCore::DisplayList::ItemBuffer::sizeInBytes const):
(WebCore::DisplayList::ItemBuffer::isEmpty const):
(WebCore::DisplayList::ItemBuffer::append):
(WebCore::DisplayList::ItemBuffer::setClient):
(WebCore::DisplayList::ItemBuffer::readOnlyBuffers const):
(WebCore::DisplayList::ItemBuffer::uncheckedAppend):

  • platform/graphics/displaylists/DisplayListItems.cpp:

The changes in this file make up most of the code churn in this patch, but the changes are mostly mechanical. In
summary, this patch:

  • Add static constexprs for the ItemType of each display list item class, as well as whether or not each class is inline, and also whether or not each class is a drawing item.
  • Remove encode and decode methods from inline item classes.
  • Remove all overridden methods; each class now implements individual methods to apply, compute globalBounds (if applicable), and compute localBounds (again, if applicable).
  • Adjusts textstream dumping helpers, so that they no longer dump as a DrawingItem before dumping each member.

(WebCore::DisplayList::SetInlineFillGradient::SetInlineFillGradient):
(WebCore::DisplayList::SetState::SetState):
(WebCore::DisplayList::DrawGlyphs::DrawGlyphs):
(WebCore::DisplayList::DrawGlyphs::generateGlyphBuffer const):
(WebCore::DisplayList::DrawGlyphs::apply const):
(WebCore::DisplayList::operator<<):
(WebCore::DisplayList::DrawNativeImage::DrawNativeImage):
(WebCore::DisplayList::DrawPattern::DrawPattern):
(WebCore::DisplayList::DrawLinesForText::DrawLinesForText):
(WebCore::DisplayList::DrawFocusRingRects::DrawFocusRingRects):
(WebCore::DisplayList::FillRectWithGradient::FillRectWithGradient):
(WebCore::DisplayList::PutImageData::PutImageData):
(WebCore::DisplayList::PaintFrameForMedia::PaintFrameForMedia):
(WebCore::DisplayList::Item::Item): Deleted.
(WebCore::DisplayList::Item::sizeInBytes): Deleted.
(WebCore::DisplayList::DrawingItem::DrawingItem): Deleted.
(WebCore::DisplayList::Save::Save): Deleted.
(WebCore::DisplayList::Restore::Restore): Deleted.
(WebCore::DisplayList::Translate::Translate): Deleted.
(WebCore::DisplayList::Rotate::Rotate): Deleted.
(WebCore::DisplayList::Scale::Scale): Deleted.
(WebCore::DisplayList::SetCTM::SetCTM): Deleted.
(WebCore::DisplayList::ConcatenateCTM::ConcatenateCTM): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::create): Deleted.
(WebCore::DisplayList::SetInlineFillColor::create): Deleted.
(WebCore::DisplayList::SetInlineStrokeColor::create): Deleted.
(WebCore::DisplayList::SetStrokeThickness::create): Deleted.
(WebCore::DisplayList::SetLineCap::SetLineCap): Deleted.
(WebCore::DisplayList::SetLineDash::SetLineDash): Deleted.
(WebCore::DisplayList::SetLineJoin::SetLineJoin): Deleted.
(WebCore::DisplayList::SetMiterLimit::SetMiterLimit): Deleted.
(WebCore::DisplayList::ClearShadow::ClearShadow): Deleted.
(WebCore::DisplayList::Clip::Clip): Deleted.
(WebCore::DisplayList::ClipOut::ClipOut): Deleted.
(WebCore::DisplayList::ClipOutToPath::ClipOutToPath): Deleted.
(WebCore::DisplayList::ClipPath::ClipPath): Deleted.
(WebCore::DisplayList::ClipToDrawingCommands::ClipToDrawingCommands): Deleted.
(WebCore::DisplayList::DrawGlyphs::localBounds const): Deleted.
(WebCore::DisplayList::DrawImage::DrawImage): Deleted.
(WebCore::DisplayList::DrawTiledImage::DrawTiledImage): Deleted.
(WebCore::DisplayList::DrawTiledScaledImage::DrawTiledScaledImage): Deleted.
(WebCore::DisplayList::DrawImageBuffer::DrawImageBuffer): Deleted.
(WebCore::DisplayList::DrawRect::DrawRect): Deleted.
(WebCore::DisplayList::DrawLine::DrawLine): Deleted.
(WebCore::DisplayList::DrawDotsForDocumentMarker::DrawDotsForDocumentMarker): Deleted.
(WebCore::DisplayList::DrawEllipse::DrawEllipse): Deleted.
(WebCore::DisplayList::DrawPath::DrawPath): Deleted.
(WebCore::DisplayList::DrawFocusRingPath::DrawFocusRingPath): Deleted.
(WebCore::DisplayList::FillRect::FillRect): Deleted.
(WebCore::DisplayList::FillRectWithColor::FillRectWithColor): Deleted.
(WebCore::DisplayList::FillCompositedRect::FillCompositedRect): Deleted.
(WebCore::DisplayList::FillRoundedRect::FillRoundedRect): Deleted.
(WebCore::DisplayList::FillRectWithRoundedHole::FillRectWithRoundedHole): Deleted.
(WebCore::DisplayList::FillInlinePath::FillInlinePath): Deleted.
(WebCore::DisplayList::FillPath::FillPath): Deleted.
(WebCore::DisplayList::FillEllipse::FillEllipse): Deleted.
(WebCore::DisplayList::PaintFrameForMedia::create): Deleted.
(WebCore::DisplayList::StrokeRect::StrokeRect): Deleted.
(WebCore::DisplayList::StrokeEllipse::StrokeEllipse): Deleted.
(WebCore::DisplayList::StrokeInlinePath::StrokeInlinePath): Deleted.
(WebCore::DisplayList::StrokePath::StrokePath): Deleted.
(WebCore::DisplayList::ClearRect::ClearRect): Deleted.
(WebCore::DisplayList::BeginTransparencyLayer::BeginTransparencyLayer): Deleted.
(WebCore::DisplayList::EndTransparencyLayer::EndTransparencyLayer): Deleted.
(WebCore::DisplayList::ApplyStrokePattern::ApplyStrokePattern): Deleted.
(WebCore::DisplayList::ApplyFillPattern::ApplyFillPattern): Deleted.
(WebCore::DisplayList::ApplyDeviceScaleFactor::ApplyDeviceScaleFactor): Deleted.

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::Save::localBounds const):
(WebCore::DisplayList::Save::globalBounds const):
(WebCore::DisplayList::Restore::localBounds const):
(WebCore::DisplayList::Restore::globalBounds const):
(WebCore::DisplayList::Translate::Translate):
(WebCore::DisplayList::Translate::localBounds const):
(WebCore::DisplayList::Translate::globalBounds const):
(WebCore::DisplayList::Rotate::Rotate):
(WebCore::DisplayList::Rotate::localBounds const):
(WebCore::DisplayList::Rotate::globalBounds const):
(WebCore::DisplayList::Scale::Scale):
(WebCore::DisplayList::Scale::localBounds const):
(WebCore::DisplayList::Scale::globalBounds const):
(WebCore::DisplayList::SetCTM::SetCTM):
(WebCore::DisplayList::SetCTM::localBounds const):
(WebCore::DisplayList::SetCTM::globalBounds const):
(WebCore::DisplayList::ConcatenateCTM::ConcatenateCTM):
(WebCore::DisplayList::ConcatenateCTM::localBounds const):
(WebCore::DisplayList::ConcatenateCTM::globalBounds const):
(WebCore::DisplayList::SetInlineFillGradient::localBounds const):
(WebCore::DisplayList::SetInlineFillGradient::globalBounds const):
(WebCore::DisplayList::SetInlineFillColor::SetInlineFillColor):
(WebCore::DisplayList::SetInlineFillColor::color const):
(WebCore::DisplayList::SetInlineFillColor::localBounds const):
(WebCore::DisplayList::SetInlineFillColor::globalBounds const):
(WebCore::DisplayList::SetInlineStrokeColor::SetInlineStrokeColor):
(WebCore::DisplayList::SetInlineStrokeColor::color const):
(WebCore::DisplayList::SetInlineStrokeColor::localBounds const):
(WebCore::DisplayList::SetInlineStrokeColor::globalBounds const):
(WebCore::DisplayList::SetStrokeThickness::SetStrokeThickness):
(WebCore::DisplayList::SetStrokeThickness::thickness const):
(WebCore::DisplayList::SetStrokeThickness::localBounds const):
(WebCore::DisplayList::SetStrokeThickness::globalBounds const):
(WebCore::DisplayList::SetState::localBounds const):
(WebCore::DisplayList::SetState::globalBounds const):
(WebCore::DisplayList::SetState::decode):
(WebCore::DisplayList::SetLineCap::SetLineCap):
(WebCore::DisplayList::SetLineCap::localBounds const):
(WebCore::DisplayList::SetLineCap::globalBounds const):
(WebCore::DisplayList::SetLineDash::SetLineDash):
(WebCore::DisplayList::SetLineDash::localBounds const):
(WebCore::DisplayList::SetLineDash::globalBounds const):
(WebCore::DisplayList::SetLineDash::decode):
(WebCore::DisplayList::SetLineJoin::SetLineJoin):
(WebCore::DisplayList::SetLineJoin::localBounds const):
(WebCore::DisplayList::SetLineJoin::globalBounds const):
(WebCore::DisplayList::SetMiterLimit::SetMiterLimit):
(WebCore::DisplayList::SetMiterLimit::localBounds const):
(WebCore::DisplayList::SetMiterLimit::globalBounds const):
(WebCore::DisplayList::ClearShadow::localBounds const):
(WebCore::DisplayList::ClearShadow::globalBounds const):
(WebCore::DisplayList::Clip::Clip):
(WebCore::DisplayList::Clip::rect const):
(WebCore::DisplayList::Clip::localBounds const):
(WebCore::DisplayList::Clip::globalBounds const):
(WebCore::DisplayList::ClipOut::ClipOut):
(WebCore::DisplayList::ClipOut::rect const):
(WebCore::DisplayList::ClipOut::localBounds const):
(WebCore::DisplayList::ClipOut::globalBounds const):
(WebCore::DisplayList::ClipOutToPath::ClipOutToPath):
(WebCore::DisplayList::ClipOutToPath::localBounds const):
(WebCore::DisplayList::ClipOutToPath::globalBounds const):
(WebCore::DisplayList::ClipOutToPath::decode):
(WebCore::DisplayList::ClipPath::ClipPath):
(WebCore::DisplayList::ClipPath::localBounds const):
(WebCore::DisplayList::ClipPath::globalBounds const):
(WebCore::DisplayList::ClipPath::decode):
(WebCore::DisplayList::ClipToDrawingCommands::ClipToDrawingCommands):
(WebCore::DisplayList::ClipToDrawingCommands::localBounds const):
(WebCore::DisplayList::ClipToDrawingCommands::globalBounds const):
(WebCore::DisplayList::ClipToDrawingCommands::encode const):
(WebCore::DisplayList::ClipToDrawingCommands::decode):
(WebCore::DisplayList::DrawGlyphs::globalBounds const):
(WebCore::DisplayList::DrawGlyphs::localBounds const):
(WebCore::DisplayList::DrawGlyphs::encode const):
(WebCore::DisplayList::DrawGlyphs::decode):
(WebCore::DisplayList::DrawImage::DrawImage):
(WebCore::DisplayList::DrawImage::globalBounds const):
(WebCore::DisplayList::DrawImage::localBounds const):
(WebCore::DisplayList::DrawImage::decode):
(WebCore::DisplayList::DrawTiledImage::DrawTiledImage):
(WebCore::DisplayList::DrawTiledImage::globalBounds const):
(WebCore::DisplayList::DrawTiledImage::localBounds const):
(WebCore::DisplayList::DrawTiledImage::decode):
(WebCore::DisplayList::DrawTiledScaledImage::DrawTiledScaledImage):
(WebCore::DisplayList::DrawTiledScaledImage::globalBounds const):
(WebCore::DisplayList::DrawTiledScaledImage::localBounds const):
(WebCore::DisplayList::DrawTiledScaledImage::decode):
(WebCore::DisplayList::DrawImageBuffer::DrawImageBuffer):
(WebCore::DisplayList::DrawImageBuffer::globalBounds const):
(WebCore::DisplayList::DrawImageBuffer::localBounds const):
(WebCore::DisplayList::DrawImageBuffer::decode):
(WebCore::DisplayList::DrawNativeImage::source const):
(WebCore::DisplayList::DrawNativeImage::destinationRect const):
(WebCore::DisplayList::DrawNativeImage::globalBounds const):
(WebCore::DisplayList::DrawNativeImage::localBounds const):
(WebCore::DisplayList::DrawNativeImage::decode):
(WebCore::DisplayList::DrawPattern::DrawPattern):
(WebCore::DisplayList::DrawPattern::globalBounds const):
(WebCore::DisplayList::DrawPattern::localBounds const):
(WebCore::DisplayList::DrawPattern::decode):
(WebCore::DisplayList::BeginTransparencyLayer::BeginTransparencyLayer):
(WebCore::DisplayList::BeginTransparencyLayer::localBounds const):
(WebCore::DisplayList::BeginTransparencyLayer::globalBounds const):
(WebCore::DisplayList::EndTransparencyLayer::localBounds const):
(WebCore::DisplayList::EndTransparencyLayer::globalBounds const):
(WebCore::DisplayList::DrawRect::DrawRect):
(WebCore::DisplayList::DrawRect::globalBounds const):
(WebCore::DisplayList::DrawRect::localBounds const):
(WebCore::DisplayList::DrawLine::DrawLine):
(WebCore::DisplayList::DrawLine::globalBounds const):
(WebCore::DisplayList::DrawLinesForText::globalBounds const):
(WebCore::DisplayList::DrawLinesForText::decode):
(WebCore::DisplayList::DrawDotsForDocumentMarker::DrawDotsForDocumentMarker):
(WebCore::DisplayList::DrawDotsForDocumentMarker::globalBounds const):
(WebCore::DisplayList::DrawEllipse::DrawEllipse):
(WebCore::DisplayList::DrawEllipse::rect const):
(WebCore::DisplayList::DrawEllipse::globalBounds const):
(WebCore::DisplayList::DrawEllipse::localBounds const):
(WebCore::DisplayList::DrawPath::DrawPath):
(WebCore::DisplayList::DrawPath::globalBounds const):
(WebCore::DisplayList::DrawPath::localBounds const):
(WebCore::DisplayList::DrawPath::decode):
(WebCore::DisplayList::DrawFocusRingPath::DrawFocusRingPath):
(WebCore::DisplayList::DrawFocusRingPath::globalBounds const):
(WebCore::DisplayList::DrawFocusRingPath::decode):
(WebCore::DisplayList::DrawFocusRingRects::globalBounds const):
(WebCore::DisplayList::DrawFocusRingRects::decode):
(WebCore::DisplayList::FillRect::FillRect):
(WebCore::DisplayList::FillRect::rect const):
(WebCore::DisplayList::FillRect::globalBounds const):
(WebCore::DisplayList::FillRect::localBounds const):
(WebCore::DisplayList::FillRectWithColor::FillRectWithColor):
(WebCore::DisplayList::FillRectWithColor::globalBounds const):
(WebCore::DisplayList::FillRectWithColor::localBounds const):
(WebCore::DisplayList::FillRectWithColor::decode):
(WebCore::DisplayList::FillRectWithGradient::rect const):
(WebCore::DisplayList::FillRectWithGradient::gradient const):
(WebCore::DisplayList::FillRectWithGradient::globalBounds const):
(WebCore::DisplayList::FillRectWithGradient::localBounds const):
(WebCore::DisplayList::FillRectWithGradient::decode):
(WebCore::DisplayList::FillCompositedRect::FillCompositedRect):
(WebCore::DisplayList::FillCompositedRect::globalBounds const):
(WebCore::DisplayList::FillCompositedRect::localBounds const):
(WebCore::DisplayList::FillCompositedRect::decode):
(WebCore::DisplayList::FillRoundedRect::FillRoundedRect):
(WebCore::DisplayList::FillRoundedRect::globalBounds const):
(WebCore::DisplayList::FillRoundedRect::localBounds const):
(WebCore::DisplayList::FillRoundedRect::decode):
(WebCore::DisplayList::FillRectWithRoundedHole::FillRectWithRoundedHole):
(WebCore::DisplayList::FillRectWithRoundedHole::globalBounds const):
(WebCore::DisplayList::FillRectWithRoundedHole::localBounds const):
(WebCore::DisplayList::FillRectWithRoundedHole::decode):
(WebCore::DisplayList::FillInlinePath::FillInlinePath):
(WebCore::DisplayList::FillInlinePath::globalBounds const):
(WebCore::DisplayList::FillInlinePath::localBounds const):
(WebCore::DisplayList::FillPath::FillPath):
(WebCore::DisplayList::FillPath::globalBounds const):
(WebCore::DisplayList::FillPath::localBounds const):
(WebCore::DisplayList::FillPath::decode):
(WebCore::DisplayList::FillEllipse::FillEllipse):
(WebCore::DisplayList::FillEllipse::globalBounds const):
(WebCore::DisplayList::FillEllipse::localBounds const):
(WebCore::DisplayList::PutImageData::imageData const):
(WebCore::DisplayList::PutImageData::localBounds const):
(WebCore::DisplayList::PutImageData::globalBounds const):
(WebCore::DisplayList::PutImageData::encode const):
(WebCore::DisplayList::PutImageData::decode):
(WebCore::DisplayList::PaintFrameForMedia::localBounds const):
(WebCore::DisplayList::PaintFrameForMedia::globalBounds const):
(WebCore::DisplayList::StrokeRect::StrokeRect):
(WebCore::DisplayList::StrokeRect::globalBounds const):
(WebCore::DisplayList::StrokeInlinePath::StrokeInlinePath):
(WebCore::DisplayList::StrokeInlinePath::globalBounds const):
(WebCore::DisplayList::StrokePath::StrokePath):
(WebCore::DisplayList::StrokePath::globalBounds const):
(WebCore::DisplayList::StrokePath::decode):
(WebCore::DisplayList::StrokeEllipse::StrokeEllipse):
(WebCore::DisplayList::StrokeEllipse::rect const):
(WebCore::DisplayList::StrokeEllipse::globalBounds const):
(WebCore::DisplayList::ClearRect::ClearRect):
(WebCore::DisplayList::ClearRect::rect const):
(WebCore::DisplayList::ClearRect::globalBounds const):
(WebCore::DisplayList::ClearRect::localBounds const):
(WebCore::DisplayList::ApplyStrokePattern::localBounds const):
(WebCore::DisplayList::ApplyStrokePattern::globalBounds const):
(WebCore::DisplayList::ApplyFillPattern::localBounds const):
(WebCore::DisplayList::ApplyFillPattern::globalBounds const):
(WebCore::DisplayList::ApplyDeviceScaleFactor::ApplyDeviceScaleFactor):
(WebCore::DisplayList::ApplyDeviceScaleFactor::localBounds const):
(WebCore::DisplayList::ApplyDeviceScaleFactor::globalBounds const):
(WebCore::DisplayList::DrawingItem::setExtent): Deleted.
(WebCore::DisplayList::DrawingItem::extent const): Deleted.
(WebCore::DisplayList::DrawingItem::extentKnown const): Deleted.
(WebCore::DisplayList::DrawingItem::localBounds const): Deleted.
(WebCore::DisplayList::DrawingItem::globalBounds const): Deleted.
(WebCore::DisplayList::Save::create): Deleted.
(WebCore::DisplayList::Save::encode const): Deleted.
(WebCore::DisplayList::Save::decode): Deleted.
(WebCore::DisplayList::Restore::create): Deleted.
(WebCore::DisplayList::Restore::encode const): Deleted.
(WebCore::DisplayList::Restore::decode): Deleted.
(WebCore::DisplayList::Translate::create): Deleted.
(WebCore::DisplayList::Translate::encode const): Deleted.
(WebCore::DisplayList::Translate::decode): Deleted.
(WebCore::DisplayList::Rotate::create): Deleted.
(WebCore::DisplayList::Rotate::encode const): Deleted.
(WebCore::DisplayList::Rotate::decode): Deleted.
(WebCore::DisplayList::Scale::create): Deleted.
(WebCore::DisplayList::Scale::encode const): Deleted.
(WebCore::DisplayList::Scale::decode): Deleted.
(WebCore::DisplayList::SetCTM::create): Deleted.
(WebCore::DisplayList::SetCTM::encode const): Deleted.
(WebCore::DisplayList::SetCTM::decode): Deleted.
(WebCore::DisplayList::ConcatenateCTM::create): Deleted.
(WebCore::DisplayList::ConcatenateCTM::encode const): Deleted.
(WebCore::DisplayList::ConcatenateCTM::decode): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::create): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::encode const): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::decode): Deleted.
(WebCore::DisplayList::SetInlineFillColor::encode const): Deleted.
(WebCore::DisplayList::SetInlineFillColor::decode): Deleted.
(WebCore::DisplayList::SetInlineStrokeColor::encode const): Deleted.
(WebCore::DisplayList::SetInlineStrokeColor::decode): Deleted.
(WebCore::DisplayList::SetStrokeThickness::encode const): Deleted.
(WebCore::DisplayList::SetStrokeThickness::decode): Deleted.
(WebCore::DisplayList::SetState::create): Deleted.
(WebCore::DisplayList::SetLineCap::create): Deleted.
(WebCore::DisplayList::SetLineCap::encode const): Deleted.
(WebCore::DisplayList::SetLineCap::decode): Deleted.
(WebCore::DisplayList::SetLineDash::create): Deleted.
(WebCore::DisplayList::SetLineJoin::create): Deleted.
(WebCore::DisplayList::SetLineJoin::encode const): Deleted.
(WebCore::DisplayList::SetLineJoin::decode): Deleted.
(WebCore::DisplayList::SetMiterLimit::create): Deleted.
(WebCore::DisplayList::SetMiterLimit::encode const): Deleted.
(WebCore::DisplayList::SetMiterLimit::decode): Deleted.
(WebCore::DisplayList::ClearShadow::create): Deleted.
(WebCore::DisplayList::ClearShadow::encode const): Deleted.
(WebCore::DisplayList::ClearShadow::decode): Deleted.
(WebCore::DisplayList::Clip::create): Deleted.
(WebCore::DisplayList::Clip::encode const): Deleted.
(WebCore::DisplayList::Clip::decode): Deleted.
(WebCore::DisplayList::ClipOut::create): Deleted.
(WebCore::DisplayList::ClipOut::encode const): Deleted.
(WebCore::DisplayList::ClipOut::decode): Deleted.
(WebCore::DisplayList::ClipOutToPath::create): Deleted.
(WebCore::DisplayList::ClipPath::create): Deleted.
(WebCore::DisplayList::ClipToDrawingCommands::create): Deleted.
(WebCore::DisplayList::DrawGlyphs::create): Deleted.
(WebCore::DisplayList::DrawImage::create): Deleted.
(WebCore::DisplayList::DrawTiledImage::create): Deleted.
(WebCore::DisplayList::DrawTiledScaledImage::create): Deleted.
(WebCore::DisplayList::DrawImageBuffer::create): Deleted.
(WebCore::DisplayList::DrawNativeImage::create): Deleted.
(WebCore::DisplayList::DrawPattern::create): Deleted.
(WebCore::DisplayList::BeginTransparencyLayer::create): Deleted.
(WebCore::DisplayList::BeginTransparencyLayer::encode const): Deleted.
(WebCore::DisplayList::BeginTransparencyLayer::decode): Deleted.
(WebCore::DisplayList::EndTransparencyLayer::create): Deleted.
(WebCore::DisplayList::EndTransparencyLayer::encode const): Deleted.
(WebCore::DisplayList::EndTransparencyLayer::decode): Deleted.
(WebCore::DisplayList::DrawRect::create): Deleted.
(WebCore::DisplayList::DrawRect::encode const): Deleted.
(WebCore::DisplayList::DrawRect::decode): Deleted.
(WebCore::DisplayList::DrawLine::create): Deleted.
(WebCore::DisplayList::DrawLine::encode const): Deleted.
(WebCore::DisplayList::DrawLine::decode): Deleted.
(WebCore::DisplayList::DrawLinesForText::create): Deleted.
(WebCore::DisplayList::DrawDotsForDocumentMarker::create): Deleted.
(WebCore::DisplayList::DrawDotsForDocumentMarker::encode const): Deleted.
(WebCore::DisplayList::DrawDotsForDocumentMarker::decode): Deleted.
(WebCore::DisplayList::DrawEllipse::create): Deleted.
(WebCore::DisplayList::DrawEllipse::encode const): Deleted.
(WebCore::DisplayList::DrawEllipse::decode): Deleted.
(WebCore::DisplayList::DrawPath::create): Deleted.
(WebCore::DisplayList::DrawFocusRingPath::create): Deleted.
(WebCore::DisplayList::DrawFocusRingRects::create): Deleted.
(WebCore::DisplayList::FillRect::create): Deleted.
(WebCore::DisplayList::FillRect::encode const): Deleted.
(WebCore::DisplayList::FillRect::decode): Deleted.
(WebCore::DisplayList::FillRectWithColor::create): Deleted.
(WebCore::DisplayList::FillRectWithGradient::create): Deleted.
(WebCore::DisplayList::FillCompositedRect::create): Deleted.
(WebCore::DisplayList::FillRoundedRect::create): Deleted.
(WebCore::DisplayList::FillRectWithRoundedHole::create): Deleted.
(WebCore::DisplayList::FillInlinePath::create): Deleted.
(WebCore::DisplayList::FillInlinePath::encode const): Deleted.
(WebCore::DisplayList::FillInlinePath::decode): Deleted.
(WebCore::DisplayList::FillPath::create): Deleted.
(WebCore::DisplayList::FillEllipse::create): Deleted.
(WebCore::DisplayList::FillEllipse::encode const): Deleted.
(WebCore::DisplayList::FillEllipse::decode): Deleted.
(WebCore::DisplayList::PutImageData::create): Deleted.
(WebCore::DisplayList::PaintFrameForMedia::encode const): Deleted.
(WebCore::DisplayList::PaintFrameForMedia::decode): Deleted.
(WebCore::DisplayList::StrokeRect::create): Deleted.
(WebCore::DisplayList::StrokeRect::encode const): Deleted.
(WebCore::DisplayList::StrokeRect::decode): Deleted.
(WebCore::DisplayList::StrokeInlinePath::create): Deleted.
(WebCore::DisplayList::StrokeInlinePath::encode const): Deleted.
(WebCore::DisplayList::StrokeInlinePath::decode): Deleted.
(WebCore::DisplayList::StrokePath::create): Deleted.
(WebCore::DisplayList::StrokeEllipse::create): Deleted.
(WebCore::DisplayList::StrokeEllipse::encode const): Deleted.
(WebCore::DisplayList::StrokeEllipse::decode): Deleted.
(WebCore::DisplayList::ClearRect::create): Deleted.
(WebCore::DisplayList::ClearRect::encode const): Deleted.
(WebCore::DisplayList::ClearRect::decode): Deleted.
(WebCore::DisplayList::ApplyStrokePattern::create): Deleted.
(WebCore::DisplayList::ApplyStrokePattern::encode const): Deleted.
(WebCore::DisplayList::ApplyStrokePattern::decode): Deleted.
(WebCore::DisplayList::ApplyFillPattern::create): Deleted.
(WebCore::DisplayList::ApplyFillPattern::encode const): Deleted.
(WebCore::DisplayList::ApplyFillPattern::decode): Deleted.
(WebCore::DisplayList::ApplyDeviceScaleFactor::create): Deleted.
(WebCore::DisplayList::ApplyDeviceScaleFactor::encode const): Deleted.
(WebCore::DisplayList::ApplyDeviceScaleFactor::decode): Deleted.
(WebCore::DisplayList::Item::encode const): Deleted.
(WebCore::DisplayList::Item::decode): Deleted.

Delete the generic Item::encode and Item::decode methods, since only out-of-line display list items have
encode and decode functions now.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::putImageData):
(WebCore::DisplayList::Recorder::appendStateChangeItem):
(WebCore::DisplayList::Recorder::clearShadow):
(WebCore::DisplayList::Recorder::setLineCap):
(WebCore::DisplayList::Recorder::setLineDash):
(WebCore::DisplayList::Recorder::setLineJoin):
(WebCore::DisplayList::Recorder::setMiterLimit):
(WebCore::DisplayList::Recorder::drawImage):
(WebCore::DisplayList::Recorder::drawTiledImage):
(WebCore::DisplayList::Recorder::drawImageBuffer):
(WebCore::DisplayList::Recorder::drawNativeImage):
(WebCore::DisplayList::Recorder::drawPattern):
(WebCore::DisplayList::Recorder::save):
(WebCore::DisplayList::Recorder::restore):
(WebCore::DisplayList::Recorder::translate):
(WebCore::DisplayList::Recorder::rotate):
(WebCore::DisplayList::Recorder::scale):
(WebCore::DisplayList::Recorder::concatCTM):
(WebCore::DisplayList::Recorder::setCTM):
(WebCore::DisplayList::Recorder::beginTransparencyLayer):
(WebCore::DisplayList::Recorder::endTransparencyLayer):
(WebCore::DisplayList::Recorder::drawRect):
(WebCore::DisplayList::Recorder::drawLine):
(WebCore::DisplayList::Recorder::drawLinesForText):
(WebCore::DisplayList::Recorder::drawDotsForDocumentMarker):
(WebCore::DisplayList::Recorder::drawEllipse):
(WebCore::DisplayList::Recorder::drawPath):
(WebCore::DisplayList::Recorder::drawFocusRing):
(WebCore::DisplayList::Recorder::fillRect):
(WebCore::DisplayList::Recorder::fillRoundedRect):
(WebCore::DisplayList::Recorder::fillRectWithRoundedHole):
(WebCore::DisplayList::Recorder::fillPath):
(WebCore::DisplayList::Recorder::fillEllipse):
(WebCore::DisplayList::Recorder::strokeRect):
(WebCore::DisplayList::Recorder::strokePath):
(WebCore::DisplayList::Recorder::strokeEllipse):
(WebCore::DisplayList::Recorder::clearRect):
(WebCore::DisplayList::Recorder::applyStrokePattern):
(WebCore::DisplayList::Recorder::applyFillPattern):
(WebCore::DisplayList::Recorder::clip):
(WebCore::DisplayList::Recorder::clipOut):
(WebCore::DisplayList::Recorder::clipPath):
(WebCore::DisplayList::Recorder::clipToDrawingCommands):
(WebCore::DisplayList::Recorder::paintFrameForMedia):
(WebCore::DisplayList::Recorder::applyDeviceScaleFactor):

Change these methods that append display list items en masse, such that they go from this:

m_displayList.append(Foo::create(arg1, arg2, arg3));

...to this:

m_displayList.append<Foo>(arg1, arg2, arg3);

(WebCore::DisplayList::Recorder::extentFromLocalBounds const):
(WebCore::DisplayList::Recorder::appendItemAndUpdateExtent): Deleted.
(WebCore::DisplayList::Recorder::appendItem): Deleted.
(WebCore::DisplayList::Recorder::updateItemExtent const): Deleted.

Extents are now automatically updated (unless otherwise specified) for any drawing items that are appended.

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::append):

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::replay):

  • platform/graphics/displaylists/DisplayListReplayer.h:

(WebCore::DisplayList::Replayer::Delegate::apply):

Source/WebKit:

Adjust for changes to display lists and display list items in WebCore (see Source/WebCore/ChangeLog for more
information). In particular, we implement the reading and writing client hooks consulted by ItemBuffer, and we
also add a temporary mechanism that allows RemoteRenderingBackendProxy (in the web process) to send display list
item data through shared memory to the RemoteRenderingBackend (in the GPU process). This temporary mechanism
does not attempt to make any reading or writing in shared memory concurrent between the GPU and web processes,
and exists only to make sure that rendering with the GPU process still works using these new display list items.

In the next patch, I will add a simple concurrent reader/writer model for display list processing between the
web and GPU processes, and (in doing so) revert most of the changes in RemoteRenderingBackend and
RemoteRenderingBackendProxy below.

See comments below for more detail.

  • GPUProcess/graphics/RemoteImageBuffer.h:

(WebKit::RemoteImageBuffer::decodeAndCreate):

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::applyResourceItem):
(WebKit::RemoteRenderingBackend::applyMediaItem):

Refactor these to take WebCore::DisplayList::ItemHandle.

(WebKit::RemoteRenderingBackend::applyDisplayList):
(WebKit::RemoteRenderingBackend::flushDisplayList):
(WebKit::RemoteRenderingBackend::flushDisplayListAndCommit):
(WebKit::RemoteRenderingBackend::didCreateSharedItemData):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Scripts/webkit/messages.py:
  • Shared/SharedDisplayListHandle.cpp: Added.

(WebKit::SharedDisplayListHandle::SharedDisplayListHandle):
(WebKit::SharedDisplayListHandle::createDisplayList const):

  • Shared/SharedDisplayListHandle.h: Added.

Add a WebKit2 helper class that represents display list data in shared memory that is propagated from the web
process to the GPU process. In the next patch, this class will be rewritten to support concurrent display list
reading and writing, with specialized subclasses in service of both the reader (i.e. the GPU process) and the
writer (i.e. the web process).

(WebKit::SharedDisplayListHandle::SharedDisplayListHandle):
(WebKit::SharedDisplayListHandle::encode const):
(WebKit::SharedDisplayListHandle::decode):

  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::RemoteImageBufferProxy):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::flushDisplayList):
(WebKit::RemoteRenderingBackendProxy::flushDisplayListAndCommit):
(WebKit::RemoteRenderingBackendProxy::createItemBuffer):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in:
  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:

LayoutTests:

Rebaseline several existing (non-GPU-process) display list tests to account for a slight tweak in the format in
which display lists are dumped as text. More specifically, drawing item extents are now dumped after each
drawing item, rather than before.

  • displaylists/canvas-display-list-expected.txt:
  • displaylists/extent-includes-shadow-expected.txt:
  • displaylists/extent-includes-transforms-expected.txt:
  • displaylists/layer-dispay-list-expected.txt:
  • displaylists/replay-skip-clipped-rect-expected.txt:
10:44 AM Changeset in webkit [269524] by Truitt Savell
  • 34 edits
    15 deletes in trunk

Unreviewed, reverting r269486.

Caused 50+ timeouts on Mac Debug WK2

Reverted changeset:

"[Cocoa] Inspector Extensions: Add _WKInspectorExtension and
related plumbing"
https://bugs.webkit.org/show_bug.cgi?id=217783
https://trac.webkit.org/changeset/269486

10:42 AM Changeset in webkit [269523] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Add some missing header includes in WebAuthenticatorCoordinator.cpp
https://bugs.webkit.org/show_bug.cgi?id=218661

Reviewed by Simon Fraser.

Add the missing headers.

  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:
10:33 AM Changeset in webkit [269522] by jer.noble@apple.com
  • 11 edits
    2 adds in trunk

Do not allow pages to enter fullscreen while an exit fullscreen operation is ongoing.
https://bugs.webkit.org/show_bug.cgi?id=218640
<rdar://problem/70697738>

Reviewed by Eric Carlson.

Source/WebCore:

Test: fullscreen/full-screen-enter-while-exiting.html

Pages can inadvertantly trap users in fullscreen mode by attempting to enter
fullscreen during an exit fullscreen operation, when both the exit and enter
were triggered by a user gesture. While this is not explicitly forbidden by
the Fullscreen specification, we already reject requests in similar situations,
such as when the document was hidden between the request and when the request
was handled.

  • dom/FullscreenManager.cpp:

(WebCore::FullscreenManager::requestFullscreenForElement):
(WebCore::FullscreenManager::exitFullscreen):
(WebCore::FullscreenManager::didExitFullscreen):

  • dom/FullscreenManager.h:

Tools:

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::InjectedBundlePage::enterFullScreenForElement):
(WTR::InjectedBundlePage::exitFullScreenForElement):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setEnterFullscreenForElementCallback):
(WTR::TestRunner::callEnterFullscreenForElementCallback):
(WTR::TestRunner::setExitFullscreenForElementCallback):
(WTR::TestRunner::callExitFullscreenForElementCallback):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:

LayoutTests:

  • TestExpectations:
  • fullscreen/full-screen-enter-while-exiting-expected.txt: Added.
  • fullscreen/full-screen-enter-while-exiting.html: Added.
  • platform/wk2/TestExpectations:
10:30 AM Changeset in webkit [269521] by Alan Coon
  • 7 edits in branches/safari-610.3.7.0-branch

Cherry-pick r266052. rdar://problem/71120600

RTCRtpSynchronizationSource.rtpTimestamp is not present
https://bugs.webkit.org/show_bug.cgi?id=215722

Patch by Justin Uberti <justin@uberti.name> on 2020-08-24
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Updated expectations file to indicate that tests checking for .rtpTimestamp now pass.

  • LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https-expected.txt:

Source/WebCore:

Updated expected results in LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https-expected.txt.

  • Modules/mediastream/RTCRtpContributingSource.idl:
  • Modules/mediastream/RTCRtpContributingSource.idl:
  • Modules/mediastream/RTCRtpSynchronizationSource.idl: Minor modification to ensure JSRTCRtpSynchronizationSource.cpp gets regenerated.
  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp: (WebCore::fillRTCRtpContributingSource):

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

10:28 AM Changeset in webkit [269520] by Alan Coon
  • 8 edits in branches/safari-610.3.7.0-branch/Source

Versioning.

WebKit-7610.3.7.0.2

10:20 AM Changeset in webkit [269519] by Kocsen Chung
  • 6 edits
    2 adds in branches/safari-610.3.7.1-branch

Cherry-pick r269121. rdar://problem/71120565

[MSE] Handle trackId changing across Initialization Segments
https://bugs.webkit.org/show_bug.cgi?id=218294
<rdar://problem/70771306>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-trackid-change.html

When appending an initialization segment after the receivedFirstInitializationSegment flag is
true, and when the number of video or audio tracks is 1, the trackId is allowed to change across
initialiaztion segments. When this occurs, move the TrackBuffer inside the trackBufferMap to
refer to the new trackId, so that when MediaSamples are parsed, they're put into the correct
TrackBuffer.

  • Modules/mediasource/SourceBuffer.cpp: (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveInitializationSegment):
  • html/track/AudioTrack.cpp: (WebCore::AudioTrack::setPrivate):
  • html/track/InbandTextTrack.cpp: (WebCore::InbandTextTrack::setPrivate):
  • html/track/VideoTrack.cpp: (WebCore::VideoTrack::setPrivate):

LayoutTests:

  • media/media-source/media-source-trackid-change-expected.txt: Added.
  • media/media-source/media-source-trackid-change.html: Added.

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

10:20 AM Changeset in webkit [269518] by Kocsen Chung
  • 7 edits in branches/safari-610.3.7.1-branch

Cherry-pick r266052. rdar://problem/71120601

RTCRtpSynchronizationSource.rtpTimestamp is not present
https://bugs.webkit.org/show_bug.cgi?id=215722

Patch by Justin Uberti <justin@uberti.name> on 2020-08-24
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Updated expectations file to indicate that tests checking for .rtpTimestamp now pass.

  • LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https-expected.txt:

Source/WebCore:

Updated expected results in LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https-expected.txt.

  • Modules/mediastream/RTCRtpContributingSource.idl:
  • Modules/mediastream/RTCRtpContributingSource.idl:
  • Modules/mediastream/RTCRtpSynchronizationSource.idl: Minor modification to ensure JSRTCRtpSynchronizationSource.cpp gets regenerated.
  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp: (WebCore::fillRTCRtpContributingSource):

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

9:51 AM Changeset in webkit [269517] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[macOS] Allow IOAVDHEVCDecodeCapabilities on Intel
https://bugs.webkit.org/show_bug.cgi?id=218639
<rdar://problem/71100188>

Reviewed by Eric Carlson.

The current rule for IOAVDHEVCDecodeCapabilities is incorrect for macOS 11. We should
allow this access on Intel, too.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
9:20 AM Changeset in webkit [269516] by Kocsen Chung
  • 8 edits in branches/safari-610.3.7.1-branch/Source

Versioning.

WebKit-7610.3.7.1.2

9:13 AM Changeset in webkit [269515] by Adrian Perez de Castro
  • 2 edits in trunk/Tools

[Flatpak SDK] Update libmanette source URI to new location
https://bugs.webkit.org/show_bug.cgi?id=218509

Reviewed by Carlos Alberto Lopez Perez.

  • buildstream/elements/sdk/libmanette.bst: Update URI.
9:08 AM Changeset in webkit [269514] by clopez@igalia.com
  • 3 edits in trunk/Tools

REGRESSION(r268930): It broke the http server of run-benchmark
https://bugs.webkit.org/show_bug.cgi?id=218643

Reviewed by Jonathan Bedard.

The http server was failing to start because it is executed in a
subprocess and it can't find webkitpy.autoinstalled because the
scripts dir is not in PYTHONPATH.

Fix this and also add a check to ensure the http server is alive,
and if not, then raise an error with the return code and outputs
from the http server process.

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

(SimpleHTTPServerDriver.serve):
(SimpleHTTPServerDriver):
(SimpleHTTPServerDriver._find_http_server_port):

9:04 AM WebKitGTK/2.30.x edited by Michael Catanzaro
(diff)
9:03 AM Changeset in webkit [269513] by clopez@igalia.com
  • 5 edits in trunk/Tools

webkitpy: Add a --no-comment switch to webkit-patch land
https://bugs.webkit.org/show_bug.cgi?id=218067

Reviewed by Ryosuke Niwa.

Add an optional --no-comment switch to webkit-patch land.
This is useful when landing gardening, build-fixes or follow-up patches
on a bug and you don't want the tool to automatically add a comment with
the revision landed because you preffer to later add a comment manually.

Note that it will still close the bug, if you don't want the bug to
be closed you need to pass also --no-close.

  • Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py:

(MockBugzilla.close_bug_as_fixed):

  • Scripts/webkitpy/tool/commands/download_unittest.py:

(DownloadCommandsTest._default_options):
(test_land_no_close):

  • Scripts/webkitpy/tool/steps/closebugforlanddiff.py:

(CloseBugForLandDiff.options):
(CloseBugForLandDiff.run):

  • Scripts/webkitpy/tool/steps/options.py:

(Options):

8:01 AM Changeset in webkit [269512] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Fix crashes around NetworkStorageSession::registerCookieChangeListenersIfNecessary
https://bugs.webkit.org/show_bug.cgi?id=218626
<rdar://66837628>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-11-06
Reviewed by Chris Dumez.

We need to check if the NetworkStorageSession has been deallocated before using its member variables in a callback from CFNetwork.

  • platform/network/NetworkStorageSession.h:
  • platform/network/cocoa/NetworkStorageSessionCocoa.mm:

(WebCore::NetworkStorageSession::registerCookieChangeListenersIfNecessary):

7:50 AM Changeset in webkit [269511] by mark.lam@apple.com
  • 12 edits in trunk/Source/JavaScriptCore

Use address diversified PAC to ensure the integrity of opcode maps.
https://bugs.webkit.org/show_bug.cgi?id=218646

Reviewed by Yusuke Suzuki.

One reason for doing this is because space in the JSCConfig is limited, and may
hurt RAMification scores if we need to expand it when adding new opcodes.
By putting the opcode maps in dirty global memory, we still use less memory
because dirty global memory does not incur internal fragmentation like the
JSCConfig does.

In this patch, we move g_jscConfig.llint.opcodeMap, g_jscConfig.llint.opcodeMapWide16,
and g_jscConfig.llint.opcodeMapWide32 back to global arrays g_opcodeMap, g_opcodeMapWide16,
and g_opcodeMapWide32.

  • interpreter/InterpreterInlines.h:

(JSC::Interpreter::getOpcodeID):

  • Since this function is only used debugging purposes during development, and is currently unused, we can just strip the PAC bits from the opcode when computing the opcodeID. The alternative to doing this requires that we know how the Opcode is signed by the client. Since this function is currently unused, we have no clients to study / fix up for now.
  • llint/LLIntData.cpp:

(JSC::LLInt::initialize):

  • Changed an ASSERT for llint_throw_from_slow_path_trampoline to static_assert, and add a second one as well for wasm_throw_from_slow_path_trampoline.
  • Moved the signing of the Opcode pointers into llint_entry() and wasm_entry() instead. Now, non-ARM64E ports don't need to execute this no-op assignment loop (assuming it wasn't already elided by the compiler).
  • llint/LLIntData.h:

(JSC::LLInt::opcodeMap):
(JSC::LLInt::opcodeMapWide16):
(JSC::LLInt::opcodeMapWide32):
(JSC::LLInt::getOpcode):
(JSC::LLInt::getOpcodeWide16):
(JSC::LLInt::getOpcodeWide32):

  • Change getOpcode(), getOpcodeWide16(), and getOpcodeWide32() to return a reference to the entry in the corresponding opcode map. This is needed because we need to be able to compute the address of the Opcode entry in order to retag the Opcode.

(JSC::LLInt::getCodePtrImpl):
(JSC::LLInt::getCodePtr):
(JSC::LLInt::getWide16CodePtr):
(JSC::LLInt::getWide32CodePtr):

  • llint/LowLevelInterpreter.asm:
  • llint/WebAssembly.asm:
  • Changed the bytecode dispatch jmps to use address diversification when authenticating the Opcode pointer.
  • Changed llint_entry and wasm_entry to also tag the Opcode pointers for ARM64E.
  • Changed llint_entry and wasm_entry to validate that they are only called during system initialization.
  • offlineasm/arm64.rb:
  • Optimize leap code generation to elide an add instruction if it's only adding 0 to a global address.
  • offlineasm/arm64e.rb:
  • offlineasm/ast.rb:
  • offlineasm/instructions.rb:
  • Added support for jmp or call using address diversified pointers.
  • Added a tagCodePtr instruction that also supports signing address diversified pointers.
  • runtime/JSCConfig.h:
  • runtime/JSCPtrTag.h:

(JSC::untagAddressDiversifiedCodePtr):

  • Added untagAddressDiversifiedCodePtr() so that we can retag the Opcode pointers.
6:33 AM Changeset in webkit [269510] by Antti Koivisto
  • 29 edits in trunk/Source/WebCore

[LFC][Integration] localCaretOffset should use iterator
https://bugs.webkit.org/show_bug.cgi?id=218620

Reviewed by Zalan Bujtas.

Convert all localCaretRect implementations to use the inline iterator.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::localCaretRectForCharacterOffset):

  • editing/RenderedPosition.cpp:

(WebCore::RenderedPosition::absoluteRect const):

  • editing/VisiblePosition.cpp:

(WebCore::VisiblePosition::localCaretRect const):

  • layout/integration/LayoutIntegrationLineIterator.cpp:

(WebCore::LayoutIntegration::PathLine::computeCaretRect const):

  • layout/integration/LayoutIntegrationLineIterator.h:

(WebCore::LayoutIntegration::PathLine::logicalLeft const):
(WebCore::LayoutIntegration::PathLine::logicalRight const):

  • layout/integration/LayoutIntegrationLineIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LineIteratorLegacyPath::logicalLeft const):
(WebCore::LayoutIntegration::LineIteratorLegacyPath::logicalRight const):

  • layout/integration/LayoutIntegrationLineIteratorModernPath.h:

(WebCore::LayoutIntegration::LineIteratorModernPath::logicalLeft const):
(WebCore::LayoutIntegration::LineIteratorModernPath::logicalRight const):

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::PathTextRun::positionForOffset const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::RunIteratorLegacyPath::offsetForPosition const):
(WebCore::LayoutIntegration::RunIteratorLegacyPath::positionForOffset const):

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::RunIteratorModernPath::positionForOffset const):
(WebCore::LayoutIntegration::RunIteratorModernPath::selectionRect const):
(WebCore::LayoutIntegration::RunIteratorModernPath::clampedOffset const):

Make clampedOffset return 0 based offset like it does in InlineTextBox to make porting easier.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::localCaretRect const):
(WebCore::RenderBlock::localCaretRect): Deleted.

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

(WebCore::RenderBox::localCaretRect const):
(WebCore::RenderBox::localCaretRect): Deleted.

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

(WebCore::RenderBoxModelObject::localCaretRectForEmptyElement const):
(WebCore::RenderBoxModelObject::localCaretRectForEmptyElement): Deleted.

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

(WebCore::RenderInline::localCaretRect const):
(WebCore::RenderInline::localCaretRect): Deleted.

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

(WebCore::RenderLineBreak::localCaretRect const):
(WebCore::RenderLineBreak::linesBoundingBox const):
(WebCore::RenderLineBreak::localCaretRect): Deleted.

  • rendering/RenderLineBreak.h:
  • rendering/RenderObject.cpp:

(WebCore::RenderObject::localCaretRect const):
(WebCore::RenderObject::localCaretRect): Deleted.

  • rendering/RenderObject.h:
  • rendering/RenderText.cpp:

(WebCore::RenderText::localCaretRect const):
(WebCore::RenderText::localCaretRect): Deleted.

  • rendering/RenderText.h:
  • rendering/svg/RenderSVGInlineText.cpp:

(WebCore::RenderSVGInlineText::createTextBox):
(WebCore::RenderSVGInlineText::localCaretRect const):
(WebCore::RenderSVGInlineText::localCaretRect): Deleted.

  • rendering/svg/RenderSVGInlineText.h:
6:09 AM Changeset in webkit [269509] by Oriol Brufau
  • 2 edits in trunk/Source/WebCore

[css-grid] Prevent FindUsedFlexFraction from iterating items twice
https://bugs.webkit.org/show_bug.cgi?id=218630

Reviewed by Javier Fernandez.

IndefiniteSizeStrategy::findUsedFlexFraction needs to iterate all grid
items that cross a flexible track. To do so it, takes the indices of the
flex tracks, and for each one it uses GridIterator to iterate the items
in that track.

Then, to avoid processing the same item multiple times, it used to check
that the item started in the current flex track, not in a previous one.

However, this was insufficient: it wasn't taking into account that an
item can be in a single flex track, but span multiple tracks in the
other axis.

Therefore, this patch changes it to use the same approach as in
GridTrackSizingAlgorithm::resolveIntrinsicTrackSizes, i.e. creates a
HashSet outside of the loop, and inserts each given grid item to it,
checking whether it's a new entry or not.

This is a port of https://crrev.com/821910 from Chromium.

  • rendering/GridTrackSizingAlgorithm.cpp:

(WebCore::IndefiniteSizeStrategy::findUsedFlexFraction const):

5:47 AM Changeset in webkit [269508] by Chris Lord
  • 2 edits in trunk/Source/WebCore

REGRESSION(r269503): [GTK][WPE] >200 tests are failing
https://bugs.webkit.org/show_bug.cgi?id=218654

Reviewed by Žan Doberšek.

Implement GraphicsContextImplCairo::drawImageBuffer. Prior to r269503,
this function had an error return code, but this was removed and so
its implementation is now mandatory.

  • platform/graphics/cairo/GraphicsContextImplCairo.cpp:

(WebCore::GraphicsContextImplCairo::drawImageBuffer):

2:09 AM Changeset in webkit [269507] by Diego Pino Garcia
  • 4 edits in trunk/LayoutTests

[WPE] Unreviewed test gardening. Gardened several flaky failures reported by the bot.

Also promoted several common failures (WebRTC, WebSQL) happening in GTK to GLIB.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
1:44 AM Changeset in webkit [269506] by commit-queue@webkit.org
  • 18 edits
    3 copies
    3 adds in trunk

Scroll snap specified on :root doesn't work
https://bugs.webkit.org/show_bug.cgi?id=210469
<rdar://problem/61746676>

Source/WebCore:

Properly handle scroll-snap-type on the root element.

This change is originally based on a patch by Simon Fraser.

Patch by Martin Robinson <mrobinson@igalia.com> on 2020-11-06
Reviewed by Simon Fraser.

Tests: tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-legacy.html

tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-legacy.html
tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-legacy.html

  • page/FrameView.cpp:

(WebCore::FrameView::updateSnapOffsets): Send the body or root element style depending
on where the scroll-snap properties are set, but always use the FrameView viewport
when calculating geometry for scroll snap.

  • page/scrolling/AxisScrollSnapOffsets.cpp:

(WebCore::updateSnapOffsetsForScrollableArea): Accept a viewport rectangle from the
caller and also eliminate redundant argument that was causing a bit of confusion.

  • page/scrolling/AxisScrollSnapOffsets.h: Update the function declaration.
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::clearSnapOffsets): Added a helper to clear both vertical and horizontal snap info.

  • platform/ScrollableArea.h:
  • rendering/RenderBox.cpp:

(WebCore::RenderBox::findEnclosingScrollableContainerForSnapping const): Renamed findEnclosingScrollableContainer
to this because now it is only useful for scroll snapping. The only preexisting caller was
the scroll snap code.
(WebCore::RenderBox::findEnclosingScrollableContainer const): Deleted.

  • rendering/RenderBox.h: Updated method name.
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::updateSnapOffsets): Update to reflect changes to updateSnapOffsetsForScrollableArea.

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::enclosingScrollableContainerForSnapping const): Always return the
document root as the container instead of the body. The body never captures scroll
snap points.

LayoutTests:

Patch by Martin Robinson <mrobinson@igalia.com> on 2020-11-06
Reviewed by Simon Fraser.

Modified main frame scroll snap tests to reflect the specification and add a
few more tests to test the legacy behavior which this change maintains for
backwards compatibility.

  • css3/scroll-snap/scroll-snap-positions-mainframe.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-legacy-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-legacy.html: Copied from LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal.html.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-horizontal.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-vertical.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-legacy-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-legacy.html: Copied from LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical.html.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-then-horizontal.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-legacy-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-legacy.html: Copied from LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe.html.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe.html:
1:09 AM Changeset in webkit [269505] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK] Application cannot override drag&drop callbacks
https://bugs.webkit.org/show_bug.cgi?id=218562

Patch by Milan Crha <mcrha@redhat.com> on 2020-11-06
Reviewed by Michael Catanzaro.

  • UIProcess/API/gtk/DropTargetGtk3.cpp:

(WebKit::DropTarget::DropTarget): Use g_signal_connect_after(), thus
any descendants can override the callbacks.
(WebKit::DropTarget::didPerformAction): Always call gdk_drag_status(),
to have gtk+ notified about drag progress.

1:01 AM Changeset in webkit [269504] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK] dlopen libWPEBackend-fdo-1.0.so.1 instead of libWPEBackend-fdo-1.0.so
https://bugs.webkit.org/show_bug.cgi?id=218584

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-11-06
Reviewed by Carlos Garcia Campos.

wpe_loader_init() tries to dlopen a development symlink, but these will not usually be
installed. It only works in the GNOME flatpak runtime because we don't use devel split
rules in the GNOME runtime, but we really ought to, and freedesktop-sdk already does, so
it's going to break upstream too once that gets implemented. It's easier for everyone if
we tackle this now. Since all major distros except Arch Linux use devel split, this patch
is really required for almost every distro to use WPE renderer.

The downside is that this makes it harder to update the wpebackend-fdo library version,
since minor changes there will now unnecessarily break WebKit. This is not good, but it's
better than forcing distros to apply this same patch downstream. I considered trying a bunch
of different library versions in a loop in order to maximize the chance of success in case
the wpebackend-fdo library version increases in the future, but it's probably nicer to just
be careful about not changing its library version until we find a better solution for this.

  • UIProcess/glib/WebProcessPoolGLib.cpp:

(WebKit::WebProcessPool::platformInitializeWebProcess):

Nov 5, 2020:

11:27 PM Changeset in webkit [269503] by Said Abou-Hallawa
  • 29 edits in trunk/Source

[GPU Process] Use the Ref counting of ImageBuffer to control its life cycle in Web Process and GPU Process
https://bugs.webkit.org/show_bug.cgi?id=218529

Reviewed by Simon Fraser.

Source/WebCore:

Every ImageBuffer will have a valid RenderingResourceIdentifer. It can be
either generated when the ImageBuffer is created. Or it can be set by the
caller. Setting it by the caller will happen only in the GPUP where we
need it match what was generated in the WebP.

When recording a DrawImageBuffer item, a Ref<ImageBuffer> of the source
ImageBuffer will be added to a HashSet in DisplayList. The goal is keep
this ImageBuffer alive till the DisplayList is cleared. The HashSet will
be cleared in DisplayList::clear() which will happen when either the
DisplayList is replayed back or sent to the GPUP.

This HashSet can be used to resolve the RenderingResourceIdentifer to an
ImageBuffer when replaying back the DisplayList either in WebP or in GPUP.

  • platform/graphics/ConcreteImageBuffer.h:

(WebCore::ConcreteImageBuffer::ConcreteImageBuffer):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawImageBuffer):
(WebCore::GraphicsContext::drawConsumingImageBuffer):

  • platform/graphics/GraphicsContextImpl.h:
  • platform/graphics/ImageBuffer.h:
  • platform/graphics/cairo/GraphicsContextImplCairo.cpp:

(WebCore::GraphicsContextImplCairo::drawImageBuffer):

  • platform/graphics/cairo/GraphicsContextImplCairo.h:
  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::clear):

  • platform/graphics/displaylists/DisplayList.h:

(WebCore::DisplayList::DisplayList::imageBuffers const):
(WebCore::DisplayList::DisplayList::cacheImageBuffer):

  • platform/graphics/displaylists/DisplayListItemType.cpp:

(WebCore::DisplayList::isInlineItem):

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::DrawImageBuffer::DrawImageBuffer):
(WebCore::DisplayList::DrawImageBuffer::apply const):

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

(WebCore::DisplayList::Recorder::drawImageBuffer):

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::Delegate::~Delegate):
(WebCore::DisplayList::Recorder::Delegate::lockRemoteImageBuffer): Deleted.

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::Replayer):
(WebCore::DisplayList::Replayer::applyItem):
(WebCore::DisplayList::Replayer::replay):

  • platform/graphics/displaylists/DisplayListReplayer.h:
  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:

(Nicosia::CairoOperationRecorder::drawImageBuffer):

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

Source/WebKit:

When a DrawImageBuffer item is appended to DisplayList, a Ref<ImageBuffer>
will be cached till the DisplayList items list is cleared. So no need to
lock the remote resource in RemoteResourceCacheProxy.

All we need to is to pass the ImageBufferHashMap which is maintained by
the DisplayList or by RemoteResourceCache to the DisplayList::Replayer.
It is going to be used to resolve the RenderingResourceIdentifer to an
ImageBuffer so the DrawImageBuffer can be applied.

No need to special-case DrawImageBuffer::apply() in the RemoteImageBuffer.

  • GPUProcess/graphics/RemoteImageBuffer.h:

(WebKit::RemoteImageBuffer::RemoteImageBuffer):

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::createImageBuffer):
(WebKit::RemoteRenderingBackend::applyResourceItem): Deleted.

  • GPUProcess/graphics/RemoteRenderingBackend.h:

(WebKit::RemoteRenderingBackend::remoteResourceCache):

  • GPUProcess/graphics/RemoteResourceCache.cpp:

(WebKit::RemoteResourceCache::cacheImageBuffer):

  • GPUProcess/graphics/RemoteResourceCache.h:

(WebKit::RemoteResourceCache::imageBuffers const):

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::~RemoteImageBufferProxy):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::releaseRemoteResource):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:

(WebKit::RemoteResourceCacheProxy::releaseImageBuffer):
(WebKit::RemoteResourceCacheProxy::RemoteResourceCacheProxy): Deleted.
(WebKit::RemoteResourceCacheProxy::lockRemoteImageBufferForRemoteClient): Deleted.
(WebKit::RemoteResourceCacheProxy::lockRemoteResourceForRemoteClient): Deleted.
(WebKit::RemoteResourceCacheProxy::releaseRemoteResource): Deleted.
(WebKit::RemoteResourceCacheProxy::unlockRemoteResourcesForRemoteClient): Deleted.

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
8:18 PM Changeset in webkit [269502] by ysuzuki@apple.com
  • 2 edits
    1 add in trunk/JSTests

toLocaleDateString() resolves incorrect date for some old dates
https://bugs.webkit.org/show_bug.cgi?id=161623

Reviewed by Ryosuke Niwa.

The issue is that timezone offset in old Warsaw date was broken because localtime_r's tzdata is broken.
The issue itself was fixed in r218348. This patch adds another test case to ensure this is fixed.

  • complex.yaml:
  • complex/timezone-offset-and-dst-in-warsaw.js: Added.

(shouldBe):

7:07 PM Changeset in webkit [269501] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[macOS] Remove mdnsresponder access from WebKit processes
https://bugs.webkit.org/show_bug.cgi?id=218633
<rdar://problem/69133548>

Unreviewed follow-up: Make the sandbox rule conditional on recent macOS to
avoid breaking STP use on older macOS releases.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
7:06 PM WebKitGTK/2.30.x edited by clopez@igalia.com
(diff)
7:04 PM WebKitGTK/2.30.x edited by clopez@igalia.com
(diff)
6:05 PM Changeset in webkit [269500] by Chris Dumez
  • 9 edits in trunk

window.event should not be affected by nodes moving post-dispatch
https://bugs.webkit.org/show_bug.cgi?id=218635

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline test now that it is fully passing.

  • web-platform-tests/dom/events/event-global-extra.window-expected.txt:

Source/WebCore:

window.event should not be affected by nodes moving post-dispatch:

In particular, window.event should not get set when the event target was inside
a shadow tree initially when dispatchEvent() got called, even if the event target
gets moved out of the shadow tree during the execution of the event listeners.

Previously, our code was checking if the node was in a shadow tree at the point
of calling each event listener, instead of doing that check very initially when
dispatchEvent() is called.

No new tests, rebaselined existing test.

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

  • dom/Event.cpp:

(WebCore::Event::setCurrentTarget):
(WebCore::Event::resetAfterDispatch):

  • dom/Event.h:

(WebCore::Event::currentTargetIsInShadowTree const):

  • dom/EventContext.cpp:

(WebCore::EventContext::handleLocalEvents const):

  • dom/EventContext.h:

(WebCore::EventContext::isCurrentTargetInShadowTree const):

  • dom/EventPath.cpp:

(WebCore::WindowEventContext::handleLocalEvents const):

6:02 PM Changeset in webkit [269499] by commit-queue@webkit.org
  • 11 edits
    1 move
    12 adds
    3 deletes in trunk

Align GBK and gb18030 encoder and decoder with specification and other browsers
https://bugs.webkit.org/show_bug.cgi?id=218380

Patch by Alex Christensen <achristensen@webkit.org> on 2020-11-05
Reviewed by David Kilzer.

LayoutTests/imported/w3c:

  • web-platform-tests/encoding/gb18030-encoder-expected.txt: Removed.
  • web-platform-tests/encoding/gb18030-encoder.html: Removed.
  • web-platform-tests/encoding/legacy-mb-schinese/gb18030/gb18030-decoder-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-schinese/gb18030/gb18030-decoder.html: Added.
  • web-platform-tests/encoding/legacy-mb-schinese/gb18030/gb18030-encoder-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-schinese/gb18030/gb18030-encoder.html: Added.
  • web-platform-tests/encoding/legacy-mb-schinese/gb18030/resources/ranges.js: Added.
  • web-platform-tests/encoding/legacy-mb-schinese/gbk/gbk-encoder-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/gbk-encoder-expected.txt.
  • web-platform-tests/encoding/legacy-mb-schinese/gbk/gbk-encoder.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/gbk-encoder.html.
  • web-platform-tests/encoding/legacy-mb-schinese/gbk/gbk-decoder-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-schinese/gbk/gbk-decoder.html: Added.

Source/WebCore:

We had been limping along using ICU with some post-processing to encode and decode legacy-encoded Simplified Chinese text,
but I implemented the standard with tests and compared behavior with other browsers. A few characters and several of the ranges
from https://encoding.spec.whatwg.org/index-gb18030-ranges.txt were missing from our copy of ICU's encoding tables.

I derive the encoding table from ICU's with one correction, then assert that it is equal to a reference copy of the table.
This keeps a release build of WebKit small.

Firefox's GBK decoder accepts anything that a gb18030 encoder would generate, which makes it more permissive than Chrome's,
but the spec says to be this permissive so we will, and we will have sites that currently work only in Firefox also work in WebKit.
See https://encoding.spec.whatwg.org/#gbk-decoder

Also, Chrome and WebKit before this change do not implement https://encoding.spec.whatwg.org/#gb18030-decoder step 7, which decodes 0x80
into U+20AC, the Euro sign.

No comprehensive tests had been written, so I wrote such tests to cover each failure mode and each range. Existing tests covered the differences
between GBK and gb18030 encoding and some of the code points from https://encoding.spec.whatwg.org/index-gb18030.txt . Comparison with ICU revealed
exactly one difference between ICU's decoder and Firefox's implementation, which was that a pointer of 6555 should map to a code point of U+e5e5,
so I added that code point to the unit tests. Because that was the only difference between ICU and the whatwg standard, I felt it would have been
overkill to test each of the 23940 code points, but I did move the Simplified Chinese legacy encoding tests to their own directory like Traditional
Chinese, Korean, and Japanese.

Tests: imported/w3c/web-platform-tests/encoding/legacy-mb-schinese/gb18030/gb18030-decoder.html

imported/w3c/web-platform-tests/encoding/legacy-mb-schinese/gb18030/gb18030-encoder.html
imported/w3c/web-platform-tests/encoding/legacy-mb-schinese/gbk/gbk-encoder.html

  • platform/text/EncodingTables.cpp:

(WebCore::gb18030):

  • platform/text/EncodingTables.h:

(WebCore::CompareSecond::operator()):
(WebCore::makeSecondAdapter):

  • platform/text/TextCodecCJK.cpp:

(WebCore::TextCodecCJK::registerEncodingNames):
(WebCore::TextCodecCJK::registerCodecs):
(WebCore::eucJPEncode):
(WebCore::iso2022JPEncode):
(WebCore::shiftJISEncode):
(WebCore::eucKREncode):
(WebCore::big5Encode):
(WebCore::gb18030Ranges):
(WebCore::gb18030RangesCodePoint):
(WebCore::gb18030RangesPointer):
(WebCore::gb18030EncodeIndex):
(WebCore::TextCodecCJK::gb18030Decode):
(WebCore::gbEncodeShared):
(WebCore::gb18030Encode):
(WebCore::TextCodecCJK::gbkDecode):
(WebCore::gbkEncode):
(WebCore::TextCodecCJK::decode):
(WebCore::TextCodecCJK::encode const):

  • platform/text/TextCodecCJK.h:
  • platform/text/TextCodecICU.cpp:

(WebCore::TextCodecICU::createICUConverter const):
(WebCore::TextCodecICU::decode):
(WebCore::TextCodecICU::encode const):
(WebCore::fallbackForGBK): Deleted.
(WebCore::gbkCallbackEscape): Deleted.
(WebCore::gbkUrlEscapedEntityCallack): Deleted.
(WebCore::gbkCallbackSubstitute): Deleted.

  • platform/text/TextCodecICU.h:

LayoutTests:

  • fast/encoding/char-encoding-expected.txt:
  • fast/encoding/char-encoding.html:
6:01 PM Changeset in webkit [269498] by commit-queue@webkit.org
  • 5 edits in trunk/Source

Add null checks effectively in UserInputBridge
https://bugs.webkit.org/show_bug.cgi?id=218622
<rdar://problem/70724960>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-11-05
Reviewed by Wenson Hsieh.

Source/WebCore:

  • replay/UserInputBridge.cpp:

(WebCore::UserInputBridge::reloadFrame):
(WebCore::UserInputBridge::stopLoadingFrame):

  • replay/UserInputBridge.h:

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::stopLoadingFrame):
(WebKit::WebPage::stopLoading):
(WebKit::WebPage::reload):

5:45 PM Changeset in webkit [269497] by mmaxfield@apple.com
  • 9 edits
    2 adds in trunk

[Cocoa] REGRESSION(r269211): Text with emoji can trigger drawing corruption
https://bugs.webkit.org/show_bug.cgi?id=218636
<rdar://problem/71066011>

Reviewed by Simon Fraser.

Source/WebCore:

We have an optimization for frequently-painting layers that we will turn text drawing
commands into display lists. r269211 added a bunch of context state introspection and
recreation code to make sure that the state being recorded matches the state during
playback. However, that code is incompatible with this cache idea, where the same DL
might be played back into multiple places.

The solution is to have two kinds of text display list drawing:

  1. Deconstruct drawing commands into a series of commands. E.g. emoji will get

deconstructed into DrawImage commands. This kind of drawing must do state introspection
to make sure the emoji is drawn in the right place

  1. Don't deconstruct the drawing commands; simply gather up the DrawGlyphs commands

and record them directly. This doesn't do state introspection.

GPU Process display lists use the first kind, while this text cache optimization uses
the second kind.

Test: fast/text/frequent-text.html

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::displayListForTextRun const):

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

(WebCore::DisplayList::DrawGlyphsRecorder::DrawGlyphsRecorder):
(WebCore::DisplayList::DrawGlyphsRecorder::drawGlyphs):

  • platform/graphics/displaylists/DisplayListDrawGlyphsRecorderHarfBuzz.cpp:

(WebCore::DisplayList::DrawGlyphsRecorder::DrawGlyphsRecorder):

  • platform/graphics/displaylists/DisplayListDrawGlyphsRecorderWin.cpp:

(WebCore::DisplayList::DrawGlyphsRecorder::DrawGlyphsRecorder):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

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

  • platform/graphics/displaylists/DisplayListRecorder.h:

LayoutTests:

  • fast/text/frequent-text-expected.html: Added.
  • fast/text/frequent-text.html: Added.
5:27 PM Changeset in webkit [269496] by Alan Coon
  • 1 copy in tags/Safari-610.3.6.2

Tag Safari-610.3.6.2.

5:13 PM Changeset in webkit [269495] by Alan Coon
  • 8 edits in branches/safari-610.3.6-branch/Source

Versioning.

WebKit-7610.3.6.2

5:01 PM Changeset in webkit [269494] by Chris Dumez
  • 3 edits in trunk/LayoutTests

unreviewed, rebaseline a couple tests on iOS after r269477.

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
4:51 PM Changeset in webkit [269493] by Alan Coon
  • 1 copy in tags/Safari-610.3.7.1.1

Tag Safari-610.3.7.1.1.

4:49 PM Changeset in webkit [269492] by Alan Coon
  • 1 copy in tags/Safari-610.3.7.0.1

Tag Safari-610.3.7.0.1.

4:32 PM Changeset in webkit [269491] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

[macOS] Remove mdnsresponder access from WebKit processes
https://bugs.webkit.org/show_bug.cgi?id=218633
<rdar://problem/69133548>

Reviewed by Per Arne Vollan.

Now that all network loading (including media) happens in the Network process,
we can remove an old permission to open outbound connections to mdnsresponder.
This is also unneeded in the GPU process, for the same reason.

I noticed that the new WebAuthn process sandbox mistakenly included this,
and removed it there, too.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
4:17 PM Changeset in webkit [269490] by Alan Coon
  • 1 copy in tags/Safari-610.3.6.1

Tag Safari-610.3.6.1.

4:16 PM Changeset in webkit [269489] by wilander@apple.com
  • 16 edits in trunk

PCM: Switch to JSON report format
https://bugs.webkit.org/show_bug.cgi?id=218634
<rdar://problem/70469923>

Reviewed by Brent Fulgham.

The standards conversation has landed in attribution reports in a JSON
format as opposed to the currently implemented URL format. Discussion
here: https://github.com/privacycg/private-click-measurement/issues/30

Source/WebCore:

No new tests. Existing layout and API tests were updated.

  • Headers.cmake:

Added platform/network/HTTPHeaderValues.h to be able to expose it
to WebKit.

  • WebCore.xcodeproj/project.pbxproj:

Now exporting platform/network/HTTPHeaderValues.h.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

Changed a function call from AdClickAttribution::url() to
AdClickAttribution::reportURL().

  • loader/AdClickAttribution.cpp:

(WebCore::AdClickAttribution::reportURL const):

The URL no longer carries the report values.
Renamed from AdClickAttribution::url().

(WebCore::AdClickAttribution::json const):

New function to generate and return the report JSON.

(WebCore::AdClickAttribution::url const): Deleted.

Renamed to AdClickAttribution::reportURL().

(WebCore::AdClickAttribution::referrer const): Deleted.

The referrer is now part of the report JSON.

(WebCore::AdClickAttribution::urlForTesting const): Deleted.

This class no longer needs to help generate test URLs
since report values are now in JSON.

  • loader/AdClickAttribution.h:
  • platform/network/FormData.h:

Added export of create(const CString&).

  • platform/network/HTTPHeaderValues.cpp:

(WebCore::HTTPHeaderValues::applicationJSONContentType):

Used create the new JSON report request.

  • platform/network/HTTPHeaderValues.h:

Added export of maxAge0().

Source/WebKit:

  • NetworkProcess/AdClickAttributionManager.cpp:

(WebKit::AdClickAttributionManager::fireConversionRequest):

Tools:

  • TestWebKitAPI/Tests/WebCore/AdClickAttribution.cpp:

(TestWebKitAPI::TEST):

LayoutTests:

  • http/tests/adClickAttribution/resources/conversionReport.php:
  • http/tests/adClickAttribution/send-attribution-conversion-request-expected.txt:
4:16 PM Changeset in webkit [269488] by Alan Coon
  • 3 edits in branches/safari-610.3.6-branch/Source/WebCore

Cherry-pick r269321. rdar://problem/71083865

Integrator's note: added a custom null check in HTMLMediaElement.cpp.

Protect against HTMLMediaElement being destroyed during disptachEvent().
https://bugs.webkit.org/show_bug.cgi?id=218398
<rdar://problem/67613836>

Reviewed by Chris Dumez.

Make the MainThreadGenericEventQueue protect the target as well as the owner of the queue.

Drive-by fix: Create the scoped eventFiringScope object after the protect object, to ensure
that the member variable set by the first scope will safely occur.

Drive-by fix #2: Also null-check the result of document().page() within HTMLMediaElement::dispatchEvent().

  • dom/GenericEventQueue.cpp: (WebCore::MainThreadGenericEventQueue::dispatchOneEvent):
  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::dispatchEvent):

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

4:11 PM Changeset in webkit [269487] by Alan Coon
  • 8 edits in branches/safari-610.3.6-branch/Source

Versioning.

WebKit-7610.3.6.1

4:03 PM Changeset in webkit [269486] by BJ Burg
  • 34 edits
    10 copies
    5 adds in trunk

[Cocoa] Inspector Extensions: Add _WKInspectorExtension and related plumbing
https://bugs.webkit.org/show_bug.cgi?id=217783
<rdar://problem/69968787>

Reviewed by Devin Rousso.

Source/WebCore:

  • inspector/InspectorFrontendClient.h:
  • inspector/InspectorFrontendClientLocal.h:

In order for WebInspectorUIExtensionController to work with remote and local
inspectors, it stores a weak pointer the inspector's InspectorFrontendClient.
Expose the frontend's page so that the frontend API dispatcher can dispatch to it.

Source/WebInspectorUI:

  • UserInterface/Main.html: Add new files.
  • UserInterface/Controllers/AppControllerBase.js:

(WI.AppControllerBase):
(WI.AppControllerBase.prototype.get extensionController):
Hang the extension controller off of the global singleton, as there can only be one.

  • UserInterface/Controllers/WebInspectorExtensionController.js:

(WI.WebInspectorExtensionController):
(WI.WebInspectorExtensionController.prototype.registerExtension):
(WI.WebInspectorExtensionController.prototype.unregisterExtension):
Added. For now, just keep the UUIDs in a map and log the result.

  • UserInterface/Models/WebInspectorExtension.js:

(WI.WebInspectorExtension):
(WI.WebInspectorExtension.prototype.get extensionID):
(WI.WebInspectorExtension.prototype.get displayName):
Added. This is a data object for now.

  • UserInterface/Protocol/InspectorFrontendAPI.js:

(InspectorFrontendAPI.loadCompleted):
(InspectorFrontendAPI.registerExtension):
(InspectorFrontendAPI.unregisterExtension):
Added. Forward invocations to the extension controller.

Source/WebKit:

_WKInspectorExtension is new SPI that represents a Web Extension that uses the 'devtools'
API to interact with Web Inspector. An extension is associated with its _WKInspectorExtensionHost.
A WebKit client that supports Web Extensions can use this class to implement 'devtools' extension APIs.

Add _WKInspectorExtensionHost methods to register and unregister an extension.
Add plumbing so that the extension in registered in the frontend with WI.InspectorExtensionController.

Later patches will flesh out the needed functionality to implement rest of the 'devtools' API.

  • Sources.txt:
  • SourcesCocoa.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • WebKit.xcodeproj/project.pbxproj:

Add new files.

  • Scripts/webkit/messages.py: If a message includes InspectorExtensionError,

then generate an include for InspectorExtensionTypes.h where it is declared.

  • Shared/API/APIObject.h:
  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):
New API object type.

  • Shared/InspectorExtensionTypes.h: Added error code enum and useful type aliases.
  • Shared/InspectorExtensionTypes.cpp:

(WebKit::inspectorExtensionErrorToString):

  • UIProcess/API/APIInspectorExtension.h:
  • UIProcess/API/APIInspectorExtension.cpp:

(API::InspectorExtension::create):
(API::InspectorExtension::InspectorExtension):
(API::InspectorExtension::~InspectorExtension):
Added. This is a placeholder object that's used for the wrapper system,
since we don't have single C++ objects for each extension to back the API object.

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

(-[_WKInspector registerExtensionWithID:displayName:completionHandler:]):
(-[_WKInspector unregisterExtension:completionHandler:]):
Implement new _WKInspectorExtensionHost methods. Send IPC to the Inspector web process.

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

(-[_WKInspectorExtension initWithIdentifier:]):
(-[_WKInspectorExtension dealloc]):
(-[_WKInspectorExtension _apiObject]):
(-[_WKInspectorExtension extensionID]):
Added. This is a data object that's also used as a token to unregister the extension.

  • UIProcess/API/Cocoa/_WKInspectorExtensionHost.h: Add new SPI.
  • UIProcess/API/Cocoa/_WKInspectorExtensionInternal.h:
  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h:
  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:

(-[_WKRemoteWebInspectorViewController registerExtensionWithID:displayName:completionHandler:]):
(-[_WKRemoteWebInspectorViewController unregisterExtension:completionHandler:]):
Implement new _WKInspectorExtensionHost methods. Send IPC to the Inspector web process.

  • UIProcess/Inspector/RemoteWebInspectorProxy.h:
  • UIProcess/Inspector/RemoteWebInspectorProxy.messages.in: Add FrontendLoaded.

(WebKit::RemoteWebInspectorProxy::extensionController const): Added.

  • UIProcess/Inspector/RemoteWebInspectorProxy.cpp:

(WebKit::RemoteWebInspectorProxy::frontendLoaded):
(WebKit::RemoteWebInspectorProxy::createFrontendPageAndWindow):
Set up the extension controller object after the frontend has been created.
Hook up the FrontendLoaded event sent from Inspector web process so that the
extension controller can be notified of when it's safe to message the frontend.

  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::createFrontendPage):
(WebKit::WebInspectorProxy::closeFrontendPageAndWindow):
(WebKit::WebInspectorProxy::frontendLoaded):
Set up the extension controller object after the frontend has been created.

  • UIProcess/Inspector/WebInspectorProxy.h:

(WebKit::WebInspectorProxy::extensionController const): Added.

  • UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:
  • UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp: Added.

(WebKit::WebInspectorUIExtensionControllerProxy::WebInspectorUIExtensionControllerProxy):
(WebKit::WebInspectorUIExtensionControllerProxy::~WebInspectorUIExtensionControllerProxy):
(WebKit::WebInspectorUIExtensionControllerProxy::whenFrontendHasLoaded):
(WebKit::WebInspectorUIExtensionControllerProxy::inspectorFrontendLoaded):
(WebKit::WebInspectorUIExtensionControllerProxy::registerExtension):
(WebKit::WebInspectorUIExtensionControllerProxy::unregisterExtension):
Added. Forward API requests to the Web Inspector's web process to be evaluated in the frontend.

  • WebProcess/Inspector/WebInspectorFrontendAPIDispatcher.h:
  • WebProcess/Inspector/WebInspectorFrontendAPIDispatcher.cpp:

(WebKit::WebInspectorFrontendAPIDispatcher::dispatchCommand):
Add a more generic way to encode values to be passed as arguments to InspectorFrontendAPI.dispatch.

  • WebProcess/Inspector/WebInspectorUI.cpp:

(WebKit::WebInspectorUI::establishConnection):
(WebKit::WebInspectorUI::closeWindow):

  • WebProcess/Inspector/WebInspectorUI.h:

(WebKit::WebInspectorUI::frontendPage const): Added.
(WebKit::WebInspectorUI::frontendAPIDispatcher): Added.

  • WebProcess/Inspector/WebInspectorUIExtensionController.h:
  • WebProcess/Inspector/WebInspectorUIExtensionController.messages.in: Added.
  • WebProcess/Inspector/WebInspectorUIExtensionController.cpp: Added.

(WebKit::WebInspectorUIExtensionController::WebInspectorUIExtensionController):
(WebKit::WebInspectorUIExtensionController::~WebInspectorUIExtensionController):
(WebKit::WebInspectorUIExtensionController::registerExtension):
(WebKit::WebInspectorUIExtensionController::unregisterExtension):
(WebKit::WebInspectorUIExtensionController::parseInspectorExtensionErrorFromResult):
Handle incoming messages by forwarding the associated command to WI.WebExtensionController
via InspectorFrontendAPI evaluations.

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

Fallout from unified build chunking shifts.

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticatorInternal::getExistingCredentials):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterUserVerification):
Fallout from unified build chunking shifts, but more.

Tools:

Add API tests to exercise new methods of the _WKInspectorExtensionHost protocol.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: New test file.
  • TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtensionHost.mm: Added.

(resetGlobalState):
(-[UIDelegateForTestingInspectorExtensionHost _webView:didAttachLocalInspector:]):
(TEST):

3:58 PM Changeset in webkit [269485] by Alan Coon
  • 1 copy in branches/safari-610.3.6-branch

New branch.

3:47 PM Changeset in webkit [269484] by Alan Coon
  • 3 edits in branches/safari-610.3.7.100-branch/Source/WebCore

Cherry-pick r269321. rdar://problem/71083865

Integrator's note: added a custom null check in HTMLMediaElement.cpp.

Protect against HTMLMediaElement being destroyed during disptachEvent().
https://bugs.webkit.org/show_bug.cgi?id=218398
<rdar://problem/67613836>

Reviewed by Chris Dumez.

Make the MainThreadGenericEventQueue protect the target as well as the owner of the queue.

Drive-by fix: Create the scoped eventFiringScope object after the protect object, to ensure
that the member variable set by the first scope will safely occur.

Drive-by fix #2: Also null-check the result of document().page() within HTMLMediaElement::dispatchEvent().

  • dom/GenericEventQueue.cpp: (WebCore::MainThreadGenericEventQueue::dispatchOneEvent):
  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::dispatchEvent):

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

3:42 PM Changeset in webkit [269483] by Alan Coon
  • 8 edits in branches/safari-610.3.7.100-branch/Source

Versioning.

WebKit-7610.3.7.100.1

3:29 PM Changeset in webkit [269482] by Alan Coon
  • 1 copy in branches/safari-610.3.7.100-branch

New branch.

3:27 PM Changeset in webkit [269481] by Chris Dumez
  • 6 edits in trunk

Add implementation for Object.getOwnPropertyNames() on HTMLDocument
https://bugs.webkit.org/show_bug.cgi?id=218625

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline test now that more checks are passing. The checks we are failing are failing
in Blink & Gecko also. The checks are are now passing are also passing in Blink & Gecko.

  • web-platform-tests/html/dom/documents/dom-tree-accessors/nameditem-names-expected.txt:

Source/WebCore:

Add implementation for Object.getOwnPropertyNames() on HTMLDocument so that it properly
returns names of the properties that would be returned by the named property getter.
This aligns our behavior with Blink and Gecko.

No new tests, rebaselined existing test.

  • dom/TreeScopeOrderedMap.cpp:

(WebCore::TreeScopeOrderedMap::keys const):

  • dom/TreeScopeOrderedMap.h:
  • html/HTMLDocument.cpp:

(WebCore::HTMLDocument::supportedPropertyNames const):

3:25 PM Changeset in webkit [269480] by Alan Coon
  • 7 edits
    1 delete in branches/safari-610.3.7.0-branch/Source

Revert r269208. rdar://problem/71044969

3:03 PM Changeset in webkit [269479] by sbarati@apple.com
  • 2 edits in trunk/Source/WTF

Add back swap() free function for RefPtr
https://bugs.webkit.org/show_bug.cgi?id=218454

Reviewed by Darin Adler.

Add back the swap() free function I removed in r269115. Darin's suggestion
of specializing only a single type of RefPtr instead of two, solved the
issue. I also removed some previous hack where we didn't enable this for
RawPtrTraits. It's now enabled for all PtrTraits.

  • wtf/RefPtr.h:

(WTF::swap):

3:02 PM Changeset in webkit [269478] by sbarati@apple.com
  • 2 edits in trunk/Source/WTF

Change RELEASE_ASSERT to use branch+crash inside HashTable.h
https://bugs.webkit.org/show_bug.cgi?id=218624
<rdar://problem/70901101>

Reviewed by Mark Lam.

The assertions added in r269017 used RELEASE_ASSERT. RELEASE_ASSERT
is implemented as invoking WTFCrashWithInfo, which does a bunch of register
argument/moves. Doing this in inlined hash table code bloats WK binaries
by a lot. This patch changes it so we just branch+crash on the same condition.

  • wtf/HashTable.h:

(WTF::KeyTraits>::inlineLookup):
(WTF::KeyTraits>::lookupForWriting):
(WTF::KeyTraits>::fullLookupForWriting):
(WTF::KeyTraits>::addUniqueForInitialization):
(WTF::KeyTraits>::add):

2:40 PM Changeset in webkit [269477] by Chris Dumez
  • 10 edits in trunk

Expose referrerPolicy attribute on HTMLLinkElement and HTMLAreaElement
https://bugs.webkit.org/show_bug.cgi?id=218632

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline existing web-platform tests now that more checks are passing.

  • web-platform-tests/html/dom/reflection-embedded-expected.txt:
  • web-platform-tests/html/dom/reflection-metadata-expected.txt:

Source/WebCore:

Expose referrerPolicy attribute on HTMLLinkElement and HTMLAreaElement:

No new tests, rebaselined existing tests.

  • html/HTMLAreaElement.idl:
  • html/HTMLLinkElement.idl:

LayoutTests:

Rebaselined existing WPT tests now that more checks are passing.

  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
2:39 PM Changeset in webkit [269476] by Chris Dumez
  • 7 edits in trunk

DOMStringList, TextMetrics & ImageBitmapRenderingContext should be exposed to workers
https://bugs.webkit.org/show_bug.cgi?id=218631

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that more checks are passing.

  • web-platform-tests/html/dom/idlharness.worker-expected.txt:

Source/WebCore:

DOMStringList, TextMetrics & ImageBitmapRenderingContext should be exposed to workers:

No new tests, rebaselined existing test.

  • dom/DOMStringList.idl:
  • html/TextMetrics.idl:
  • html/canvas/ImageBitmapRenderingContext.idl:
2:22 PM Changeset in webkit [269475] by Chris Dumez
  • 18 edits
    2 adds in trunk

Crash in AudioBuffer::sampleRate()
https://bugs.webkit.org/show_bug.cgi?id=218603

Reviewed by Geoffrey Garen.

Source/WebCore:

Have OfflineAudioDestinationNode store the sample rate instead of getting
it from the render buffer. It is possible for an OfflineAudioContext to
have no rendering buffer when constructing this rendering buffer fails
(e.g. because the length is too large).

Test: webaudio/OfflineAudioContext-bad-buffer-crash.html

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::AudioContext):

  • Modules/webaudio/AudioContext.h:
  • Modules/webaudio/AudioDestinationNode.cpp:

(WebCore::AudioDestinationNode::AudioDestinationNode):

  • Modules/webaudio/AudioDestinationNode.h:
  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::BaseAudioContext):

  • Modules/webaudio/BaseAudioContext.h:
  • Modules/webaudio/DefaultAudioDestinationNode.cpp:

(WebCore::DefaultAudioDestinationNode::DefaultAudioDestinationNode):

  • Modules/webaudio/DefaultAudioDestinationNode.h:
  • Modules/webaudio/OfflineAudioContext.cpp:

(WebCore::OfflineAudioContext::OfflineAudioContext):
(WebCore::OfflineAudioContext::create):

  • Modules/webaudio/OfflineAudioContext.h:
  • Modules/webaudio/OfflineAudioDestinationNode.cpp:

(WebCore::OfflineAudioDestinationNode::OfflineAudioDestinationNode):

  • Modules/webaudio/OfflineAudioDestinationNode.h:
  • Modules/webaudio/WebKitAudioContext.cpp:

(WebCore::WebKitAudioContext::WebKitAudioContext):

  • Modules/webaudio/WebKitAudioContext.h:
  • Modules/webaudio/WebKitOfflineAudioContext.cpp:

(WebCore::WebKitOfflineAudioContext::WebKitOfflineAudioContext):
(WebCore::WebKitOfflineAudioContext::create):

  • Modules/webaudio/WebKitOfflineAudioContext.h:

LayoutTests:

Add layout test coverage.

  • webaudio/OfflineAudioContext-bad-buffer-crash-expected.txt: Added.
  • webaudio/OfflineAudioContext-bad-buffer-crash.html: Added.
1:41 PM Changeset in webkit [269474] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Update message filters in the WebContent sandbox
https://bugs.webkit.org/show_bug.cgi?id=218520

Reviewed by Brent Fulgham.

Based on telemetry, update the message filters with allowed messages in the WebContent sandbox.

No new tests, covered by existing tests.

  • WebProcess/com.apple.WebProcess.sb.in:
1:35 PM Changeset in webkit [269473] by Ryan Haddad
  • 1 edit
    1 move
    1 add in trunk/LayoutTests

fast/forms/search/search-size-with-decorations.html is failing on Catalina.

Unreviewed test gardening.

  • platform/mac-catalina/fast/forms/search/search-size-with-decorations-expected.txt: Renamed from LayoutTests/platform/mac-catalina/fast/forms/search-size-with-decorations-expected.txt.
1:35 PM Changeset in webkit [269472] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix the build with recent SDKs.

  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::ProcessLauncher::platformInvalidate):

1:35 PM Changeset in webkit [269471] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[GPU Process] Add tests for sbix and COLR fonts in canvas
https://bugs.webkit.org/show_bug.cgi?id=218346

Unreviewed test gardening.

  • platform/mac/TestExpectations: Skip the tests for Mojave.
1:32 PM Changeset in webkit [269470] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebCore

[GTK] Add missing const_cast in gdk_event_get_source_device()

Unreviewed build fix.

  • platform/gtk/GtkVersioning.h:

(gdk_event_get_source_device):

12:58 PM Changeset in webkit [269469] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[build.webkit.org] Rename BUILD_WEBKIT_URL to CURRENT_HOSTNAME
https://bugs.webkit.org/show_bug.cgi?id=218629

Reviewed by Jonathan Bedard.

  • CISupport/build-webkit-org/steps.py:
12:52 PM Changeset in webkit [269468] by don.olmstead@sony.com
  • 14 edits in trunk/Source

Non-unified build fixes, early November 2020 edition
https://bugs.webkit.org/show_bug.cgi?id=218628

Unreviewed non-unified build fix.

Source/JavaScriptCore:

  • llint/LLIntSlowPaths.cpp:

Source/WebCore:

  • display/css/DisplayBox.cpp:
  • display/css/DisplayBoxFactory.cpp:
  • display/css/DisplayBoxFactory.h:
  • page/PageConfiguration.cpp:
  • rendering/style/StyleContentAlignmentData.cpp:
  • rendering/style/StyleContentAlignmentData.h:
  • rendering/style/StyleSelfAlignmentData.cpp:
  • rendering/style/StyleSelfAlignmentData.h:

Source/WebKit:

  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::start):
(WebKit::SpeechRecognitionServer::removePendingRequest):

  • WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.cpp:
12:40 PM Changeset in webkit [269467] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] Patch which break layout-test shouldn't cause infinite RETRY loop
https://bugs.webkit.org/show_bug.cgi?id=218618

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(RunWebKitTests.evaluateResult): Do not retry when layout-tests fail with exit code 254. Instead fail the build-step, which
will trigger re-run and run-layout-tests-without-patch steps.
(RunWebKitTestsWithoutPatch.evaluateCommand): Set clean_tree_run_status build property.
(AnalyzeLayoutTestsResults.report_failure):
(AnalyzeLayoutTestsResults.start): If clean tree run passes, mark the build as failure.

  • CISupport/ews-build/steps_unittest.py: Added/updated unit-tests.
12:29 PM Changeset in webkit [269466] by Alan Coon
  • 3 edits
    2 adds in branches/safari-610.3.7.1-branch

Cherry-pick r269384. rdar://problem/71084559

REGRESSION (r257839): Miscomputed style due to computed 'rem' value in matched declaration cache
https://bugs.webkit.org/show_bug.cgi?id=218561
<rdar://problem/70074191>

Reviewed by Zalan Bujtas.

Source/WebCore:

Test: fast/dom/focus-rem-style-update.html

Call to focus() causes computed style update for the element’s ancestor chain before the the document
has otherwise been styled (using the shortcut mechanism introduced in r257839). This style, which uses ‘rem’
unit and so depends on root element font size, gets cached in MatchedDeclarationsCache. The root font size
then changes but during the resulting style update we use this cached value, failing to re-resolve ‘rem’.

  • style/StyleTreeResolver.cpp: (WebCore::Style::TreeResolver::resolveElement):

Invalidate matched declarations cache also when there is no existing document element style.

LayoutTests:

  • fast/dom/focus-rem-style-update-expected.html: Added.
  • fast/dom/focus-rem-style-update.html: Added.

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

12:29 PM Changeset in webkit [269465] by Alan Coon
  • 2 edits in branches/safari-610.3.7.1-branch/Source/JavaScriptCore

Cherry-pick r269338. rdar://problem/71021911

Don't assert there is no checkpoint side state when dropping the JSLock
https://bugs.webkit.org/show_bug.cgi?id=218537

Reviewed by Filip Pizlo.

You may have multiple OSR exit sidestate data on the stack, and then call into
API code, which might DropAllLocks. Hence, this assert is wrong.

Working on a test. Will land in a followup.

  • runtime/JSLock.cpp: (JSC::JSLock::willReleaseLock):

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

12:29 PM Changeset in webkit [269464] by Alan Coon
  • 3 edits in branches/safari-610.3.7.1-branch/Source/WebCore

Cherry-pick r269321. rdar://problem/71083871

Protect against HTMLMediaElement being destroyed during disptachEvent().
https://bugs.webkit.org/show_bug.cgi?id=218398
<rdar://problem/67613836>

Reviewed by Chris Dumez.

Make the MainThreadGenericEventQueue protect the target as well as the owner of the queue.

Drive-by fix: Create the scoped eventFiringScope object after the protect object, to ensure
that the member variable set by the first scope will safely occur.

Drive-by fix #2: Also null-check the result of document().page() within HTMLMediaElement::dispatchEvent().

  • dom/GenericEventQueue.cpp: (WebCore::MainThreadGenericEventQueue::dispatchOneEvent):
  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::dispatchEvent):

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

12:29 PM Changeset in webkit [269463] by Alan Coon
  • 2 edits in branches/safari-610.3.7.1-branch/Source/WebCore

Cherry-pick r269190. rdar://problem/71080386

Increase camera failing timer to 30 seconds
https://bugs.webkit.org/show_bug.cgi?id=218389

Reviewed by Eric Carlson.

From testing, 3 seconds is not always enough if getUserMedia is quickly called multiple times.
Let's increase to 30 seconds to give room for slow systems while still being able to identify failures.

  • platform/mediastream/mac/AVVideoCaptureSource.h:

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

12:29 PM Changeset in webkit [269462] by Alan Coon
  • 1 edit in branches/safari-610.3.7.1-branch/Source/ThirdParty/libwebrtc/Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_indata.c

Apply patch. rdar://problem/71083441

12:11 PM Changeset in webkit [269461] by Alan Coon
  • 8 edits in branches/safari-610.3.7.1-branch/Source

Versioning.

WebKit-7610.3.7.1.1

12:07 PM Changeset in webkit [269460] by Alan Coon
  • 1 edit in branches/safari-610.3.7.0-branch/Source/ThirdParty/libwebrtc/Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_indata.c

Apply patch. rdar://problem/71083435

12:05 PM Changeset in webkit [269459] by youenn@apple.com
  • 8 edits in trunk

WebSocket constructor should not throw in case port is blocked
https://bugs.webkit.org/show_bug.cgi?id=218617
LayoutTests/imported/w3c:

Reviewed by Alex Christensen.

  • web-platform-tests/websockets/Create-blocked-port.any-expected.txt:
  • web-platform-tests/websockets/Create-blocked-port.any.worker-expected.txt:

Source/WebCore:

Reviewed by Alex Christensen.

Update as per spec, see https://github.com/web-platform-tests/wpt/pull/5212.
Covered by existing tests.

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::connect):

LayoutTests:

<rdar://problem/71080398>

Reviewed by Alex Christensen.

Removing no longer valid test, correct version covered by WPT test.

  • http/tests/websocket/tests/hybi/url-parsing-expected.txt:
  • http/tests/websocket/tests/hybi/url-parsing.html:
11:52 AM Changeset in webkit [269458] by Simon Fraser
  • 15 edits in trunk/Source/WebCore

Clean up ScrollingStateTree setPropertyChangesAfterReattach() code
https://bugs.webkit.org/show_bug.cgi?id=218621

Reviewed by Antti Koivisto.

Replace lots of individual setPropertyChangedInternal() calls with a single call
with an OptionSet<> argument.

The virtual applicableProperties() calls base classes to generate an OptionSet<>
of all the properties for a node type.

  • page/scrolling/ScrollingStateFixedNode.cpp:

(WebCore::ScrollingStateFixedNode::applicableProperties const):
(WebCore::ScrollingStateFixedNode::setPropertyChangesAfterReattach): Deleted.

  • page/scrolling/ScrollingStateFixedNode.h:
  • page/scrolling/ScrollingStateFrameScrollingNode.cpp:

(WebCore::ScrollingStateFrameScrollingNode::applicableProperties const):
(WebCore::ScrollingStateFrameScrollingNode::setPropertyChangesAfterReattach): Deleted.

  • page/scrolling/ScrollingStateFrameScrollingNode.h:
  • page/scrolling/ScrollingStateNode.cpp:

(WebCore::ScrollingStateNode::applicableProperties const):
(WebCore::ScrollingStateNode::setPropertyChangesAfterReattach):

  • page/scrolling/ScrollingStateNode.h:

(WebCore::ScrollingStateNode::setPropertiesChangedInternal):

  • page/scrolling/ScrollingStateOverflowScrollProxyNode.cpp:

(WebCore::ScrollingStateOverflowScrollProxyNode::applicableProperties const):
(WebCore::ScrollingStateOverflowScrollProxyNode::setPropertyChangesAfterReattach): Deleted.

  • page/scrolling/ScrollingStateOverflowScrollProxyNode.h:
  • page/scrolling/ScrollingStatePositionedNode.cpp:

(WebCore::ScrollingStatePositionedNode::applicableProperties const):
(WebCore::ScrollingStatePositionedNode::setPropertyChangesAfterReattach): Deleted.

  • page/scrolling/ScrollingStatePositionedNode.h:
  • page/scrolling/ScrollingStateScrollingNode.cpp:

(WebCore::ScrollingStateScrollingNode::applicableProperties const):
(WebCore::ScrollingStateScrollingNode::setPropertyChangesAfterReattach): Deleted.

  • page/scrolling/ScrollingStateScrollingNode.h:
  • page/scrolling/ScrollingStateStickyNode.cpp:

(WebCore::ScrollingStateStickyNode::applicableProperties const):
(WebCore::ScrollingStateStickyNode::setPropertyChangesAfterReattach): Deleted.

  • page/scrolling/ScrollingStateStickyNode.h:
11:51 AM Changeset in webkit [269457] by Alan Coon
  • 2 edits in branches/safari-610.3.7.0-branch/Source/WebCore

Cherry-pick r269190. rdar://problem/70970247

Increase camera failing timer to 30 seconds
https://bugs.webkit.org/show_bug.cgi?id=218389

Reviewed by Eric Carlson.

From testing, 3 seconds is not always enough if getUserMedia is quickly called multiple times.
Let's increase to 30 seconds to give room for slow systems while still being able to identify failures.

  • platform/mediastream/mac/AVVideoCaptureSource.h:

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

11:49 AM Changeset in webkit [269456] by Alan Coon
  • 3 edits
    2 adds in branches/safari-610.3.7.0-branch

Cherry-pick r269384. rdar://problem/71043200

REGRESSION (r257839): Miscomputed style due to computed 'rem' value in matched declaration cache
https://bugs.webkit.org/show_bug.cgi?id=218561
<rdar://problem/70074191>

Reviewed by Zalan Bujtas.

Source/WebCore:

Test: fast/dom/focus-rem-style-update.html

Call to focus() causes computed style update for the element’s ancestor chain before the the document
has otherwise been styled (using the shortcut mechanism introduced in r257839). This style, which uses ‘rem’
unit and so depends on root element font size, gets cached in MatchedDeclarationsCache. The root font size
then changes but during the resulting style update we use this cached value, failing to re-resolve ‘rem’.

  • style/StyleTreeResolver.cpp: (WebCore::Style::TreeResolver::resolveElement):

Invalidate matched declarations cache also when there is no existing document element style.

LayoutTests:

  • fast/dom/focus-rem-style-update-expected.html: Added.
  • fast/dom/focus-rem-style-update.html: Added.

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

11:49 AM Changeset in webkit [269455] by Alan Coon
  • 3 edits in branches/safari-610.3.7.0-branch/Source/WebCore

Cherry-pick r269321. rdar://problem/71083865

Integrator's note: added a custom null check in HTMLMediaElement.cpp.

Protect against HTMLMediaElement being destroyed during disptachEvent().
https://bugs.webkit.org/show_bug.cgi?id=218398
<rdar://problem/67613836>

Reviewed by Chris Dumez.

Make the MainThreadGenericEventQueue protect the target as well as the owner of the queue.

Drive-by fix: Create the scoped eventFiringScope object after the protect object, to ensure
that the member variable set by the first scope will safely occur.

Drive-by fix #2: Also null-check the result of document().page() within HTMLMediaElement::dispatchEvent().

  • dom/GenericEventQueue.cpp: (WebCore::MainThreadGenericEventQueue::dispatchOneEvent):
  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::dispatchEvent):

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

11:49 AM Changeset in webkit [269454] by Alan Coon
  • 7 edits
    1 add in branches/safari-610.3.7.0-branch/Source

Cherry-pick r269208. rdar://problem/71044969

AX: Incorrect list of voices being displayed on iOS
https://bugs.webkit.org/show_bug.cgi?id=218293

Reviewed by Per Arne Vollan.

Source/WebCore:

Limit the voices that we display in WebSpeech to only built-in system voices. This was the intention of the "compact"
decision, but some mobile assets have compact voices, which are not available WebContent.

  • platform/ios/PlatformSpeechSynthesizerIOS.mm: (WebCore::PlatformSpeechSynthesizer::initializeVoiceList):

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/PlatformMac.cmake:
  • pal/spi/cocoa/AXSpeechManagerSPI.h: Added.

Source/WTF:

  • wtf/PlatformHave.h:

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

11:17 AM Changeset in webkit [269453] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

Clean up Source/WebCore/platform/graphics/DashArray.h
https://bugs.webkit.org/show_bug.cgi?id=218619

Reviewed by Simon Fraser.

Attempting to #include <WebCore/DisplayList.h> in API tests currently results in a compilation error when
parsing DashArray.h, due to the CGFloat type being unknown. Fix this by including CoreGraphics.h if
USE(CG) is defined.

  • platform/graphics/DashArray.h:

Also do some more cleanup around this file:

  • Use #pragma once instead of #define-based header guards.
  • Use using instead of typedef
  • Add a missing namespace WebCore around this file
  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h: Add WebCore namespaces for DashArray.
11:12 AM Changeset in webkit [269452] by Chris Dumez
  • 7 edits
    4 adds in trunk

<input disabled> does not fire click events after dispatchEvent
https://bugs.webkit.org/show_bug.cgi?id=215461
<rdar://problem/67030950>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline WPT tests that are now passing.

  • web-platform-tests/dom/events/Event-dispatch-click-expected.txt:
  • web-platform-tests/html/semantics/forms/the-input-element/radio-input-cancel-expected.txt:

Source/WebCore:

We should allow mouse events from JS to get dispatched on disabled form controls. Only mouse events from the
user and calling input.click() should not cause an event to get dispatched on disabled form controls.

Tests: fast/dom/HTMLInputElement/disabled-checkbox-click.html

fast/dom/HTMLInputElement/disabled-radio-click.html

  • dom/Node.cpp:

(WebCore::Node::handleLocalEvents):
Allow mouse events from JS to get dispatched on disabled form controls. Trusted mouse events (events from
the user-agent) are still not dispatched on disabled form controls.

  • html/RadioInputType.cpp:

(WebCore::RadioInputType::didDispatchClick):
Fix post activation behavior for radio input elements so that we set the elements' checkedness to false
if the activation was cancelled and we are not restoring the checkedness of the previously checked element
in the group.

LayoutTests:

Extend layout test coverage.

  • fast/dom/HTMLInputElement/disabled-checkbox-click-expected.txt: Added.
  • fast/dom/HTMLInputElement/disabled-checkbox-click.html: Added.
  • fast/dom/HTMLInputElement/disabled-radio-click-expected.txt: Added.
  • fast/dom/HTMLInputElement/disabled-radio-click.html: Added.
10:45 AM Changeset in webkit [269451] by Chris Dumez
  • 32 edits
    1 copy
    19 adds
    11 deletes in trunk/LayoutTests

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

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Resync web-platform-tests/html/browsers & web-platform-tests/html/dom tests from upstream 7a287c9e26fbc12c91e.

  • web-platform-tests/html/browsers/*: Updated.
  • web-platform-tests/html/dom/*: Updated.

LayoutTests:

10:36 AM Changeset in webkit [269450] by graouts@webkit.org
  • 4 edits
    4 adds in trunk

REGRESSION (r263179): CSS checkbox no longer visible in iOS 14
https://bugs.webkit.org/show_bug.cgi?id=216690
<rdar://problem/69156576>

Reviewed by Simon Fraser.

Source/WebCore:

We revert the changes to RenderBox::addVisualEffectOverflow() introduced in
r263179 for bug 213260.

Instead of that original change, which affected painting instead of hit-testing,
we now ensure that RenderBlock::nodeAtPoint() will check the hit-test point is
within an element's clipped bounds before considering its children. Whether the
element has a self-painting layer should have no bearing here.

Tests: fast/box-shadow/box-shadow-with-zero-height.html

fast/box-shadow/hit-test-box-shadow-on-zero-height-clipping-container-2.html

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::nodeAtPoint):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::addVisualEffectOverflow):

LayoutTests:

Add two new tests: one that identifies the particular regression introduced by r263179 where
<div style="box-shadow: 0 0 0 10px"> would render nothing at all, and another one that does
further hit-testing on clipped child of an element with height: 0 and box-shadow to set ink
overflow which was failing even after r263179.

  • fast/box-shadow/box-shadow-with-zero-height-expected.html: Added.
  • fast/box-shadow/box-shadow-with-zero-height.html: Added.
  • fast/box-shadow/hit-test-box-shadow-on-zero-height-clipping-container-2-expected.txt: Added.
  • fast/box-shadow/hit-test-box-shadow-on-zero-height-clipping-container-2.html: Added.
10:29 AM Changeset in webkit [269449] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix the build with recent SDKs.

  • Platform/IPC/cocoa/ConnectionCocoa.mm:

(IPC::Connection::kill):

10:14 AM Changeset in webkit [269448] by Alan Coon
  • 1 copy in tags/Safari-610.2.11.51.9

Tag Safari-610.2.11.51.9.

10:13 AM Changeset in webkit [269447] by Alan Coon
  • 8 edits in branches/safari-610.2.11.51-branch/Source

Versioning.

WebKit-7610.2.11.51.9

9:50 AM Changeset in webkit [269446] by Kocsen Chung
  • 1 copy in branches/safari-610.3.7.1-branch

New branch.

9:48 AM Changeset in webkit [269445] by Kocsen Chung
  • 8 edits in branches/safari-610.3.7.0-branch/Source

Versioning.

WebKit-7610.3.7.0.1

9:38 AM Changeset in webkit [269444] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

[iOS] Remove redundant rule using never-granted extension
https://bugs.webkit.org/show_bug.cgi?id=218596
<rdar://problem/66581246>

Reviewed by Per Arne Vollan.

WebKit has long had a sandbox rule granting the ability to issue iokit-open
operations if a particular security extension was granted to the process. The
WebKit processes are known to never grant this extension, so this rule is not
needed.

We should remove the rule to reduce sandbox complexity and increase the speed
of sandbox compilation.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
9:36 AM Changeset in webkit [269443] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

[iOS] Remove redundant rule for shared-preference.read-write
https://bugs.webkit.org/show_bug.cgi?id=218594
<rdar://problem/66581796>

Reviewed by Per Arne Vollan.

We have long had a rule to allow shared preferences to be read and written if a
particular sandbox extension was granted to the process. However, we do not issue
this extension to any WebKit process, so the rule is unnecessary.

We should remove it to reduce confusion, and make the sandbox smaller (and quicker
to compile).

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
9:36 AM Changeset in webkit [269442] by Darin Adler
  • 24 edits in trunk/Source

Remove more functions that implicitly use composed tree
https://bugs.webkit.org/show_bug.cgi?id=218544

Reviewed by Ryosuke Niwa.

Source/WebCore:

  • dom/Node.cpp:

(WebCore::commonInclusiveAncestor): Changed this into a function template.

  • dom/Node.h: Ditto. Note this defaults to the traditional tree, and callers

have all been modified to use composed tree explicitly.

  • dom/Position.cpp:

(WebCore::commonInclusiveAncestor): Changed return type to a raw pointer.
Since I created this returning a smart pointer, Ryosuke clarified that our
approach to object lifetime does not involve returning smart pointers in
cases like this. Call commonInclusiveAncestor<ComposedTree>.
(WebCore::documentOrder): Ditto.

  • dom/Position.h: Updated return value.
  • dom/Range.cpp:

(WebCore::Range::commonAncestorContainer const): Made this non-inline.
Note that this now calls the non-composed-tree version of
commonInclusiveAncestor, which is what we want, but since live ranges
maintain the invariant that both containers are in the same tree, this is
not an observable change.

  • dom/Range.h: Made commonAncestorContainer non-inline. Not critical to

optimize out the function call.

  • dom/SimpleRange.cpp:

(WebCore::commonInclusiveAncestor): Changed this into a function template.

  • dom/SimpleRange.h: Updated for the above.
  • editing/ChangeListTypeCommand.cpp:

(WebCore::listConversionTypeForSelection): Use commonInclusiveAncestor<ComposedTree>.

  • editing/EditingStyle.cpp:

(WebCore::EditingStyle::styleAtSelectionStart): Ditto.

  • editing/Editor.cpp:

(WebCore::Editor::adjustedSelectionRange): Ditto.

  • editing/FormatBlockCommand.cpp:

(WebCore::FormatBlockCommand::elementForFormatBlockCommand): Ditto.

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::scheduleObservationUpdate): Ditto.
(WebCore::TextManipulationController::replace): Ditto.

  • editing/VisiblePosition.cpp:

(WebCore::commonInclusiveAncestor): Added.
(WebCore::intersects): Added.
(WebCore::contains): Added.
(WebCore::intersection): Added.
(WebCore::midpoint): Added.

  • editing/VisiblePosition.h: Added functions that work with VisiblePositionRange.

These are used in WebKit editing-related code for iOS, and having these higher
level operations is starting to make that code more readable. This was originally
motivated because it was a use of a function template outside WebCore and I wanted
to sidestep the need to export, which I can't figure out how to do yet. But the
refactoring ended up changing the code completely.

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverterCaches::cacheAncestorsOfStartToBeConverted): Updated since
commonInclusiveAncestor does not return a smart pointer any more.

  • editing/markup.cpp:

(WebCore::serializePreservingVisualAppearanceInternal): Ditto.

  • page/DragController.cpp:

(WebCore::DragController::insertDroppedImagePlaceholdersAtCaret): Use
commonInclusiveAncestor<ComposedTree>.

  • page/EventHandler.cpp:

(WebCore::targetNodeForClickEvent): Ditto.

  • page/TextIndicator.cpp:

(WebCore::estimatedBackgroundColorForRange): Ditto.
(WebCore::initializeIndicator): Ditto.

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::collectSelectionRectsInternal): Ditto.

Source/WebKit:

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::constrainRangeToSelection): Factored this function out of the
requestDocumentEditingContext and also rewrote it to use higher level operations.
(WebKit::WebPage::requestDocumentEditingContext): Refactored to use the new
constrainRangeToSelection.

9:33 AM Changeset in webkit [269441] by Kocsen Chung
  • 1 copy in branches/safari-610.3.7.0-branch

New branch.

9:29 AM Changeset in webkit [269440] by Kocsen Chung
  • 8 edits in branches/safari-610-branch/Source

Versioning.

WebKit-7610.4.1

9:19 AM Changeset in webkit [269439] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix build after r269435
https://bugs.webkit.org/show_bug.cgi?id=218599

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::opener):
(WebCore::FrameLoader::opener const):

9:01 AM Changeset in webkit [269438] by Patrick Angle
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(?): Sources: override banner is squished for large images
https://bugs.webkit.org/show_bug.cgi?id=218196

Reviewed by Devin Rousso.

Progressions made in https://trac.webkit.org/changeset/266695/webkit caused the image container to occupy the
maximum amount of space possible, which caused the override banner to be squished and a scrollbar to appear.
This is resolved by making sure the minimum dimensions of the image containers are 0, so that the container can
be flex-shrinked.

  • UserInterface/Views/ImageResourceContentView.css:

(.content-view.resource.image > .img-container):

8:58 AM Changeset in webkit [269437] by Aditya Keerthi
  • 9 edits
    2 adds in trunk

[macOS] Toggling dark mode does not update the scrollbar appearance in overflow: scroll elements
https://bugs.webkit.org/show_bug.cgi?id=218538
<rdar://problem/68953006>

Reviewed by Simon Fraser.

Source/WebCore:

This functionality regressed in r260276 with the introduction of async
overflow scrolling on macOS. The appearance of the scrollbar is determined
by [WebScrollerImpDelegate effectiveAppearanceForScrollerImp:]. Prior to
r260276, ScrollbarThemeMac::paint was responsible for painting the scrollbar,
using [NSScrollerImp drawKnob]. Calling this method results in a call to
effectiveAppearanceForScrollerImp:, ensuring the scrollbar has the correct
appearance.

However, async overflow scrolling no longer paints the scrollbar using
drawKnob, and a call to effectiveAppearanceForScrollImp: is no longer made
when switching between light/dark appearances. Since we no longer draw the
knob ourselves, and the NSScrollerImp does not belong to an NSView, the
scrollbar does not automatically get repainted on an appearance change.
To fix, we need to ensure the scrollbar is repainted by making a call to
[NSScrollerImp setNeedsDisplay:] when the page's appearance changes. This
should be done for all scrollbars to ensure their appearance is up to date.

Note that hovering over the scrollbar still results in an update to its
appearance, since AppKit always repaints the scrollbar on hover.

Test: fast/scrolling/mac/overflow-scrollbars-toggle-dark-mode.html

  • dom/Document.cpp:

(WebCore::Document::invalidateScrollbars): Tell the FrameView to invalidate scrollbars in all its ScrollableAreas.

  • dom/Document.h:
  • page/FrameView.cpp:

(WebCore::FrameView::invalidateScrollbarsForAllScrollableAreas):

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

(WebCore::Page::appearanceDidChange): Tell each document to invalidate its scrollbars.

  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::setScrollbarOverlayStyle):
(WebCore::ScrollableArea::invalidateScrollbars):

Moved scrollbar invalidation out of setScrollbarOverlayStyle and into
its own method, so that it can be called for all ScrollableAreas in a
FrameView.

  • platform/ScrollableArea.h:

LayoutTests:

Added a layout test which draws a scrollbar in the dark appearance,
switches to the light appearance, and draws the scrollbar again. The
final image should have a light appearance scrollbar.

  • fast/scrolling/mac/overflow-scrollbars-toggle-dark-mode-expected.html: Added.
  • fast/scrolling/mac/overflow-scrollbars-toggle-dark-mode.html: Added.
8:56 AM Changeset in webkit [269436] by youenn@apple.com
  • 9 edits
    1 copy
    1 move
    3 adds
    1 delete in trunk

Consider blocking ports 5060 and 5061
https://bugs.webkit.org/show_bug.cgi?id=218557
<rdar://problem/71031479>

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/request/request-bad-port.any-expected.txt: Added.
  • web-platform-tests/fetch/api/request/request-bad-port.any.html: Added.
  • web-platform-tests/fetch/api/request/request-bad-port.any.js: Added.

(BLOCKED_PORTS_LIST.map):

  • web-platform-tests/fetch/api/request/request-bad-port.any.worker-expected.txt: Added.
  • web-platform-tests/fetch/api/request/request-bad-port.any.worker.html: Added.
  • web-platform-tests/fetch/api/request/request-bad-port.html: Removed.
  • web-platform-tests/tools/wptserve/wptserve/utils.py:

(is_bad_port):

  • web-platform-tests/websockets/Create-blocked-port.any-expected.txt:
  • web-platform-tests/websockets/Create-blocked-port.any.js:
  • web-platform-tests/websockets/Create-blocked-port.any.worker-expected.txt:

Source/WTF:

  • wtf/URL.cpp:

(WTF::portAllowed):

LayoutTests:

8:54 AM Changeset in webkit [269435] by achristensen@apple.com
  • 30 edits in trunk/Source

Store WeakPtr<Frame> instead of Frame*
https://bugs.webkit.org/show_bug.cgi?id=218599

Reviewed by Youenn Fablet.

Source/WebCore:

No change in behavior, but this probably fixes some bugs.

  • bindings/js/WindowProxy.cpp:

(WebCore::WindowProxy::WindowProxy):
(WebCore::WindowProxy::frame const):

  • bindings/js/WindowProxy.h:

(WebCore::WindowProxy::frame const): Deleted.

  • dom/Document.cpp:

(WebCore::Document::willBeRemovedFromFrame):
(WebCore::Document::canNavigateInternal):
(WebCore::Document::setDesignMode):
(WebCore::Document::getDesignMode const): Deleted.

  • dom/Document.h:
  • html/HTMLFrameOwnerElement.cpp:

(WebCore::HTMLFrameOwnerElement::setContentFrame):
(WebCore::HTMLFrameOwnerElement::disconnectContentFrame):

  • html/HTMLFrameOwnerElement.h:

(WebCore::HTMLFrameOwnerElement::contentFrame const):

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::frameForId):
(WebCore::InspectorPageAgent::frameId):

  • inspector/agents/InspectorPageAgent.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::stopLoading):
(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::commitLoad):
(WebCore::DocumentLoader::detachFromFrame):
(WebCore::DocumentLoader::removeSubresourceLoader):
(WebCore::DocumentLoader::subresourceLoaderFinishedLoadingOnePart):

  • loader/DocumentWriter.cpp:

(WebCore::DocumentWriter::createDocument):
(WebCore::DocumentWriter::decoder):
(WebCore::DocumentWriter::setFrame):

  • loader/DocumentWriter.h:

(WebCore::DocumentWriter::setFrame): Deleted.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::detachFromAllOpenedFrames):
(WebCore::FrameLoader::opener):
(WebCore::FrameLoader::setOpener):
(WebCore::FrameLoader::hasOpenedFrames const):
(WebCore::FrameLoader::addExtraFieldsToRequest):

  • loader/FrameLoader.h:
  • loader/FrameNetworkingContext.h:

(WebCore::FrameNetworkingContext::FrameNetworkingContext):
(WebCore::FrameNetworkingContext::frame const):

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::update):
(WebCore::ApplicationCacheGroup::didFinishLoadingEntry):
(WebCore::ApplicationCacheGroup::didFailLoadingEntry):
(WebCore::ApplicationCacheGroup::didFailLoadingManifest):
(WebCore::ApplicationCacheGroup::startLoadingEntry):

  • loader/appcache/ApplicationCacheGroup.h:
  • page/AbstractFrame.h:
  • page/Frame.cpp:

(WebCore::Frame::Frame):
(WebCore::Frame::addDestructionObserver):
(WebCore::Frame::removeDestructionObserver):

  • page/Frame.h:
  • page/FrameDestructionObserver.cpp:

(WebCore::FrameDestructionObserver::frame const):
(WebCore::FrameDestructionObserver::observeFrame):

  • page/FrameDestructionObserver.h:

(WebCore::FrameDestructionObserver::frame const): Deleted.

  • page/FrameTree.cpp:

(WebCore::FrameTree::FrameTree):
(WebCore::FrameTree::parent const):
(WebCore::FrameTree::appendChild):
(WebCore::FrameTree::removeChild):
(WebCore::FrameTree::traverseNextInPostOrder const):

  • page/FrameTree.h:

(WebCore::FrameTree::previousSibling const):
(WebCore::FrameTree::lastChild const):
(WebCore::FrameTree::FrameTree): Deleted.

  • rendering/RenderScrollbar.cpp:

(WebCore::RenderScrollbar::RenderScrollbar):

  • rendering/RenderScrollbar.h:

Source/WebKit:

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::initWithCoreMainFrame):
(WebKit::WebFrame::createSubframe):
(WebKit::WebFrame::coreFrame const):
(WebKit::WebFrame::info const):
(WebKit::WebFrame::handlesPageScaleGesture const):
(WebKit::WebFrame::requiresUnifiedScaleFactor const):

  • WebProcess/WebPage/WebFrame.h:

(WebKit::WebFrame::coreFrame const): Deleted.

8:46 AM Changeset in webkit [269434] by commit-queue@webkit.org
  • 7 edits in trunk/Source

Use fewer raw pointers and more const correctness in Frame.h
https://bugs.webkit.org/show_bug.cgi?id=218598

Patch by Alex Christensen <achristensen@webkit.org> on 2020-11-05
Reviewed by Youenn Fablet.

Source/WebCore:

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::opener): Deleted.

  • loader/FrameLoader.h:
  • page/Frame.cpp:

(WebCore::Frame::Frame):
(WebCore::Frame::page const):
(WebCore::Frame::ownerElement const):
(WebCore::Frame::ownerRenderer const):

  • page/Frame.h:

(WebCore::Frame::loader const): Deleted.
(WebCore::Frame::ownerElement const): Deleted.
(WebCore::Frame::page const): Deleted.

Source/WebKit:

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

(WebKit::toWebFrameLoaderClient):

8:21 AM Changeset in webkit [269433] by Patrick Angle
  • 2 edits in trunk/Tools

Change my (Patrick Angle's) status to committer.

Unreviewed, updating contributors.json for myself.

  • Scripts/webkitpy/common/config/contributors.json:
8:12 AM Changeset in webkit [269432] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Use std::exchange instead of WTFMove to avoid using members after moving them in NavigationScheduler.cpp
https://bugs.webkit.org/show_bug.cgi?id=218597

Patch by Alex Christensen <achristensen@webkit.org> on 2020-11-05
Reviewed by Wenson Hsieh.

This shouldn't change behavior, but it leaves the members in a defined state.

  • loader/NavigationScheduler.cpp:

(WebCore::NavigationScheduler::timerFired):
(WebCore::NavigationScheduler::cancel):

7:35 AM Changeset in webkit [269431] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Add visual support for text-overflow: ellipsis
https://bugs.webkit.org/show_bug.cgi?id=218572

Reviewed by Antti Koivisto.

In this patch we replace the trailing overflow content with ellipsis:

  1. Check if the current run is the last run on the line that can include the ellipsis text without getting clipped.
  2. "Empty" any subsequent runs as far as Run::renderedContent() is concerned (see Run::originalContent vs. Run::renderedContent)
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::constructContent):

7:02 AM Changeset in webkit [269430] by Lauro Moura
  • 3 edits in trunk/Tools

[GTK] Test /webkit/WebKitWebsiteData/configuration is flaky
https://bugs.webkit.org/show_bug.cgi?id=205441

Reviewed by Carlos Garcia Campos.

Checking the last 200 runs of gtk-release in the bots, the original
error from the report does not appear, but other flakies happened
related to checking if some directories were created (namely
indexeddb, service-workers and dom-cache). As they are created
asynchronously or lazily (i.e. requiring some operation to happen).
This could be seen in the WPE bots, not covered by the original
expectation, and also reproduced locally by running the test case
alone.

This commit adds some steps/wait time before each of these to make
sure the directories are created properly.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebsiteData.cpp:

(testWebsiteDataConfiguration): Add required steps before checking
directories

  • TestWebKitAPI/glib/TestExpectations.json: Remove expectation
6:44 AM Changeset in webkit [269429] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Test that skip_validation is effective
https://bugs.webkit.org/show_bug.cgi?id=218611

Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2020-11-05
Reviewed by Aakash Jain.

  • CISupport/ews-build/steps_unittest.py:
6:23 AM Changeset in webkit [269428] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Test that TransferToS3 is skipped properly
https://bugs.webkit.org/show_bug.cgi?id=218610

Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2020-11-05
Reviewed by Aakash Jain.

I.e. when not running on steps.EWS_BUILD_HOSTNAME.

  • CISupport/ews-build/steps_unittest.py:
6:14 AM Changeset in webkit [269427] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Transition hyphenated content to Run::renderedContent()
https://bugs.webkit.org/show_bug.cgi?id=218552

Reviewed by Antti Koivisto.

Currently hyphenated content is being constructed during paint time. This patch takes advantage of the
new Run::renderedContent() API.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::constructContent):
(WebCore::LayoutIntegration::LineLayout::paint):

5:11 AM Changeset in webkit [269426] by commit-queue@webkit.org
  • 3 edits
    1 move
    3 adds
    4 deletes in trunk/LayoutTests

[css-grid] Move tests grid-columns-rows-get-set-multiple and grid-content-sized-columns-resolution to WPT folder
https://bugs.webkit.org/show_bug.cgi?id=218565
LayoutTests/imported/w3c:

Patch by Ziran Sun <Ziran Sun> on 2020-11-05
Reviewed by Manuel Rego Casasnovas.

  • web-platform-tests/css/css-grid/parsing/grid-columns-rows-get-set-multiple-expected.txt: Added.
  • web-platform-tests/css/css-grid/parsing/grid-columns-rows-get-set-multiple.html: Added.
  • web-platform-tests/css/css-grid/parsing/grid-content-sized-columns-resolution-expected.txt: Added.
  • web-platform-tests/css/css-grid/parsing/grid-content-sized-columns-resolution.html: Renamed from LayoutTests/fast/css-grid-layout/grid-content-sized-columns-resolution.html.
  • web-platform-tests/css/css-grid/parsing/w3c-import.log: Updated.

LayoutTests:

These changes have been moved upstream in Chromium
at https://chromium-review.googlesource.com/c/chromium/src/+/2436821
and ported in WPT at
https://github.com/web-platform-tests/wpt/commit/7a287c9e26fbc12c91e1dde91859fabed96254b6

Patch by Ziran Sun <Ziran Sun> on 2020-11-05
Reviewed by Manuel Rego Casasnovas.

  • fast/css-grid-layout/grid-columns-rows-get-set-multiple-expected.txt: Removed.
  • fast/css-grid-layout/grid-columns-rows-get-set-multiple.html: Removed.
  • fast/css-grid-layout/grid-content-sized-columns-resolution-expected.txt: Removed.
  • fast/css-grid-layout/resources/grid-columns-rows-get-set-multiple.js: Removed.
5:06 AM WebKitGTK/2.30.x edited by clopez@igalia.com
(diff)
4:49 AM Changeset in webkit [269425] by Diego Pino Garcia
  • 4 edits in trunk/LayoutTests

[WPE] Unreviewed test gardening. Gardened several flaky failures reported in test bot.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
4:23 AM Changeset in webkit [269424] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Let's compute display lines visual alignments first before the runs
https://bugs.webkit.org/show_bug.cgi?id=218551

Reviewed by Antti Koivisto.

In this patch we pre-compute visual adjustement properties that we later use during run construction
(e.g. whether the runs on the line need vertical snapping).
This patch is also in preparation for adding support for "text-overflow: ellipsis". The pre-computed
LineLevelVisualAdjustmentsForRuns.needsTrailingContentReplacement will drive the content truncation logic for the ellipsis.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::lineOverflowWidth):
(WebCore::LayoutIntegration::LineLayout::constructContent):

4:17 AM Changeset in webkit [269423] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Don't mark TransferToS3 as failed if it was skipped
https://bugs.webkit.org/show_bug.cgi?id=218606

Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2020-11-05
Reviewed by Aakash Jain.

  • CISupport/ews-build/steps.py:

(TransferToS3.getResultSummary):

3:10 AM Changeset in webkit [269422] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Update my information in contributors.json
https://bugs.webkit.org/show_bug.cgi?id=218608

Patch by Rob Buis <rbuis@igalia.com> on 2020-11-05
Reviewed by Carlos Garcia Campos.

Update my information in contributors.json to change the autocomplete email address to be Igalia.

  • Scripts/webkitpy/common/config/contributors.json:
12:47 AM Changeset in webkit [269421] by Carlos Garcia Campos
  • 4 edits in trunk

WebDriver: handle surrogate pairs in keyboard actions
https://bugs.webkit.org/show_bug.cgi?id=218279

Reviewed by Brian Burg.

Source/WebKit:

And fail with invalid argument if the string can be represented as a single code point.

Fixes: imported/w3c/webdriver/tests/perform_actions/key_special_keys.py::test_codepoint_keys_behave_correctly[\U0001f604]

imported/w3c/webdriver/tests/perform_actions/key_special_keys.py::test_codepoint_keys_behave_correctly[\U0001f60d]
imported/w3c/webdriver/tests/perform_actions/key_special_keys.py::test_invalid_multiple_codepoint_keys_fail[fa]
imported/w3c/webdriver/tests/perform_actions/key_special_keys.py::test_invalid_multiple_codepoint_keys_fail[\u0ba8\u0bbfb]
imported/w3c/webdriver/tests/perform_actions/key_special_keys.py::test_invalid_multiple_codepoint_keys_fail[\u0ba8\u0bbf\u0ba8]
imported/w3c/webdriver/tests/perform_actions/key_special_keys.py::test_invalid_multiple_codepoint_keys_fail[\u1100\u1161\u11a8c]

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::pressedCharKey):
(WebKit::WebAutomationSession::performInteractionSequence):

WebDriverTests:

Remove expectations for tests that are now passing.

12:46 AM Changeset in webkit [269420] by jiewen_tan@apple.com
  • 4 edits in trunk

[WebAuthn] Determine an AAGUID for the platform authenticators
https://bugs.webkit.org/show_bug.cgi?id=217945
<rdar://problem/70811618>

Reviewed by Brent Fulgham.

Source/WebKit:

Relying parties use the AAGUID to recognize supported authenticators. Using a NULL AAGUID blocks them from recognizing Apple products as valid WebAuthentication targets.
We need to assign ourselves a GUID representing Apple authenticators, then publish with our attestation certificate and with the FIDO Alliance.

Covered by existing tests.

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticatorInternal::aaguidVector):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterUserVerification):

LayoutTests:

  • http/wpt/webauthn/public-key-credential-create-success-local.https.html:
12:45 AM Changeset in webkit [269419] by Carlos Garcia Campos
  • 7 edits in trunk/Source

WebDriver: session can have more than one active input source of the same type
https://bugs.webkit.org/show_bug.cgi?id=218382

Reviewed by Brian Burg.

Source/WebDriver:

Only send to the browser the list of input sources actually used by the action sequence.

  • Session.cpp:

(WebDriver::Session::performActions):

Source/WebKit:

We are failing in that case, and the dispatcher assumes it's not possible, but the spec doesn't say there's such
limitation and there's a WPT infrastructure test checking that (infrastructure/testdriver/actions/eventOrder.html).

  • UIProcess/Automation/SimulatedInputDispatcher.cpp:

(WebKit::SimulatedInputKeyFrame::keyFrameFromStateOfInputSources): Input sources are now stored in a HashMap.
(WebKit::SimulatedInputKeyFrame::keyFrameToResetInputSources): Ditto.
(WebKit::SimulatedInputDispatcher::run): We don't need to copy the given input sources, since they are owned by
the session.
(WebKit::SimulatedInputDispatcher::finishDispatching): Ditto.

  • UIProcess/Automation/SimulatedInputDispatcher.h:
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::WebAutomationSession): Do not create initial input sources for each type.
(WebKit::WebAutomationSession::performInteractionSequence): Check there aren't multiple input sources with the
same ID, but don't fail if there are multiple input sources with the same type.
(WebKit::WebAutomationSession::cancelInteractionSequence): Clear the active input sources.
(WebKit::WebAutomationSession::inputSourceForType): Removed.

  • UIProcess/Automation/WebAutomationSession.h:
12:21 AM Changeset in webkit [269418] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, build fix for ARM64E part 2
https://bugs.webkit.org/show_bug.cgi?id=218587

  • cssjit/SelectorCompiler.h:
12:12 AM Changeset in webkit [269417] by ysuzuki@apple.com
  • 4 edits in trunk/Source

Unreviewed, build fix for ARM64E
https://bugs.webkit.org/show_bug.cgi?id=218587

Source/JavaScriptCore:

  • llint/LLIntData.cpp:

Source/WebCore:

  • cssjit/SelectorCompiler.h:

Nov 4, 2020:

9:59 PM Changeset in webkit [269416] by Said Abou-Hallawa
  • 19 edits in trunk/Source

[GPU Process] Move the internal GPU rendering flags from WebPage to WebProcess
https://bugs.webkit.org/show_bug.cgi?id=218549

Reviewed by Tim Horton.

Source/WebCore:

Add a new RenderingPurpose for DOM rendering.

  • platform/graphics/RenderingMode.h:

Source/WebKit:

Move UseGPUProcessForCanvasRendering from WebPage to WebProcess. Add a
new setting for UseGPUProcessForDOMRendering to WebProcess.

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:

Encode/decode the flags from the UI Process to the Web Process.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters):
Read the flags in from the preferences.

  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::setUseGPUProcess):
(WebKit::RemoteMediaPlayerManager::updatePreferences): Deleted.

  • WebProcess/GPU/media/RemoteMediaPlayerManager.h:

These flags belong to WebKit so they should not be accessed through the
Settings.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createImageBuffer const):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):
(WebKit::WebPage::shouldUseRemoteRenderingFor): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::setUseGPUProcessForCanvasRendering):
(WebKit::WebProcess::setUseGPUProcessForDOMRendering):
(WebKit::WebProcess::shouldUseRemoteRenderingFor):

  • WebProcess/WebProcess.h:

The rendering and media flags can now be accessed from the WebPorcess.

Source/WebKitLegacy/mac:

GPU Process can't be enabled for WK1.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(-[WebPreferences useGPUProcessForMediaEnabled]): Deleted.
(-[WebPreferences setUseGPUProcessForMediaEnabled:]): Deleted.

  • WebView/WebPreferencesPrivate.h:

Source/WTF:

Fix a layering issue for the preference 'UseGPUProcessForMediaEnabled'.

  • Scripts/Preferences/WebPreferencesInternal.yaml:
9:17 PM Changeset in webkit [269415] by ysuzuki@apple.com
  • 14 edits
    1 delete in trunk/Source

Apply JITCage to CSSJIT
https://bugs.webkit.org/show_bug.cgi?id=218587

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • llint/LLIntData.cpp:
  • llint/LowLevelInterpreter.asm:
  • runtime/JSCPtrTag.h:
  • yarr/YarrJIT.cpp:

Source/WebCore:

Since CSSJIT does not call JIT function recursively, supporting it in JITCage is simple: we can have trampoline in C
and jump to JIT code, and instead of doing "ret", returning back to C code via jump.

No behavior change.

  • WebCore.xcodeproj/project.pbxproj:
  • cssjit/CSSPtrTag.h: Removed.
  • cssjit/CompiledSelector.h:
  • cssjit/FunctionCall.h:
  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::SelectorCodeGenerator::compile):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateReturn):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorChecker):

  • cssjit/SelectorCompiler.h:

(WebCore::SelectorCompiler::ruleCollectorSimpleSelectorChecker):
(WebCore::SelectorCompiler::querySelectorSimpleSelectorChecker):
(WebCore::SelectorCompiler::ruleCollectorSelectorCheckerWithCheckingContext):
(WebCore::SelectorCompiler::querySelectorSelectorCheckerWithCheckingContext):
(WebCore::SelectorCompiler::ruleCollectorSimpleSelectorCheckerFunction): Deleted.
(WebCore::SelectorCompiler::querySelectorSimpleSelectorCheckerFunction): Deleted.
(WebCore::SelectorCompiler::ruleCollectorSelectorCheckerFunctionWithCheckingContext): Deleted.
(WebCore::SelectorCompiler::querySelectorSelectorCheckerFunctionWithCheckingContext): Deleted.

  • dom/SelectorQuery.cpp:

(WebCore::SelectorDataList::executeCompiledSimpleSelectorChecker const):
(WebCore::SelectorDataList::executeCompiledSelectorCheckerWithCheckingContext const):
(WebCore::SelectorDataList::executeCompiledSingleMultiSelectorData const):
(WebCore::SelectorDataList::execute const):

  • dom/SelectorQuery.h:
  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::ruleMatches):

6:23 PM Changeset in webkit [269414] by Chris Dumez
  • 10 edits
    6 adds in trunk

window.event may get set on wrong global when dispatching an event
https://bugs.webkit.org/show_bug.cgi?id=218546

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline WPT test that is now passing.

  • web-platform-tests/dom/events/event-global-extra.window-expected.txt:

Source/WebCore:

As per the specification [1], while invoking an event listener, we should set the global's
'current event', stating that global is the 'listener callback’s associated Realm’s global
object'. It also states we should do so only if global is a Window object. Previously,
we were setting the 'current event' on the wrong global. We were using the global of the
object the event listener was registered on.

[1] https://dom.spec.whatwg.org/#concept-event-listener-inner-invoke

Tests: fast/events/window-event-onerror-recursive.html

fast/events/window-event-onerror.html
fast/events/window-event-recursive.html

  • bindings/js/JSDOMGlobalObject.cpp:
  • bindings/js/JSDOMGlobalObject.h:
  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::setCurrentEvent):
(WebCore::JSDOMWindowBase::currentEvent const):

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSErrorHandler.cpp:

(WebCore::JSErrorHandler::handleEvent):

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

LayoutTests:

Extend layout test coverage.

  • fast/events/window-event-onerror-expected.txt: Added.
  • fast/events/window-event-onerror-recursive-expected.txt: Added.
  • fast/events/window-event-onerror-recursive.html: Added.
  • fast/events/window-event-onerror.html: Added.
  • fast/events/window-event-recursive.html: Added.
5:58 PM Changeset in webkit [269413] by Kocsen Chung
  • 1 copy in tags/Safari-610.3.7

Tag Safari-610.3.7.

5:57 PM Changeset in webkit [269412] by Kocsen Chung
  • 1 delete in tags/Safari-610.3.7

Delete tag.

5:56 PM Changeset in webkit [269411] by Kocsen Chung
  • 2 edits in branches/safari-610-branch/Source/WebCore

Revert r269190. rdar://problem/70970247

5:40 PM Changeset in webkit [269410] by commit-queue@webkit.org
  • 2 edits in trunk

Fix JSC build on macOS Big Sur
https://bugs.webkit.org/show_bug.cgi?id=218566

Patch by Sergey Rubanov <Sergey Rubanov> on 2020-11-04
Reviewed by David Kilzer.

  • Source/cmake/WebKitFindPackage.cmake:
5:23 PM Changeset in webkit [269409] by Diego Pino Garcia
  • 2 edits
    4 adds in trunk/LayoutTests

[GTK] Unreviewed test gardening. Update expectations of flaky text failures.

The updated tests have been failing consistently for the last 4000 revisions.
A few tests are actually passing now, after emiting a new baseline.

  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/content-security-policy/reporting/report-only-in-meta.sub-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https-expected.txt: Added.
5:11 PM Changeset in webkit [269408] by Alan Coon
  • 1 copy in tags/Safari-610.3.7

Tag Safari-610.3.7.

5:05 PM Changeset in webkit [269407] by eric.carlson@apple.com
  • 10 edits
    2 adds in trunk

Transparent video poster image doesn't keep element transparent once first frame is preloaded
https://bugs.webkit.org/show_bug.cgi?id=218391
<rdar://problem/70916944>

Reviewed by Jer Noble.
Source/WebCore:

Redo the poster frame logic to use the show poster flag logic from the spec.

Test: media/video-poster-visible-after-first-video-frame.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement): Initialize m_showPoster.
(WebCore::HTMLMediaElement::prepareForLoad): m_displayMode was removed.
(WebCore::HTMLMediaElement::selectMediaResource): Call setShowPosterFlag.
(WebCore::HTMLMediaElement::loadResource): Remove calls to setDisplayMode and updateDisplayState,
they have been deleted.
(WebCore::HTMLMediaElement::waitForSourceChange): Call setShowPosterFlag. Update spec text.
(WebCore::HTMLMediaElement::noneSupported): Call setShowPosterFlag.
(WebCore::HTMLMediaElement::mediaLoadingFailed): Remove call to updateDisplayState.
(WebCore::HTMLMediaElement::setReadyState): Ditto.
(WebCore::HTMLMediaElement::seekWithTolerance): Call setShowPosterFlag.
(WebCore::HTMLMediaElement::seekTask): Check m_showPoster, not displayMode.
(WebCore::HTMLMediaElement::playInternal): Call setShowPosterFlag.
(WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged): Don't check displayMode.
(WebCore::HTMLMediaElement::updatePlayState): No more setDisplayMode.
(WebCore::HTMLMediaElement::userCancelledLoad): Call setShowPosterFlag.
(WebCore::HTMLMediaElement::setShowPosterFlag):
(WebCore::HTMLMediaElement::mediaPlayerFirstVideoFrameAvailable): Deleted.

  • html/HTMLMediaElement.h:

(WebCore::HTMLMediaElement::showPosterFlag const):
(WebCore::HTMLMediaElement::setShowPosterFlag):
(WebCore::HTMLMediaElement::displayMode const): Deleted.
(WebCore::HTMLMediaElement::setDisplayMode): Deleted.
(WebCore::HTMLMediaElement::updateDisplayState): Deleted.

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::didAttachRenderers): No more updateDisplayState.
(WebCore::HTMLVideoElement::parseAttribute): Ditto. Call updateFromElement when poster is removed.
(WebCore::HTMLVideoElement::shouldDisplayPosterImage const): New.
(WebCore::HTMLVideoElement::mediaPlayerFirstVideoFrameAvailable): New, update player and
renderer if the poster isn't supposed to be visible.
(WebCore::HTMLVideoElement::setDisplayMode): Deleted.
(WebCore::HTMLVideoElement::updateDisplayState): Deleted.

  • html/HTMLVideoElement.h:
  • rendering/RenderVideo.cpp:

(WebCore::RenderVideo::failedToLoadPosterImage const): New.

  • rendering/RenderVideo.h:
  • testing/Internals.cpp:

(WebCore::Internals::elementShouldDisplayPosterImage const):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • TestExpectations: Mark a test that expect video state changes to be visible on the

next rAF to be flaky. HTMLMediaElement uses taskQueues to change properties, and
taskQueue isn't synchronized to rAF, so sometimes the task runs before the next
rAF and sometimes after, making the test flaky.

  • compositing/video/video-poster.html: Don't expect the transition to having layers

to be instantaneous.

  • media/video-poster-visible-after-first-video-frame-expected.txt: Added.
  • media/video-poster-visible-after-first-video-frame.html: Added.
4:58 PM Changeset in webkit [269406] by Alan Coon
  • 5 edits
    1 add in branches/safari-611.1.4-branch

Revert r269199. rdar://problem/70831130

4:42 PM Changeset in webkit [269405] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mac WK1 ] fast/text/canvas-color-fonts/COLR.html is failing
https://bugs.webkit.org/show_bug.cgi?id=218591

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
4:39 PM Changeset in webkit [269404] by Alan Coon
  • 1 copy in tags/Safari-611.1.4.1

Tag Safari-611.1.4.1.

4:36 PM Changeset in webkit [269403] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WTF

Unreviewed, add workaround for Linux build
https://bugs.webkit.org/show_bug.cgi?id=218143

  • wtf/WTFConfig.h:
4:11 PM Changeset in webkit [269402] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][Integration] Introduce LayoutIntegration::Run::renderedContent
https://bugs.webkit.org/show_bug.cgi?id=218550

Reviewed by Antti Koivisto.

This is in preparation for supporting "text-overflow: ellipsis" where the rendered content could
be very different from the original content (e.g. runs after the truncation go completely blank)

  • layout/integration/LayoutIntegrationLine.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::constructContent):
(WebCore::LayoutIntegration::LineLayout::paint):

  • layout/integration/LayoutIntegrationRun.h:

(WebCore::LayoutIntegration::Run::TextContent::originalContent const):
(WebCore::LayoutIntegration::Run::TextContent::renderedContent const):
(WebCore::LayoutIntegration::Run::isLineBreak const):
(WebCore::LayoutIntegration::Run::TextContent::TextContent):
(WebCore::LayoutIntegration::Run::TextContent::content const): Deleted.

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::RunIteratorModernPath::text const):

4:05 PM Changeset in webkit [269401] by Jonathan Bedard
  • 10 edits
    1 add in trunk/Tools

[webkitscmpy] Add checkout command
https://bugs.webkit.org/show_bug.cgi?id=218360
<rdar://problem/70828312>

Reviewed by Dewei Zhu.

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

(Git.checkout): Checkout repository to specified commit, branch or tag.

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

(Scm.checkout): Checkout repository to specified commit, branch or tag.

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

(Svn.checkout): Checkout repository to specified commit, branch or tag.

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

(Git.init): Add concept of HEAD commit, mock git checkout command.

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

(Svn.init): Add concept of HEAD commit, mock svn up -r *.
(Svn.branch): The HEAD's branch is the current branch.
(Svn.find): Use the HEAD of the repository as the default.
(Svn.up): Change the repository's HEAD.

  • Scripts/libraries/webkitscmpy/webkitscmpy/program.py:

(Checkout): Checkout repository to specified commit.
(main): Add Checkout subcommand.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/checkout_unittest.py: Added.

(TestCheckout):

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:

(TestGit):
(TestGit.test_checkout):

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/svn_unittest.py:

(TestSvn):
(TestSvn.test_checkout):

3:48 PM Changeset in webkit [269400] by Chris Dumez
  • 29 edits
    26 adds in trunk/LayoutTests

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

Reviewed by David Kilzer.

Resync web-platform-tests/dom tests from upstream 7a287c9e26fbc12c91.

  • resources/resource-files.json:
  • web-platform-tests/dom/*: Updated
3:41 PM Changeset in webkit [269399] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/JavaScriptCore

Revert r269338. rdar://problem/71021911

This revision reverts r269398.

3:34 PM Changeset in webkit [269398] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/JavaScriptCore

Cherry-pick r269338. rdar://problem/71021911

Don't assert there is no checkpoint side state when dropping the JSLock
https://bugs.webkit.org/show_bug.cgi?id=218537

Reviewed by Filip Pizlo.

You may have multiple OSR exit sidestate data on the stack, and then call into
API code, which might DropAllLocks. Hence, this assert is wrong.

Working on a test. Will land in a followup.

  • runtime/JSLock.cpp: (JSC::JSLock::willReleaseLock):

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

3:24 PM Changeset in webkit [269397] by Alan Coon
  • 11 edits
    2 deletes in branches/safari-611.1.4-branch/Source

Revert r268386. rdar://problem/70831174

3:07 PM Changeset in webkit [269396] by commit-queue@webkit.org
  • 4 edits in trunk

Add new build option USE(64KB_PAGE_BLOCK)
https://bugs.webkit.org/show_bug.cgi?id=217989

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-11-04
Reviewed by Yusuke Suzuki.

.:

Why do we need this option? Because JSC and bmalloc both want to know the userspace page
size at compile time, which is impossible on Linux because it's a runtime setting. We
cannot test the system page size at build time in hopes that it will be the same on the
target system, because (a) cross compiling wouldn't work, and (b) the build system could
use a different page size than the target system (which will be true for Fedora aarch64,
because Fedora is built using RHEL), so the best we can do is guess based on the target CPU
architecture. In practice, guessing works for all architectures except aarch64 (unless
unusual page sizes are used), but it fails for aarch64 because distros are split between
using 4 KB and 64 KB pages there. Most distros (including Fedora) use 4 KB, but RHEL uses
64 KB. SUSE actually supports both. Since there is no way to guess correctly, the best we
can do is provide an option for it. You should probably only use this if building for
aarch64. Otherwise, known CPUs except PowerPC will use 4 KB, while PowerPC and unknown CPUs
will use 64 KB (see wtf/PageBlock.h). aarch64 will continue to default to 4 KB because this
is a much better default on systems where it doesn't crash.

Having one flag will help avoid mistakes. E.g. both RHEL and SUSE were manually passing
-DENABLE_JIT=OFF and -DUSE_SYSTEM_MALLOC=ON, but we missed -DENABLE_C_LOOP=ON and
-DENABLE_SAMPLING_PROFILER=OFF, so wound up running with both JIT and cloop disabled, a
configuration not otherwise used on Linux (and not supported by GTK or WPE ports). It will
be easier to not mess up if we only have to pass one special build option. This will also
allow us to stop patching PageBlock.h downstream, because I don't like downstream patches
that we have to keep forever.

  • Source/cmake/WebKitFeatures.cmake:

Source/WTF:

  • wtf/PageBlock.h:
2:56 PM Changeset in webkit [269395] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[build.webkit.org] remove unnecessary code from loadConfig
https://bugs.webkit.org/show_bug.cgi?id=218582

Reviewed by Dewei Zhu.

  • CISupport/ews-build/loadConfig.py:

(loadBuilderConfig): Also renamed variables to be consistent with EWS counterpart.

  • CISupport/build-webkit-org/loadConfig.py:

(loadBuilderConfig):

2:36 PM Changeset in webkit [269394] by Aditya Keerthi
  • 24 edits
    9 adds in trunk

[Contact Picker API] Add support for picker UI on iOS
https://bugs.webkit.org/show_bug.cgi?id=218189
<rdar://problem/69862277>

Reviewed by Devin Rousso.

Source/WebKit:

ContactsManager.select() should present a contact picker on platforms
which support one. This patch enables the end-to-end functionality on
iOS, presenting a contact picker upon a call to the API and returning
the selected contacts upon dismissal.

Tests: contact-picker/contacts-select-after-dismissing-picker.html

contact-picker/contacts-select-while-presenting-picker.html
contact-picker/contacts-select.html

  • Platform/spi/Cocoa/ContactsUISPI.h: Added.
  • SourcesCocoa.txt:
  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _didPresentContactPicker]):
(-[WKWebView _didDismissContactPicker]):
(-[WKWebView _dismissContactPickerWithContacts:]):

  • UIProcess/Cocoa/WKContactPicker.h: Added.
  • UIProcess/Cocoa/WKContactPicker.mm: Added.

WKContactPicker is a WebKit wrapper around CNContactPickerViewController.

(-[WKCNContactPickerDelegate initWithContactPickerDelegate:]):

WKCNContactPickerDelegate is wrapper around CNContactPickerDelegate.
This is necessary as single/multiple selection in a
CNContactPickerViewController is determined by which delegate methods
are implemented. The two specializations of this class include the
methods necessary to present a single-select and multi-select picker
respectively.

(-[WKCNContactPickerDelegate contactPickerDidCancel:]):
(-[WKCNContactPickerSingleSelectDelegate contactPicker:didSelectContact:]):
(-[WKCNContactPickerMultiSelectDelegate contactPicker:didSelectContacts:]):
(-[WKContactPicker delegate]):
(-[WKContactPicker setDelegate:]):
(-[WKContactPicker initWithView:]):
(-[WKContactPicker presentWithRequestData:completionHandler:]):
(-[WKContactPicker contactPickerDidCancel:]):

This delegate method is called when the picker is dismissed by
tapping the done button or when the picker is dismissed by swiping
down.

(-[WKContactPicker contactPicker:didSelectContact:]):
(-[WKContactPicker contactPicker:didSelectContacts:]):
(-[WKContactPicker _contactPickerDidDismissWithContactInfo:]):
(-[WKContactPicker _contactInfoFromCNContact:]):
(-[WKContactPicker dismissWithContacts:]):
(-[WKContactPicker _contactsFromJSContacts:]):

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

(WebKit::PageClientImpl::showContactPicker):

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

(-[WKContentView _showContactPicker:completionHandler:]):
(-[WKContentView contactPickerDidPresent:]):
(-[WKContentView contactPickerDidDismiss:]):
(-[WKContentView _dismissContactPickerWithContacts:]):

  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:

  • wtf/PlatformHave.h:

Added HAVE(CONTACTSUI) and HAVE(CNCONTACTPICKERVIEWCONTROLLER) macros.

Tools:

Added UIScriptController hooks to observe the presentation and
dismissal of a contact picker. Furthermore, the
dismissContactPickerWithContacts method was added to allow tests to
dismiss the presented contact picker with a set of selected contacts.

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

(WTR::UIScriptController::isShowingContactPicker const):
(WTR::UIScriptController::dismissContactPickerWithContacts):

  • TestRunnerShared/UIScriptContext/UIScriptControllerShared.cpp:

(WTR::UIScriptController::setDidShowContactPickerCallback):
(WTR::UIScriptController::didShowContactPickerCallback const):
(WTR::UIScriptController::setDidHideContactPickerCallback):
(WTR::UIScriptController::didHideContactPickerCallback const):

  • WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:

(-[TestRunnerWKWebView resetInteractionCallbacks]):
(-[TestRunnerWKWebView _didPresentContactPicker]):
(-[TestRunnerWKWebView _didDismissContactPicker]):

  • WebKitTestRunner/cocoa/UIScriptControllerCocoa.h:
  • WebKitTestRunner/cocoa/UIScriptControllerCocoa.mm:

(WTR::UIScriptControllerCocoa::setDidShowContactPickerCallback):
(WTR::UIScriptControllerCocoa::setDidHideContactPickerCallback):
(WTR::UIScriptControllerCocoa::isShowingContactPicker const):
(WTR::UIScriptControllerCocoa::dismissContactPickerWithContacts):

LayoutTests:

Added tests to verify the presentation and dismissal of a contact
picker on iOS. The new tests are only run on iOS WK2, since that is the
only platform which currently supports the presentation of a contact
picker. Note that these tests will be enabled on macOS WK2 once support
is added in a forthcoming patch.

  • TestExpectations:
  • contact-picker/contacts-select-after-dismissing-picker-expected.txt: Added.
  • contact-picker/contacts-select-after-dismissing-picker.html: Added.
  • contact-picker/contacts-select-expected.txt: Added.
  • contact-picker/contacts-select-while-presenting-picker-expected.txt: Added.
  • contact-picker/contacts-select-while-presenting-picker.html: Added.
  • contact-picker/contacts-select.html: Added.
  • platform/ios-wk2/TestExpectations:
  • resources/ui-helper.js:

(window.UIHelper.waitForContactPickerToShow):
(window.UIHelper.waitForContactPickerToHide):
(window.UIHelper.dismissContactPickerWithContacts):

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

Unreviewed, fix build with very recent SDK by silencing a deprecation warning.

  • Platform/IPC/cocoa/ConnectionCocoa.mm:

(IPC::ConnectionTerminationWatchdog::watchdogTimerFired):

2:29 PM Changeset in webkit [269392] by Aditya Keerthi
  • 2 edits
    1 add in trunk/LayoutTests

REGRESSION (Big Sur): fast/forms/hidpi-textfield-background-bleeding.html is failing
https://bugs.webkit.org/show_bug.cgi?id=218540
<rdar://problem/66295552>

Reviewed by Wenson Hsieh.

The purpose of the failing test is to verify that textfield backgrounds
(which are drawn completely by WebKit) do not bleed outside of the
textfield border (which is drawn using AppKit).

The test is currently failing as there is a 0.5px shadow that appears
outside the border on Big Sur. This is a result of changes made to the
appearance of system controls in Big Sur. The failure is benign, as the
test still confirms that the background does not bleed.

In order to ensure that we can still run this test on Big Sur, update
the expectation to account for the shadow.

  • platform/mac-bigsur/fast/forms/hidpi-textfield-background-bleeding-expected.html: Added.
  • platform/mac/TestExpectations:
2:27 PM Changeset in webkit [269391] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Conditionally disable the patch validation step
https://bugs.webkit.org/show_bug.cgi?id=218441

Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2020-11-04
Reviewed by Aakash Jain.

This makes it easy to submit an arbitrary patch (i.e. one that doesn't
appear on bugzilla) for an EWS run. Useful for non-interactive testing.

Note that the skip_validation parameter can only be supplied by
ews-app, so patches cannot skip the validation step in the
production EWS deployment.

  • CISupport/ews-build/steps.py:

(ValidatePatch.doStepIf):

2:22 PM Changeset in webkit [269390] by weinig@apple.com
  • 9 edits in trunk/Tools

Remove support for experimental: and internal: prefixes from WebKitTestRunner and DumpRenderTree
https://bugs.webkit.org/show_bug.cgi?id=218569

Reviewed by Tim Horton.

The prefixes were removed from use in tests in r269360.

  • DumpRenderTree/TestOptions.cpp:

(WTR::TestOptions::webViewIsCompatibleWithOptions const):
Replace duplicated comparison code with call to operator==.

  • TestRunnerShared/TestFeatures.cpp:

(WTR::merge):
Remove special maps for internal and experimental features.

(WTR::operator==):
(WTR::operator!=):
Add operator== support for use by TestOptions in determining compatibility.

(WTR::parseTestHeaderFeature):
(WTR::parseTestHeader):
Split out feature parsing for future use in command line parsing.

  • TestRunnerShared/TestFeatures.h:

Remove special maps for internal and experimental features.

  • WebKitTestRunner/Options.cpp:

(WTR::handleOptionAcceleratedDrawing):
(WTR::handleOptionRemoteLayerTree):
(WTR::handleOptionShowWebView):
(WTR::handleOptionShowTouches):
(WTR::parseFeature):
(WTR::handleOptionExperimentalFeature):
(WTR::handleOptionInternalFeature):

  • WebKitTestRunner/Options.h:

Rather than parsing into bools / extra maps, parse the command line options
directly into a TestFeatures.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize):
Initialize global features from the new Options' TestFeatures.

(WTR::TestController::resetPreferencesToConsistentValues):
Remove special casing for experimental and internal features, they are now just
generic bool WebPreferences. Move special cases for internal features into TestOptions.

(WTR::TestController::testOptionsForTest const):
Now that global features is not seeded with the default features, construct the
full merge chain starting with the default features instead.

  • WebKitTestRunner/TestOptions.cpp:

(WTR::TestOptions::defaults):
Add some additional defaults moved from TestController::resetPreferencesToConsistentValues.

(WTR::TestOptions::hasSameInitializationOptions const):
Use operator== to reduce duplicated code.

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::experimentalFeatures const): Deleted.
(WTR::TestOptions::internalDebugFeatures const): Deleted.
Remove now unused extra maps for external and internal features.

2:07 PM Changeset in webkit [269389] by Alan Coon
  • 8 edits
    2 adds
    1 delete in branches/safari-610-branch

Cherry-pick r269025. rdar://problem/70970161

REGRESSION (r268386): Flashes of inverted color when zooming the map on windy.com
https://bugs.webkit.org/show_bug.cgi?id=218177
<rdar://problem/70676037>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-10-27
Reviewed by Dean Jackson.

Source/WebCore:

Refactoring r268386 changed the behavior so that a new WebGL drawing
buffer would be created when CA would be using the oldest IOSurface
display buffer of the WebGL layer. Before r268386 the WebGL would just
draw on top of the IOSurface even if CA was using it.

This change made the existing bug of using uninitialized IOSurfaces
visible, since IOSurfaces seem to be initialized with red. The existing
bug was probably in r262366.

The fix in this commit fixes the case where WebGL context is drawn to
but the CA does not display the contents. Draw would cause preparation
of the drawing buffer for display, along with the contract that drawing
buffer might be uninitialized. However, the clear of the drawing buffer
was marked needed only during display.

Case that failed at the time of writing was the case where after draw,
the element would be removed by setting display:none. This would return
red contents, e.g. uninitialized IOSurface contents. Before r268386 this
would first return red until 3 buffers had passed and then it would
start recycling old display buffer contents.

The naming is not fixed in this commit due to just fixing the
regression. Other ports contain code that makes renaming or
restructuring the callbacks more confusing for the other ports.

Test: fast/canvas/webgl/webgl-clear-composited-notshowing.html

  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: (WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL): (WebCore::GraphicsContextGLOpenGL::prepareForDisplay):
  • platform/graphics/cocoa/WebGLLayer.h:
  • platform/graphics/cocoa/WebGLLayer.mm: (-[WebGLLayer initWithDevicePixelRatio:contentsOpaque:]): (-[WebGLLayer display]): (-[WebGLLayer detachClient]):
  • platform/graphics/cocoa/WebGLLayerClient.h: Removed.
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:

LayoutTests:

Test case for WebGL which is drawn to a canvas that is not visible. This should still
adhere to preserveDrawingBuffer == false contract of clearing the drawing buffer
correctly.

Case that failed at the time of writing was the case where after draw, the element
would be removed by setting display:none.

  • fast/canvas/webgl/webgl-clear-composited-notshowing-expected.txt: Added.
  • fast/canvas/webgl/webgl-clear-composited-notshowing.html: Added.

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

2:07 PM Changeset in webkit [269388] by Alan Coon
  • 4 edits in branches/safari-610-branch/Source/WebCore

Cherry-pick r268446. rdar://problem/70970178

REGRESSION: fast/canvas/webgl/context-attributes-alpha.html fails
https://bugs.webkit.org/show_bug.cgi?id=217697

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-10-14
Reviewed by Antti Koivisto.

The original work in "Cocoa: Make WebGLLayer not dependent on
GraphicsContextGLOpenGL" was missing the hunk to initialize
WebGLLayer contentsOpaque. Neither the EWS nor the local testing
used the test case.

No new tests, tested by
fast/canvas/webgl/context-attributes-alpha.html.

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: (WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):
  • platform/graphics/cocoa/WebGLLayer.h:
  • platform/graphics/cocoa/WebGLLayer.mm: (-[WebGLLayer initWithClient:devicePixelRatio:contentsOpaque:]): (-[WebGLLayer initWithClient:devicePixelRatio:]): Deleted.

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

2:07 PM Changeset in webkit [269387] by Alan Coon
  • 11 edits
    1 copy
    1 add in branches/safari-610-branch/Source

Cherry-pick r268386. rdar://problem/70970067

Cocoa: Make WebGLLayer not dependent on GraphicsContextGLOpenGL
https://bugs.webkit.org/show_bug.cgi?id=217212
<rdar://problem/69876022>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-10-13
Reviewed by Dean Jackson.

Source/WebCore:

WebGLLayer was needlessly using GraphicsContextGLOpenGL.
This is problematic because WebGLLayer should work with
upcoming remote GraphicsContextGL implementation.

The prepare callgraph was:

GCGLOpenGL -> WebGLLayer -> GCGLOpenGL

Refactor it to be:

GCGLOpenGL -> WebGLLayer

Move the back buffer ownership to the GraphicsContextGLOpenGL.
Make the front buffer ownership explicit in WebGLLayer.
Move the EGL bindings ownerships of all buffers to
GraphicsContextGLOpenGL.

Make the WebGLLayer not use EGL or OpenGL, it does not
need and cannot use it as not all of its clients use OpenGL
(i.e. the above mentioned remote use-case).

Improves the memory usage by not allocating front buffers
unless needed. In case the canvas does not present, will
not allocate front buffers at all.

Improves error handling of the allocations and EGL bindings.

No new tests, a refactor.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp: (WebCore::GraphicsContextGLOpenGL::reshapeFBOs): (WebCore::GraphicsContextGLOpenGL::prepareTexture): (WebCore::GraphicsContextGLOpenGL::prepareTextureImpl):
  • platform/graphics/angle/GraphicsContextGLANGLEUtilities.h: Added. (WebCore::ScopedRestoreTextureBinding::ScopedRestoreTextureBinding): (WebCore::ScopedRestoreTextureBinding::~ScopedRestoreTextureBinding):
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: (WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL): (WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL): (WebCore::GraphicsContextGLOpenGL::makeContextCurrent): (WebCore::GraphicsContextGLOpenGL::reshapeDisplayBufferBacking): (WebCore::GraphicsContextGLOpenGL::bindDisplayBufferBacking): (WebCore::GraphicsContextGLOpenGL::prepareForDisplay): (WebCore::GraphicsContextGLOpenGL::didDisplay):
  • platform/graphics/cocoa/WebGLLayer.h:
  • platform/graphics/cocoa/WebGLLayer.mm: (-[WebGLLayer initWithClient:devicePixelRatio:]): (-[WebGLLayer copyImageSnapshotWithColorSpace:]): (-[WebGLLayer recycleBuffer]): (-[WebGLLayer prepareForDisplayWithContents:]): (-[WebGLLayer display]): (-[WebGLLayer detachClient]):
  • platform/graphics/cocoa/WebGLLayerClient.h: Copied from Source/WebCore/platform/graphics/cocoa/WebGLLayer.h. (WebCore::WebGLLayerClient::~WebGLLayerClient):
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp: (WebCore::GraphicsContextGLOpenGL::reshapeFBOs):

Source/WebKit:

Removed unneeded inclusions of GraphicsContextGLOpenGL.h. The
file is now using non-public headers.

  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/mac/WebPageMac.mm:

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

2:06 PM Changeset in webkit [269386] by Alan Coon
  • 28 edits
    3 deletes in branches/safari-610-branch/Source/WebCore

Cherry-pick r268198. rdar://problem/70970161

Mac: Remove OpenGL and OpenGL ES backends
https://bugs.webkit.org/show_bug.cgi?id=217374

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-10-08
Reviewed by Darin Adler.

Remove macOS OpenGL (CGL) and iOS OpenGL ES (EAGL)
implementations of GraphicsContextGLOpenGL. These
are not used anymore and cannot be used for conformant
WebGL. The two removed backends would just create
maintainance burden.

Removes TextureCacheCV, this was not implemented for
ANGLE and in comments it was said to be disabled in
the platform.

Fixes a bug where iOS apps on Mac Apple Silicon would
not use correct texture target to convert the video
frames in VideoTextureCopierCV.

Fixes few instances of using GL types in WebGL implementation
instead of WebCore defined GCGL types. This is needed
now that the includes are (a bit) more correct.

No new tests, a refactoring.

  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/canvas/ANGLEInstancedArrays.cpp: (WebCore::ANGLEInstancedArrays::supported):
  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::create): (WebCore::WebGLRenderingContextBase::readPixels):
  • platform/graphics/GraphicsContextGL.cpp:
  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp: (WebCore::GraphicsContextGLOpenGL::reshapeFBOs): (WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToCanvas):
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: (WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL): (WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL): (WebCore::GraphicsContextGLOpenGL::IOSurfaceTextureTarget): (WebCore::GraphicsContextGLOpenGL::IOSurfaceTextureTargetQuery): (WebCore::GraphicsContextGLOpenGL::EGLIOSurfaceTextureTarget): (WebCore::GraphicsContextGLOpenGL::makeContextCurrent): (WebCore::GraphicsContextGLOpenGL::checkGPUStatus): (WebCore::GraphicsContextGLOpenGL::setContextVisibility): (WebCore::GraphicsContextGLOpenGL::screenDidChange):
  • platform/graphics/cocoa/WebGLLayer.h:
  • platform/graphics/cocoa/WebGLLayer.mm: (-[WebGLLayer initWithGraphicsContextGL:]): (-[WebGLLayer setAnchorPoint:]): (-[WebGLLayer copyImageSnapshotWithColorSpace:]): (-[WebGLLayer prepareForDisplay]): (-[WebGLLayer display]): (-[WebGLLayer releaseGLResources]): (-[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:]): (-[WebGLLayer bindFramebufferToNextAvailableSurface]):
  • platform/graphics/cv/TextureCacheCV.h: Removed.
  • platform/graphics/cv/TextureCacheCV.mm: Removed.
  • platform/graphics/cv/VideoTextureCopierCV.cpp: (WebCore::VideoTextureCopierCV::initializeContextObjects): (WebCore::VideoTextureCopierCV::initializeUVContextObjects): (WebCore::VideoTextureCopierCV::attachIOSurfaceToTexture): (WebCore::VideoTextureCopierCV::detachIOSurfaceFromTexture): (WebCore::VideoTextureCopierCV::copyImageToPlatformTexture): (WebCore::VideoTextureCopierCV::copyVideoTextureToPlatformTexture):
  • platform/graphics/cv/VideoTextureCopierCV.h:
  • platform/graphics/ios/GraphicsContextGLOpenGLESIOS.h: Removed.
  • platform/graphics/opengl/ExtensionsGLOpenGL.cpp: (WebCore::ExtensionsGLOpenGL::blitFramebuffer): (WebCore::ExtensionsGLOpenGL::createVertexArrayOES): (WebCore::ExtensionsGLOpenGL::deleteVertexArrayOES): (WebCore::ExtensionsGLOpenGL::isVertexArrayOES): (WebCore::ExtensionsGLOpenGL::bindVertexArrayOES): (WebCore::ExtensionsGLOpenGL::supportsExtension): (WebCore::ExtensionsGLOpenGL::drawBuffersEXT): (WebCore::ExtensionsGLOpenGL::drawArraysInstanced): (WebCore::ExtensionsGLOpenGL::drawElementsInstanced): (WebCore::ExtensionsGLOpenGL::vertexAttribDivisor):
  • platform/graphics/opengl/ExtensionsGLOpenGL.h:
  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp: (WebCore::ExtensionsGLOpenGLCommon::initializeAvailableExtensions):
  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp: (WebCore::GraphicsContextGLOpenGL::setContextVisibility):
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp: (WebCore::GraphicsContextGLOpenGL::readPixelsAndConvertToBGRAIfNecessary): (WebCore::GraphicsContextGLOpenGL::reshapeFBOs): (WebCore::GraphicsContextGLOpenGL::resolveMultisamplingIfNecessary): (WebCore::GraphicsContextGLOpenGL::getIntegerv): (WebCore::GraphicsContextGLOpenGL::depthRange): (WebCore::GraphicsContextGLOpenGL::clearDepth): (WebCore::GraphicsContextGLOpenGL::getExtensions): (WebCore::GraphicsContextGLOpenGL::readPixels):
  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp: (WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToCanvas): (WebCore::GraphicsContextGLOpenGL::copyTexImage2D): (WebCore::GraphicsContextGLOpenGL::copyTexSubImage2D): (WebCore::GraphicsContextGLOpenGL::finish): (WebCore::GraphicsContextGLOpenGL::flush): (WebCore::GraphicsContextGLOpenGL::deleteTexture):
  • platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGLManager.cpp: (WebCore::GraphicsContextGLOpenGLManager::updateAllContexts): (WebCore::GraphicsContextGLOpenGLManager::updateHighPerformanceState): (WebCore::GraphicsContextGLOpenGLManager::disableHighPerformanceGPUTimerFired):
  • platform/graphics/opengl/GraphicsContextGLOpenGLManager.h:

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

2:06 PM Changeset in webkit [269385] by Alan Coon
  • 4 edits in branches/safari-610-branch/Source/WebCore

Cherry-pick r266840. rdar://problem/70970161

2:04 PM Changeset in webkit [269384] by Antti Koivisto
  • 3 edits
    2 adds in trunk

REGRESSION (r257839): Miscomputed style due to computed 'rem' value in matched declaration cache
https://bugs.webkit.org/show_bug.cgi?id=218561
<rdar://problem/70074191>

Reviewed by Zalan Bujtas.

Source/WebCore:

Test: fast/dom/focus-rem-style-update.html

Call to focus() causes computed style update for the element’s ancestor chain before the the document
has otherwise been styled (using the shortcut mechanism introduced in r257839). This style, which uses ‘rem’
unit and so depends on root element font size, gets cached in MatchedDeclarationsCache. The root font size
then changes but during the resulting style update we use this cached value, failing to re-resolve ‘rem’.

  • style/StyleTreeResolver.cpp:

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

Invalidate matched declarations cache also when there is no existing document element style.

LayoutTests:

  • fast/dom/focus-rem-style-update-expected.html: Added.
  • fast/dom/focus-rem-style-update.html: Added.
1:39 PM Changeset in webkit [269383] by Chris Dumez
  • 8 edits in trunk

REGRESSION(r268161?): [ macOS ] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/processing-after-resume.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217542
<rdar://problem/70159546>

Reviewed by Youenn Fablet.

Source/WebCore:

When the script calls suspend(), we call AudioDestinationCocoa::stop() to stop rendering and then resolve the suspend promise.
At this point, the script saves the AudioContext's current sample frame and expects this value to not change until the
AudioContext is resumed. The issue was that we previously were potentially resolving the promise on the main thread while
the last rendering quantum was still being processed on the AudioWorklet thread. This meant that the sample frame could
still increase a bit, a short while after the suspend promise has been resolved. To address the issue, we now do a round
trip to the AudioWorklet thread after stopping rendering, to make sure we only resolve the promise after the last rendering
quantum has been processed on the AudioWorklet thread.

No new tests, unskipped existing test.

  • Modules/webaudio/AudioDestinationNode.h:

Use an std::atomic<size_t> for AudioDestinationNode's currentSampleFrame since this value is being written by the rendering
thread and read by the main thread.

  • Modules/webaudio/OfflineAudioDestinationNode.cpp:

(WebCore::OfflineAudioDestinationNode::startRendering):

  • platform/audio/cocoa/AudioDestinationCocoa.cpp:

(WebCore::AudioDestinationCocoa::stop):

Source/WebKit:

When the script calls suspend(), we call AudioDestinationCocoa::stop() to stop rendering and then resolve the suspend promise.
At this point, the script saves the AudioContext's current sample frame and expects this value to not change until the
AudioContext is resumed. The issue was that we previously were potentially resolving the promise on the main thread while
the last rendering quantum was still being processed on the AudioWorklet thread. This meant that the sample frame could
still increase a bit, a short while after the suspend promise has been resolved. To address the issue, we now to a round
trip to the AudioWorklet thread after stopping rendering, to make sure we only resolve the promise after the last rendering
quantum has been processed on the AudioWorklet thread.

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::stop):

LayoutTests:

Unskip test that should no longer be flaky.

  • platform/mac/TestExpectations:
1:37 PM Changeset in webkit [269382] by ddkilzer@apple.com
  • 5 edits
    1 delete in trunk/Source/bmalloc

Remove bmalloc::logVMFailure() and BSoftLinking.h
<https://webkit.org/b/218571>
<rdar://problem/69813381>

Reviewed by Geoffrey Garen.

  • PlatformMac.cmake:
  • bmalloc.xcodeproj/project.pbxproj:
  • Remove BSoftLinking.h from project files.
  • bmalloc/Logging.cpp:
  • bmalloc/Logging.h:

(bmalloc::logVMFailure): Delete.

  • bmalloc/darwin/BSoftLinking.h: Remove.
1:31 PM Changeset in webkit [269381] by Said Abou-Hallawa
  • 8 edits in trunk/Source

[GPU Process] Enable Document based ImageBitmap and OffscreenCanvas drawing to use GPU Process rendering
https://bugs.webkit.org/show_bug.cgi?id=217735

Reviewed by Simon Fraser.

Source/WebCore:

Add a new static method ImageBitmap::createImageBuffer() which takes a
ScriptExecutionContext. It gets HostWindow from ScriptExecutionContext.
If a HostWindow exists, creating the ImageBuffer will be delegated to
WebChromeClient which will create a RemoteImageBuffer in Web Process and
a RemoteImageBufferProxy in the GPU Process.

Rename all the variables of type ScriptExecutionContext to 'scriptExecutionContext'
to avoid confusing it with GraphicsContext, CanvasRenderingContext and
WebGLRenderingContext.

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneDeserializer::readImageBitmap):

  • html/ImageBitmap.cpp:

(WebCore::ImageBitmap::create):
(WebCore::ImageBitmap::createImageBuffer):
(WebCore::ImageBitmap::resolveWithBlankImageBuffer):
(WebCore::ImageBitmap::createPromise):
(WebCore::ImageBitmap::createFromBuffer):

  • html/ImageBitmap.h:
  • html/OffscreenCanvas.cpp:

(WebCore::OffscreenCanvas::create):
(WebCore::OffscreenCanvas::OffscreenCanvas):
(WebCore::OffscreenCanvas::createContextWebGL):
(WebCore::OffscreenCanvas::transferToImageBitmap):
(WebCore::OffscreenCanvas::securityOrigin const):
(WebCore::OffscreenCanvas::cssValuePool):
(WebCore::OffscreenCanvas::createImageBuffer const):
(WebCore::OffscreenCanvas::takeImageBuffer const):

Source/WebKit:

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

putImageData() might be called immediately after creating the ImageBuffer
and before receiving the RemoteRenderingBackend.CreateImageBufferBackend
message. We need to handle for this case and avoid asserting.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::createImageBuffer):
If the size of the ImageBuffer is very big, no remote ImageBuffer can be
created. So we have to be bail out quietly in this case.

1:17 PM Changeset in webkit [269380] by ddkilzer@apple.com
  • 54 edits in trunk

WebKit should remove unused debug variant support
<https://webkit.org/b/218315>
<rdar://problem/70785369>

Reviewed by Darin Adler.

Remove support for building the debug variant since it is
currently unused. We now set default values for the
DEAD_CODE_STRIPPING, DEBUG_DEFINES, GCC_OPTIMIZATION_LEVEL and
STRIP_INSTALLED_PRODUCT variables.

Also move these values out of the Xcode project into
Base.xcconfig files using the [config=Debug] specifier so that
these overrides are next to the definitions.

Source/bmalloc:

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

Source/JavaScriptCore:

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

Source/ThirdParty/ANGLE:

Additional changes in behavior are noted below.

  • Configurations/ANGLE-dynamic.xcconfig:
  • Move DEBUG_DEFINES to Base.xcconfig.
  • Set up DEAD_CODE_STRIPPING and STRIP_INSTALLED_PRODUCT the same as for other WebKit projects. Previously dead code and symbols were never stipped in Release or Production builds.
  • Configurations/ANGLE-static.xcconfig:
  • Move DEBUG_DEFINES to Base.xcconfig.
  • Configurations/Base.xcconfig:
  • Set up DEBUG_DEFINES and GCC_OPTIMIZATION_LEVEL the same as other WebKit projects. Previously Debug builds were built with -Os instead of -O0.

Source/ThirdParty/libwebrtc:

Additional changes in behavior are noted below.

  • Configurations/Base.xcconfig:
  • Add missing copyright block.
  • Set up DEBUG_DEFINES and GCC_OPTIMIZATION_LEVEL the same as other WebKit projects.
  • Configurations/DebugRelease.xcconfig:
  • Add missing copyright block.
  • Move DEBUG_DEFINES and GCC_OPTIMIZATION_LEVEL to Base.xcconfig for [config=Debug].
  • Configurations/libwebrtc.xcconfig:
  • Add missing copyright block.
  • Set up STRIP_INSTALLED_PRODUCT the same as for other WebKit projects. Previously symbols were never stripped in Release or Production builds.
  • Configurations/yasm.xcconfig:
  • Add missing copyright block.

(GCC_PREPROCESSOR_DEFINITIONS):

  • Add $(DEBUG_DEFINES) so yasm builds with -DNDEBUG in Release and Production configurations.
  • libwebrtc.xcodeproj/project.pbxproj:
  • Remove unneeded PRODUCT_NAME variables.

Source/WebCore:

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

Source/WebCore/PAL:

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

Source/WebInspectorUI:

Additional changes in behavior are noted below.

  • Configurations/Base.xcconfig:
  • Set up DEAD_CODE_STRIPPING, DEBUG_DEFINES, GCC_OPTIMIZATION_LEVEL and STRIP_INSTALLED_PRODUCT the same as other WebKit projects. Previously dead code was always stripped in Debug builds. Previously symbols were never stripped in Release or Production builds. Previously Debug builds were built with -Os instead of -O0.
  • WebInspectorUI.xcodeproj/project.pbxproj:
  • Move DEBUG_DEFINES to Base.xcconfig.

Source/WebKit:

Additional changes in behavior are noted below.

  • Configurations/Base.xcconfig:
  • WebKit.xcodeproj/project.pbxproj:
  • STRIP_INSTALLED_PRODUCT is now set to NO for Debug builds. Previously symbols were always stripped in Debug builds.

Source/WebKitLegacy:

Additional changes in behavior are noted below.

  • WebKitLegacy.xcodeproj/project.pbxproj:
  • Move DEBUG_DEFINES to mac/Configurations/Base.xcconfig.
  • Remove useless OTHER_LDFLAGS definitions.
  • Remove unneeded BUILD_VARIANTS definition.

Source/WebKitLegacy/mac:

Additional changes in behavior are noted below.

  • Configurations/Base.xcconfig:
  • Configurations/WebKitLegacy.xcconfig:
  • Move definition of ENABLE_WEBKIT_UNSET_DYLD_FRAMEWORK_PATH in DEBUG_DEFINES from the Xcode project to WebKitLegacy.xcconfig.

Source/WTF:

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

Tools:

Additional changes in behavior are noted below.

  • ContentExtensionTester/Configurations/Base.xcconfig:
  • ContentExtensionTester/ContentExtensionTester.xcodeproj/project.pbxproj:
  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
  • Remove unneeded Xcode variables that have no effect or are already set in xcconfig files.
  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • ImageDiff/ImageDiff.xcodeproj/project.pbxproj:
  • Remove redundant PRODUCT_NAME which is defined in ImageDiff.xcconfig.
  • Let Xcode have its way with the project file.
  • ImageDiff/cg/Configurations/Base.xcconfig:
  • Scripts/check-for-exit-time-destructors:
  • Scripts/check-for-global-initializers:
  • Switch to use BUILD_VARIANTS instead of CURRENT_VARIANT. Xcode only invokes build phase scripts once (even when multiple variants are defined for a build), and it always sets CURRENT_VARIANT=normal, so using BUILD_VARIANTS is more accurate.
  • Add FIXME about building with multiple variants. These scripts are only used in engineering builds, which are only ever built with BUILD_VARIANTS=normal, so there is no urgency to handle multiple variants here.
  • Scripts/check-for-inappropriate-objc-class-names:
  • Scripts/check-for-weak-vtables-and-externals:
  • Remove unused $variants variable.
  • TestWebKitAPI/Configurations/Base.xcconfig:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • WebKitTestRunner/Configurations/Base.xcconfig:
  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
  • lldb/lldbWebKitTester/Configurations/Base.xcconfig:
  • lldb/lldbWebKitTester/Configurations/lldbWebKitTester.xcconfig:
  • lldb/lldbWebKitTester/lldbWebKitTester.xcodeproj/project.pbxproj:
  • Correctly define DEAD_CODE_STRIPPING, GCC_OPTIMIZATION_LEVEL and STRIP_INSTALLED_PRODUCT when buliding Debug configuration.
1:08 PM Changeset in webkit [269379] by Wenson Hsieh
  • 5 edits in trunk/Source

Add some missing header includes in media sources
https://bugs.webkit.org/show_bug.cgi?id=218568

Reviewed by Eric Carlson.

Source/WebCore:

  • Modules/mediarecorder/MediaRecorderProvider.h: Include WTFString.h.

Source/WebKit:

  • GPUProcess/media/ios/RemoteMediaSessionHelperProxy.cpp: Include WebCoreArgumentCoders.h, since we need to

know how to encode a MediaPlaybackTargetContext.

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h: Add a missing WebCore:: namespace.
1:05 PM Changeset in webkit [269378] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix ARM64 only crash (ARM64E works) after JIT Cage
https://bugs.webkit.org/show_bug.cgi?id=218143

  • yarr/YarrJIT.h:

(JSC::Yarr::YarrCodeBlock::execute):

12:49 PM Changeset in webkit [269377] by Lauro Moura
  • 6 edits in trunk/LayoutTests

[GLIB] Gardening some failures and rebaseline panner tests

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/glib/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-connections-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic-expected.txt:
  • platform/wpe/TestExpectations:
12:43 PM Changeset in webkit [269376] by Ryan Haddad
  • 1 edit
    2 copies
    3 adds
    1 delete in trunk/LayoutTests

Unreviewed test gardening, fix pre-existing failures for EWS.

  • platform/mac-catalina/fast/forms/search-size-with-decorations-expected.txt: Copied from LayoutTests/platform/mac-catalina/fast/forms/search/search-size-with-decorations-expected.txt.
  • platform/mac-mojave/fast/forms/listbox-width-change-expected.txt: Added.
  • platform/mac-mojave/fast/forms/search-rtl-expected.txt: Added.
  • platform/mac-mojave/fast/forms/search/search-size-with-decorations-expected.txt: Renamed from LayoutTests/platform/mac-catalina/fast/forms/search/search-size-with-decorations-expected.txt.
12:33 PM Changeset in webkit [269375] by Kocsen Chung
  • 18 edits
    2 adds in branches/safari-611.1.4-branch

Revert r268932. rdar://problem/70702224

10:55 AM Changeset in webkit [269374] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit

[watchOS] Don't allow managed preference to enable legacy sync XHRs on watchOS
https://bugs.webkit.org/show_bug.cgi?id=218548
<rdar://problem/68417252>

Patch by Luming Yin <luming_yin@apple.com> on 2020-11-04
Reviewed by Geoffrey Garen.

The managed preference to allow legacy sync XHRs during page dismissal is not applicable to watchOS, but we
still attempt to dlopen ManagedConfiguration to get the managed configuration value. This redundant check
blocks the main thread and leads to hangs.

We now compile out this code for the watchOS platforms.

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultDisallowSyncXHRDuringPageDismissalEnabled):

  • Shared/WebPreferencesDefaultValues.h:
  • Shared/ios/WebPreferencesDefaultValuesIOS.mm:
10:45 AM Changeset in webkit [269373] by Simon Fraser
  • 20 edits in trunk/Source/WebCore

A programmatic scroll should stop any rubberbanding
https://bugs.webkit.org/show_bug.cgi?id=218545

Reviewed by Antti Koivisto.

Part of rdar://problem/69599531: Scrolling on netflix.com sometimes jumps to the top.

If the scrolling thread is in the middle of a rubberband (say, when a modal overlay is
up), and then the main thread triggers a programmatic scroll to some other location,
we should stop rubberbanding immediately. If we don't, then the rubberband timer
continues to generate scrolls on the scrolling thread which get to the main thread
after it has handled the programatic scroll, thus resetting the scroll position.

This change shares some edgePinnedState() around which is used to allow rubberbanding
to continue of the programmatic scroll is to the edge which is already pinned
(commonly the top).

Also address some review comments from a previous patch.

Very hard to make tests that do things while rubberbanding is happening.

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::applyLayerPositionsInternal):
(WebCore::ScrollingTree::addPendingScrollUpdate):
(WebCore::ScrollingTree::takePendingScrollUpdates):

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::scrollTo):
(WebCore::ScrollingTreeScrollingNode::currentScrollPositionChanged):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::currentScrollPositionChanged):

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

(WebCore::ScrollingTreeOverflowScrollingNodeMac::currentScrollPositionChanged):

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

(WebCore::ScrollingTreeScrollingNodeDelegateMac::currentScrollPositionChanged):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::edgePinnedState const):

  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::notifyPositionChanged):

  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::edgePinnedState const):

  • platform/ScrollableArea.h:
  • platform/cocoa/ScrollController.h:
  • platform/cocoa/ScrollController.mm:

(WebCore::ScrollController::snapRubberBandTimerFired):
(WebCore::ScrollController::scrollPositionChanged):
(WebCore::ScrollController::stopRubberbanding):
(WebCore::ScrollController::updateRubberBandingState):
(WebCore::ScrollController::updateRubberBandingEdges):
(WebCore::ScrollController::scrolledToRubberbandingEdge const):

  • platform/mac/ScrollAnimatorMac.h:
  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::edgePinnedState const):

  • platform/mock/ScrollAnimatorMock.h:
10:44 AM Changeset in webkit [269372] by dino@apple.com
  • 2 edits in trunk/Source/WebKit

WKContentView might get KVO notifications it doesn't expect
https://bugs.webkit.org/show_bug.cgi?id=218558
<rdar://problem/71031491>

Reviewed by Tim Horton.

It's possible that code elsewhere in the system adds KVO
observation to the CALayer of a WKContentView, which is
a problem because our implementation of observeValue only
expects calls that it registered for. Fix this by passing
a context to the registration and passing the observation
call onto the superclass if it isn't the expected context.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setUpInteraction]):
(-[WKContentView observeValueForKeyPath:ofObject:change:context:]):

10:27 AM Changeset in webkit [269371] by youenn@apple.com
  • 21 edits
    1 copy in trunk/Source

Make functional WebRTC encoders in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=218498

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Add support for a remote encoder and remote factory that will first try to create a remote encoder and use an in process encoder otherwise.
This is similar to what was done for remote video decoders.

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:
  • Source/webrtc/sdk/WebKit/WebKitEncoder.h:

(webrtc::WebKitEncodedFrameInfo::decode):
(webrtc::WebKitRTPFragmentationHeader::encode const):
(webrtc::WebKitRTPFragmentationHeader::decode):
Fix issues in routines to encode/decode frame/fragmentation headers.

  • Source/webrtc/sdk/WebKit/WebKitEncoder.mm:

(-[WK_RTCLocalVideoH264H265Encoder initWithCodecInfo:]):
(-[WK_RTCLocalVideoH264H265Encoder codecType]):
(webrtc::RemoteVideoEncoderFactory::RemoteVideoEncoderFactory):
(webrtc::RemoteVideoEncoderFactory::CreateVideoEncoder):
(webrtc::createWebKitEncoderFactory):
(webrtc::RemoteVideoEncoder::~RemoteVideoEncoder):
(webrtc::RemoteVideoEncoder::Release):
(webrtc::encoderVideoTaskComplete):
(webrtc::initializeLocalEncoder):
(webrtc::encodeLocalEncoderFrame):

Source/WebCore:

Exporting necessary methods and allow to override creation of encoder factory in WebKit.
Covered by existing tests.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/cv/PixelBufferConformerCV.h:
  • platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.h:

Source/WebKit:

Update code according libwebrtc changes.
Add missing support for timestamp.
Also, in case of samples that are non IO Surface and not BGRA, do a conversion to BGRA and then create an IO surface from it.
This allows supporting sending black frames generated in case of muted tracks.

Create a remote factory in LibWebRTCProvider based on whether using gpu process or not.

  • GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.messages.in:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:

(WebKit::LibWebRTCCodecsProxy::encodeFrame):

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::createVideoDecoder):
(WebKit::encodeVideoFrame):
(WebKit::toWebRTCCodecType):
(WebKit::LibWebRTCCodecs::createEncoder):
(WebKit::LibWebRTCCodecs::encodeFrame):
(WebKit::LibWebRTCCodecs::completedEncoding):

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.mm: Added.

(WebKit::LibWebRTCCodecs::convertToBGRA):

  • WebProcess/Network/webrtc/LibWebRTCProvider.cpp:

(WebKit::LibWebRTCProvider::createEncoderFactory):

  • WebProcess/Network/webrtc/LibWebRTCProvider.h:
10:17 AM Changeset in webkit [269370] by Ryan Haddad
  • 1 edit
    1 move
    1 add
    3 deletes in trunk/LayoutTests

Unreviewed test gardening, fix the test baselines for pre-Big Sur bots that I broke with r269345.

  • platform/mac-catalina/fast/forms/search/search-size-with-decorations-expected.txt: Renamed from LayoutTests/platform/mac-catalina/fast/forms/search-size-with-decorations-expected.txt.
  • platform/mac-mojave/fast/forms/listbox-width-change-expected.txt: Removed.
  • platform/mac-mojave/fast/forms/search-rtl-expected.txt: Removed.
  • platform/mac-mojave/fast/forms/search-size-with-decorations-expected.txt: Removed.
10:17 AM Changeset in webkit [269369] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[GPU Process] Add tests for sbix and COLR fonts in canvas
https://bugs.webkit.org/show_bug.cgi?id=218346

Unreviewed test gardening.

  • platform/mac/TestExpectations: Skip these tests on Mojave since they

aren't supported and they crash under GuardMalloc.

9:44 AM Changeset in webkit [269368] by graouts@webkit.org
  • 2 edits in trunk/LayoutTests

[iOS 14 wk2] animations/unprefixed-events-mixed-with-prefixed.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=218559
<rdar://problem/67034553>

Reviewed by Dean Jackson.

Increase this test's fidelity by using a longer animation-duration to reduce the likelihood that
the the animation would be run without an intermediary frame in the second iteration.

  • animations/unprefixed-events-mixed-with-prefixed.html:
9:42 AM Changeset in webkit [269367] by graouts@webkit.org
  • 3 edits in trunk/LayoutTests

REGRESSION (r266972): [ Mojave+ debug wk2 ] compositing/animation/repaint-after-clearing-shared-backing.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217540
<rdar://problem/70157935>

Reviewed by Dean Jackson.

Improve the fidelity of this test by using a longer initial animation.

  • compositing/animation/repaint-after-clearing-shared-backing.html:
  • platform/mac-wk2/TestExpectations:
9:40 AM Changeset in webkit [269366] by graouts@webkit.org
  • 3 edits in trunk/LayoutTests

[ macOS ] webanimations/accelerated-animation-easing-update-after-pause.html is a flaky ImageOnlyFailure
https://bugs.webkit.org/show_bug.cgi?id=216481
<rdar://problem/68858100>

Reviewed by Dean Jackson.

Improve this test's fidelity by making the animation much longer (1 day) and ensuring we always wait one presentation
and one rendering update before committing any changes to the animations.

  • platform/mac/TestExpectations:
  • webanimations/accelerated-animation-easing-update-after-pause.html:
9:21 AM Changeset in webkit [269365] by dino@apple.com
  • 1 edit
    3 deletes in trunk/Source/ThirdParty/ANGLE

Add schemes for ANGLE to Xcode project
https://bugs.webkit.org/show_bug.cgi?id=217546
rdar://69062082

Revert r269292 due to build errors on Apple internal systems.

9:21 AM Changeset in webkit [269364] by dino@apple.com
  • 6 edits in trunk/Source/WebCore

Link against the ANGLE Shared Library
https://bugs.webkit.org/show_bug.cgi?id=218539
<rdar://problem/69062211>

Revert r269344.

8:24 AM Changeset in webkit [269363] by Diego Pino Garcia
  • 29 edits
    1 delete in trunk/LayoutTests

[GTK] Unreviewed test gardening. Update baselines of failing tests that should be actually passing.

The tests removed were marked as text flaky failures. Inspecting the
last 4000 revisions for each test shows they have been actually passing
consistently. Each test had its corresponding baseline which was
outdated causing the test to fail.

  • platform/gtk/TestExpectations:
  • platform/gtk/compositing/video/video-object-fit-expected.txt:
  • platform/gtk/editing/input/option-page-up-down-expected.txt: Removed.
  • platform/gtk/editing/pasteboard/drag-drop-dead-frame-expected.txt:
  • platform/gtk/editing/selection/5057506-expected.txt:
  • platform/gtk/fast/frames/flattening/frameset-flattening-grid-expected.txt:
  • platform/gtk/fast/frames/flattening/iframe-flattening-fixed-width-expected.txt:
  • platform/gtk/fast/frames/flattening/iframe-flattening-offscreen-expected.txt:
  • platform/gtk/fast/frames/flattening/iframe-flattening-out-of-view-expected.txt:
  • platform/gtk/fast/hidpi/image-set-background-dynamic-expected.txt:
  • platform/gtk/fast/hidpi/image-set-border-image-dynamic-expected.txt:
  • platform/gtk/fast/inline-block/14498-positionForCoordinates-expected.txt:
  • platform/gtk/fast/lists/inlineBoxWrapperNullCheck-expected.txt:
  • platform/gtk/fast/multicol/scrolling-overflow-expected.txt:
  • platform/gtk/fast/multicol/span/span-as-immediate-child-generated-content-expected.txt:
  • platform/gtk/fast/multicol/span/span-as-immediate-columns-child-dynamic-expected.txt:
  • platform/gtk/fast/overflow/overflow-text-hit-testing-expected.txt:
  • platform/gtk/fast/table/dynamic-caption-add-before-child-expected.txt:
  • platform/gtk/fast/table/multiple-captions-display-expected.txt:
  • platform/gtk/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt:
  • platform/gtk/fast/writing-mode/japanese-ruby-horizontal-bt-expected.txt:
  • platform/gtk/fast/writing-mode/japanese-ruby-vertical-lr-expected.txt:
  • platform/gtk/fast/writing-mode/japanese-ruby-vertical-rl-expected.txt:
  • platform/gtk/http/tests/misc/acid2-expected.txt:
  • platform/gtk/http/tests/misc/acid2-pixel-expected.txt:
  • platform/gtk/mathml/presentation/roots-expected.txt:
  • platform/gtk/media/controls-without-preload-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_tbody-expected.txt:
  • platform/gtk/transitions/move-after-transition-expected.txt:
8:19 AM Changeset in webkit [269362] by Karl Rackler
  • 1 edit
    6 adds in trunk/LayoutTests

Rebaseline tests for after r269345, r268958, and r268520.

Unreviewed test gardening.

  • platform/mac-catalina/fast/forms/listbox-width-change-expected.txt: Added.
  • platform/mac-catalina/fast/forms/search-rtl-expected.txt: Added.
  • platform/mac-catalina/fast/forms/search-size-with-decorations-expected.txt: Added.
  • platform/mac-mojave/fast/forms/listbox-width-change-expected.txt: Added.
  • platform/mac-mojave/fast/forms/search-rtl-expected.txt: Added.
  • platform/mac-mojave/fast/forms/search-size-with-decorations-expected.txt: Added.
8:09 AM Changeset in webkit [269361] by Chris Dumez
  • 96 edits in trunk/LayoutTests

imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-connections.html fails on some platforms
https://bugs.webkit.org/show_bug.cgi?id=218527
<rdar://problem/68947198>

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that floating point values are truncated to 6 decimals in the tests' output.

  • web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-basic-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/ctor-audiobuffersource-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-scheduling-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/adding-events-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-close-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-exponentialRampToValueAtTime-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-method-chaining-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-setTargetAtTime-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurveAtTime-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/event-insertion-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-biquad-connection-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-connections-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-connections-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/set-target-conv-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-timing-info.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-constantsourcenode-interface/constant-source-basic-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/no-dezippering-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-dynamicscompressornode-interface/ctor-dynamicscompressor-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-dynamicscompressornode-interface/dynamicscompressor-basic-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-getFrequencyResponse-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-oscillatornode-interface/detune-limiting-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-oscillatornode-interface/osc-basic-waveform-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/distance-exponential-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/distance-inverse-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/distance-linear-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-automation-equalpower-stereo-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-automation-position-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-azimuth-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-equalpower-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-equalpower-stereo-expected.txt:

LayoutTests:

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:

Unskip test that should no longer be flaky.

  • resources/testharnessreport.js:

(self.testRunner.add_completion_callback):
In addition to stripping arrays of floating point values from webaudio tests' output,
we now also truncate all floating point values to 6 decimals in those tests too.
This allows tests like k-rate-panner-connections.html to consistently pass on all
platforms because the floating point values that were causing failures are not in an
array.

7:56 AM Changeset in webkit [269360] by weinig@apple.com
  • 867 edits in trunk/LayoutTests

Remove experimental: and internal: prefixes from test header commands
https://bugs.webkit.org/show_bug.cgi?id=218547

Reviewed by Wenson Hsieh.

They are no longer necessary.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-values/lh-rlh-on-root-001.html:
  • web-platform-tests/css/css-values/lh-unit-001.html:
  • web-platform-tests/css/css-values/lh-unit-002.html:
  • web-platform-tests/css/cssom-view/inheritance.html:
  • web-platform-tests/css/cssom-view/parsing/scroll-behavior-computed.html:
  • web-platform-tests/css/cssom-view/parsing/scroll-behavior-valid.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-default-css.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-element.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html:
  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/canvas-aspect-ratio.html:
  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/content-aspect-ratio.html:
  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html:
  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-001.html:
  • web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html:
  • web-platform-tests/media-source/mediasource-changetype-play.html:
  • web-platform-tests/media-source/mediasource-changetype.html:
  • web-platform-tests/requestidlecallback/basic.html:
  • web-platform-tests/requestidlecallback/callback-exception.html:
  • web-platform-tests/requestidlecallback/callback-idle-periods.html:
  • web-platform-tests/requestidlecallback/callback-iframe.html:
  • web-platform-tests/requestidlecallback/callback-invoked.html:
  • web-platform-tests/requestidlecallback/callback-multiple-calls.html:
  • web-platform-tests/requestidlecallback/callback-removed-frame.html:
  • web-platform-tests/requestidlecallback/callback-suspended.html:
  • web-platform-tests/requestidlecallback/callback-timeout-when-busy.html:
  • web-platform-tests/requestidlecallback/callback-timeout.html:
  • web-platform-tests/requestidlecallback/callback-xhr-sync.html:
  • web-platform-tests/requestidlecallback/cancel-invoked.html:
  • web-platform-tests/requestidlecallback/idlharness.window.html:
  • web-platform-tests/resize-observer/eventloop.html:
  • web-platform-tests/resize-observer/idlharness.window.html:
  • web-platform-tests/resize-observer/notify.html:
  • web-platform-tests/resize-observer/observe.html:
  • web-platform-tests/resize-observer/svg.html:

LayoutTests:

  • accessibility/ios-simulator/scroll-in-overflow-div.html:
  • compositing/backing/foreground-layer-no-paints-into-ancestor-expected.html:
  • compositing/backing/foreground-layer-no-paints-into-ancestor.html:
  • compositing/clipping/border-radius-async-overflow-clipping-layer.html:
  • compositing/clipping/border-radius-async-overflow-non-stacking.html:
  • compositing/clipping/border-radius-async-overflow-stacking.html:
  • compositing/clipping/nested-overflow-with-border-radius-expected.html:
  • compositing/clipping/nested-overflow-with-border-radius.html:
  • compositing/geometry/fixed-inside-overflow-scroll.html:
  • compositing/geometry/rtl-overflow-scroll-expected.html:
  • compositing/geometry/rtl-overflow-scroll.html:
  • compositing/ios/overflow-scroll-touch-tiles.html:
  • compositing/ios/overflow-scroll-update-overlap.html:
  • compositing/ios/rtl-overflow-scrolling-2.html:
  • compositing/layer-creation/absolute-in-async-overflow-scroll.html:
  • compositing/layer-creation/clipping-scope/nested-scroller-overlap.html:
  • compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html:
  • compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html:
  • compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html:
  • compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html:
  • compositing/layer-creation/overlap-in-scroller-expected.html:
  • compositing/layer-creation/overlap-in-scroller.html:
  • compositing/overflow/absolute-in-overflow-expected.html:
  • compositing/overflow/absolute-in-overflow.html:
  • compositing/overflow/clipping-ancestor-with-accelerated-scrolling-ancestor.html:
  • compositing/overflow/iframe-inside-overflow-clipping.html:
  • compositing/overflow/nested-scrolling.html:
  • compositing/overflow/overflow-auto-with-touch-no-overflow.html:
  • compositing/overflow/overflow-auto-with-touch-toggle.html:
  • compositing/overflow/overflow-auto-with-touch.html:
  • compositing/overflow/overflow-clip-with-accelerated-scrolling-ancestor.html:
  • compositing/overflow/overflow-hidden-with-touch.html:
  • compositing/overflow/overflow-overlay-with-touch-no-overflow.html:
  • compositing/overflow/overflow-overlay-with-touch.html:
  • compositing/overflow/overflow-scroll-with-touch-no-overflow.html:
  • compositing/overflow/overflow-visible-with-touch.html:
  • compositing/overflow/remove-overflow-crash.html:
  • compositing/overflow/rtl-scrollbar-layer-positioning.html:
  • compositing/overflow/scrolling-content-clip-to-viewport.html:
  • compositing/overflow/scrolling-without-painting.html:
  • compositing/overflow/should-not-override-z-index-for-element-with-non-auto-z-index-and-overflow-scroll-and-touch.html:
  • compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases.html:
  • compositing/overflow/subpixel-overflow.html:
  • compositing/overflow/textarea-scroll-touch.html:
  • compositing/overflow/updating-scrolling-content.html:
  • compositing/repaint/compositing-toggle-in-overflow-scroll-repaint.html:
  • compositing/repaint/scroller-with-foreground-layer-repaints.html:
  • compositing/rtl/rtl-overflow-scrolling.html:
  • compositing/rtl/rtl-scrolling-with-transformed-descendants.html:
  • compositing/scrolling/async-overflow-scrolling/become-non-scrollable-with-child-expected.html:
  • compositing/scrolling/async-overflow-scrolling/become-non-scrollable-with-child.html:
  • compositing/scrolling/async-overflow-scrolling/become-non-scrollable.html:
  • compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-clipped-by-scroll.html:
  • compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested.html:
  • compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow.html:
  • compositing/scrolling/async-overflow-scrolling/foreground-layer-paint-phase-expected.html:
  • compositing/scrolling/async-overflow-scrolling/foreground-layer-paint-phase.html:
  • compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller.html:
  • compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-hidden.html:
  • compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-visible.html:
  • compositing/scrolling/async-overflow-scrolling/layer-in-overflow-gain-clipping-layer.html:
  • compositing/scrolling/async-overflow-scrolling/layer-in-overflow-in-clipped.html:
  • compositing/scrolling/async-overflow-scrolling/layer-in-overflow-lose-clipping-layer.html:
  • compositing/scrolling/async-overflow-scrolling/layer-in-overflow.html:
  • compositing/scrolling/async-overflow-scrolling/mac/overflow-in-flex-empty-tiles-expected.html:
  • compositing/scrolling/async-overflow-scrolling/mac/overflow-in-flex-empty-tiles.html:
  • compositing/scrolling/async-overflow-scrolling/negative-z-in-scroller-expected.html:
  • compositing/scrolling/async-overflow-scrolling/negative-z-in-scroller.html:
  • compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment.html:
  • compositing/scrolling/async-overflow-scrolling/overflow-scroll-paint-order-sibling-expected.html:
  • compositing/scrolling/async-overflow-scrolling/overflow-scroll-paint-order-sibling.html:
  • compositing/scrolling/async-overflow-scrolling/overlapped-overlay-scrollbar-dynamic.html:
  • compositing/scrolling/async-overflow-scrolling/overlapped-overlay-scrollbar-inside-hidden.html:
  • compositing/scrolling/async-overflow-scrolling/overlapped-overlay-scrollbar-nested.html:
  • compositing/scrolling/async-overflow-scrolling/overlapped-overlay-scrollbar.html:
  • compositing/scrolling/async-overflow-scrolling/position-inside-rtl-overflow.html:
  • compositing/scrolling/async-overflow-scrolling/toggle-visibility-on-scroller.html:
  • compositing/scrolling/async-overflow-scrolling/transform-change-scrollbar-position.html:
  • compositing/scrolling/async-overflow-scrolling/visibility-hidden-scrollers.html:
  • compositing/scrolling/fixed-inside-scroll-expected.html:
  • compositing/scrolling/fixed-inside-scroll.html:
  • compositing/scrolling/overflow-scrolling-layers-are-self-painting.html:
  • compositing/scrolling/touch-scroll-to-clip.html:
  • compositing/scrolling/touch-scrolling-repaint-expected.html:
  • compositing/scrolling/touch-scrolling-repaint-spans-expected.html:
  • compositing/scrolling/touch-scrolling-repaint-spans.html:
  • compositing/scrolling/touch-scrolling-repaint.html:
  • compositing/shared-backing/clipping-and-shared-backing-expected.html:
  • compositing/shared-backing/clipping-and-shared-backing.html:
  • compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller.html:
  • compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller.html:
  • compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow.html:
  • compositing/shared-backing/overflow-scroll/non-self-painting-layer-should-not-share.html:
  • compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness.html:
  • compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping.html:
  • compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping.html:
  • compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll.html:
  • compositing/shared-backing/overflow-scroll/repaint-shared-on-scroll-expected.html:
  • compositing/shared-backing/overflow-scroll/repaint-shared-on-scroll.html:
  • compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content.html:
  • compositing/shared-backing/overflow-scroll/scrolled-contents-unconstrained-clip-expected.html:
  • compositing/shared-backing/overflow-scroll/scrolled-contents-unconstrained-clip.html:
  • compositing/shared-backing/overflow-scroll/shared-layer-clipping-expected.html:
  • compositing/shared-backing/overflow-scroll/shared-layer-clipping.html:
  • compositing/shared-backing/overflow-scroll/shared-layer-composited-bounds.html:
  • compositing/shared-backing/overflow-scroll/shared-layer-nested-relative-stacking.html:
  • compositing/shared-backing/overflow-scroll/shared-layer-repaint.html:
  • compositing/shared-backing/overflow-scroll/sharing-layer-becomes-non-scrollable-expected.html:
  • compositing/shared-backing/overflow-scroll/sharing-layer-becomes-non-scrollable.html:
  • compositing/shared-backing/repaint-into-shared-backing-expected.html:
  • compositing/shared-backing/repaint-into-shared-backing.html:
  • compositing/shared-backing/sharing-cached-clip-rects.html:
  • compositing/tiling/perspective-on-scroller-tile-coverage.html:
  • compositing/transforms/perspective-with-scrolling-expected.html:
  • compositing/transforms/perspective-with-scrolling.html:
  • contact-picker/contacts-interfaces.html:
  • contact-picker/contacts-manager-get-properties.html:
  • contact-picker/contacts-select-invalid-properties-and-options.html:
  • contact-picker/contacts-select-requires-user-gesture.html:
  • contact-picker/contacts-select-subframe.html:
  • css-custom-properties-api/crash.html:
  • css-custom-properties-api/cycles.html:
  • css-custom-properties-api/inherits.html:
  • css-custom-properties-api/initialValueJS.html:
  • css-custom-properties-api/inline.html:
  • css-custom-properties-api/length.html:
  • css-custom-properties-api/length2.html:
  • css-custom-properties-api/registerProperty.html:
  • css-typedom/attributeStyleMap.html:
  • css-typedom/sameobject.html:
  • css3/scroll-snap/nested-elements.html:
  • css3/scroll-snap/scroll-snap-children-with-overflow.html:
  • css3/scroll-snap/scroll-snap-offsets-mixed-rtl.html:
  • css3/scroll-snap/scroll-snap-offsets-rtl.html:
  • css3/scroll-snap/scroll-snap-offsets.html:
  • css3/scroll-snap/scroll-snap-positions.html:
  • css3/scroll-snap/scroll-snap-programmatic-overflow-scroll.html:
  • css3/scroll-snap/scroll-snap-style-changed-align.html:
  • editing/async-clipboard/clipboard-change-data-while-getting-type.html:
  • editing/async-clipboard/clipboard-change-data-while-reading.html:
  • editing/async-clipboard/clipboard-change-data-while-writing.html:
  • editing/async-clipboard/clipboard-do-not-read-text-from-platform-if-text-changes.html:
  • editing/async-clipboard/clipboard-get-type-with-old-items.html:
  • editing/async-clipboard/clipboard-interfaces.html:
  • editing/async-clipboard/clipboard-item-basic.html:
  • editing/async-clipboard/clipboard-item-get-type-basic.html:
  • editing/async-clipboard/clipboard-read-basic.html:
  • editing/async-clipboard/clipboard-read-text-from-platform.html:
  • editing/async-clipboard/clipboard-read-text-same-origin.html:
  • editing/async-clipboard/clipboard-read-text.html:
  • editing/async-clipboard/clipboard-read-while-pasting.html:
  • editing/async-clipboard/clipboard-read-write-images.html:
  • editing/async-clipboard/clipboard-wrapper-stays-alive.html:
  • editing/async-clipboard/clipboard-write-basic.html:
  • editing/async-clipboard/clipboard-write-in-copy-event-handler-in-subframe.html:
  • editing/async-clipboard/clipboard-write-in-copy-event-handler.html:
  • editing/async-clipboard/clipboard-write-items-twice.html:
  • editing/async-clipboard/clipboard-write-text-requires-user-gesture.html:
  • editing/async-clipboard/clipboard-write-text.html:
  • editing/async-clipboard/sanitize-when-reading-markup.html:
  • editing/async-clipboard/sanitize-when-writing-image.html:
  • editing/selection/expando.html:
  • editing/selection/ios/update-selection-after-iframe-scroll.html:
  • editing/selection/ios/update-selection-after-overflow-scroll.html:
  • editing/selection/overflow-scroll-while-selecting-text.html:
  • editing/undo-manager/undo-manager-add-item-exceptions.html:
  • editing/undo-manager/undo-manager-add-item.html:
  • editing/undo-manager/undo-manager-delete-stale-undo-items.html:
  • editing/undo-manager/undo-manager-interfaces.html:
  • editing/undo-manager/undo-manager-item-labels.html:
  • editing/undo-manager/undo-manager-keeps-wrapper-alive.html:
  • editing/undo-manager/undo-manager-undo-redo-after-garbage-collection.html:
  • fast/canvas/webgl/hide-some-renderer-info.html:
  • fast/css-custom-paint/animate-repaint.html:
  • fast/css-custom-paint/animate.html:
  • fast/css-custom-paint/arguments.html:
  • fast/css-custom-paint/basic.html:
  • fast/css-custom-paint/constructor.html:
  • fast/css-custom-paint/delay-repaint.html:
  • fast/css-custom-paint/delay.html:
  • fast/css-custom-paint/image.html:
  • fast/css-custom-paint/leaks.html:
  • fast/css-custom-paint/multiple-worklets-isolation.html:
  • fast/css-custom-paint/multiple-worklets.html:
  • fast/css-custom-paint/properties-expected.html:
  • fast/css-custom-paint/properties.html:
  • fast/css-custom-paint/registerPaintBindings-expected.html:
  • fast/css-custom-paint/registerPaintBindings.html:
  • fast/css-custom-paint/resources/leaks-frame.html:
  • fast/css-custom-paint/simple-hidpi.html:
  • fast/css-custom-paint/worklet-expected.html:
  • fast/css-custom-paint/worklet.html:
  • fast/events/drag-smooth-scroll-element.html:
  • fast/events/ios/ipad/fast-click-always-mobile-content-mode.html:
  • fast/events/ios/ipad/fast-click-not-always.html:
  • fast/events/ios/no-touch-events-when-stopping-momentum-scroll-in-overflow.html:
  • fast/events/ios/touch-events-during-scroll-deceleration-in-overflow.html:
  • fast/events/scroll-subframe-in-rendering-update.html:
  • fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block.html:
  • fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document.html:
  • fast/events/touch/ios/drag-block-without-overflow-scroll.html:
  • fast/events/touch/ios/mouse-events-dispatch-with-touch.html:
  • fast/events/touch/ios/prevent-default-on-touch-start-with-slow-event-listener.html:
  • fast/events/touch/ios/resources/finish-test-after-scrolling-with-touch-event-handlers.html:
  • fast/events/touch/ios/scroll-on-touch-start-with-slow-event-listener.html:
  • fast/events/touch/ios/touch-event-stall-after-navigating-with-pending-asynchronous-touch-start.html:
  • fast/layers/overflow-scroll-self-painting-expected.html:
  • fast/layers/overflow-scroll-self-painting.html:
  • fast/layoutformattingcontext/absolute-positioned-box-with-inline-sibling-expected.html:
  • fast/layoutformattingcontext/absolute-positioned-box-with-inline-sibling.html:
  • fast/layoutformattingcontext/absolute-positioned-simple-table-expected.html:
  • fast/layoutformattingcontext/absolute-positioned-simple-table.html:
  • fast/layoutformattingcontext/absolute-positioned-simple-table2-expected.html:
  • fast/layoutformattingcontext/absolute-positioned-simple-table2.html:
  • fast/layoutformattingcontext/absolute-positioned-simple-table3-expected.html:
  • fast/layoutformattingcontext/absolute-positioned-simple-table3.html:
  • fast/layoutformattingcontext/anonymous-inline-container-simple-expected.html:
  • fast/layoutformattingcontext/anonymous-inline-container-simple.html:
  • fast/layoutformattingcontext/block-only/abs-pos-with-border-padding-and-float-child-expected.html:
  • fast/layoutformattingcontext/block-only/abs-pos-with-border-padding-and-float-child.html:
  • fast/layoutformattingcontext/block-only/absolute-auto-with-sibling-margin-bottom.html:
  • fast/layoutformattingcontext/block-only/absolute-height-stretch.html:
  • fast/layoutformattingcontext/block-only/absolute-left-auto.html:
  • fast/layoutformattingcontext/block-only/absolute-left-right-top-bottom-auto.html:
  • fast/layoutformattingcontext/block-only/absolute-nested.html:
  • fast/layoutformattingcontext/block-only/absolute-nested2.html:
  • fast/layoutformattingcontext/block-only/absolute-position-left-right-margin.html:
  • fast/layoutformattingcontext/block-only/absolute-position-min-max-height.html:
  • fast/layoutformattingcontext/block-only/absolute-position-min-max-width.html:
  • fast/layoutformattingcontext/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context.html:
  • fast/layoutformattingcontext/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context2.html:
  • fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple-expected.html:
  • fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple.html:
  • fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple2-expected.html:
  • fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple2.html:
  • fast/layoutformattingcontext/block-only/absolute-positioned-min-max-percentage-with-parent-padding-expected.html:
  • fast/layoutformattingcontext/block-only/absolute-positioned-min-max-percentage-with-parent-padding.html:
  • fast/layoutformattingcontext/block-only/absolute-simple.html:
  • fast/layoutformattingcontext/block-only/absolute-width-shrink-to-fit.html:
  • fast/layoutformattingcontext/block-only/absolute-width-stretch.html:
  • fast/layoutformattingcontext/block-only/absolute-with-static-block-position-nested.html:
  • fast/layoutformattingcontext/block-only/almost-intruding-left-float-simple.html:
  • fast/layoutformattingcontext/block-only/block-replaced-with-vertical-margins-expected.html:
  • fast/layoutformattingcontext/block-only/block-replaced-with-vertical-margins.html:
  • fast/layoutformattingcontext/block-only/block-root-top-should-start-from-float-top-expected.html:
  • fast/layoutformattingcontext/block-only/block-root-top-should-start-from-float-top.html:
  • fast/layoutformattingcontext/block-only/body-height-with-auto-html-height-quirk.html:
  • fast/layoutformattingcontext/block-only/body-height-with-auto-html-height-quirk2.html:
  • fast/layoutformattingcontext/block-only/body-height-with-non-auto-html-height-quirk.html:
  • fast/layoutformattingcontext/block-only/body-height-with-non-auto-html-height-quirk2.html:
  • fast/layoutformattingcontext/block-only/border-simple.html:
  • fast/layoutformattingcontext/block-only/box-sizing-inflow-out-of-flow-simple.html:
  • fast/layoutformattingcontext/block-only/collapsed-margin-with-min-height.html:
  • fast/layoutformattingcontext/block-only/collapsed-through-siblings.html:
  • fast/layoutformattingcontext/block-only/collapsed-through-with-parent.html:
  • fast/layoutformattingcontext/block-only/fixed-nested.html:
  • fast/layoutformattingcontext/block-only/float-and-siblings-with-margins.html:
  • fast/layoutformattingcontext/block-only/float-avoider-multiple-roots.html:
  • fast/layoutformattingcontext/block-only/float-avoider-simple-left.html:
  • fast/layoutformattingcontext/block-only/float-avoider-simple-right.html:
  • fast/layoutformattingcontext/block-only/float-avoider-with-margins.html:
  • fast/layoutformattingcontext/block-only/float-clear-with-auto-width-expected.html:
  • fast/layoutformattingcontext/block-only/float-clear-with-auto-width.html:
  • fast/layoutformattingcontext/block-only/float-left-when-container-has-padding-margin.html:
  • fast/layoutformattingcontext/block-only/float-min-max-height.html:
  • fast/layoutformattingcontext/block-only/float-min-max-width.html:
  • fast/layoutformattingcontext/block-only/floating-and-next-previous-inflow-with-margin-with-no-border.html:
  • fast/layoutformattingcontext/block-only/floating-and-next-previous-inflow-with-margin.html:
  • fast/layoutformattingcontext/block-only/floating-box-clear-both-simple.html:
  • fast/layoutformattingcontext/block-only/floating-box-clear-right-simple.html:
  • fast/layoutformattingcontext/block-only/floating-box-left-and-right-multiple-with-top-offset.html:
  • fast/layoutformattingcontext/block-only/floating-box-left-and-right-multiple.html:
  • fast/layoutformattingcontext/block-only/floating-box-right-simple.html:
  • fast/layoutformattingcontext/block-only/floating-box-with-clear-siblings.html:
  • fast/layoutformattingcontext/block-only/floating-box-with-clear-simple.html:
  • fast/layoutformattingcontext/block-only/floating-box-with-new-formatting-context.html:
  • fast/layoutformattingcontext/block-only/floating-box-with-relative-positioned-sibling.html:
  • fast/layoutformattingcontext/block-only/floating-left-and-right-with-clearance.html:
  • fast/layoutformattingcontext/block-only/floating-left-right-simple.html:
  • fast/layoutformattingcontext/block-only/floating-left-right-with-all-margins.html:
  • fast/layoutformattingcontext/block-only/floating-lefts-and-rights-simple.html:
  • fast/layoutformattingcontext/block-only/floating-multiple-lefts-in-body.html:
  • fast/layoutformattingcontext/block-only/floating-multiple-lefts-multiple-lines.html:
  • fast/layoutformattingcontext/block-only/floating-multiple-lefts.html:
  • fast/layoutformattingcontext/block-only/floating-with-new-block-formatting-context.html:
  • fast/layoutformattingcontext/block-only/floats-and-block-formatting-roots-expected.html:
  • fast/layoutformattingcontext/block-only/floats-and-block-formatting-roots.html:
  • fast/layoutformattingcontext/block-only/inflow-min-max-height.html:
  • fast/layoutformattingcontext/block-only/inflow-min-max-width.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-bottom-bottom.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-bottom-nested.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-first-last-are-floating.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-simple.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-top-nested.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-when-child-has-padding-border.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-with-block-formatting-context.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-with-block-formatting-context2.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-with-clearance.html:
  • fast/layoutformattingcontext/block-only/margin-left-right-sizing-out-of-flow.html:
  • fast/layoutformattingcontext/block-only/margin-left-right-sizing.html:
  • fast/layoutformattingcontext/block-only/margin-propagation-simple-content-height.html:
  • fast/layoutformattingcontext/block-only/margin-sibling-collapse-propagated.html:
  • fast/layoutformattingcontext/block-only/margin-simple.html:
  • fast/layoutformattingcontext/block-only/min-max-and-preferred-width-simple-expected.html:
  • fast/layoutformattingcontext/block-only/min-max-and-preferred-width-simple.html:
  • fast/layoutformattingcontext/block-only/min-max-height-percentage.html:
  • fast/layoutformattingcontext/block-only/negative-margin-simple.html:
  • fast/layoutformattingcontext/block-only/non-auto-top-bottom-height-with-auto-margins.html:
  • fast/layoutformattingcontext/block-only/non-auto-top-bottom-height-with-margins.html:
  • fast/layoutformattingcontext/block-only/non-auto-top-bottom-left-right-widht-height-out-of-flow.html:
  • fast/layoutformattingcontext/block-only/out-of-flow-is-never-float-box-expected.html:
  • fast/layoutformattingcontext/block-only/out-of-flow-is-never-float-box.html:
  • fast/layoutformattingcontext/block-only/out-of-flow-with-containing-block-border-padding.html:
  • fast/layoutformattingcontext/block-only/padding-nested.html:
  • fast/layoutformattingcontext/block-only/padding-simple.html:
  • fast/layoutformattingcontext/block-only/relative-auto-with-parent-offset.html:
  • fast/layoutformattingcontext/block-only/relative-auto.html:
  • fast/layoutformattingcontext/block-only/relative-bottom.html:
  • fast/layoutformattingcontext/block-only/relative-position-when-containing-block-is-not-in-the-formatting-context.html:
  • fast/layoutformattingcontext/block-only/relative-right.html:
  • fast/layoutformattingcontext/block-only/relative-siblings.html:
  • fast/layoutformattingcontext/block-only/relative-simple.html:
  • fast/layoutformattingcontext/block-only/replaced-as-inline-block-simple-expected.html:
  • fast/layoutformattingcontext/block-only/replaced-as-inline-block-simple.html:
  • fast/layoutformattingcontext/block-only/replaced-intrinsic-width-simple-expected.html:
  • fast/layoutformattingcontext/block-only/replaced-intrinsic-width-simple.html:
  • fast/layoutformattingcontext/br-and-wbr-simple-expected.html:
  • fast/layoutformattingcontext/br-and-wbr-simple.html:
  • fast/layoutformattingcontext/br-in-inline-content-simple-expected.html:
  • fast/layoutformattingcontext/br-in-inline-content-simple.html:
  • fast/layoutformattingcontext/center-alignment-with-block-content-simple-expected.html:
  • fast/layoutformattingcontext/center-alignment-with-block-content-simple.html:
  • fast/layoutformattingcontext/empty-block-level-box-with-clearance-expected.html:
  • fast/layoutformattingcontext/empty-block-level-box-with-clearance.html:
  • fast/layoutformattingcontext/empty-table-box-expected.html:
  • fast/layoutformattingcontext/empty-table-box.html:
  • fast/layoutformattingcontext/empty-table-with-specified-height-quirk-simple-expected.html:
  • fast/layoutformattingcontext/empty-table-with-specified-height-quirk-simple.html:
  • fast/layoutformattingcontext/empty-table-with-specified-height-standards-simple-expected.html:
  • fast/layoutformattingcontext/empty-table-with-specified-height-standards-simple.html:
  • fast/layoutformattingcontext/fit-content-width-simple-expected.html:
  • fast/layoutformattingcontext/fit-content-width-simple.html:
  • fast/layoutformattingcontext/flex-box-simple.html:
  • fast/layoutformattingcontext/float-and-br-inline-content-only-expected.html:
  • fast/layoutformattingcontext/float-and-br-inline-content-only.html:
  • fast/layoutformattingcontext/float-avoider-available-horizontal-space-expected.html:
  • fast/layoutformattingcontext/float-avoider-available-horizontal-space.html:
  • fast/layoutformattingcontext/float-avoider-available-horizontal-space2-expected.html:
  • fast/layoutformattingcontext/float-avoider-available-horizontal-space2.html:
  • fast/layoutformattingcontext/float-avoider-available-horizontal-space3-expected.html:
  • fast/layoutformattingcontext/float-avoider-available-horizontal-space3.html:
  • fast/layoutformattingcontext/float-avoider-with-inline-content-expected.html:
  • fast/layoutformattingcontext/float-avoider-with-inline-content.html:
  • fast/layoutformattingcontext/float-avoiding-br-last-line-expected.html:
  • fast/layoutformattingcontext/float-avoiding-br-last-line.html:
  • fast/layoutformattingcontext/float-avoiding-br-simple-expected.html:
  • fast/layoutformattingcontext/float-avoiding-br-simple.html:
  • fast/layoutformattingcontext/float-in-inline-context-simple-expected.html:
  • fast/layoutformattingcontext/float-in-inline-context-simple.html:
  • fast/layoutformattingcontext/float-inside-table-cell-simple-expected.html:
  • fast/layoutformattingcontext/float-inside-table-cell-simple.html:
  • fast/layoutformattingcontext/float-with-clear-simple-expected.html:
  • fast/layoutformattingcontext/float-with-clear-simple.html:
  • fast/layoutformattingcontext/floats-shrinking-line-simple-expected.html:
  • fast/layoutformattingcontext/floats-shrinking-line-simple.html:
  • fast/layoutformattingcontext/flow-integration-basic-paint.html:
  • fast/layoutformattingcontext/flow-integration-basic.html:
  • fast/layoutformattingcontext/height-percentage-quirk-to-icb-expected.html:
  • fast/layoutformattingcontext/height-percentage-quirk-to-icb.html:
  • fast/layoutformattingcontext/height-precentage-with-anonymous-wrapper-expected.html:
  • fast/layoutformattingcontext/height-precentage-with-anonymous-wrapper.html:
  • fast/layoutformattingcontext/horizontal-sizing-with-trailing-letter-spacing-expected.html:
  • fast/layoutformattingcontext/horizontal-sizing-with-trailing-letter-spacing.html:
  • fast/layoutformattingcontext/html-is-absolute-positioned-expected.html:
  • fast/layoutformattingcontext/html-is-absolute-positioned.html:
  • fast/layoutformattingcontext/inlin-box-content-fits-but-the-box-does-not-expected.html:
  • fast/layoutformattingcontext/inlin-box-content-fits-but-the-box-does-not.html:
  • fast/layoutformattingcontext/inline-box-overlaps-multiple-lines-expected.html:
  • fast/layoutformattingcontext/inline-box-overlaps-multiple-lines.html:
  • fast/layoutformattingcontext/inline-float-simple-expected.html:
  • fast/layoutformattingcontext/inline-float-simple.html:
  • fast/layoutformattingcontext/inline-max-width-height-simple-expected.html:
  • fast/layoutformattingcontext/inline-max-width-height-simple.html:
  • fast/layoutformattingcontext/inline-text-outside-of-inline-container-simple-expected.html:
  • fast/layoutformattingcontext/inline-text-outside-of-inline-container-simple.html:
  • fast/layoutformattingcontext/intrusive-floats-takes-entire-horizontal-space-expected.html:
  • fast/layoutformattingcontext/intrusive-floats-takes-entire-horizontal-space.html:
  • fast/layoutformattingcontext/line-heigt-when-text-is-inside-inline-container-expected.html:
  • fast/layoutformattingcontext/line-heigt-when-text-is-inside-inline-container.html:
  • fast/layoutformattingcontext/min-max-content-width-simple-expected.html:
  • fast/layoutformattingcontext/min-max-content-width-simple.html:
  • fast/layoutformattingcontext/min-max-content-width-simple2-expected.html:
  • fast/layoutformattingcontext/min-max-content-width-simple2.html:
  • fast/layoutformattingcontext/min-max-content-width-with-floats-simple-expected.html:
  • fast/layoutformattingcontext/min-max-content-width-with-floats-simple.html:
  • fast/layoutformattingcontext/min-max-content-width-with-nested-floats-simple-expected.html:
  • fast/layoutformattingcontext/min-max-content-width-with-nested-floats-simple.html:
  • fast/layoutformattingcontext/out-of-flow-html-and-body-stretches-to-viewport.html:
  • fast/layoutformattingcontext/out-of-flow-positioned-line-breaks.html:
  • fast/layoutformattingcontext/out-of-flow-with-non-fixed-height-simple-expected.html:
  • fast/layoutformattingcontext/out-of-flow-with-non-fixed-height-simple.html:
  • fast/layoutformattingcontext/quirk-margin-not-collapse-when-floating-expected.html:
  • fast/layoutformattingcontext/quirk-margin-not-collapse-when-floating.html:
  • fast/layoutformattingcontext/replaced-and-trailing-trimmable-content-expected.html:
  • fast/layoutformattingcontext/replaced-and-trailing-trimmable-content.html:
  • fast/layoutformattingcontext/replaced-box-with-margin-on-baseline-expected.html:
  • fast/layoutformattingcontext/replaced-box-with-margin-on-baseline.html:
  • fast/layoutformattingcontext/run-expansion-extends-line-content-width-expected.html:
  • fast/layoutformattingcontext/run-expansion-extends-line-content-width.html:
  • fast/layoutformattingcontext/simple-absolute-positioned-inline-element-expected.html:
  • fast/layoutformattingcontext/simple-absolute-positioned-inline-element.html:
  • fast/layoutformattingcontext/simple-absolute-positioned-replaced-inline-element-with-percentage-height-expected.html:
  • fast/layoutformattingcontext/simple-absolute-positioned-replaced-inline-element-with-percentage-height.html:
  • fast/layoutformattingcontext/simple-inline-block-expected.html:
  • fast/layoutformattingcontext/simple-inline-block.html:
  • fast/layoutformattingcontext/simple-table-with-empty-td.html:
  • fast/layoutformattingcontext/subframe-with-display-none-html-expected.html:
  • fast/layoutformattingcontext/subframe-with-display-none-html.html:
  • fast/layoutformattingcontext/table-basic-row-baseline-align.html:
  • fast/layoutformattingcontext/table-basic-row-baseline-with-nested-table.html:
  • fast/layoutformattingcontext/table-basic-row-vertical-align-baseline.html:
  • fast/layoutformattingcontext/table-cell-baseline-offset-simple-expected.html:
  • fast/layoutformattingcontext/table-cell-baseline-offset-simple.html:
  • fast/layoutformattingcontext/table-cell-baseline-offset-simple2-expected.html:
  • fast/layoutformattingcontext/table-cell-baseline-offset-simple2.html:
  • fast/layoutformattingcontext/table-cell-height-middle-align-simple-expected.html:
  • fast/layoutformattingcontext/table-cell-height-middle-align-simple.html:
  • fast/layoutformattingcontext/table-cell-vertical-alignment-simple-expected.html:
  • fast/layoutformattingcontext/table-cell-vertical-alignment-simple.html:
  • fast/layoutformattingcontext/table-colspan-simple-expected.html:
  • fast/layoutformattingcontext/table-colspan-simple.html:
  • fast/layoutformattingcontext/table-fixed-row-height-simple-expected.html:
  • fast/layoutformattingcontext/table-fixed-row-height-simple.html:
  • fast/layoutformattingcontext/table-fixed-width-colspans.html:
  • fast/layoutformattingcontext/table-fixed-width-with-max-distribution.html:
  • fast/layoutformattingcontext/table-flex-width-border-collapse.html:
  • fast/layoutformattingcontext/table-flex-width-colspans.html:
  • fast/layoutformattingcontext/table-min-max-flex-distribution-simple-expected.html:
  • fast/layoutformattingcontext/table-min-max-flex-distribution-simple.html:
  • fast/layoutformattingcontext/table-min-max-width-empty-content-simple-expected.html:
  • fast/layoutformattingcontext/table-min-max-width-empty-content-simple.html:
  • fast/layoutformattingcontext/table-min-max-width-simple-expected.html:
  • fast/layoutformattingcontext/table-min-max-width-simple.html:
  • fast/layoutformattingcontext/table-missing-cells-simple-expected.html:
  • fast/layoutformattingcontext/table-missing-cells-simple.html:
  • fast/layoutformattingcontext/table-quirk-vertical-margin-simple-expected.html:
  • fast/layoutformattingcontext/table-quirk-vertical-margin-simple.html:
  • fast/layoutformattingcontext/table-simple-border-collapse-expected.html:
  • fast/layoutformattingcontext/table-simple-border-collapse-with-padding-expected.html:
  • fast/layoutformattingcontext/table-simple-border-collapse-with-padding.html:
  • fast/layoutformattingcontext/table-simple-border-collapse.html:
  • fast/layoutformattingcontext/table-simple-border-collapse2-expected.html:
  • fast/layoutformattingcontext/table-simple-border-collapse2.html:
  • fast/layoutformattingcontext/table-simple-border-collapse3-expected.html:
  • fast/layoutformattingcontext/table-simple-border-collapse3.html:
  • fast/layoutformattingcontext/table-simple-collapsed-row-border-expected.html:
  • fast/layoutformattingcontext/table-simple-collapsed-row-border.html:
  • fast/layoutformattingcontext/table-simple-collapsed-row-border2-expected.html:
  • fast/layoutformattingcontext/table-simple-collapsed-row-border2.html:
  • fast/layoutformattingcontext/table-simple-collapsed-tbody-border-expected.html:
  • fast/layoutformattingcontext/table-simple-collapsed-tbody-border.html:
  • fast/layoutformattingcontext/table-simple-fixed-width-with-wide-content-expected.html:
  • fast/layoutformattingcontext/table-simple-fixed-width-with-wide-content.html:
  • fast/layoutformattingcontext/table-simple-multiple-sections-expected.html:
  • fast/layoutformattingcontext/table-simple-multiple-sections-with-border-spacing-and-collapse-expected.html:
  • fast/layoutformattingcontext/table-simple-multiple-sections-with-border-spacing-and-collapse.html:
  • fast/layoutformattingcontext/table-simple-multiple-sections.html:
  • fast/layoutformattingcontext/table-simple-row-border-expected.html:
  • fast/layoutformattingcontext/table-simple-row-border.html:
  • fast/layoutformattingcontext/table-simple-rowspan-with-spacing-expected.html:
  • fast/layoutformattingcontext/table-simple-rowspan-with-spacing.html:
  • fast/layoutformattingcontext/table-simple-tall-cell-content-with-fixed-height-expected.html:
  • fast/layoutformattingcontext/table-simple-tall-cell-content-with-fixed-height.html:
  • fast/layoutformattingcontext/table-simple-thead-border-ignore-expected.html:
  • fast/layoutformattingcontext/table-simple-thead-border-ignore.html:
  • fast/layoutformattingcontext/table-simple-with-border.html:
  • fast/layoutformattingcontext/table-simple-with-fixed-widht-and-inline-content.html:
  • fast/layoutformattingcontext/table-simple-with-padding.html:
  • fast/layoutformattingcontext/table-with-column-spanner-first-row.html:
  • fast/layoutformattingcontext/table-with-margin-content-simple-expected.html:
  • fast/layoutformattingcontext/table-with-margin-content-simple.html:
  • fast/layoutformattingcontext/table-with-margin-simple-expected.html:
  • fast/layoutformattingcontext/table-with-margin-simple.html:
  • fast/layoutformattingcontext/table-with-padding-and-border-simple-expected.html:
  • fast/layoutformattingcontext/table-with-padding-and-border-simple.html:
  • fast/layoutformattingcontext/vertical-align-bottom-nested-expected.html:
  • fast/layoutformattingcontext/vertical-align-bottom-nested.html:
  • fast/layoutformattingcontext/vertical-align-middle-nested-expected.html:
  • fast/layoutformattingcontext/vertical-align-middle-nested.html:
  • fast/layoutformattingcontext/vertical-align-middle-simple-expected.html:
  • fast/layoutformattingcontext/vertical-align-middle-simple.html:
  • fast/layoutformattingcontext/vertical-align-top-nested-expected.html:
  • fast/layoutformattingcontext/vertical-align-top-nested.html:
  • fast/layoutformattingcontext/wbr-simple-expected.html:
  • fast/layoutformattingcontext/wbr-simple.html:
  • fast/scrolling/ios/adjust-scroll-snap-during-gesture.html:
  • fast/scrolling/ios/body-overflow-hidden-expected.html:
  • fast/scrolling/ios/body-overflow-hidden-frame-expected.html:
  • fast/scrolling/ios/body-overflow-hidden-frame.html:
  • fast/scrolling/ios/body-overflow-hidden-height-100-percent-keyboard.html:
  • fast/scrolling/ios/body-overflow-hidden-height-100-percent-zoomed-1.html:
  • fast/scrolling/ios/body-overflow-hidden-height-100-percent-zoomed-2.html:
  • fast/scrolling/ios/body-overflow-hidden-keyboard-expected.html:
  • fast/scrolling/ios/body-overflow-hidden-keyboard.html:
  • fast/scrolling/ios/body-overflow-hidden.html:
  • fast/scrolling/ios/border-radius-event-region.html:
  • fast/scrolling/ios/change-scrollability-on-content-resize-nested.html:
  • fast/scrolling/ios/change-scrollability-on-content-resize.html:
  • fast/scrolling/ios/click-events-after-long-press-during-momentum-scroll-in-overflow.html:
  • fast/scrolling/ios/click-events-during-momentum-scroll-in-main-frame.html:
  • fast/scrolling/ios/click-events-during-momentum-scroll-in-overflow-after-tap-on-body.html:
  • fast/scrolling/ios/click-events-during-momentum-scroll-in-overflow.html:
  • fast/scrolling/ios/clip-path-hit-test.html:
  • fast/scrolling/ios/clipping-ancestor-with-accelerated-scrolling-ancestor.html:
  • fast/scrolling/ios/event-region-float.html:
  • fast/scrolling/ios/event-region-pointer-events.html:
  • fast/scrolling/ios/event-region-scale-transform-shared.html:
  • fast/scrolling/ios/event-region-scrolled-contents-layer.html:
  • fast/scrolling/ios/event-region-translate-transform-shared.html:
  • fast/scrolling/ios/event-region-visibility-hidden.html:
  • fast/scrolling/ios/fixed-inside-overflow-inside-iframe-expected.html:
  • fast/scrolling/ios/fixed-inside-overflow-inside-iframe.html:
  • fast/scrolling/ios/frame-scrolling-no-expected.html:
  • fast/scrolling/ios/frame-scrolling-no.html:
  • fast/scrolling/ios/iframe-inside-overflow-clipping.html:
  • fast/scrolling/ios/non-invertible-transformed-over-scroller.html:
  • fast/scrolling/ios/non-invertible-transformed-scroller-ancestor.html:
  • fast/scrolling/ios/overflow-clip-with-accelerated-scrolling-ancestor.html:
  • fast/scrolling/ios/overflow-scroll-inherited.html:
  • fast/scrolling/ios/overflow-scroll-overlap-2.html:
  • fast/scrolling/ios/overflow-scroll-overlap-3.html:
  • fast/scrolling/ios/overflow-scroll-overlap-4.html:
  • fast/scrolling/ios/overflow-scroll-overlap-5.html:
  • fast/scrolling/ios/overflow-scroll-overlap-6.html:
  • fast/scrolling/ios/overflow-scroll-overlap.html:
  • fast/scrolling/ios/overflow-scroll-touch.html:
  • fast/scrolling/ios/overflow-scroll-user-interaction-disabled.html:
  • fast/scrolling/ios/overflow-scrolling-ancestor-clip-size.html:
  • fast/scrolling/ios/overflow-scrolling-ancestor-clip.html:
  • fast/scrolling/ios/overflow-scrolling-touch-disabled-stacking-expected.html:
  • fast/scrolling/ios/overflow-scrolling-touch-disabled-stacking.html:
  • fast/scrolling/ios/overflow-scrolling-touch-enabled-stacking-expected.html:
  • fast/scrolling/ios/overflow-scrolling-touch-enabled-stacking.html:
  • fast/scrolling/ios/programmatic-scroll-element-crash.html:
  • fast/scrolling/ios/programmatic-scroll-via-scrollIntoView-inside-iframe-should-clamp-top.html:
  • fast/scrolling/ios/reconcile-layer-position-recursive.html:
  • fast/scrolling/ios/remove-overflow-crash.html:
  • fast/scrolling/ios/reveal-focused-element-right-above-keyboard-on-ipad.html:
  • fast/scrolling/ios/scroll-into-view-with-top-content-inset.html:
  • fast/scrolling/ios/scrollbar-hiding-iframes.html:
  • fast/scrolling/ios/scrollbar-hiding.html:
  • fast/scrolling/ios/scrolling-content-clip-to-viewport.html:
  • fast/scrolling/ios/scrollview-adjusts-to-keyboard-insets.html:
  • fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor.html:
  • fast/scrolling/ios/table-cell-touch-scrolling.html:
  • fast/scrolling/ios/textarea-scroll-touch.html:
  • fast/scrolling/ios/touch-scroll-back-forward.html:
  • fast/scrolling/ios/touch-scroll-pointer-events-none.html:
  • fast/scrolling/ios/touch-stacking.html:
  • fast/scrolling/ios/user-then-programmatic-scroll-expected.html:
  • fast/scrolling/ios/user-then-programmatic-scroll.html:
  • fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode-expected.html:
  • fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode.html:
  • fast/scrolling/latching/iframe-latch-small-deltas.html:
  • fast/scrolling/latching/latched-scroll-into-nonfast-region.html:
  • fast/scrolling/latching/latching-stuck-to-main-page.html:
  • fast/scrolling/mac/absolute-in-overflow-scroll-dynamic-expected.html:
  • fast/scrolling/mac/absolute-in-overflow-scroll-dynamic.html:
  • fast/scrolling/mac/absolute-in-overflow-scroll.html:
  • fast/scrolling/mac/adjust-scroll-snap-after-gesture.html:
  • fast/scrolling/mac/adjust-scroll-snap-during-gesture.html:
  • fast/scrolling/mac/async-scroll-overflow-hidden-on-one-axis.html:
  • fast/scrolling/mac/async-scroll-overflow-rtl-zoomed.html:
  • fast/scrolling/mac/async-scroll-overflow-rtl.html:
  • fast/scrolling/mac/async-scroll-overflow-top-inset.html:
  • fast/scrolling/mac/async-scroll-overflow.html:
  • fast/scrolling/mac/border-radius-event-region.html:
  • fast/scrolling/mac/clip-path-hit-test.html:
  • fast/scrolling/mac/event-region-scrolled-contents-layer.html:
  • fast/scrolling/mac/event-region-subframe.html:
  • fast/scrolling/mac/event-region-subscroller-frame.html:
  • fast/scrolling/mac/event-region-subscroller-overflow.html:
  • fast/scrolling/mac/event-region-visibility-hidden.html:
  • fast/scrolling/mac/hit-test-overflow-tiled-layer.html:
  • fast/scrolling/mac/horizontal-overflow-trapping-small-deltas.html:
  • fast/scrolling/mac/mousewheel-over-scrollbar.html:
  • fast/scrolling/mac/move-node-in-overflow-scroll.html:
  • fast/scrolling/mac/negative-z-index-overflow-scroll.html:
  • fast/scrolling/mac/nested-overflow-proxy-node.html:
  • fast/scrolling/mac/non-invertible-transform-hit-testing.html:
  • fast/scrolling/mac/overflow-scrollbars-should-be-visible-expected-mismatch.html:
  • fast/scrolling/mac/overflow-scrollbars-should-be-visible.html:
  • fast/scrolling/mac/overflow-scrolled-document.html:
  • fast/scrolling/mac/overflow-zoomed-document.html:
  • fast/scrolling/mac/overlapped-overflow-scroll.html:
  • fast/scrolling/mac/rubberband-overflow-in-wheel-region-root-jiggle.html:
  • fast/scrolling/mac/rubberband-overflow-in-wheel-region.html:
  • fast/scrolling/mac/scroll-snapping-in-progress.html:
  • fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-hovered.html:
  • fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-reveal.html:
  • fast/scrolling/mac/scrollbars/overflow-overlay-scrollbar-hovered.html:
  • fast/scrolling/mac/scrollbars/overflow-overlay-scrollbar-reveal.html:
  • fast/scrolling/mac/scrollbars/overlay-scrollbar-hovered.html:
  • fast/scrolling/mac/scrollbars/overlay-scrollbar-reveal.html:
  • fast/scrolling/mac/scrollbars/overlay-scrollbar-state.html:
  • fast/scrolling/mac/scrollbars/select-overlay-scrollbar-hovered.html:
  • fast/scrolling/mac/scrollbars/select-overlay-scrollbar-reveal.html:
  • fast/scrolling/mac/slow-scrolling-overflow.html:
  • fast/scrolling/mac/wheel-event-listener-region-basic.html:
  • fast/scrolling/mac/wheel-event-listener-region-document.html:
  • fast/scrolling/mac/wheel-event-listener-region-element-invalidation.html:
  • fast/scrolling/mac/wheel-event-listener-region-inside-overflow-scroll-clipped-out.html:
  • fast/scrolling/mac/wheel-event-listener-region-inside-overflow-scroll.html:
  • fast/scrolling/mac/wheel-event-listener-region-layer-offset.html:
  • fast/scrolling/mac/wheel-event-listener-region-root-invalidation.html:
  • fast/scrolling/mac/wheel-event-listener-region-window.html:
  • fast/scrolling/overflow-inside-foreignobject.html:
  • fast/scrolling/programmatic-scroll-to-negative-offset.html:
  • fast/scrolling/scroll-behavior-invalidate-if-disabled.html:
  • fast/scrolling/scroll-behavior-validate-if-enabled.html:
  • fast/scrolling/scrolling-event-target-gc.html:
  • fast/text/embed-at-end-of-pre-wrap-line-simple-lines-expected.html:
  • fast/text/embed-at-end-of-pre-wrap-line-simple-lines.html:
  • fast/text/simple-line-layout-leading-whitespace-with-soft-hard-linebreak-expected.html:
  • fast/text/simple-line-layout-leading-whitespace-with-soft-hard-linebreak.html:
  • fast/text/simple-lines-float-expected.html:
  • fast/text/simple-lines-float.html:
  • fast/text/whitespace/pre-wrap-long-word-simple-lines-expected.html:
  • fast/text/whitespace/pre-wrap-long-word-simple-lines.html:
  • fast/web-share/canShare-with-files-feature-disabled.html:
  • fast/web-share/share-with-files-feature-disabled.html:
  • highlight/highlight-interfaces.html:
  • highlight/highlight-map-and-group.html:
  • highlight/highlight-pseudo-element-style.html:
  • http/tests/adClickAttribution/anchor-tag-attributes-reflect.html:
  • http/tests/adClickAttribution/attribution-conversion-through-cross-site-image-redirect.html:
  • http/tests/adClickAttribution/attribution-conversion-through-image-redirect-in-new-window.html:
  • http/tests/adClickAttribution/attribution-conversion-through-image-redirect-with-priority.html:
  • http/tests/adClickAttribution/clear-through-website-data-removal.html:
  • http/tests/webAPIStatistics/canvas-read-and-write-data-collection.html:
  • http/tests/webAPIStatistics/font-load-data-collection.html:
  • http/tests/webAPIStatistics/navigator-functions-accessed-data-collection.html:
  • http/tests/webAPIStatistics/screen-functions-accessed-data-collection.html:
  • http/wpt/webauthn/ctap-hid-failure.https.html:
  • http/wpt/webauthn/ctap-hid-success.https.html:
  • http/wpt/webauthn/ctap-nfc-failure.https.html:
  • http/wpt/webauthn/idl.https.html:
  • http/wpt/webauthn/public-key-credential-create-failure-hid-silent.https.html:
  • http/wpt/webauthn/public-key-credential-create-failure-hid.https.html:
  • http/wpt/webauthn/public-key-credential-create-failure-local-silent.https.html:
  • http/wpt/webauthn/public-key-credential-create-failure-local.https.html:
  • http/wpt/webauthn/public-key-credential-create-failure-nfc.https.html:
  • http/wpt/webauthn/public-key-credential-create-failure-u2f-silent.https.html:
  • http/wpt/webauthn/public-key-credential-create-failure-u2f.https.html:
  • http/wpt/webauthn/public-key-credential-create-failure.https.html:
  • http/wpt/webauthn/public-key-credential-create-success-hid.https.html:
  • http/wpt/webauthn/public-key-credential-create-success-local.https.html:
  • http/wpt/webauthn/public-key-credential-create-success-nfc.https.html:
  • http/wpt/webauthn/public-key-credential-create-success-u2f.https.html:
  • http/wpt/webauthn/public-key-credential-create-with-invalid-parameters.https.html:
  • http/wpt/webauthn/public-key-credential-get-failure-hid-silent.https.html:
  • http/wpt/webauthn/public-key-credential-get-failure-hid.https.html:
  • http/wpt/webauthn/public-key-credential-get-failure-local-silent.https.html:
  • http/wpt/webauthn/public-key-credential-get-failure-local.https.html:
  • http/wpt/webauthn/public-key-credential-get-failure-nfc.https.html:
  • http/wpt/webauthn/public-key-credential-get-failure-u2f-silent.https.html:
  • http/wpt/webauthn/public-key-credential-get-failure-u2f.https.html:
  • http/wpt/webauthn/public-key-credential-get-failure.https.html:
  • http/wpt/webauthn/public-key-credential-get-success-hid.https.html:
  • http/wpt/webauthn/public-key-credential-get-success-local.https.html:
  • http/wpt/webauthn/public-key-credential-get-success-nfc.https.html:
  • http/wpt/webauthn/public-key-credential-get-success-u2f.https.html:
  • http/wpt/webauthn/public-key-credential-get-with-invalid-parameters.https.html:
  • http/wpt/webauthn/public-key-credential-ip-address.html:
  • http/wpt/webauthn/public-key-credential-is-user-verifying-platform-authenticator-available.html:
  • http/wpt/webauthn/public-key-credential-same-origin-with-ancestors.https.html:
  • http/wpt/webauthn/public-key-credential-unfocused-document.https.html:
  • intersection-observer/intersection-observer-callback-after-gc.html:
  • intersection-observer/intersection-observer-callback-leak.html:
  • mathml/mathml-overflow-crash.html:
  • mathml/non-core/frac-linethickness-001-expected.html:
  • mathml/non-core/frac-linethickness-001.html:
  • mathml/non-core/frac-linethickness-002-expected.html:
  • mathml/non-core/frac-linethickness-002.html:
  • mathml/non-core/frac-numalign-denomalign-001-expected.html:
  • mathml/non-core/frac-numalign-denomalign-001.html:
  • mathml/non-core/lengths-1-expected.html:
  • mathml/non-core/lengths-1.html:
  • mathml/non-core/lengths-2-expected.html:
  • mathml/non-core/lengths-2.html:
  • mathml/non-core/lengths-3.html:
  • mathml/presentation/attributes-background-color-expected.html:
  • mathml/presentation/attributes-background-color.html:
  • mathml/presentation/attributes-mathvariant.html:
  • mathml/presentation/mstyle-css-attributes.html:
  • platform/ios/fast/scrolling/find-text-in-overflow-node-indicator-position-limit.html:
  • platform/ios/fast/scrolling/find-text-in-overflow-node-indicator-position.html:
  • platform/ios/fast/scrolling/find-text-in-overflow-node.html:
  • platform/ios/media/video-play-glyph-composited-outside-overflow-scrolling-touch-container.html:
  • pointerevents/ios/touch-action-none-in-overflow-scrolling-touch.html:
  • pointerevents/ios/touch-action-none-no-scroll-indicators.html:
  • pointerevents/ios/touch-action-none-with-frame-inside.html:
  • pointerevents/ios/touch-action-pan-y-in-overflow-scroll-horizontal-gesture-prevents-vertical-scrolling.html:
  • pointerevents/ios/touch-action-region-backing-sharing.html:
  • pointerevents/ios/touch-action-region-clip-and-transform.html:
  • pointerevents/ios/touch-action-region-overflow.html:
  • printing/page-with-10mm-left-margin.html:
  • printing/page-with-zero-margin.html:
  • requestidlecallback/requestidlecallback-document-gc.html:
  • requestidlecallback/requestidlecallback-enabled.html:
  • requestidlecallback/requestidlecallback-id.html:
  • requestidlecallback/requestidlecallback-in-page-cache.html:
  • requestidlecallback/requestidlecallback-is-called.html:
  • requestidlecallback/requestidlecallback-is-not-called-when-canceled.html:
  • requestidlecallback/requestidlecallback-not-enabled.html:
  • resize-observer/delete-observers-in-callbacks.html:
  • resize-observer/element-leak.html:
  • resize-observer/modify-frametree-in-callback.html:
  • resize-observer/multi-frames.html:
  • resize-observer/observe-element-from-other-frame.html:
  • resize-observer/resize-observer-callback-leak.html:
  • resize-observer/resize-observer-entry-keeps-js-wrapper-of-target-alive.html:
  • resize-observer/resize-observer-keeps-js-wrapper-of-target-alive.html:
  • resize-observer/resize-observer-with-zoom.html:
  • scrollbars/async-overflow-custom-scrollbar-expected.html:
  • scrollbars/async-overflow-custom-scrollbar.html:
  • scrollingcoordinator/ios/absolute-layer-should-not-move-with-scroll-expected.html:
  • scrollingcoordinator/ios/absolute-layer-should-not-move-with-scroll.html:
  • scrollingcoordinator/ios/fixed-frame-overflow-swipe-expected.html:
  • scrollingcoordinator/ios/fixed-frame-overflow-swipe.html:
  • scrollingcoordinator/ios/fixed-in-overflow-scroll-expected.html:
  • scrollingcoordinator/ios/fixed-in-overflow-scroll-scrolling-tree.html:
  • scrollingcoordinator/ios/fixed-in-overflow-scroll.html:
  • scrollingcoordinator/ios/fixed-in-stacking-context-overflow-scroll-2-expected.html:
  • scrollingcoordinator/ios/fixed-in-stacking-context-overflow-scroll-2.html:
  • scrollingcoordinator/ios/fixed-in-stacking-context-overflow-scroll-expected.html:
  • scrollingcoordinator/ios/fixed-in-stacking-context-overflow-scroll.html:
  • scrollingcoordinator/ios/fixed-inside-overflow-inside-fixed-expected.html:
  • scrollingcoordinator/ios/fixed-inside-overflow-inside-fixed.html:
  • scrollingcoordinator/ios/fixed-inside-sticky-frame-expected.html:
  • scrollingcoordinator/ios/fixed-inside-sticky-frame.html:
  • scrollingcoordinator/ios/fixed-inside-sticky-no-stacking-context-2-expected.html:
  • scrollingcoordinator/ios/fixed-inside-sticky-no-stacking-context-2.html:
  • scrollingcoordinator/ios/fixed-inside-sticky-no-stacking-context-expected.html:
  • scrollingcoordinator/ios/fixed-inside-sticky-no-stacking-context.html:
  • scrollingcoordinator/ios/fixed-inside-sticky-stacking-context-expected.html:
  • scrollingcoordinator/ios/fixed-inside-sticky-stacking-context.html:
  • scrollingcoordinator/ios/fixed-overflow-no-stacking-context-1-expected.html:
  • scrollingcoordinator/ios/fixed-overflow-no-stacking-context-1.html:
  • scrollingcoordinator/ios/fixed-overflow-no-stacking-context-2-expected.html:
  • scrollingcoordinator/ios/fixed-overflow-no-stacking-context-2.html:
  • scrollingcoordinator/ios/fixed-overflow-stacking-context-stationary-expected.html:
  • scrollingcoordinator/ios/fixed-overflow-stacking-context-stationary.html:
  • scrollingcoordinator/ios/programmatic-frame-scroll-expected.html:
  • scrollingcoordinator/ios/programmatic-frame-scroll.html:
  • scrollingcoordinator/ios/programmatic-overflow-scroll-expected.html:
  • scrollingcoordinator/ios/programmatic-overflow-scroll.html:
  • scrollingcoordinator/ios/programmatic-page-scroll-expected.html:
  • scrollingcoordinator/ios/programmatic-page-scroll.html:
  • scrollingcoordinator/ios/relative-layer-should-move-with-scroll-expected.html:
  • scrollingcoordinator/ios/relative-layer-should-move-with-scroll.html:
  • scrollingcoordinator/ios/scroll-element-at-point.html:
  • scrollingcoordinator/ios/scroll-position-after-reattach-expected.html:
  • scrollingcoordinator/ios/scroll-position-after-reattach.html:
  • scrollingcoordinator/ios/scroller-initial-scroll-position-expected.html:
  • scrollingcoordinator/ios/scroller-initial-scroll-position.html:
  • scrollingcoordinator/ios/sticky-overflow-no-stacking-context-no-stick-1-expected.html:
  • scrollingcoordinator/ios/sticky-overflow-no-stacking-context-no-stick-1.html:
  • scrollingcoordinator/ios/sticky-overflow-no-stacking-context-no-stick-2-expected.html:
  • scrollingcoordinator/ios/sticky-overflow-no-stacking-context-no-stick-2.html:
  • scrollingcoordinator/ios/sticky-overflow-no-stacking-context-stick-1-expected.html:
  • scrollingcoordinator/ios/sticky-overflow-no-stacking-context-stick-1.html:
  • scrollingcoordinator/ios/sticky-overflow-no-stacking-context-stick-2-expected.html:
  • scrollingcoordinator/ios/sticky-overflow-no-stacking-context-stick-2.html:
  • scrollingcoordinator/ios/sticky-overflow-stacking-context-no-stick-expected.html:
  • scrollingcoordinator/ios/sticky-overflow-stacking-context-no-stick.html:
  • scrollingcoordinator/ios/sticky-overflow-stacking-context-stick-expected.html:
  • scrollingcoordinator/ios/sticky-overflow-stacking-context-stick.html:
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-non-cb-overflow.html:
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow.html:
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow2.html:
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-dynamic.html:
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-repaint-expected.html:
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-repaint.html:
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow.html:
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-on-overflow.html:
  • scrollingcoordinator/mac/latching/horizontal-overflow-back-swipe.html:
  • scrollingcoordinator/mac/latching/horizontal-overflow-in-vertical-overflow.html:
  • scrollingcoordinator/mac/latching/scrolling-select-should-not-latch-mainframe.html:
  • scrollingcoordinator/mac/latching/zero-delta-began-should-not-latch.html:
  • scrollingcoordinator/mac/programmatic-frame-scroll-expected.html:
  • scrollingcoordinator/mac/programmatic-frame-scroll.html:
  • scrollingcoordinator/mac/programmatic-overflow-scroll-expected.html:
  • scrollingcoordinator/mac/programmatic-overflow-scroll.html:
  • scrollingcoordinator/mac/rtl-programmatic-overflow-scroll.html:
  • scrollingcoordinator/overflow-proxy-reattach-expected.html:
  • scrollingcoordinator/overflow-proxy-reattach.html:
  • scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers.html:
  • scrollingcoordinator/scrolling-tree/absolute-inside-stacking-in-scroller.html:
  • scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow-nested.html:
  • scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow.html:
  • scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow.html:
  • scrollingcoordinator/scrolling-tree/composited-in-absolute-in-stacking-context-overflow.html:
  • scrollingcoordinator/scrolling-tree/gain-scrolling-node-parent.html:
  • scrollingcoordinator/scrolling-tree/lose-scrolling-node-parent.html:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow.html:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-overflow.html:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow.html:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow.html:
  • scrollingcoordinator/scrolling-tree/nested-overflow-scroll.html:
  • scrollingcoordinator/scrolling-tree/overflow-in-fixed.html:
  • scrollingcoordinator/scrolling-tree/positioned-nodes-complex.html:
  • scrollingcoordinator/scrolling-tree/positioned-nodes.html:
  • scrollingcoordinator/scrolling-tree/remove-scrolling-role.html:
  • scrollingcoordinator/scrolling-tree/reparent-across-compositing-layers.html:
  • scrollingcoordinator/scrolling-tree/reparent-with-layer-removal.html:
  • scrollingcoordinator/scrolling-tree/resources/doc-with-sticky.html:
  • scrollingcoordinator/scrolling-tree/scroller-with-negative-z-child.html:
  • scrollingcoordinator/scrolling-tree/sticky-in-overflow.html:
  • tiled-drawing/scrolling/overflow/overflow-scrolled-down-tile-coverage.html:
  • tiled-drawing/scrolling/overflow/overflow-scrolled-up-tile-coverage.html:
  • tiled-drawing/scrolling/overflow/overflow-tile-coverage.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-async-iframe.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-async-overflow-stateless.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-async-overflow.html:
3:30 AM Changeset in webkit [269359] by Devin Rousso
  • 115 edits
    12 deletes in trunk

Web Inspector: use weak collections for holding event listeners
https://bugs.webkit.org/show_bug.cgi?id=196956

Reviewed by Brian Burg.

Source/WebInspectorUI:

Replace the ListMultimap/LinkedList with a Multimap for holding listener data:
`

Map<String eventType, Set<{Function listener, WeakRef thisObject}>> _listeners;

`
This preserves addition order while also not strongly holding any thisObject so they can
be GCed (and remove the listener along with it).

  • UserInterface/Base/Object.js:

(WI.Object.addEventListener):
(WI.Object.singleFireEventListener):
(WI.Object.awaitEvent):
(WI.Object.removeEventListener):
(WI.Object.prototype.singleFireEventListener):
(WI.Object.prototype.removeEventListener):
(WI.Object.prototype.dispatchEventToListeners.dispatch):
(WI.Object.hasEventListeners):
(WI.Object.activelyListeningObjectsWithPrototype): Added.
(WI.Object.prototype.activelyListeningObjectsWithPrototype): Added.

  • UserInterface/Base/SearchUtilities.js:

(WI.SearchUtilities.createSettings):
(WI.SearchUtilities.createSettingsButton):

  • UserInterface/Base/Main.js:

(WI.loaded):
(WI.contentLoaded):

  • UserInterface/Models/Resource.js:

(WI.Resource.prototype.requestContent):

  • UserInterface/Controllers/RuntimeManager.js:

(WI.RuntimeManager):

  • UserInterface/Views/AuditTestCaseContentView.js:

(WI.AuditTestCaseContentView.prototype.showRunningPlaceholder):

  • UserInterface/Views/AuditTestContentView.js:

(WI.AuditTestContentView.prototype.showNoResultPlaceholder):

  • UserInterface/Views/AuditTestGroupContentView.js:

(WI.AuditTestGroupContentView.prototype.showRunningPlaceholder):

  • UserInterface/Views/CodeMirrorEditor.js:

(WI.CodeMirrorEditor.create):

  • UserInterface/Debug/Bootstrap.js:

(WI.runBootstrapOperations):

  • UserInterface/Views/ConsoleDrawer.js:

(WI.ConsoleDrawer):

  • UserInterface/Views/ConsoleMessageView.js:

(WI.ConsoleMessageView.prototype.clearSessionState):
(WI.ConsoleMessageView.prototype._appendSavedResultIndex):
(WI.ConsoleMessageView.prototype._rootPropertyPathForObject):

  • UserInterface/Views/ContentBrowser.js:

(WI.ContentBrowser):
(WI.ContentBrowser.prototype.async handleFindNextShortcut):
(WI.ContentBrowser.prototype.async handleFindPreviousShortcut):

  • UserInterface/Views/HeapSnapshotContentView.js:

(WI.HeapSnapshotContentView):

  • UserInterface/Views/LogContentView.js:

(WI.LogContentView):

  • UserInterface/Views/MediaTimelineOverviewGraph.js:

(WI.MediaTimelineOverviewGraph.prototype._processRecord):

  • UserInterface/Views/NetworkDetailView.js:

(WI.NetworkDetailView.prototype.initialLayout):

  • UserInterface/Views/ObjectTreeView.js:

(WI.ObjectTreeView.prototype.addShowMoreIfNeeded):

  • UserInterface/Views/SearchSidebarPanel.js:

(WI.SearchSidebarPanel):
(WI.SearchSidebarPanel.prototype.closed):
(WI.SearchSidebarPanel.prototype.performSearch):

  • UserInterface/Views/SettingEditor.js:

(WI.SettingEditor.createForSetting):

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
(WI.SettingsTabContentView.prototype._createConsoleSettingsView):
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView.listenForChange):
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
(WI.SettingsTabContentView.prototype._createDebugSettingsView):

  • UserInterface/Views/ShaderProgramContentView.js:

(WI.ShaderProgramContentView):

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype.closed):
(WI.SourcesNavigationSidebarPanel.prototype.createContentTreeOutline):

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):

  • UserInterface/Views/ThreadTreeElement.js:

(WI.ThreadTreeElement.prototype._updateStatus):

  • UserInterface/Views/TimelineTreeElement.js:

(WI.TimelineTreeElement.prototype._showCloseButton):
Update callers of WI.Object.prototype.addEventListener to always pass a thisObject. This
is especially important for inlined listener, as there needs to be a strong reference to
some "longer lived" thisObject (which is held by a WeakRef) in order for the listener
to not be GCed.

  • UserInterface/Models/DOMNodeStyles.js:

(WI.DOMNodeStyles):
(WI.DOMNodeStyles.prototype._parseStyleDeclarationPayload):
(WI.DOMNodeStyles.prototype._parseRulePayload):
(WI.DOMNodeStyles.prototype._handleCSSStyleSheetContentDidChange): Added.
(WI.DOMNodeStyles.prototype._styleSheetContentDidChange): Deleted.

  • UserInterface/Views/TimelineRecordingProgressView.js:

(WI.TimelineRecordingProgressView):
(WI.TimelineRecordingProgressView.prototype.set visible):
(WI.TimelineRecordingProgressView.prototype._updateState):
Use a global event listener instead of adding event listeners to specific objects as it's
already likely that all the objects would be listened to anyways.

  • UserInterface/Models/DOMTree.js:

(WI.DOMTree.prototype.disconnect):

  • UserInterface/Controllers/ApplicationCacheManager.js:

(WI.ApplicationCacheManager.prototype.disable):

  • UserInterface/Controllers/CallFrameTreeController.js:

(WI.CallFrameTreeController.prototype.disconnect):

  • UserInterface/Controllers/DOMStorageManager.js:

(WI.DOMStorageManager.prototype.disable):

  • UserInterface/Controllers/DatabaseManager.js:

(WI.DatabaseManager.prototype.disable):

  • UserInterface/Controllers/IndexedDBManager.js:

(WI.IndexedDBManager.prototype.disable):

  • UserInterface/Controllers/TimelineManager.js:

(WI.TimelineManager.prototype.capturingStopped):

  • UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:

(WI.ApplicationCacheDetailsSidebarPanel.prototype.closed):

  • UserInterface/Views/ApplicationCacheFrameContentView.js:

(WI.ApplicationCacheFrameContentView.prototype.closed):

  • UserInterface/Views/AuditNavigationSidebarPanel.js:

(WI.AuditNavigationSidebarPanel.prototype.closed):

  • UserInterface/Views/AuditTreeElement.js:

(WI.AuditTreeElement.prototype.ondetach):

  • UserInterface/Views/CPUTimelineView.js:

(WI.CPUTimelineView.prototype.closed):

  • UserInterface/Views/CanvasContentView.js:

(WI.CanvasContentView.prototype.detached):

  • UserInterface/Views/CanvasOverviewContentView.js:

(WI.CanvasOverviewContentView.prototype.detached):

  • UserInterface/Views/CanvasSidebarPanel.js:

(WI.CanvasSidebarPanel.prototype.set canvas):
(WI.CanvasSidebarPanel.prototype.set recording):
(WI.CanvasSidebarPanel.prototype.hidden):

  • UserInterface/Views/ClusterContentView.js:

(WI.ClusterContentView.prototype.closed):

  • UserInterface/Views/CollectionContentView.js:

(WI.CollectionContentView.prototype.removeContentViewForItem):
(WI.CollectionContentView.prototype.detached):

  • UserInterface/Views/ContentBrowserTabContentView.js:

(WI.ContentBrowserTabContentView.prototype.hidden):
(WI.ContentBrowserTabContentView.prototype.closed):

  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:

(WI.DOMNodeDetailsSidebarPanel.prototype.closed):

  • UserInterface/Views/DOMTreeContentView.js:

(WI.DOMTreeContentView.prototype.closed):

  • UserInterface/Views/DOMTreeUpdater.js:

(WI.DOMTreeUpdater.prototype.close):

  • UserInterface/Views/ElementsTabContentView.js:

(WI.ElementsTabContentView.prototype.closed):

  • UserInterface/Views/FrameDOMTreeContentView.js:

(WI.FrameDOMTreeContentView.prototype.closed):

  • UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:

(WI.GeneralStyleDetailsSidebarPanel.prototype.removeEventListeners):

  • UserInterface/Views/HeapAllocationsTimelineView.js:

(WI.HeapAllocationsTimelineView):
(WI.HeapAllocationsTimelineView.prototype.closed):

  • UserInterface/Views/ImageResourceContentView.js:

(WI.ImageResourceContentView.prototype.closed): Deleted.

  • UserInterface/Views/InlineSwatch.js:

(WI.InlineSwatch.prototype.didDismissPopover):

  • UserInterface/Views/LayoutTimelineView.js:

(WI.LayoutTimelineView.prototype.closed):

  • UserInterface/Views/LocalResourceOverrideWarningView.js:

(WI.LocalResourceOverrideWarningView.prototype.detached):

  • UserInterface/Views/MemoryTimelineView.js:

(WI.MemoryTimelineView.prototype.closed):

  • UserInterface/Views/MultipleScopeBarItem.js:

(WI.MultipleScopeBarItem.prototype.set scopeBarItems):

  • UserInterface/Views/NavigationSidebarPanel.js:

(WI.NavigationSidebarPanel.prototype.closed):

  • UserInterface/Views/NetworkTimelineView.js:

(WI.NetworkTimelineView.prototype.closed):

  • UserInterface/Views/OverviewTimelineView.js:

(WI.OverviewTimelineView.prototype.closed):

  • UserInterface/Views/ProbeDetailsSidebarPanel.js:

(WI.ProbeDetailsSidebarPanel.prototype.closed):

  • UserInterface/Views/QuickConsole.js:

(WI.QuickConsole.prototype.closed):

  • UserInterface/Views/RecordingContentView.js:

(WI.RecordingContentView.prototype._handleRecordingProcessedAction):

  • UserInterface/Views/RenderingFrameTimelineView.js:

(WI.RenderingFrameTimelineView.prototype.closed):

  • UserInterface/Views/ResourceCollectionContentView.js:

(WI.ResourceCollectionContentView.prototype.detached):
(WI.ResourceCollectionContentView.prototype.contentViewRemoved):

  • UserInterface/Views/ResourceContentView.js:

(WI.ResourceContentView.prototype.closed):

  • UserInterface/Views/ResourceDetailsSidebarPanel.js:

(WI.ResourceDetailsSidebarPanel.prototype.set resource):
(WI.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):
(WI.ResourceDetailsSidebarPanel.prototype._handleResourceInitiatedResourcesDidChange): Added.

  • UserInterface/Views/ResourceHeadersContentView.js:

(WI.ResourceHeadersContentView.prototype.closed):

  • UserInterface/Views/ResourceSecurityContentView.js:

(WI.ResourceSecurityContentView.prototype.closed):

  • UserInterface/Views/ResourceSizesContentView.js:

(WI.ResourceSizesContentView.prototype.closed):

  • UserInterface/Views/ResourceTimingContentView.js:

(WI.ResourceTimingContentView.prototype.closed):

  • UserInterface/Views/ScopeChainDetailsSidebarPanel.js:

(WI.ScopeChainDetailsSidebarPanel.prototype._generateCallFramesSection):
(WI.ScopeChainDetailsSidebarPanel.prototype._generateWatchExpressionsSection):
(WI.ScopeChainDetailsSidebarPanel.prototype.closed):

  • UserInterface/Views/ScriptContentView.js:

(WI.ScriptContentView.prototype.closed):

  • UserInterface/Views/ScriptDetailsTimelineView.js:

(WI.ScriptDetailsTimelineView.prototype.closed):

  • UserInterface/Views/ScriptProfileTimelineView.js:

(WI.ScriptProfileTimelineView.prototype.closed):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WI.SourceCodeTextEditor.prototype.close):
(WI.SourceCodeTextEditor.prototype._showPopover):
(WI.SourceCodeTextEditor.prototype._showPopoverForObject):
(WI.SourceCodeTextEditor.prototype._dismissPopover):
(WI.SourceCodeTextEditor.prototype._trackPopoverEvents): Deleted.

  • UserInterface/Views/StorageSidebarPanel.js:

(WI.StorageSidebarPanel.prototype.closed):

  • UserInterface/Views/TextResourceContentView.js:

(WI.TextResourceContentView.prototype.closed):

  • UserInterface/Views/TimelineOverview.js:

(WI.TimelineOverview.prototype.closed):

  • UserInterface/Views/TimelineRecordingContentView.js:

(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype.closed):
(WI.TimelineRecordingContentView.prototype._recordingUnloaded):

  • UserInterface/Views/TimelineRuler.js:

(WI.TimelineRuler.prototype.clearMarkers):

  • UserInterface/Views/TimelineTabContentView.js:

(WI.TimelineTabContentView.prototype.closed):

  • UserInterface/Views/TreeOutlineGroup.js:

(WI.TreeOutlineGroup.prototype.itemRemoved):
Replace the removeEventListener(null, null, this) pattern by instead having callers remove
each event listener explicitly. This is a safer design as it can avoid situations where
parent classes inadvertently remove event listeners added by subclasses. For objects with
lots of event listeners this is also more efficient as it doesn't require as much iteration.

  • UserInterface/Views/RecordingActionTreeElement.js:

(WI.RecordingActionTreeElement):
(WI.RecordingActionTreeElement.prototype._handleValidityChanged):
Use singleFireEventListener where possible.

  • UserInterface/Controllers/DebuggerManager.js:

(WI.DebuggerManager.prototype.pause):
(WI.DebuggerManager.prototype.resume):
(WI.DebuggerManager.prototype.stepNext):
(WI.DebuggerManager.prototype.stepOver):
(WI.DebuggerManager.prototype.stepInto):
(WI.DebuggerManager.prototype.stepOut):

  • UserInterface/Views/BreakpointTreeElement.js:

(WI.BreakpointTreeElement.prototype.onattach):
(WI.BreakpointTreeElement.prototype.ondetach):
(WI.BreakpointTreeElement.prototype.get listenerSet): Deleted.

  • UserInterface/Views/DataGrid.js:

(WI.DataGrid.prototype.insertColumn):
(WI.DataGrid.prototype.removeColumn):

  • UserInterface/Views/JavaScriptBreakpointTreeElement.js:

(WI.JavaScriptBreakpointTreeElement):
(WI.JavaScriptBreakpointTreeElement.prototype.onattach):
(WI.JavaScriptBreakpointTreeElement.prototype.ondetach):

  • UserInterface/Views/ProbeSetDataGrid.js:

(WI.ProbeSetDataGrid):
(WI.ProbeSetDataGrid.prototype.closed):
(WI.ProbeSetDataGrid.prototype._setupData):
(WI.ProbeSetDataGrid.prototype._teardownData):

  • UserInterface/Views/ProbeSetDetailsSection.js:

(WI.ProbeSetDetailsSection):
(WI.ProbeSetDetailsSection.prototype.closed):
Remove the legacy WI.EventListener and WI.EventListenerSet as they basically do the same
thing as WI.Object with extra steps.

  • UserInterface/Models/WebSocketResource.js:
  • UserInterface/Proxies/HeapSnapshotWorkerProxy.js:
  • UserInterface/Controllers/TargetManager.js:
  • UserInterface/Views/DataGridNode.js:

(WI.DataGridNode.prototype.collapse):
(WI.DataGridNode.prototype.expand):
(WI.DataGridNode.prototype.reveal):
(WI.DataGridNode.prototype.traverseNextNode):
(WI.DataGridNode.prototype.traversePreviousNode):

  • UserInterface/Views/HeapSnapshotClassDataGridNode.js:

(WI.HeapSnapshotClassDataGridNode):
(WI.HeapSnapshotClassDataGridNode.prototype._populate):

  • UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:

(WI.HeapSnapshotInstanceDataGridNode):

  • UserInterface/Views/ProfileDataGridNode.js:

(WI.ProfileDataGridNode):
(WI.ProfileDataGridNode.prototype._populate):

  • UserInterface/Views/ProfileNodeDataGridNode.js:

(WI.ProfileNodeDataGridNode):
(WI.ProfileNodeDataGridNode.prototype._populate):

  • UserInterface/Views/TreeOutline.js:
  • UserInterface/Workers/HeapSnapshot/HeapSnapshotWorker.js:

(HeapSnapshotWorker.prototype.createSnapshot):
Ensure that all event names are strings defined on the class Event object.

  • UserInterface/Views/Sidebar.js:

(WI.Sidebar.prototype.set selectedSidebarPanel):
Drive-by: fix an issue where hidden is called twice, once from the selected sidebar panel
being changed and then again when that sidebar panel is removed.

  • .eslintrc:
  • UserInterface/Base/EventListener.js: Removed.
  • UserInterface/Base/EventListenerSet.js: Removed.
  • UserInterface/Base/LinkedList.js: Removed.
  • UserInterface/Base/ListMultimap.js: Removed.
  • UserInterface/Main.html:
  • UserInterface/Test.html:
  • UserInterface/TestStub.html:
  • Tools/SourceMaps/index.html:

LayoutTests:

  • http/tests/inspector/dom/disconnect-dom-tree-after-main-frame-navigation.html:

Use newly named WI.Object.prototype.activelyListeningObjectsWithPrototype instead of the
previously named WI.Object.prototype.retainedObjectsWithPrototype since WI.Object
doesn't retain any thisObject anymore.

  • inspector/debugger/setPauseOnMicrotasks.html:

Only remove the event listener if it didn't fire.

  • inspector/dom/setEventListenerDisabled.html:

No need to remove the event listener as calling reject after a Promise is already
settled won't have any effect.

  • inspector/unit-tests/event-listener.html: Removed.
  • inspector/unit-tests/event-listener-expected.txt: Removed.
  • inspector/unit-tests/event-listener-set.html: Removed.
  • inspector/unit-tests/event-listener-set-expected.txt: Removed.

Remove the legacy WI.EventListener and WI.EventListenerSet as they basically do the same
thing as WI.Object with extra steps.

  • inspector/unit-tests/linked-list.html: Removed.
  • inspector/unit-tests/linked-list-expected.txt: Removed.
  • inspector/unit-tests/list-multimap.html: Removed.
  • inspector/unit-tests/list-multimap-expected.txt: Removed.

Remove LinkedList and ListMultimap as they're no longer used.

  • platform/gtk/TestExpectations:
2:11 AM Changeset in webkit [269358] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening. Remove text flaky failures of tests that are actually passing.

The test failures removed have been consistently passing for the last 4000
revisions.

  • platform/gtk/TestExpectations:

Nov 3, 2020:

11:34 PM Changeset in webkit [269357] by graouts@webkit.org
  • 9 edits
    1 add in trunk

align-items should be a discrete animatable property
https://bugs.webkit.org/show_bug.cgi?id=218535
<rdar://problem/71012428>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/StyleSelfAlignmentData.cpp: Added.

(WebCore::operator<<):

  • rendering/style/StyleSelfAlignmentData.h:
10:23 PM Changeset in webkit [269356] by Diego Pino Garcia
  • 2 edits
    2 deletes in trunk/LayoutTests

[GTK] Unreviewed test gardening. Remove stale baselines of two mediastream tests.

Also update bug number of failing test.

  • platform/gtk/TestExpectations:
  • platform/gtk/fast/mediastream/RTCPeerConnection-inspect-answer-expected.txt: Removed.
  • platform/gtk/fast/mediastream/RTCPeerConnection-inspect-offer-expected.txt: Removed.
9:50 PM Changeset in webkit [269355] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[WPE] Gardening adClickAttribution failure

Unreviewed test gardening.

Also grouped some target-related entries together

  • platform/wpe/TestExpectations:
8:59 PM Changeset in webkit [269354] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

Ignore order when parsing inset and color for box-shadow
https://bugs.webkit.org/show_bug.cgi?id=182677

Patch by Tyler Wilcock <Tyler Wilcock> on 2020-11-03
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Update tests to pass now that we parse inset, a color, and the lengths
component of <shadow> values in any order.

https://drafts.csswg.org/css-backgrounds/#typedef-shadow

  • web-platform-tests/css/css-backgrounds/parsing/box-shadow-valid-expected.txt:

Source/WebCore:

According to the spec [1], box-shadow should allow the inset keyword,
a color, and the lengths component in any order. Our implementation
allowed only 2 out of the 4 possible orders; fix our parsing to
match the spec.

[1]: https://drafts.csswg.org/css-backgrounds/#typedef-shadow

Above description is (almost) a direct quote from <cnardi@chromium.org>
who previously submitted a patch for this bug.

Change is covered by existing test

LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/box-shadow-valid.html

and new test

LayoutTests/fast/box-shadow/box-shadow-invalid-values.html

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::consumeSingleShadow): Parse inset,
color, and lengths component of a single <shadow> in any order.

LayoutTests:

Add additional test coverage around rejecting invalid box-shadow
values (e.g. multiple colors, multiple insets, multiple lengths-components).

https://drafts.csswg.org/css-backgrounds/#typedef-shadow

  • LayoutTests/fast/box-shadow/box-shadow-invalid-values.html: Added.
  • LayoutTests/fast/box-shadow/box-shadow-invalid-values-expected.txt: Added.
8:55 PM Changeset in webkit [269353] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, build fix for ARM64E debug build
https://bugs.webkit.org/show_bug.cgi?id=218143

  • runtime/JSCPtrTag.cpp:

(JSC::tagForPtr):

8:54 PM Changeset in webkit [269352] by Diego Pino Garcia
  • 6 edits
    2 deletes in trunk/LayoutTests

[GTK] Unreviewed test gardening. Update state of flaky crash tests that are actually failing.

Some tests were actually passing after removing or updating their baseline.

  • platform/gtk/TestExpectations:
  • platform/gtk/fast/mediastream/RTCPeerConnection-addIceCandidate-expected.txt: Removed.
  • platform/gtk/fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt: Removed.
  • platform/gtk/media/controls-styling-strict-expected.txt:
  • platform/gtk/media/track/track-cue-rendering-horizontal-expected.txt:
  • platform/gtk/media/track/track-cue-rendering-vertical-expected.txt:
  • platform/gtk/media/video-aspect-ratio-expected.txt:
8:07 PM Changeset in webkit [269351] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][Integration] Rename Run::needsHyphen to hasHyphen
https://bugs.webkit.org/show_bug.cgi?id=218541

Reviewed by Sam Weinig.

  1. Integration uses the term "has" instead of "needs".
  2. Runs will gain the hyphen character soon (when we introduce the concept of rendered content (vs. original content)).
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::paint):

  • layout/integration/LayoutIntegrationRun.h:

(WebCore::LayoutIntegration::Run::TextContent::hasHyphen const):
(WebCore::LayoutIntegration::Run::TextContent::TextContent):
(WebCore::LayoutIntegration::Run::TextContent::needsHyphen const): Deleted.

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::RunIteratorModernPath::hasHyphen const):

6:50 PM Changeset in webkit [269350] by sbarati@apple.com
  • 4 edits
    1 add in trunk

Add back the removed assertion from r269338 and add a test
https://bugs.webkit.org/show_bug.cgi?id=218543

Reviewed by Filip Pizlo.

JSTests:

  • stress/bad-osr-exit-checkpoint-state-assertion-during-js-lock-destruction.js: Added.

(foo):
(let.a.get length):

Source/JavaScriptCore:

The assertion from r269338 was wrong in JSLock::willReleaseLock because
of our use of DropAllLocks. However, it is correct inside the topmost ~VMEntryScope.

  • jsc.cpp:

(JSC_DEFINE_HOST_FUNCTION):

  • runtime/VMEntryScope.cpp:

(JSC::VMEntryScope::~VMEntryScope):

6:31 PM Changeset in webkit [269349] by ysuzuki@apple.com
  • 48 edits
    1 add in trunk/Source

[JSC] Add JITCage support
https://bugs.webkit.org/show_bug.cgi?id=218143

Reviewed by Saam Barati.

Source/JavaScriptCore:

Towards software verified JIT, this patch adds partial JIT-Caging support which cages JIT call / jumps in a certain format.
This is currently only enabled when internal SDK is enabled. And it is only enabled in ARM64E for now.
Currently, this patch does not have CSS JIT support. Subsequent patch will add it.
We ensured that JS2 and RAMification are neutral.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/JITOperationList.cpp:

(JSC::addPointers):
(JSC::JITOperationList::populatePointersInJavaScriptCoreForLLInt):

  • assembler/JITOperationList.h:

(JSC::JITOperationList::map const):
(JSC::JITOperationList::assertIsHostFunction):
(JSC::JITOperationList::assertIsJITOperation):
(JSC::JITOperationList::contains const): Deleted.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::farJump):

  • assembler/MacroAssemblerARM64E.h:

(JSC::MacroAssemblerARM64E::callTrustedPtr):
(JSC::MacroAssemblerARM64E::call):
(JSC::MacroAssemblerARM64E::callRegister):
(JSC::MacroAssemblerARM64E::farJumpRegister):
(JSC::MacroAssemblerARM64E::farJump):
(JSC::MacroAssemblerARM64E::ret):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::farJump):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::farJump):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::farJump):

  • bytecode/BytecodeList.rb:
  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::callerReturnPC):
(JSC::DFG::adjustAndJumpToTarget):

  • dfg/DFGOSRExitCompilerCommon.h:
  • jit/ExecutableAllocator.cpp:

(JSC::ExecutableAllocator::setJITEnabled):
(JSC::initializeJITPageReservation):

  • jit/GPRInfo.h:
  • jit/PolymorphicCallStubRoutine.cpp:

(JSC::PolymorphicCallNode::unlink):

  • jit/ThunkGenerators.cpp:

(JSC::emitPointerValidation):

  • llint/LLIntData.cpp:

(JSC::LLInt::initialize):

  • llint/LLIntData.h:

(JSC::LLInt::getOpcode):
(JSC::LLInt::getOpcodeWide16):
(JSC::LLInt::getOpcodeWide32):
(JSC::LLInt::getCodePtr):
(JSC::LLInt::getWide16CodePtr):
(JSC::LLInt::getWide32CodePtr):
(JSC::LLInt::getCodeFunctionPtr):
(JSC::LLInt::getWide16CodeFunctionPtr):
(JSC::LLInt::getWide32CodeFunctionPtr):

  • llint/LLIntEntrypoint.cpp:

(JSC::LLInt::entrypointTrampoline):
(JSC::LLInt::setFunctionEntrypoint):
(JSC::LLInt::setEvalEntrypoint):
(JSC::LLInt::setProgramEntrypoint):
(JSC::LLInt::setModuleProgramEntrypoint):
(JSC::LLInt::getHostCallReturnValueEntrypoint):
(JSC::LLInt::fuzzerReturnEarlyFromLoopHintEntrypoint):
(JSC::LLInt::genericReturnPointEntrypoint):

  • llint/LLIntEntrypoint.h:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::commonCallEval):
(JSC::LLInt::dispatchToNextInstruction):

  • llint/LLIntThunks.cpp:

(JSC::LLInt::generateThunkWithJumpTo):
(JSC::LLInt::generateThunkWithJumpToPrologue):
(JSC::LLInt::generateThunkWithJumpToLLIntReturnPoint):
(JSC::LLInt::functionForCallEntryThunk):
(JSC::LLInt::functionForConstructEntryThunk):
(JSC::LLInt::functionForCallArityCheckThunk):
(JSC::LLInt::functionForConstructArityCheckThunk):
(JSC::LLInt::evalEntryThunk):
(JSC::LLInt::programEntryThunk):
(JSC::LLInt::moduleProgramEntryThunk):
(JSC::LLInt::wasmFunctionEntryThunk):
(JSC::LLInt::handleCatchThunk):
(JSC::LLInt::genericReturnPointThunk):
(JSC::LLInt::fuzzerReturnEarlyFromLoopHintThunk):
(JSC::LLInt::createJSGateThunk):
(JSC::LLInt::createWasmGateThunk):
(JSC::LLInt::createTailCallGate):
(JSC::LLInt::loopOSREntryGateThunk):
(JSC::LLInt::entryOSREntryGateThunk):
(JSC::LLInt::wasmOSREntryGateThunk):
(JSC::LLInt::exceptionHandlerGateThunk):
(JSC::LLInt::returnFromLLIntGateThunk):
(JSC::LLInt::tagGateThunk):
(JSC::LLInt::untagGateThunk):
(JSC::LLInt::jitCagePtrThunk):
(JSC::LLInt::normalOSRExitTrampolineThunk):
(JSC::LLInt::checkpointOSRExitTrampolineThunk):
(JSC::LLInt::checkpointOSRExitFromInlinedCallTrampolineThunk):
(JSC::LLInt::returnLocationThunk):

  • llint/LLIntThunks.h:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • llint/WebAssembly.asm:
  • offlineasm/arm64.rb:
  • offlineasm/mips.rb:
  • runtime/Gate.h: Added.
  • runtime/JSCConfig.h:
  • runtime/JSCPtrTag.cpp:

(JSC::tagForPtr):
(JSC::callerType):
(JSC::calleeType):

  • runtime/JSCPtrTag.h:

(JSC::tagJSCCodePtrImpl):
(JSC::untagJSCCodePtrImpl):
(JSC::tagCodePtrWithStackPointerForJITCall):
(JSC::untagCodePtrWithStackPointerForJITCall):

  • runtime/MatchResult.h:

(JSC::MatchResult::MatchResult):

  • runtime/Options.cpp:

(JSC::disableAllJITOptions):
(JSC::canUseJITCage):

  • runtime/OptionsList.h:
  • wasm/WasmSlowPaths.cpp:
  • yarr/YarrJIT.cpp:
  • yarr/YarrJIT.h:

(JSC::Yarr::YarrCodeBlock::execute):

Source/WTF:

  • wtf/OSAllocator.h:

(WTF::OSAllocator::reserveAndCommit):
(WTF::OSAllocator::reallocateCommitted):

  • wtf/PageReservation.h:

(WTF::PageReservation::reserve):
(WTF::PageReservation::reserveWithGuardPages):
(WTF::PageReservation::reserveAndCommitWithGuardPages):
(WTF::PageReservation::PageReservation):

  • wtf/PlatformEnable.h:
  • wtf/PlatformUse.h:
  • wtf/PtrTag.h:

(WTF::assertIsTaggedWith):
(WTF::tagCodePtrWithStackPointerForJITCall): Deleted.
(WTF::untagCodePtrWithStackPointerForJITCall): Deleted.

  • wtf/posix/OSAllocatorPOSIX.cpp:

(WTF::OSAllocator::reserveUncommitted):
(WTF::OSAllocator::reserveAndCommit):

  • wtf/win/OSAllocatorWin.cpp:

(WTF::OSAllocator::reserveUncommitted):
(WTF::OSAllocator::reserveAndCommit):

5:44 PM Changeset in webkit [269348] by sihui_liu@apple.com
  • 38 edits
    11 copies
    11 adds in trunk

Set up basic infrastructure for SpeechRecognition
https://bugs.webkit.org/show_bug.cgi?id=218216
<rdar://problem/70703788>

Reviewed by Youenn Fablet.

Source/WebCore:

Introduce SpeechRecognitionConnectionClient, SpeechRecognitionConnection and SpeechRecognitionServer.
SpeechRecognition is a SpeechRecognitionConnectionClient that can send SpeechRecognitionRequest to
SpeechRecognitionServer via SpeechRecognitionConnection. Currently we have one SpeechRecogntionConnection and
one SpeechRecogntionServer per page. SpeechRecognitionServer will be responsible for handling
SpeechRecognitionRequests, including audio capturing and hosting speech recognition engine, and that
implementation is not included in this patch.

Our current plan is put SpeechRecognitionServer in UI process (or GPU process when media code is all moved) and
keep SpeechRecognitionConnectionClient in web process.

Test: fast/speechrecognition/start-recognition-twice-exception.html

  • Headers.cmake:
  • Modules/speech/SpeechRecognition.cpp:

(WebCore::SpeechRecognition::create):
(WebCore::SpeechRecognition::SpeechRecognition):
(WebCore::SpeechRecognition::startRecognition):
(WebCore::SpeechRecognition::stopRecognition):
(WebCore::SpeechRecognition::abortRecognition):
(WebCore::SpeechRecognition::didStart):
(WebCore::SpeechRecognition::didStartCapturingAudio):
(WebCore::SpeechRecognition::didStartCapturingSound):
(WebCore::SpeechRecognition::didStartCapturingSpeech):
(WebCore::SpeechRecognition::didStopCapturingSpeech):
(WebCore::SpeechRecognition::didStopCapturingSound):
(WebCore::SpeechRecognition::didStopCapturingAudio):
(WebCore::SpeechRecognition::didFindNoMatch):
(WebCore::SpeechRecognition::didReceiveResult):
(WebCore::SpeechRecognition::didError):
(WebCore::SpeechRecognition::didEnd):

  • Modules/speech/SpeechRecognition.h:
  • Modules/speech/SpeechRecognitionConnection.h: Added.

(WebCore::SpeechRecognitionConnection::~SpeechRecognitionConnection):

  • Modules/speech/SpeechRecognitionConnectionClient.h: Added.

(WebCore::SpeechRecognitionConnectionClient::SpeechRecognitionConnectionClient):
(WebCore::SpeechRecognitionConnectionClient::identifier const):

  • Modules/speech/SpeechRecognitionConnectionClientIdentifier.h: Added.
  • Modules/speech/SpeechRecognitionError.h: Added.

(WebCore::SpeechRecognitionError::encode const):
(WebCore::SpeechRecognitionError::decode):

  • Modules/speech/SpeechRecognitionErrorCode.h:
  • Modules/speech/SpeechRecognitionRequest.cpp: Added.

(WebCore::SpeechRecognitionRequest::create):
(WebCore::SpeechRecognitionRequest::SpeechRecognitionRequest):

  • Modules/speech/SpeechRecognitionRequest.h: Added.

(WebCore::SpeechRecognitionRequest::clientIdentifier const):
(WebCore::SpeechRecognitionRequest::lang const):
(WebCore::SpeechRecognitionRequest::continuous const):
(WebCore::SpeechRecognitionRequest::interimResults const):
(WebCore::SpeechRecognitionRequest::maxAlternatives const):

  • Modules/speech/SpeechRecognitionRequestInfo.h: Added.

(WebCore::SpeechRecognitionRequestInfo::encode const):
(WebCore::SpeechRecognitionRequestInfo::decode):

  • Modules/speech/SpeechRecognitionResultData.h: Added.

(WebCore::SpeechRecognitionAlternativeData::encode const):
(WebCore::SpeechRecognitionAlternativeData::decode):
(WebCore::SpeechRecognitionResultData::encode const):
(WebCore::SpeechRecognitionResultData::decode):

  • Modules/speech/SpeechRecognitionResultList.h:
  • Modules/speech/SpeechRecognitionUpdate.cpp: Added.

(WebCore::convertEnumerationToString):
(WebCore::SpeechRecognitionUpdate::create):
(WebCore::SpeechRecognitionUpdate::createError):
(WebCore::SpeechRecognitionUpdate::createResult):
(WebCore::SpeechRecognitionUpdate::SpeechRecognitionUpdate):
(WebCore::SpeechRecognitionUpdate::error const):
(WebCore::SpeechRecognitionUpdate::result const):

  • Modules/speech/SpeechRecognitionUpdate.h: Added.

(WebCore::SpeechRecognitionUpdate::clientIdentifier const):
(WebCore::SpeechRecognitionUpdate::type const):
(WebCore::SpeechRecognitionUpdate::encode const):
(WebCore::SpeechRecognitionUpdate::decode):
(WTF::LogArgument<WebCore::SpeechRecognitionUpdateType>::toString):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/TaskSource.h:
  • loader/EmptyClients.cpp:

(WebCore::pageConfigurationWithEmptyClients):

  • page/Page.cpp:

(WebCore::Page::Page):
(WebCore::Page::speechRecognitionConnection):

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

(WebCore::PageConfiguration::PageConfiguration):

  • page/PageConfiguration.h:
  • page/DummySpeechRecognitionProvider.h: Added.
  • page/SpeechRecognitionProvider.h: Added.

Source/WebKit:

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Scripts/webkit/messages.py:
  • Sources.txt:
  • UIProcess/SpeechRecognitionServer.cpp: Added.

(WebKit::SpeechRecognitionServer::SpeechRecognitionServer):
(WebKit::SpeechRecognitionServer::start):
(WebKit::SpeechRecognitionServer::processNextPendingRequestIfNeeded):
(WebKit::SpeechRecognitionServer::stop):
(WebKit::SpeechRecognitionServer::abort):
(WebKit::SpeechRecognitionServer::removePendingRequest):
(WebKit::SpeechRecognitionServer::invalidate):
(WebKit::SpeechRecognitionServer::startPocessingRequest):
(WebKit::SpeechRecognitionServer::stopProcessingRequest):
(WebKit::SpeechRecognitionServer::messageSenderConnection const):
(WebKit::SpeechRecognitionServer::messageSenderDestinationID const):

  • UIProcess/SpeechRecognitionServer.h: Added.
  • UIProcess/SpeechRecognitionServer.messages.in: Added.
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::createSpeechRecognitionServer):
(WebKit::WebProcessProxy::destroySpeechRecognitionServer):

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.cpp: Added.

(WebKit::WebSpeechRecognitionConnection::create):
(WebKit::WebSpeechRecognitionConnection::WebSpeechRecognitionConnection):
(WebKit::WebSpeechRecognitionConnection::~WebSpeechRecognitionConnection):
(WebKit::WebSpeechRecognitionConnection::registerClient):
(WebKit::WebSpeechRecognitionConnection::start):
(WebKit::WebSpeechRecognitionConnection::stop):
(WebKit::WebSpeechRecognitionConnection::abort):
(WebKit::WebSpeechRecognitionConnection::invalidate):
(WebKit::WebSpeechRecognitionConnection::didReceiveUpdate):
(WebKit::WebSpeechRecognitionConnection::messageSenderConnection const):
(WebKit::WebSpeechRecognitionConnection::messageSenderDestinationID const):

  • WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.h: Added.
  • WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.messages.in: Added.
  • WebProcess/WebCoreSupport/WebSpeechRecognitionProvider.h: Added.
  • WebProcess/WebPage/IPCTestingAPI.cpp:

(WebKit::IPCTestingAPI::encodeArgument):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains):

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

Source/WebKitLegacy/win:

  • Interfaces/IWebPreferencesPrivate.idl:
  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):
(WebPreferences::speechRecognitionEnabled):
(WebPreferences::setSpeechRecognitionEnabled):

  • WebPreferences.h:
  • WebView.cpp:

(WebView::initWithFrame):
(WebView::notifyPreferencesChanged):

Tools:

  • DumpRenderTree/win/DumpRenderTree.cpp:

(resetWebPreferencesToConsistentValues):

LayoutTests:

  • fast/speechrecognition/start-recognition-twice-exception-expected.txt: Added.
  • fast/speechrecognition/start-recognition-twice-exception.html: Added.
5:13 PM Changeset in webkit [269347] by Keith Rollin
  • 2 edits in trunk/Source/WebCore

Include path in generated IDL dependencies
https://bugs.webkit.org/show_bug.cgi?id=218480

Reviewed by Brent Fulgham.

Changes in Bug 218378 and Bug 217696 have lessened the reliance on
VPATH to find files. This means that more places need to be explicit
about the locations of their files. This change updates
preprocess-idls.pl to include full- and partial-paths when generating
dependency information.

No new tests -- this is a build system change.

  • bindings/scripts/preprocess-idls.pl:

(RemovePWD):

4:30 PM Changeset in webkit [269346] by Kocsen Chung
  • 1 copy in tags/Safari-610.2.11.51.8

Tag Safari-610.2.11.51.8.

4:16 PM Changeset in webkit [269345] by Ryan Haddad
  • 10 edits in trunk/LayoutTests

Unreviewed test gardening, rebaseline tests for Big Sur after r268958 and r268520.

  • platform/mac/fast/forms/input-appearance-spinbutton-expected.txt:
  • platform/mac/fast/forms/input-readonly-dimmed-expected.txt:
  • platform/mac/fast/forms/listbox-width-change-expected.txt:
  • platform/mac/fast/forms/option-text-clip-expected.txt:
  • platform/mac/fast/forms/search-rtl-expected.txt:
  • platform/mac/fast/forms/search/search-size-with-decorations-expected.txt:
  • platform/mac/fast/forms/select-change-popup-to-listbox-expected.txt:
  • platform/mac/fast/text/indic-expected.txt:
  • platform/mac/tables/mozilla/other/wa_table_tr_align-expected.txt:
4:11 PM Changeset in webkit [269344] by dino@apple.com
  • 7 edits in trunk/Source/WebCore

Link against the ANGLE Shared Library
https://bugs.webkit.org/show_bug.cgi?id=218539
<rdar://problem/69062211>

Reviewed by Tim Horton.

Weak link against libANGLE-shared.dylib.

  • Configurations/WebCore.xcconfig:
  • Configurations/WebCoreTestSupport.xcconfig:
  • Sources.txt: Stop compiling ANGLEWebKitBridge.
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::isANGLEAvailable): Add a helper to check if ANGLE loaded properly.
(WebCore::GraphicsContextGLOpenGL::create):

4:03 PM Changeset in webkit [269343] by ggaren@apple.com
  • 48 edits in trunk/Source

Drop most uses of the phrase 'neuter' from the tree
https://bugs.webkit.org/show_bug.cgi?id=218536

Reviewed by Tim Horton.

In ArrayBuffer use cases, the spec has gone with "detached".

In other cases, I picked something.

Source/JavaScriptCore:

(next):

  • builtins/BuiltinNames.h:
  • builtins/TypedArrayPrototype.js:

(fill):
(globalPrivate.typedArrayElementCompare):

  • bytecode/LinkTimeConstant.h:
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDesiredWatchpoints.cpp:

(JSC::DFG::ArrayBufferViewWatchpointAdaptor::add):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGNodeType.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCheckDetached):
(JSC::DFG::SpeculativeJIT::jumpForTypedArrayIsDetachedIfOutOfBounds):
(JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):
(JSC::DFG::SpeculativeJIT::compilePutByValForFloatTypedArray):
(JSC::DFG::SpeculativeJIT::compileCheckNeutered): Deleted.
(JSC::DFG::SpeculativeJIT::jumpForTypedArrayIsNeuteredIfOutOfBounds): Deleted.

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

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGTypeCheckHoistingPhase.cpp:

(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantStructureChecks):
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantArrayChecks):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckDetached):
(JSC::FTL::DFG::LowerDFGToB3::compilePutByVal):
(JSC::FTL::DFG::LowerDFGToB3::speculateTypedArrayIsNotDetached):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckNeutered): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::speculateTypedArrayIsNotNeutered): Deleted.

  • runtime/ArrayBuffer.cpp:

(JSC::ArrayBufferContents::tryAllocate):
(JSC::ArrayBuffer::transferTo):
(JSC::ArrayBuffer::detach):
(JSC::ArrayBuffer::notifyDetaching):
(JSC::ArrayBuffer::neuter): Deleted.
(JSC::ArrayBuffer::notifyNeutering): Deleted.

  • runtime/ArrayBuffer.h:

(JSC::ArrayBuffer::isDetached):
(JSC::ArrayBuffer::detachingWatchpointSet):
(JSC::ArrayBuffer::isNeutered): Deleted.
(JSC::ArrayBuffer::neuteringWatchpointSet): Deleted.

  • runtime/ArrayBufferView.cpp:

(JSC::ArrayBufferView::ArrayBufferView):
(JSC::ArrayBufferView::~ArrayBufferView):
(JSC::ArrayBufferView::setDetachable):
(JSC::ArrayBufferView::setNeuterable): Deleted.

  • runtime/ArrayBufferView.h:

(JSC::ArrayBufferView::isDetached const):
(JSC::ArrayBufferView::possiblySharedBuffer const):
(JSC::ArrayBufferView::isShared const):
(JSC::ArrayBufferView::baseAddress const):
(JSC::ArrayBufferView::byteOffset const):
(JSC::ArrayBufferView::isDetachable const):
(JSC::ArrayBufferView::isNeutered const): Deleted.
(JSC::ArrayBufferView::isNeuterable const): Deleted.

  • runtime/GenericTypedArrayView.h:
  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::detach):
(JSC::JSArrayBufferView::neuter): Deleted.

  • runtime/JSArrayBufferView.h:

(JSC::JSArrayBufferView::isDetached):
(JSC::JSArrayBufferView::isNeutered): Deleted.

  • runtime/JSDataView.cpp:

(JSC::JSDataView::create):

  • runtime/JSDataViewPrototype.cpp:

(JSC::getData):
(JSC::setData):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSGenericTypedArrayView.h:
  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::setWithSpecificType):
(JSC::JSGenericTypedArrayView<Adaptor>::set):
(JSC::JSGenericTypedArrayView<Adaptor>::getOwnPropertySlotByIndex):
(JSC::JSGenericTypedArrayView<Adaptor>::deletePropertyByIndex):

  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::speciesConstruct):
(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewProtoFuncCopyWithin):
(JSC::genericTypedArrayViewProtoFuncIncludes):
(JSC::genericTypedArrayViewProtoFuncIndexOf):
(JSC::genericTypedArrayViewProtoFuncJoin):
(JSC::genericTypedArrayViewProtoFuncLastIndexOf):
(JSC::genericTypedArrayViewProtoFuncReverse):
(JSC::genericTypedArrayViewPrivateFuncSort):
(JSC::genericTypedArrayViewProtoFuncSlice):
(JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSTypedArrayViewPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::createTypedArrayIteratorObject):

  • runtime/JSTypedArrayViewPrototype.h:
  • wasm/js/JSWebAssemblyHelpers.h:

(JSC::getWasmBufferFromValue):

  • wasm/js/JSWebAssemblyMemory.cpp:

(JSC::JSWebAssemblyMemory::growSuccessCallback):

Source/WebCore:

  • Modules/webaudio/AudioBuffer.cpp:

(WebCore::AudioBuffer::create):
(WebCore::AudioBuffer::AudioBuffer):
(WebCore::AudioBuffer::hasDetachedChannelBuffer const):

  • Modules/webaudio/AudioBuffer.h:
  • Modules/webaudio/ScriptProcessorNode.cpp:

(WebCore::ScriptProcessorNode::initialize):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::SerializedScriptValue::create):

  • html/ImageBitmap.cpp:

(WebCore::ImageBitmap::createPromise):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::putImageData):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::texImageSourceHelper):

  • platform/image-decoders/png/PNGImageDecoder.cpp:

(WebCore::PNGImageDecoder::headerAvailable):

3:58 PM Changeset in webkit [269342] by Wenson Hsieh
  • 4 edits in trunk/Source

Adjust some compile-time guards in GraphicsContextCG.cpp
https://bugs.webkit.org/show_bug.cgi?id=218534

Reviewed by Tim Horton.

Source/WebCore:

Rename USE_DRAW_PATH_DIRECT to HAVE(CG_CONTEXT_DRAW_PATH_DIRECT), and delete the associated FIXME comment.
Also, put the line segment stroking optimization added in r268240 behind a new compile-time flag,
USE(CG_CONTEXT_STROKE_LINE_SEGMENTS_WHEN_STROKING_PATH). Note that we use USE rather than HAVE for this
flag, due to the fact that this API exists on all CoreGraphics platforms (but we only intend to use it in
certain configurations).

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::drawPath):
(WebCore::GraphicsContext::fillPath):
(WebCore::GraphicsContext::strokePath):

Source/WTF:

Add HAVE(CG_CONTEXT_DRAW_PATH_DIRECT).

  • wtf/PlatformHave.h:
3:50 PM Changeset in webkit [269341] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] Obtain default timezone ID from cached icu::TimeZone
https://bugs.webkit.org/show_bug.cgi?id=218531
<rdar://problem/64265880>

Reviewed by Ross Kirsling.

ICU internally caches icu::TimeZone (icu::TimeZone::createDefault), and it is not updated even if system timezone is changed.
As a result, we will see wrong timezone in Intl.DateTimeFormat when system timezone is changed.
We have a mechanism that clears TimeZone cache for JS Date. However, this mechanism is not used for Intl.DateTimeFormat.

This patch retrieves timezone ID from cached icu::TimeZone in VM::dateCache. So system's timezone change can be effective for
Intl.DateTimeFormat, and timezone becomes consistent between JS Date and Intl.DateTimeFormat.

Unfortunately, we need to use C++ APIs since we do not have a way to get timezone ID from icu::TimeZone.
Once https://unicode-org.atlassian.net/browse/ICU-21372 is fixed, we can switch to C APIs.

  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::initializeDateTimeFormat):
(JSC::isUTCEquivalent): Deleted.
(JSC::defaultTimeZone): Deleted.

  • runtime/JSDateMath.cpp:

(JSC::DateCache::defaultTimeZone):

  • runtime/JSDateMath.h:

(JSC::isUTCEquivalent):

3:44 PM Changeset in webkit [269340] by Alan Coon
  • 2 edits in branches/safari-610.2.11.51-branch/Source/JavaScriptCore

Cherry-pick r269338. rdar://problem/71014532

Don't assert there is no checkpoint side state when dropping the JSLock
https://bugs.webkit.org/show_bug.cgi?id=218537

Reviewed by Filip Pizlo.

You may have multiple OSR exit sidestate data on the stack, and then call into
API code, which might DropAllLocks. Hence, this assert is wrong.

Working on a test. Will land in a followup.

  • runtime/JSLock.cpp: (JSC::JSLock::willReleaseLock):

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

3:43 PM Changeset in webkit [269339] by Alan Coon
  • 8 edits in branches/safari-610.2.11.51-branch/Source

Versioning.

WebKit-7610.2.11.51.8

3:36 PM Changeset in webkit [269338] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Don't assert there is no checkpoint side state when dropping the JSLock
https://bugs.webkit.org/show_bug.cgi?id=218537

Reviewed by Filip Pizlo.

You may have multiple OSR exit sidestate data on the stack, and then call into
API code, which might DropAllLocks. Hence, this assert is wrong.

Working on a test. Will land in a followup.

  • runtime/JSLock.cpp:

(JSC::JSLock::willReleaseLock):

3:33 PM Changeset in webkit [269337] by Devin Rousso
  • 10 edits in trunk/Source/WebInspectorUI

Web Inspector: Elements: should have the option to Edit Breakpoint... or at least Reveal Breakpoint in Sources Tab
https://bugs.webkit.org/show_bug.cgi?id=218366

Reviewed by Brian Burg.

  • UserInterface/Views/BreakpointPopover.js:

(WI.BreakpointPopover.appendContextMenuItems):

  • UserInterface/Views/DOMTreeElement.js:

(WI.DOMTreeElement.prototype.get statusImageElement): Added.
(WI.DOMTreeElement.prototype._statusImageContextmenu):

  • UserInterface/Views/DOMTreeOutline.js:

(WI.DOMTreeOutline.prototype.populateContextMenu):

  • UserInterface/Views/ContextMenuUtilities.js:

(WI.appendContextMenuItemsForDOMNodeBreakpoints):
Show an "Edit Breakpoint..." action (via WI.BreakpointPopover.appendContextMenuItems) when
there is only one WI.DOMBreakpoint (if there are multiple then it would be confusing),
otherwise using "Breakpoints" (plural) for the other actions.

  • UserInterface/Base/Main.js:

(WI.showSourcesTab):

  • UserInterface/Views/EventListenerSectionGroup.js:

(WI.EventListenerSectionGroup):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):

  • UserInterface/Views/SourcesTabContentView.js:

(WI.SourcesTabContentView.prototype.revealAndSelectRepresentedObject): Added.
(WI.SourcesTabContentView.prototype.revealAndSelectBreakpoint): Deleted.
Rename breakpointToSelect to representedObjectToSelect for more flexibility in the case
that there are multiple WI.DOMBreakpoint for the given WI.DOMNode, in which case we want
to select the WI.DOMNode instead.

  • Localizations/en.lproj/localizedStrings.js:
3:17 PM Changeset in webkit [269336] by Karl Rackler
  • 1 delete in trunk/LayoutTests/platform/mac-catalina/editing/Input

Fix broken rename

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

[webkitscmpy] Populate parent branch for tags
<rdar://problem/70998928>
https://bugs.webkit.org/show_bug.cgi?id=218521

Rubber-stamped by Aakash Jain.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Version bump.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn.commit): Populate cache of commits when the canonical branch does not match
the provided commit.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/svn_unittest.py:

(TestSvn):
(TestSvn.test_tag_previous):

2:49 PM Changeset in webkit [269334] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[macOS] remove sysctl.oidfmt. access
https://bugs.webkit.org/show_bug.cgi?id=218524
<rdar://problem/70353722>

Reviewed by Per Arne Vollan.

Access to "sysctl.oidfmt." was needed due to a bug <rdar://problem/64208532>.
Since that issue has been fixed, we can remove the access.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
2:17 PM Changeset in webkit [269333] by graouts@webkit.org
  • 10 edits
    1 add in trunk

align-content should be a discrete animatable property
https://bugs.webkit.org/show_bug.cgi?id=218530

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt:

Source/WebCore:

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/CSSPropertyAnimation.cpp:

(WebCore::DiscretePropertyWrapper::DiscretePropertyWrapper):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/StyleContentAlignmentData.cpp: Added.

(WebCore::operator<<):

  • rendering/style/StyleContentAlignmentData.h:
1:37 PM Changeset in webkit [269332] by ddkilzer@apple.com
  • 8 edits
    4 adds in trunk

Add test for cacheModelForMainBundle() in WebKitLegacy
<https://webkit.org/b/217960>

Reviewed by Darin Adler.

Source/WebKitLegacy:

  • WebKitLegacy.xcodeproj/project.pbxproj:
  • Add TestingFunctions.h to the project.

(Generate Export Files):

  • Append WebKit.Testing.exp to the generated export file if WK_BUILD_FOR_TESTING is set to YES.

Source/WebKitLegacy/mac:

  • Configurations/DebugRelease.xcconfig:

(WK_BUILD_FOR_TESTING): Add.

  • This single setting controls whether test code is built and test functions are exported. Currently only Debug and Release configurations are supported.
  • Configurations/WebKitLegacy.xcconfig:

(OTHER_CFLAGS):

  • Include necessary macro definition when WK_BUILD_FOR_TESTING is YES.

(WK_CFLAGS_BUILD_FOR_TESTING_YES):

  • Define macro set when WK_BUILD_FOR_TESTING is YES. Used by both OTHER_CFLAGS and OTHER_TAPI_FLAGS to enable test code.

(OTHER_TAPI_FLAGS[sdk=iphone*]):

  • Include necessary macro definition when WK_BUILD_FOR_TESTING is YES.
  • Add -extra-private-header argument to declare exported functions in TestingFunctions.h when WK_BUILD_FOR_TESTING is YES.
  • TestingFunctions.h: Add.
  • Declare functions exported when WK_BUILD_FOR_TESTING is YES.
  • WebKit.Testing.exp: Add.
  • This contains a list of test functions that are only exported when WK_BUILD_FOR_TESTING is YES.
  • WebView/WebPreferences.mm:

(cacheModelForMainBundle):

  • Add NSString *bundleIdentifier argument to make testable.

(TestWebPreferencesCacheModelForMainBundle): Add.

  • Add function only used for testing, and only compiled when WK_BUILD_FOR_TESTING is YES.

(+[WebPreferences initialize]):

  • Change to pass main bundle identifier as argument.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • Add WebPreferencesTest.mm to project.
  • TestWebKitAPI/Tests/WebKitLegacy/cocoa/WebPreferencesTest.mm: Add.

(TestWebKitAPI::TEST):

  • Add test for TestWebPreferencesCacheModelForMainBundle().
1:24 PM Changeset in webkit [269331] by commit-queue@webkit.org
  • 7 edits in trunk/Source

[GPU Process] Flush canvas displayList from doAfterUpdateRendering
https://bugs.webkit.org/show_bug.cgi?id=218401

Patch by Rini Patel <rini_patel@apple.com> on 2020-11-03
Reviewed by Simon Fraser.

Source/WebCore:

Leverage prepareCanvasesForDisplayIfNeeded() for canvas 2D context to flush the display list items via doAfterUpdateRendering.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createContext2d):
(WebCore::HTMLCanvasElement::prepareForDisplay):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::prepareForDisplay):

  • html/canvas/CanvasRenderingContext2DBase.h:
  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::flushDrawingContextAndCommit):

Source/WebKit:

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::flushDrawingContextAndCommit): Deleted.

1:08 PM Changeset in webkit [269330] by Wenson Hsieh
  • 9 edits
    2 adds in trunk/Source

Replace DisplayList::Recorder::Delegate::(will|did)AppendItem with (will|did)AppendItemOfType
https://bugs.webkit.org/show_bug.cgi?id=218518

Reviewed by Simon Fraser.

Source/WebCore:

In preparation for larger changes to display lists and display list items in <webkit.org/b/218406>, replace
DisplayList::Recorder::Delegate's willAppendItem and didAppendItem client hooks with
willAppendItemOfType and didAppendItemOfType instead. Once all display list items are no longer ref-counted
objects that inherit from DisplayList::Item, plumbing these items through virtual client hooks will introduce
unnecessary complexity and runtime overhead.

Instead, we can refactor these methods to only pass the type of the display list item being appended; this is
because all extant clients that implement these hooks only require the item for its ItemType.

  • Headers.cmake:

Pull DisplayList::ItemType out into a separate header: DisplayListItemType.h. This header additionally
contains several helper functions (sizeOfItemInBytes, isInlineItem, and isDrawingItem) that operate only
on ItemTypes, rather than items themselves.

We will use these helper functions as we work towards <webkit.org/b/218406>.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/displaylists/DisplayList.h:
  • platform/graphics/displaylists/DisplayListItemType.cpp: Added.

(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):

  • platform/graphics/displaylists/DisplayListItemType.h: Added.
  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::willAppendItemOfType):

Use the new DisplayList::isDrawingItem(ItemType) function here, instead of checking whether the item is a
subclass of DrawingItem.

(WebCore::DisplayList::Recorder::didAppendItemOfType):
(WebCore::DisplayList::Recorder::appendItem):
(WebCore::DisplayList::Recorder::willAppendItem): Deleted.
(WebCore::DisplayList::Recorder::didAppendItem): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::Delegate::willAppendItemOfType):
(WebCore::DisplayList::Recorder::Delegate::didAppendItemOfType):
(WebCore::DisplayList::Recorder::Delegate::willAppendItem): Deleted.
(WebCore::DisplayList::Recorder::Delegate::didAppendItem): Deleted.

Source/WebKit:

See WebCore ChangeLog for more information.

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
12:51 PM Changeset in webkit [269329] by Lauro Moura
  • 2 edits
    2 adds in trunk/LayoutTests

[GTK] Layout Test webaudio/codec-tests/mp3/128kbps-44khz.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=132056

Unreviewed test gardening.

This tests has been stable for a long time. Checking the actual
audio file with Audacity, the gstreamer one, the baseline, the mac one,
and the mp3 source differs only in the delay before the sound starts
playing, likely due to platform-specific loading time or something
similar. So a rebaseline should be enough.

  • platform/glib/webaudio/codec-tests/mp3/128kbps-44khz-expected.wav: Added.
  • platform/gtk/TestExpectations:
12:32 PM Changeset in webkit [269328] by Fujii Hironori
  • 3 edits
    2 adds in trunk

[TextureMapper] Crashed in TextureMapperLayer::paintUsingOverlapRegions
https://bugs.webkit.org/show_bug.cgi?id=214817
<rdar://problem/66489090>

Reviewed by Don Olmstead.

Source/WebCore:

TextureMapperLayer::paintUsingOverlapRegions has the expression
overlapRegion.bounds().size().area() which crashes for a very
large layer.

computeOverlapRegions returned very large overlap and non-overlap
regions without taking the clip bounds into account.

Change computeOverlapRegions to return clipped regions.
paintUsingOverlapRegions no longer needs to clip the returned
regions.

Test: compositing/tiling/huge-layer-with-opacity.html

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::computeOverlapRegions):
(WebCore::TextureMapperLayer::paintUsingOverlapRegions):

  • platform/graphics/texmap/TextureMapperLayer.h:

LayoutTests:

  • compositing/tiling/huge-layer-with-opacity-expected.html: Added.
  • compositing/tiling/huge-layer-with-opacity.html: Added.
12:20 PM Changeset in webkit [269327] by Wenson Hsieh
  • 5 edits in trunk/Source/WebKit

Add helper methods to encode and decode IPC arguments as raw data
https://bugs.webkit.org/show_bug.cgi?id=218516

Reviewed by Geoff Garen.

Add new helper methods to IPC::Encoder and IPC::Decoder that can be used to convert anything that can be
sent as an IPC argument into raw bytes (i.e. using WebCore::SharedBuffer), as long as there are no IPC
attachments in the encoded data.

For more details, see <webkit.org/b/218406>.

  • Platform/IPC/Decoder.cpp:

(IPC::Decoder::Decoder):

Add private versions of the Encoder and Decoder constructors that avoid IPC header data. These constructors are
called only from within encodeSingleObject and decodeSingleObject, respectively.

(IPC::m_bufferDeallocator):

  • Platform/IPC/Decoder.h:

(IPC::Decoder::decodeSingleObject):

  • Platform/IPC/Encoder.cpp:

(IPC::Encoder::Encoder):
(IPC::Encoder::releaseAttachments):
(IPC::Encoder::hasAttachments const):

  • Platform/IPC/Encoder.h:
12:16 PM Changeset in webkit [269326] by commit-queue@webkit.org
  • 1 edit
    41 adds in trunk/Tools

Add SwiftUI MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=218393

Patch by Adam Roben <Adam Roben> on 2020-11-03
Rubber-stamped by Tim Horton.

Using WKWebView in SwiftUI is pretty cumbersome today. At a minimum,
you need to wrap the WKWebView in a NS/UIViewRepresentable SwiftUI
view, but to react to any state changes in the WKWebView (e.g.,
-canGoBack changing from NO to YES) you need to bridge between
WKWebView's KVO and SwiftUI's use of Combine publishers or
ObservableObjects. Setting up WKWebView's various delegates has to
happen down inside the NS/UIViewRepresentable's Coordinator object.
And so on.

There have been some attempts at this in the past, e.g.:

https://medium.com/macoclock/how-to-use-webkit-webview-in-swiftui-4b944d04190a
https://medium.com/@mdyamin/swiftui-mastering-webview-5790e686833e
https://github.com/kylehickinson/SwiftUI-WebView

Someday it would be nice to provide an idiomatic SwiftUI API for
WebKit out of the box, like the new VideoPlayer API that wraps
AVPlayer.

This change provides a SwiftUI MiniBrowser implementation as well as a
very preliminary SwiftUI wrapper for WKWebView, originally authored by
James Savage. This only exposes a subset of the WKWebView API, and is
definitely not production ready yet, but will give us a place to
experiment with ways to make WebKit and SwiftUI work together better.

Here's James's description of the API:

The initial version of this API is composed of two primary
components: WebView and WebViewState. WebView conforms to
View, and its usage is straight-forward. WebViewState is novel,
and may not survive to the final API. It exists as a read-write
handle on the rather large amount of state that a web view offers.
This includes read-only access to properties about the current
page (title, url, hasOnlySecureContent), navigations
(estimatedProgress, isLoading), and back/forward history
(canGoBack, canGoForward). It also offers imperative methods
for navigation which map 1:1 with our existing Objective-C API.

struct BrowserView : View {

@StateObject var state = WebViewState(initialURL: URL(string: "https://apple.com")!)
var body: some View {

HStack {

Text(verbatim: state.title ?? "Nothing Loaded")
Text(verbatim: state.url ?? "--")
WebView(state: state)

}

}

}

JavaScript dialogs are supported with both built-in behavior for all
clients, and a customization point if desired. Clients can pass a
Binding<Dialog?> to their WebView to disable the built-in
display, and provide custom handling.

Navigation policies can be customized using
webViewNavigationPolicy(onAction:onResponse:) to provide custom
decider for the action and response phases. These propagate via the
environment, allowing them to be defined at an app, window, or
individual view level.

Future Directions

To make WebView as declarative as possible, we're investigating
how to make broader use of Binding for navigation. As a simple
example, you could imagine if the WebView's initializer took a
Binding<URL?> for the current page. However, this design alone is
too simplistic to model all states that the web view could be, so we
will likely need to introduce a more complex type for the binding.

Currently navigation policies are attached via View modifiers.
This has the benefit that they can be installed at the root of an
application, which is useful for a web browser where all tabs want
to have uniform policies. Given the number of customization points
in existing WKWebView delegates, this may fail to scale and lead
to undesirable ergonomics. Another approach would to be just use a
delegate protocol (a la DropDelegate:
https://developer.apple.com/documentation/swiftui/dropdelegate).

As a practical matter, we want to minimize the amount of work that
adding new functionality to WebKit API incurs for engineers. While
we could redefine every Objective-C type for SwiftUI, but this could
lead to SwiftUI falling behind as our Objective-C API gets updated.
We could use tools like @dynamicMemberLookup to automatically pull
our Objective-C APIs over to Swift, however this could have
undesirable impact our our ABI. There may be a better compromise we
haven’t yet reached.

  • MiniBrowserSwiftUI/Configurations/Base.xcconfig:
  • MiniBrowserSwiftUI/Configurations/Debug.xcconfig:
  • MiniBrowserSwiftUI/Configurations/MiniBrowserSwiftUI.xcconfig:
  • MiniBrowserSwiftUI/Configurations/Release.xcconfig:
  • MiniBrowserSwiftUI/Configurations/WebKit_SwiftUI.xcconfig:
  • MiniBrowserSwiftUI/MiniBrowserSwiftUI.xcodeproj/project.pbxproj:
  • MiniBrowserSwiftUI/MiniBrowserSwiftUI.xcodeproj/xcshareddata/xcschemes/MiniBrowserSwiftUI.xcscheme:
  • MiniBrowserSwiftUI/MiniBrowserSwiftUI.xcodeproj/xcshareddata/xcschemes/_WebKit_SwiftUI.xcscheme:

Added the new project and its configuration. The project was generated
from Xcode's "Multiplatform App" template. There are two targets: the
MiniBrowserSwiftUI app, and the _WebKit_SwiftUI framework. Both are
cross-platform. The build settings were extracted out of the .pbxproj
into the .xcconfig files.

  • MiniBrowserSwiftUI/Shared/Assets.xcassets/AccentColor.colorset/Contents.json:
  • MiniBrowserSwiftUI/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json:
  • MiniBrowserSwiftUI/Shared/Assets.xcassets/Contents.json:
  • MiniBrowserSwiftUI/Shared/Assets.xcassets/URLFieldBackground.colorset/Contents.json:

Defines a couple of colors and an empty icon for the app.

  • MiniBrowserSwiftUI/iOS/Info.plist:
  • MiniBrowserSwiftUI/macOS/Info.plist:
  • MiniBrowserSwiftUI/macOS/macOS.entitlements:
  • MiniBrowserSwiftUI/WebKit_SwiftUI/WebKit_SwiftUI-Info.plist: Added.

Added these files generated by Xcode. The only change was adding
com.apple.security.network.client to the entitlements so the browser
can connect to servers.

  • MiniBrowserSwiftUI/Shared/BrowserApp.swift: Added. This is the entry

point of the app, and just sets up a BrowserScene.

  • MiniBrowserSwiftUI/Shared/BrowserScene.swift: Added. This sets up

the browser's windows, each of which just contain a single BrowserTab.
On iOS we wrap the BrowserTab in a NavigationView so there will be
somewhere to show our toolbar buttons.

  • MiniBrowserSwiftUI/Shared/BrowserTab.swift: Added. This is the heart

of the browser.
(BrowserTab.body): Sets up the WebView itself plus some toolbar items:
the back/forward buttons and URL field.
(BrowserTab.onNavigate(to:)): Callback called when the user presses
Return in the URL field.
(BrowserTab.decidePolicy(for:state:)): Callback called when the
WebView is about to navigate, similar to WKNavigationDelegate's
-webView:decidePolicyForNavigationAction:decisionHandler:.
(BrowserTab.makeExternalNavigationAlert(_:)): Displays an alert to let
the user decide whether to follow a URL that will open in some other
application.
(UserInput): Represents text typed in the URL field after determining
whether it is a URL or a search query.
(ExternalURLNavigation): Provides the data for the external navigation
alert.
(BrowserTab_Previews): Shows a canned BrowserTab in Xcode's preview
canvas.

  • MiniBrowserSwiftUI/Shared/FoundationExtras.swift: Added. Provides a

few utility functions for URLs.

  • MiniBrowserSwiftUI/Shared/URLField.swift: Added.

(URLField): The SwiftUI view you use directly. It contains a leading
glyph (e.g., a lock icon when viewing a secure page), a text field,
a trailing accessory view provided by the caller, and a progress bar.
It also supports callbacks to notify the caller when the text field
gains/loses focus and when the user has committed the text in the
field (e.g., by pressing Return).
(Background): The background view for the URLField, which defines both
the rounded rectangle shape for the field and the progress bar.
(URLField_Previews): Shows some canned URLFields in Xcode's preview
canvas.

  • MiniBrowserSwiftUI/WebKit_SwiftUI/Dialog.swift: Added.

(Dialog): Represents a single JavaScript dialog (alert, confirm, or
prompt).
(DialogContainer): Provides the default UI shared by all JavaScript
dialog types.

  • MiniBrowserSwiftUI/WebKit_SwiftUI/JavaScriptDialogs.swift: Added.

(JavaScriptAlert): Default UI for a JavaScript alert dialog.
(JavaScriptConfirm): Default UI for a JavaScript confirm dialog.
(JavaScriptPrompt): Default UI for a JavaScript prompt dialog.

  • MiniBrowserSwiftUI/WebKit_SwiftUI/Navigation.swift: Added.

(View.webViewNavigationPolicy(onAction:)):
(View.webViewNavigationPolicy(onResponse:)):
(View.webViewNavigationPolicy(onAction:onResponse:)):
These let the application specify navigation policy logic for any
descendant WebViews in the view hierarchy, using SwiftUI's Environment
facility.
(NavigationAction): Idiomatic SwiftUI wrapper around
WKNavigationAction and its decision handler callback.
(NavigationResponse): Idiomatic SwiftUI wrapper around
WKNavigationResponse and its decision handler callback.

  • MiniBrowserSwiftUI/WebKit_SwiftUI/SwiftUIExtras.swift: Added.

(Color.platformSeparator):
(Color.platformBackground):
Cross-platform wrappers around platform-specific colors.

  • MiniBrowserSwiftUI/WebKit_SwiftUI/WebView.swift: Added.

(WebView): The heart of the SwiftUI API. You provide it a WebViewState
struct to represent and control its state (similar to AVFoundation's
VideoPlayer view controlled by AVPlayer). You can optionally provide a
Binding to be notified of the current JavaScript dialog that the web
content wishes to display. If you don't provide this binding, WebView
will present the dialog using default UI.
(WebView.dialogView): Configures the default dialog UI if the caller
doesn't want to handle dialogs on its own.
(_WebView): Internal view that bridges SwiftUI to WKWebView.
(Coordinator): Internal class that functions as the WKWebView's
WKNavigationDelegate and WKUIDelegate.
(Coordinator.webView(_:decidePolicyFor:preferences:decisionHandler:)):
Looks for a navigation decider in the view's environment and delegates
to it if found, otherwise allows all navigations.

(Coordinator.webView(_:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:)):
(Coordinator.webView(_:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler:)):
(Coordinator.webView(_:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler:)):
Passes the dialog information up to the WebView, which then decides
whether to present default UI itself or let the caller handle it.

  • MiniBrowserSwiftUI/WebKit_SwiftUI/WebViewModifiers.swift: Added.

(View.webViewAllowsBackForwardNavigationGestures(_:)): Specifies
whether WebViews below this point in the view hierarchy should support
swipe gestures to navigate back/forward.

  • MiniBrowserSwiftUI/WebKit_SwiftUI/WebViewState.swift: Added.

(WebViewState): Represents the state and actions of a WebView.
Conforms to ObservableObject so SwiftUI views can react to changes in
the WebViewState.
(WebViewState.webView(_:didChangeKeyPath:)): Detects when the
WKWebView's state has changed via KVO and reflects those through the
ObservableObject.objectWillChange mechanism so SwiftUI views will be
updated.

(WebViewState.canGoBack):
(WebViewState.canGoForward):
(WebViewState.title):
(WebViewState.url):
(WebViewState.isLoading):
(WebViewState.estimatedProgress):
(WebViewState.hasOnlySecureContent):
Wrappers around WKWebView properties.

(WebViewState.load(_:)):
(WebViewState.goBack):
(WebViewState.goForward):
(WebViewState.reload):
(WebViewState.stopLoading):
(WebViewState.createPDF(configuration:completion:)):
Wrappers around WKWebView methods.

12:06 PM Changeset in webkit [269325] by stephan.szabo@sony.com
  • 8 edits in trunk/Source

[WinCairo/PlayStation] ICU 68.1 no longer exposes FALSE and TRUE macros by default
https://bugs.webkit.org/show_bug.cgi?id=218522

Reviewed by Don Olmstead.

Source/WebCore:

  • platform/text/TextCodecICU.cpp: Replace use of TRUE with true

Source/WebKit:

  • UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: Replace FALSE with false

Source/WTF:

Replace uses of FALSE and TRUE with false and true.

  • wtf/text/icu/UTextProvider.h:
  • wtf/text/icu/UTextProviderLatin1.cpp:
  • wtf/text/icu/UTextProviderUTF16.cpp:
11:54 AM Changeset in webkit [269324] by Fujii Hironori
  • 2 edits in trunk/Tools

WebKitTestRunner --show-webview doesn't work since r268238
https://bugs.webkit.org/show_bug.cgi?id=218430

Reviewed by Simon Fraser.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize): Use insert_or_assign() of
std::unordered_map instead of insert() which does nothing if the
key already exists.

11:38 AM Changeset in webkit [269323] by Said Abou-Hallawa
  • 75 edits in trunk/Source

[GPU Process] Make ImageBuffer RefCounted
https://bugs.webkit.org/show_bug.cgi?id=218472

Reviewed by Simon Fraser.

Source/WebCore:

This will allow a better life cycle for the ImageBuffer.

  • html/CanvasBase.cpp:

(WebCore::CanvasBase::setImageBuffer const):

  • html/CanvasBase.h:
  • html/CustomPaintCanvas.h:
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::setImageBufferAndMarkDirty):

  • html/HTMLCanvasElement.h:
  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::createBufferForPainting const):

  • html/HTMLVideoElement.h:
  • html/ImageBitmap.cpp:

(WebCore::ImageBitmap::takeImageBuffer):

  • html/ImageBitmap.h:
  • html/ImageBitmapBacking.cpp:

(WebCore::ImageBitmapBacking::ImageBitmapBacking):
(WebCore::ImageBitmapBacking::takeImageBuffer):

  • html/ImageBitmapBacking.h:
  • html/OffscreenCanvas.cpp:

(WebCore::DetachedOffscreenCanvas::DetachedOffscreenCanvas):
(WebCore::DetachedOffscreenCanvas::takeImageBuffer):
(WebCore::OffscreenCanvas::takeImageBuffer const):

  • html/OffscreenCanvas.h:
  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::createCompositingBuffer):

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

(WebCore::WebGLRenderingContextBase::LRUImageBufferCache::imageBuffer):

  • html/canvas/WebGLRenderingContextBase.h:
  • html/shadow/MediaControlTextTrackContainerElement.cpp:

(WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage):

  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::indexForData):

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::snapshotNode):
(WebCore::InspectorPageAgent::snapshotRect):

  • page/Chrome.cpp:

(WebCore::Chrome::createImageBuffer const):

  • page/Chrome.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::createImageBuffer const):

  • page/FrameSnapshotting.cpp:

(WebCore::snapshotFrameRect):
(WebCore::snapshotFrameRectWithClip):
(WebCore::snapshotSelection):
(WebCore::snapshotNode):

  • page/FrameSnapshotting.h:
  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::screenshot):

  • page/TextIndicator.cpp:

(WebCore::takeSnapshot):

  • platform/DragImage.cpp:

(WebCore::createDragImageFromSnapshot):

  • platform/HostWindow.h:
  • platform/graphics/ConcreteImageBuffer.h:

(WebCore::ConcreteImageBuffer::create):

  • platform/graphics/CrossfadeGeneratedImage.cpp:

(WebCore::CrossfadeGeneratedImage::drawPattern):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawConsumingImageBuffer):

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::drawConsumingImageBuffer):

  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::create):
(WebCore::ImageBuffer::createCompatibleBuffer):
(WebCore::ImageBuffer::copyRectToBuffer):
(WebCore::ImageBuffer::sinkIntoNativeImage):
(WebCore::ImageBuffer::sinkIntoImage):
(WebCore::ImageBuffer::drawConsuming):

  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::drawConsuming):

  • platform/graphics/ImageBufferPipe.h:
  • platform/graphics/ShadowBlur.cpp:
  • platform/graphics/cg/PDFDocumentImage.h:
  • platform/graphics/cocoa/IOSurface.h:
  • platform/graphics/coreimage/FilterEffectRendererCoreImage.h:
  • platform/graphics/coreimage/FilterEffectRendererCoreImage.mm:

(WebCore::FilterEffectRendererCoreImage::clearResult):

  • platform/graphics/filters/Filter.h:

(WebCore::Filter::setSourceImage):

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::clearResult):

  • platform/graphics/filters/FilterEffect.h:
  • platform/graphics/nicosia/NicosiaImageBufferPipe.cpp:

(Nicosia::NicosiaImageBufferPipeSource::handle):

  • platform/graphics/nicosia/texmap/NicosiaGCGLLayer.cpp:

(Nicosia::GCGLLayer::swapBuffersIfNeeded):

  • platform/graphics/texmap/BitmapTexture.cpp:

(WebCore::BitmapTexture::updateContents):

  • platform/mock/MockRealtimeVideoSource.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/shapes/Shape.cpp:

(WebCore::Shape::createRasterShape):

  • rendering/svg/RenderSVGImage.cpp:

(WebCore::RenderSVGImage::invalidateBufferedForeground):

  • rendering/svg/RenderSVGImage.h:
  • rendering/svg/RenderSVGResourceClipper.h:
  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::postApplyResource):

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

(WebCore::createMaskAndSwapContextForTextGradient):
(WebCore::clipToTextMask):
(WebCore::RenderSVGResourceGradient::postApplyResource):

  • rendering/svg/RenderSVGResourceGradient.h:
  • rendering/svg/RenderSVGResourceMasker.cpp:

(WebCore::RenderSVGResourceMasker::applyResource):

  • rendering/svg/RenderSVGResourceMasker.h:
  • rendering/svg/RenderSVGResourcePattern.cpp:

(WebCore::RenderSVGResourcePattern::createTileImage const):

  • rendering/svg/RenderSVGResourcePattern.h:
  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::createImageBuffer):
(WebCore::SVGRenderingContext::clipToImageBuffer):
(WebCore::SVGRenderingContext::bufferForeground):

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

(WebCore::SVGImage::nativeImageForCurrentFrame):
(WebCore::SVGImage::drawPatternForContainer):

Source/WebKit:

Currently after a remote ImageBuffer is deleted, its identifier is locked
in the RemoteResourceCacheProxy till no remote client is referencing it.
Then an IPC message is sent to GPU Process to release it.

The plan is to decode the DisplayList::DrawImageBuffer by replacing the
ImageBuffer identifier with a RefPtr to the ImageBuffer itself. Once the
ImageBuffer is removed from the RemoteResourceCache, it is going to be
deleted after the last DrawImageBuffer is replayed back. So no locking
is needed to guarantee the existence of the ImageBuffer when it is drawn.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::createImageBuffer):
(WebKit::RemoteRenderingBackend::flushDisplayList):
(WebKit::RemoteRenderingBackend::flushDisplayListAndCommit):
(WebKit::RemoteRenderingBackend::getImageData):

  • GPUProcess/graphics/RemoteResourceCache.cpp:

(WebKit::RemoteResourceCache::cacheImageBuffer):

  • GPUProcess/graphics/RemoteResourceCache.h:
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::create):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::createImageBuffer):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createImageBuffer const):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::createSelectionSnapshot const):

11:36 AM Changeset in webkit [269322] by Ryan Haddad
  • 1 edit in trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/payment-request/show-method-optional-promise-rejects.https-expected.txt

Unreviewed test gardening.

  • platform/ios-wk2/imported/w3c/web-platform-tests/payment-request/show-method-optional-promise-rejects.https-expected.txt:

Rebaseline the test after r269276, which added DumpJSConsoleLogInStdErr to address flakiness.

11:36 AM Changeset in webkit [269321] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

Protect against HTMLMediaElement being destroyed during disptachEvent().
https://bugs.webkit.org/show_bug.cgi?id=218398
<rdar://problem/67613836>

Reviewed by Chris Dumez.

Make the MainThreadGenericEventQueue protect the target as well as the owner of the queue.

Drive-by fix: Create the scoped eventFiringScope object after the protect object, to ensure
that the member variable set by the first scope will safely occur.

Drive-by fix #2: Also null-check the result of document().page() within HTMLMediaElement::dispatchEvent().

  • dom/GenericEventQueue.cpp:

(WebCore::MainThreadGenericEventQueue::dispatchOneEvent):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::dispatchEvent):

11:26 AM Changeset in webkit [269320] by ysuzuki@apple.com
  • 33 edits
    3 adds in trunk

REGRESSION (r254038): Simple.com money transfer UI is very laggy (multiple seconds per keypress)
https://bugs.webkit.org/show_bug.cgi?id=218348

Reviewed by Darin Adler.

JSTests:

  • ChakraCore.yaml:
  • ChakraCore/test/Date/DateCtr.baseline-jsc: Added. The time before America/Los_Angeles timezone is effective should be handled as UTC-0752.
  • complex.yaml:
  • complex/timezone-offset-before-america-los-angeles-is-defined.js: Added for UTC-0752.

(shouldBe):

  • microbenchmarks/local-date-constructor.js: Added for microbenchmarking.

(test):

  • mozilla/ecma/Date/15.9.5.16.js:
  • mozilla/ecma/Date/15.9.5.18.js:
  • mozilla/ecma/Date/15.9.5.22-1.js:
  • mozilla/ecma/Date/15.9.5.22-2.js:
  • mozilla/ecma/Date/15.9.5.35-1.js:

When year is 0, America/Los_Angeles timezone is not effective, and mozilla test harness does not handle this timezone difference correctly.

Source/JavaScriptCore:

We have depth-1 LocalTimeOffset cache to avoid repeatedly calling localtime_r. But this depth-1 cache can be easily missed if
we parse Dates of multiple years. Instead of increasing depth as a work-around, this patch starts using ICU TimeZone cache.
This is used in SpiderMonkey and V8 too, and it is the right direction since ICU knows tzdata and can do more sophisticated caching.

Microbenchmark shows 24x improvement.

ToT Patched

local-date-constructor 2026.8715+-11.2909 85.0022+-1.0548 definitely 23.8449x faster

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • runtime/DateConstructor.cpp:

(JSC::millisecondsFromComponents):
(JSC::constructDate):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/DateInstance.cpp:

(JSC::DateInstance::calculateGregorianDateTime const):
(JSC::DateInstance::calculateGregorianDateTimeUTC const):

  • runtime/DateInstance.h:
  • runtime/DatePrototype.cpp:

(JSC::setNewValueFromTimeArgs):
(JSC::setNewValueFromDateArgs):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSDateMath.cpp:

(JSC::OpaqueICUTimeZoneDeleter::operator()):
(JSC::localTimeOffset):
(JSC::DateCache::gregorianDateTimeToMS):
(JSC::DateCache::msToGregorianDateTime):
(JSC::DateCache::parseDate):
(JSC::DateCache::cachedDateInstanceData):
(JSC::DateCache::timeZoneCacheSlow):
(JSC::DateCache::reset):
(JSC::gregorianDateTimeToMS): Deleted.
(JSC::msToGregorianDateTime): Deleted.
(JSC::parseDate): Deleted.

  • runtime/JSDateMath.h:

(JSC::DateCache::timeZoneCache):

  • runtime/VM.cpp:

(JSC::VM::resetDateCache): Deleted.

  • runtime/VM.h:

(JSC::VM::resetDateCache):

  • runtime/VMEntryScope.cpp:

(JSC::VMEntryScope::VMEntryScope):

LayoutTests:

  • js/date-constructor-expected.txt: The time before America/Los_Angeles timezone is effective should be handled as UTC-0752. Use 1995 to test the intent correctly.
  • js/date-timeClip-large-values-expected.txt: Ditto about old timezone.
  • js/dom/script-tests/date-DST-time-cusps.js: Our timezone database was broken. Nov 02 2014 01:00:00 is not PDT.

(1.toString.match):

  • js/dom/script-tests/date-big-setdate.js: Fix and adjust for right DST periods.

(1.toString.match):

  • js/script-tests/date-constructor.js:

(object.valueOf):

  • platform/mac/fast/AppleScript/date-expected.txt: Ditto, 1800 does not have America/Los_Angeles.
  • platform/mac/fast/AppleScript/date.html:
  • storage/indexeddb/modern/date-basic-expected.txt: Nov 04 1955 is PST, not PDT.
  • storage/indexeddb/modern/date-basic-private-expected.txt: Ditto.
  • storage/indexeddb/modern/get-keyrange-expected.txt: Ditto.
  • storage/indexeddb/modern/get-keyrange-private-expected.txt: Ditto.
11:14 AM Changeset in webkit [269319] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WebCore

Cherry-pick r269190. rdar://problem/70970247

Increase camera failing timer to 30 seconds
https://bugs.webkit.org/show_bug.cgi?id=218389

Reviewed by Eric Carlson.

From testing, 3 seconds is not always enough if getUserMedia is quickly called multiple times.
Let's increase to 30 seconds to give room for slow systems while still being able to identify failures.

  • platform/mediastream/mac/AVVideoCaptureSource.h:

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

11:14 AM Changeset in webkit [269318] by Alan Coon
  • 3 edits in branches/safari-610-branch/Source/ThirdParty/ANGLE

Cherry-pick r267770. rdar://problem/70970346

Fix EXT_color_buffer_half_float on iOS
https://bugs.webkit.org/show_bug.cgi?id=217107

Reviewed by Kenneth Russell.

  • src/libANGLE/Context.cpp: (gl::Context::generateSupportedExtensions const):
  • src/libANGLE/renderer/gl/renderergl_utils.cpp: (rx::nativegl_gl::GenerateTextureFormatCaps):

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

11:14 AM Changeset in webkit [269317] by Alan Coon
  • 13 edits
    3 adds in branches/safari-610-branch/Source

Cherry-pick r266364. rdar://problem/70970205

Implement WEBGL_compressed_texture_s3tc_srgb extension
https://bugs.webkit.org/show_bug.cgi?id=215973

Patch by James Darpinian <James Darpinian> on 2020-08-31
Reviewed by Dean Jackson.

Source/ThirdParty/ANGLE:

  • src/libANGLE/renderer/gl/formatutilsgl.cpp: (rx::nativegl::ExtAndVersionOrExt): (rx::nativegl::BuildInternalFormatInfoMap):

Source/WebCore:

Tested by webgl/2.0.0/conformance/extensions/webgl-compressed-texture-s3tc-srgb.html

  • CMakeLists.txt:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMConvertWebGL.cpp: (WebCore::convertToJSValue):
  • html/canvas/WebGLCompressedTextureS3TCsRGB.cpp: Added. (WebCore::WebGLCompressedTextureS3TCsRGB::WebGLCompressedTextureS3TCsRGB): (WebCore::WebGLCompressedTextureS3TCsRGB::getName const): (WebCore::WebGLCompressedTextureS3TCsRGB::supported):
  • html/canvas/WebGLCompressedTextureS3TCsRGB.h: Added.
  • html/canvas/WebGLCompressedTextureS3TCsRGB.idl: Added.
  • html/canvas/WebGLExtension.h:
  • html/canvas/WebGLRenderingContext.cpp: (WebCore::WebGLRenderingContext::getExtension): (WebCore::WebGLRenderingContext::getSupportedExtensions):
  • html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::extensionIsEnabled): (WebCore::WebGLRenderingContextBase::validateCompressedTexFuncData): (WebCore::WebGLRenderingContextBase::validateCompressedTexDimensions): (WebCore::WebGLRenderingContextBase::validateCompressedTexSubDimensions):
  • html/canvas/WebGLRenderingContextBase.h:
  • platform/graphics/ExtensionsGL.h:

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

11:14 AM Changeset in webkit [269316] by Alan Coon
  • 3 edits
    2 adds in branches/safari-610-branch

Cherry-pick r266362. rdar://problem/70970398

WebGL goes in a bad state where glContext.createProgram() returns null
https://bugs.webkit.org/show_bug.cgi?id=215844

Patch by James Darpinian <James Darpinian> on 2020-08-31
Reviewed by Kenneth Russell.

Added test webgl/2.0.0/conformance/canvas/render-after-resize-test.html

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp: (WebCore::GraphicsContextGLOpenGL::reshape):

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

10:45 AM Changeset in webkit [269315] by ddkilzer@apple.com
  • 3 edits
    1 add in trunk/Source/ThirdParty/ANGLE

Stop building ANGLE source files twice
<https://webkit.org/b/218469>

Reviewed by Dean Jackson.

  • ANGLE.xcodeproj/project.pbxproj:

(ANGLE (dynamic)):

  • Replace sources with empty.cpp. Xcode requires a single source file to be compiled to create a dylib, even if the static library contains all necessary symbols.
  • Add dependency on "ANGLE (static)" target.
  • Configurations/ANGLE-dynamic.xcconfig:

(ANGLE_OTHER_LDFLAGS):

  • Add $(ANGLE_STATIC_LIB_OTHER_LDFLAGS).

(ANGLE_STATIC_LIB_OTHER_LDFLAGS): Add.

  • Special linker command-line switch to load all symbols from libANGLE.a when linking libANGLE-shared.dylib.
  • src/empty.cpp: Add.
  • See above why this is needed by Xcode.
10:45 AM Changeset in webkit [269314] by commit-queue@webkit.org
  • 24 edits in trunk

Unreviewed, reverting r268564, r268957, and r268962.
https://bugs.webkit.org/show_bug.cgi?id=218525

Caused 9% binary size increase in WebCore

Reverted changesets:

"CSSStyleDeclaration breaks JS spec (properties not showing up
in Object.getOwnPropertyNames)"
https://bugs.webkit.org/show_bug.cgi?id=217623
https://trac.webkit.org/changeset/268564

"Remove support for 'pixel' and 'pos' CSSOM prefixes"
https://bugs.webkit.org/show_bug.cgi?id=119712
https://trac.webkit.org/changeset/268957

"Remove non-standard 'css'/'Css' prefixed properties on
CSSStyleDeclaration"
https://bugs.webkit.org/show_bug.cgi?id=218158
https://trac.webkit.org/changeset/268962

10:00 AM Changeset in webkit [269313] by Wenson Hsieh
  • 11 edits in trunk/Source

Replace DisplayList::itemCount with DisplayList::isEmpty
https://bugs.webkit.org/show_bug.cgi?id=218517

Reviewed by Geoffrey Garen.

Source/WebCore:

In preparation for larger changes to display lists and display list items in <webkit.org/b/218406>, replace
DisplayList::itemCount() with DisplayList::isEmpty(). Once display list items are no longer stored in a
Vector of ref-counted items, keeping track of the exact item count will be difficult and introduce unnecessary
overhead, especially when reconstructing display lists out of shared memory in the GPU process.

Instead, change this to simply return whether or not the display list is empty (i.e. contains at least one
item), which is what (nearly) all call sites end up using itemCount() to determine anyways.

No change in behavior.

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::paintRenderingResultsToCanvas):

  • platform/graphics/displaylists/DisplayList.h:

(WebCore::DisplayList::DisplayList::isEmpty const):
(WebCore::DisplayList::DisplayList::itemCount const): Deleted.

  • platform/graphics/displaylists/DisplayListDrawingContext.cpp:

(WebCore::DisplayList::DrawingContext::replayDisplayList):

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

(WebCore::DisplayList::operator<<):

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::isEmpty const):
(WebCore::DisplayList::Recorder::itemCount const): Deleted.

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::replay):

Source/WebKit:

Separately keep track of the item count in the context's display list. See WebCore/ChangeLog for more details.

  • GPUProcess/graphics/RemoteImageBuffer.h: Use isEmpty() instead of checking itemCount().
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::flushDrawingContextAndCommit):

9:59 AM Changeset in webkit [269312] by Simon Fraser
  • 8 edits in trunk/Source

Scroll position can get reset after programmatic scroll
https://bugs.webkit.org/show_bug.cgi?id=218477

Reviewed by Antti Koivisto.

Source/WebCore:

Part of rdar://problem/69599531: Scrolling on netflix.com sometimes jumps to the top.

Scrolling thread scroll notifications are handled on the main thread asynchronously, and
there are two sources of delay: first, the RunLoop::main().dispatch() in ThreadedScrollingTree::scrollingTreeNodeDidScroll(),
and second the zero-delay m_updateNodeScrollPositionTimer in AsyncScrollingCoordinator.

This is a problem when doing programmatic scrolls, since the main thread can
programmatically scroll, then the above asynchrony means that
AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll() gets called for an earlier
user scroll (or, as is often the case on netflix.com, a scroll triggered by the
rubberbanding timer on the scrolling thread).

This patches addresses these out-of-order scrolls by storing scrolling thread scroll updates
in a threadsafe data structure on the scrolling tree, and always applying those on the main
thread before handling other scroll changes.

This patch removes the zero-delay timer, which did serve a purpose of coalescing scroll
notifications from the scrolling thread and UI process (for iOS). With the patch, we still
get coalescing per RunLoop::main().dispatch(). We lose coalescing on iOS, but those
notifications should be just once per frame. If we find that it was necessary to coalesce,
we can put a timer back.

Not testable because it's very timing dependent.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::AsyncScrollingCoordinator):
(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
(WebCore::AsyncScrollingCoordinator::synchronizeStateFromScrollingTree):
(WebCore::AsyncScrollingCoordinator::noteScrollingThreadSyncCompleteForNode):
(WebCore::AsyncScrollingCoordinator::applyPendingScrollUpdates):
(WebCore::AsyncScrollingCoordinator::applyScrollUpdate):
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
(WebCore::AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll): Deleted.
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScrollTimerFired): Deleted.

  • page/scrolling/AsyncScrollingCoordinator.h:

(WebCore::AsyncScrollingCoordinator::ScheduledScrollUpdate::ScheduledScrollUpdate): Deleted.
(WebCore::AsyncScrollingCoordinator::ScheduledScrollUpdate::matchesUpdateType const): Deleted.

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::applyLayerPositionsInternal):
(WebCore::ScrollingTree::addPendingScrollUpdate):
(WebCore::ScrollingTree::takePendingScrollUpdates):

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::ScrollUpdate::ScrollUpdate):
(WebCore::ScrollingTree::ScrollUpdate::canMerge const):
(WebCore::ScrollingTree::ScrollUpdate::merge):

  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):

Source/WebKit:

  • WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm:

(WebKit::RemoteScrollingCoordinator::scrollPositionChangedForNode):

9:53 AM Changeset in webkit [269311] by Hector Lopez
  • 2 edits in trunk/LayoutTests

Test expectation adjustment to cover internal testers
<rdar://68947198>

Unreviewed test gardening.

  • platform/mac/TestExpectations:
9:52 AM Changeset in webkit [269310] by Keith Rollin
  • 6 edits in trunk

Extend check-for-inappropriate-files-in-framework to WebKitLegacy and JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=218272
<rdar://problem/70748116>

Reviewed by Simon Fraser.

Bug 218268 reports that some *.txt files got included in WebKitLegacy.
To help protect against this happening in the future, extend
check-for-inappropriate-files-in-framework to check for *.txt files,
and apply the script to WebKitLegacy and JavaScriptCore in addition to
WebCore and WebKit.

Source/JavaScriptCore:

Source/WebKitLegacy:

In order to prevent this change from breaking local engineering builds
that still have these files in their build output directories, add a
couple of lines that will delete those *.txt files before making the
check for them.

  • WebKitLegacy.xcodeproj/project.pbxproj:

Tools:

  • Scripts/check-for-inappropriate-files-in-framework:
9:37 AM Changeset in webkit [269309] by don.olmstead@sony.com
  • 7 edits
    1 copy
    2 moves
    3 adds in trunk/Source/JavaScriptCore

[CMake] Add remote inspector platforms
https://bugs.webkit.org/show_bug.cgi?id=218451

Reviewed by Michael Catanzaro.

Add a CMake definition for each of the three remote inspector server backends to
remove duplication between the ports. Modify the port's CMake files to use the
shared definitions.

  • PlatformFTW.cmake:
  • PlatformGTK.cmake:
  • PlatformJSCOnly.cmake:
  • PlatformPlayStation.cmake:
  • PlatformWPE.cmake:
  • PlatformWin.cmake:
  • inspector/remote/Cocoa.cmake: Added.
  • inspector/remote/GLib.cmake: Added.
  • inspector/remote/Socket.cmake: Added.
  • inspector/remote/SourcesCocoa.txt: Copied from Source/JavaScriptCore/SourcesWPE.txt.
  • inspector/remote/SourcesGLib.txt: Renamed from Source/JavaScriptCore/SourcesGTK.txt.
  • inspector/remote/SourcesSocket.txt: Renamed from Source/JavaScriptCore/SourcesWPE.txt.
9:20 AM Changeset in webkit [269308] by weinig@apple.com
  • 10 edits in trunk/Source/WebCore

Convert Settings.yaml to match the rough schema of the WebPreferences*.yaml files as a first step toward merging them
https://bugs.webkit.org/show_bug.cgi?id=218428

Reviewed by Darin Adler.

As the first step toward merging Settings.yaml into the WebPreferences*.yaml files
update Settings.yaml better match. This includes:

  • Fix key names start with capital letters.
  • A 'type' is now required (no more defaulting to bool)
  • 'initial' is renamed to defaultValue and gains the same per-frontend structure. This also means we can use PLATFORM() specific default values now rather than requiring the SettingsDefaults.h header, though this patch does not take advantage of that yet.
  • 'type' must now be 'bool', 'double', 'uint32_t' or 'String'. A new refinedType allows Settings to maintain the more explicit enum types / URL types.
  • Moves comments into the data structure to make it possible to keep them when manipulating the yaml programatically.
  • Use webcore prefix for webcore specific keys.
  • Replace single textAutosizingWindowSizeOverride preference which used an IntSize with TextAutosizingWindowSizeOverrideHeight and TextAutosizingWindowSizeOverrideWidth which are representable by one of the core types.
  • Scripts/GenerateSettings.rb:
  • Scripts/SettingsTemplates/InternalSettingsGenerated.cpp.erb:
  • Scripts/SettingsTemplates/InternalSettingsGenerated.h.erb:
  • Scripts/SettingsTemplates/Settings.cpp.erb:
  • Scripts/SettingsTemplates/Settings.h.erb:
  • WebCore.xcodeproj/project.pbxproj:
  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::applyTextSizingIfNeeded):

  • page/Settings.yaml:
  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setTextAutosizingWindowSizeOverride):

9:14 AM Changeset in webkit [269307] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[macOS] Adopt additional QuartzCore entitlement to reduce accessible endpoints
https://bugs.webkit.org/show_bug.cgi?id=218466
<rdar://problem/55790037>

Reviewed by Per Arne Vollan.

In iOS 14 we adopted a new entitlement that limited the set of XPC endpoints available
to QuartzCore clients. We should do the same on macOS to provide a similar level of
protection.

  • Scripts/process-entitlements.sh:
8:43 AM Changeset in webkit [269306] by youenn@apple.com
  • 15 edits in trunk/Source

Add support for WebRTC VP9 decoder in GPU process
https://bugs.webkit.org/show_bug.cgi?id=218445

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Allow creating a VTB VP9 decoder from WebCore.
VTB VP9 decoder currently needs key frame width and height information so we provide it as part of the decode callback.

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:
  • Source/webrtc/sdk/WebKit/WebKitDecoder.h:
  • Source/webrtc/sdk/WebKit/WebKitDecoder.mm:

(-[WK_RTCLocalVideoH264H265VP9Decoder initVP9DecoderWithCallback:]):
(-[WK_RTCLocalVideoH264H265VP9Decoder decodeData:size:timeStamp:]):
(-[WK_RTCLocalVideoH264H265VP9Decoder setWidth:height:]):
(-[WK_RTCLocalVideoH264H265VP9Decoder releaseDecoder]):
(webrtc::RemoteVideoDecoder::Decode):
(webrtc::RemoteVideoDecoderFactory::GetSupportedFormats const):
(webrtc::createLocalH264Decoder):
(webrtc::createLocalH265Decoder):
(webrtc::createLocalVP9Decoder):
(webrtc::releaseLocalDecoder):
(webrtc::decodeFrame):
(webrtc::setDecoderFrameSize):

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderVTBVP9.h:
  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderVTBVP9.mm:

(-[RTCVideoDecoderVTBVP9 decode:missingFrames:codecSpecificInfo:renderTimeMs:]):
(-[RTCVideoDecoderVTBVP9 setWidth:height:]):

Source/WebKit:

Add support for VP9 decoder, send key frame size as IPC message specifically for VP9 hardware decoder.
If GPU process does not enable either SW or HW VP9 decoder, we fall back to in process VP9 decoder.

Manually tested by enabling WebRTC codec in GPU process.
Will be covered by existing VP9 tests in GPU process mode once canvas in GPUProcess is fully supported.

  • GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.messages.in:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:

(WebKit::LibWebRTCCodecsProxy::createVP9Decoder):
(WebKit::LibWebRTCCodecsProxy::setFrameSize):

  • WebProcess/GPU/GPUProcessConnection.h:

(WebKit::GPUProcessConnection::isVP9DecoderEnabled const):
(WebKit::GPUProcessConnection::isVPSWDecoderEnabled const):

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::createVideoDecoder):
(WebKit::decodeVideoFrame):
(WebKit::LibWebRTCCodecs::setCallbacks):
(WebKit::LibWebRTCCodecs::createDecoder):
(WebKit::LibWebRTCCodecs::decodeFrame):
(WebKit::formatNameFromCodecType):

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:

(WebKit::LibWebRTCCodecs::setVP9VTBSupport):
(WebKit::LibWebRTCCodecs::supportVP9VTB const):

8:21 AM Changeset in webkit [269305] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

[GTK] MiniBrowser: increase default window size
https://bugs.webkit.org/show_bug.cgi?id=218513

Reviewed by Adrian Perez de Castro.

Because 800x600 is to small nowadays. Use 1024x768 instead.

  • MiniBrowser/gtk/BrowserWindow.c:
7:11 AM Changeset in webkit [269304] by Lauro Moura
  • 2 edits in trunk/WebDriverTests

[WebDriver] Update config.json after tools update in r269235
https://bugs.webkit.org/show_bug.cgi?id=218512

Reviewed by Carlos Garcia Campos.

  • imported/w3c/config.json: Add missing value to https list.
6:49 AM Changeset in webkit [269303] by youenn@apple.com
  • 264 edits
    1 copy
    4 moves
    54 adds
    18 deletes in trunk/Source/ThirdParty/libwebrtc

Update WebRTC boringssl to M87
https://bugs.webkit.org/show_bug.cgi?id=218431

Reviewed by Eric Carlson.

  • CMakeLists.txt:
  • Source/third_party/boringssl: Resynced.
  • libwebrtc.xcodeproj/project.pbxproj:
6:46 AM Changeset in webkit [269302] by clopez@igalia.com
  • 4 edits in trunk/LayoutTests

[GTK][WPE] Move passing tests to the top of the TestExpectation files.

Some tests like http/tests/contentextensions/service-worker.https.html
are flaky and we have it marked as such at the GTK/WPE expectation file.
But the bots continue to complain about unexpected flakiness for this test.
This is because we have our section of tests passing at the bottom
of the TestExpectation files. And the layout test runner evaluates
the rules from top to bottom and it picks as the valid rule the last
one matching.
So when we unskip folders from the main TestExpectation file like
"http/tests/contentextensions [ Pass ]" we are also resetting the
value of all those tests to just Pass.
To avoid this problem move the expected passes to the top of the files.

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
6:34 AM Changeset in webkit [269301] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

[LFC][Integration] RenderText::absoluteQuads should use iterator
https://bugs.webkit.org/show_bug.cgi?id=218508

Reviewed by Zalan Bujtas.

  • rendering/InlineBox.h:

(WebCore::InlineBox::calculateBoundaries const): Deleted.

This function is SVG-specific.
To reduce confusion, make it non-virtual and available in SVG inline box classes only.

  • rendering/InlineTextBox.h:
  • rendering/RenderText.cpp:

(WebCore::boundariesForTextRun):
(WebCore::ellipsisRectForTextRun):
(WebCore::collectAbsoluteQuads):
(WebCore::RenderText::absoluteQuadsClippedToEllipsis const):
(WebCore::RenderText::absoluteQuads const):
(WebCore::RenderText::absoluteQuadsForRange const):
(WebCore::RenderText::collectSelectionRectsForLineBoxes):

Also inline selectionRectForRange/collectSelectionRectsForRange to the only caller here and make it use iterator.

(WebCore::collectAbsoluteQuadsForNonComplexPaths): Deleted.

  • rendering/RenderTextLineBoxes.cpp:

(WebCore::ellipsisRectForBox): Deleted.
(WebCore::RenderTextLineBoxes::selectionRectForRange): Deleted.
(WebCore::RenderTextLineBoxes::collectSelectionRectsForRange): Deleted.
(WebCore::RenderTextLineBoxes::absoluteQuads const): Deleted.

  • rendering/RenderTextLineBoxes.h:

(): Deleted.

  • rendering/svg/RenderSVGInlineText.cpp:

(WebCore::RenderSVGInlineText::floatLinesBoundingBox const):
(WebCore::RenderSVGInlineText::positionForPoint):
(WebCore::RenderSVGInlineText::firstTextBox const):

  • rendering/svg/RenderSVGInlineText.h:
  • rendering/svg/SVGInlineFlowBox.cpp:

(WebCore::SVGInlineFlowBox::calculateBoundaries const):

  • rendering/svg/SVGInlineFlowBox.h:
  • rendering/svg/SVGInlineTextBox.h:
6:20 AM Changeset in webkit [269300] by youenn@apple.com
  • 77 edits
    9 adds
    1 delete in trunk/Source/ThirdParty/libwebrtc

Update WebRTC usrsctp to M87
https://bugs.webkit.org/show_bug.cgi?id=218433

Reviewed by Eric Carlson.

  • Source/third_party/usrsctp: Resynced.
6:16 AM Changeset in webkit [269299] by Alan Bujtas
  • 9 edits in trunk/Source/WebCore

[LFC][IFC] Use "isConsideredEmpty" instead of "isVisuallyEmpty"
https://bugs.webkit.org/show_bug.cgi?id=218475

Reviewed by Antti Koivisto.

In certain cases the line may look visually empty, but still considered non-empty when computing the line box geometry.
Use a more precise term to indicated whether the line is empty.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

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

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

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

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::initialize):
(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::append):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::isRunConsideredEmpty const):
(WebCore::Layout::Line::isRunVisuallyNonEmpty const): Deleted.

  • layout/inlineformatting/InlineLine.h:

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

  • layout/inlineformatting/InlineLineBox.cpp:

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

  • layout/inlineformatting/InlineLineBox.h:

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

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::layoutInlineContent):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):

  • layout/inlineformatting/InlineLineBuilder.h:
6:14 AM Changeset in webkit [269298] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC] showInlineTreeAndRuns should print the inline level boxes in visual order
https://bugs.webkit.org/show_bug.cgi?id=218478

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::rootInlineBox const):
(WebCore::Layout::LineBox::nonRootInlineLevelBoxes const):
(WebCore::Layout::LineBox::rootInlineBox):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::showInlineTreeAndRuns):

6:09 AM Changeset in webkit [269297] by Diego Pino Garcia
  • 4 edits
    1 delete in trunk/LayoutTests

[GTK] Unreviewed test gardening. Remove stale flaky crashes.

All the tests failures removed were flaky crashes that were consistently
passing in the last 4000 revisions.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/gtk/media/video-played-collapse-expected.txt: Removed.
  • platform/wpe/TestExpectations:
6:05 AM Changeset in webkit [269296] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GTK] Gardening fast/dom/Range/getBoundingClientRect.html failure

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
5:35 AM Changeset in webkit [269295] by youenn@apple.com
  • 4 edits in trunk/Source/WebCore
REGRESSION (r269244?): ASSERTION FAILED: m_idHashSalt.isEmpty()
m_idHashSalt == salt in WebCore::Document::setDeviceIDHashSalt

https://bugs.webkit.org/show_bug.cgi?id=218458
<rdar://problem/70963733>

Reviewed by Eric Carlson.

Remove no longer needed code.

  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::allow):

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

(WebCore::Document::hasHadCaptureMediaStreamTrack const):

4:55 AM Changeset in webkit [269294] by Adrian Perez de Castro
  • 5 edits in trunk/Source/WebCore

Non-unified build fixes, early November 2020 edition
https://bugs.webkit.org/show_bug.cgi?id=218464

Unreviewed non-unified build fixes.

No new tests needed.

  • editing/VisibleUnits.cpp: Add missing InlineRunAndOffset.h header.
  • inspector/InspectorFrontendAPIDispatcher.cpp: Add missing InspectorController.h and

wtf/RunLoop.h headers.
(WebCore::InspectorFrontendAPIDispatcher::frontendGlobalObject): Add missing JSC::
namespace to usage of JSC::JSGlobalObject type.

  • layout/integration/LayoutIntegrationLineIterator.cpp: Add missing RenderBlockFlow.h

header.

  • rendering/RenderBlockFlow.cpp: Add missing LayoutIntegrationRunIterator.h header.
4:33 AM Changeset in webkit [269293] by youenn@apple.com
  • 21 edits in trunk/Source

Allow low latency H264 encoder in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=218442

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Add a useLowLatency boolean in RTCVideoEncoderH264 and in encoder factory.
Encoder is set by the factory at creation time.
useLowLatency factory value is set at creation of the factory.

Clean up WebKitXX.h headers to do less include and move declarations in specific headers.

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:
  • Source/webrtc/sdk/WebKit/WebKitDecoder.h:
  • Source/webrtc/sdk/WebKit/WebKitDecoder.mm:

(webrtc::videoDecoderTaskComplete):

  • Source/webrtc/sdk/WebKit/WebKitEncoder.h:
  • Source/webrtc/sdk/WebKit/WebKitEncoder.mm:

(-[WK_RTCLocalVideoH264H265Encoder setLowLatency:]):
(webrtc::createWebKitEncoderFactory):
(webrtc::setLocalEncoderLowLatency):

  • Source/webrtc/sdk/WebKit/WebKitUtilities.h:
  • Source/webrtc/sdk/WebKit/WebKitUtilities.mm:
  • Source/webrtc/sdk/objc/components/video_codec/RTCDefaultVideoEncoderFactory.h:
  • Source/webrtc/sdk/objc/components/video_codec/RTCDefaultVideoEncoderFactory.m:

(-[RTCDefaultVideoEncoderFactory initWithH265:vp9:lowLatencyH264:]):
(-[RTCDefaultVideoEncoderFactory createEncoder:]):

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.h:
  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm:

(-[RTCVideoEncoderH264 initWithCodecInfo:]):
(-[RTCVideoEncoderH264 setH264LowLatencyEncoderEnabled:]):
(-[RTCVideoEncoderH264 resetCompressionSessionWithPixelFormat:]):

Source/WebCore:

Pass useLowLatency boolean when creating encoder factory.
Manually tested.

  • platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:

(WebCore::LibWebRTCProviderCocoa::createEncoderFactory):

Source/WebKit:

Pass useLowLatency boolean from WebProcess to GPUProcess.

  • GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.messages.in:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:

(WebKit::LibWebRTCCodecsProxy::createEncoder):

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::LibWebRTCCodecs::completedDecoding):
(WebKit::LibWebRTCCodecs::createEncoder):

3:50 AM Changeset in webkit [269292] by dino@apple.com
  • 2 edits
    5 adds in trunk/Source/ThirdParty/ANGLE

Add schemes for ANGLE to Xcode project
https://bugs.webkit.org/show_bug.cgi?id=217546
rdar://69062082

Reviewed by Alex Christensen.

  • ANGLE.xcodeproj/xcshareddata/xcschemes/ANGLE (dynamic).xcscheme: Added.
  • ANGLE.xcodeproj/xcshareddata/xcschemes/ANGLE (static).xcscheme: Added.
  • ANGLE.xcodeproj/xcshareddata/xcschemes/ANGLE.xcscheme: Added.
3:23 AM Changeset in webkit [269291] by youenn@apple.com
  • 1 edit in trunk/Source/ThirdParty/libwebrtc/ChangeLog

Update WebRTC libyuv to M87
https://bugs.webkit.org/show_bug.cgi?id=218434

Reviewed by Eric Carlson.

  • Source/third_party/usrsctp: Resynced.
2:18 AM Changeset in webkit [269290] by Chris Lord
  • 2 edits in trunk/Source/WebKit

[GTK] Zooming causes page to scroll to top
https://bugs.webkit.org/show_bug.cgi?id=217955

Reviewed by Carlos Garcia Campos.

Don't reset page scale when setting zoom level on GLIB backend.

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkit_web_view_set_zoom_level):

12:44 AM Changeset in webkit [269289] by youenn@apple.com
  • 1128 edits
    9 copies
    2 moves
    118 adds
    14 deletes in trunk/Source/ThirdParty/libwebrtc

Update WebRTC abseil to M87
https://bugs.webkit.org/show_bug.cgi?id=218432

Reviewed by Eric Carlson.

  • CMakeLists.txt:
  • Source/third_party/abseil-cpp: Resynced.
12:41 AM Changeset in webkit [269288] by youenn@apple.com
  • 4 edits in trunk/Source/ThirdParty/libwebrtc

Update WebRTC opus to M87
https://bugs.webkit.org/show_bug.cgi?id=218435

Reviewed by Eric Carlson.

  • Source/third_party/opus: Resynced.
12:40 AM Changeset in webkit [269287] by Adrian Perez de Castro
  • 8 edits in trunk

[GTK][WPE] Cannot remove individual scripts/stylesheets using WebKitUserContentManager
https://bugs.webkit.org/show_bug.cgi?id=218403

Reviewed by Carlos Garcia Campos.

Add the missing WebKitUserContentManager functions which allow
removing a single script and style sheet from the manager. Given
that it is possible to remove a single content filter and message
handlers already, this make the API orthogonal for scripts and style
sheets as well.

Source/WebKit:

  • UIProcess/API/glib/WebKitUserContentManager.cpp:

(webkit_user_content_manager_remove_style_sheet): Added.
(webkit_user_content_manager_remove_script): Added.

  • UIProcess/API/gtk/WebKitUserContentManager.h: Add declarations for the new functions.
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Ditto.
  • UIProcess/API/wpe/WebKitUserContentManager.h: Ditto.
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt: Ditto.

Tools:

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp:

(testUserContentManagerInjectedStyleSheet): Add test for
webkit_user_content_manager_remove_style_sheet().
(testUserContentManagerInjectedScript): Add test for
webkit_user_content_manager_remove_script().

Nov 2, 2020:

10:56 PM Changeset in webkit [269286] by calvaris@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Fix GStreamerCommon.cpp debug category
https://bugs.webkit.org/show_bug.cgi?id=218392

Reviewed by Adrian Perez de Castro.

GStreamerCommon.cpp lacked a default debug category so debug from
that file was not appearing under the WebKit category but empty.

  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::initializeGStreamer):

8:20 PM Changeset in webkit [269285] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Crash under WebGLRenderingContextBase::scheduleTaskToDispatchContextLostEvent()
https://bugs.webkit.org/show_bug.cgi?id=218474

Reviewed by Geoffrey Garen.

After r269227, event loop tasks can get executed even after the script execution context
has been stopped. This introduce a flaky crash under:
WebGLRenderingContextBase::scheduleTaskToDispatchContextLostEvent()

This patch updates the function to not attempt to dispatch the event after the context
has been stopped.

No new tests, covered by the following tests that are flaky crashing in debug:

  • webgl/1.0.3/conformance/glsl/misc/non-ascii-comments.vert.html
  • webgl/2.0.0/conformance/glsl/bugs/sampler-array-using-loop-index.html
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::scheduleTaskToDispatchContextLostEvent):

7:39 PM Changeset in webkit [269284] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

REGRESSION (r269214): ASSERTION FAILED: m_state == CLOSED in WebCore::EventSource::abortConnectionAttempt
https://bugs.webkit.org/show_bug.cgi?id=218457
<rdar://problem/70963581>

Reviewed by Geoffrey Garen.

When EventSource::didFail() gets called with an AccessControl error, it calls abortConnectionAttempt()
which cancels the load (by calling doExplicitLoadCancellation()). The expectation is that cancelling
the load will cause EventSource::didFail() to get called again, this time with a cancellation error,
which will set m_state to CLOSED. We're hitting the assertion because EventSource::didFail() is not
getting called with a cancellation error when the loader is a WorkerThreadableLoader and thus m_state
is not set to CLOSED as expected.

The reason for this is that MainThreadBridge::cancel() would return early and not call
ThreadableLoaderClientWrapper::didFail() if ThreadableLoaderClientWrapper::done() returns true.
ThreadableLoaderClientWrapper::done() returns true when ThreadableLoaderClientWrapper::didFail()
was already called previously, which is what's happening in our test. To address the issue,
MainThreadBridge::cancel() now calls ThreadableLoaderClientWrapper::didFail() no matter what.
This ensures consistency with the DocumentThreadableLoader.

No new tests, covered by existing test crashing on the bots.

  • loader/WorkerThreadableLoader.cpp:

(WebCore::WorkerThreadableLoader::MainThreadBridge::cancel):

7:21 PM Changeset in webkit [269283] by rniwa@webkit.org
  • 4 edits in trunk/Source/WebKit

Remove some useless comments from .messages.in files
https://bugs.webkit.org/show_bug.cgi?id=218473

Reviewed by Tim Horton.

Remove comments that simply repeats what the code says.

  • GPUProcess/GPUProcess.messages.in:
  • NetworkProcess/NetworkProcess.messages.in:
  • WebProcess/WebProcess.messages.in:
6:09 PM Changeset in webkit [269282] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

Input sanitization improvements for Payment Request demo
https://bugs.webkit.org/show_bug.cgi?id=218470

Reviewed by Andy Estes.

  • demos/payment-request/merchant-validation.php:
5:15 PM Changeset in webkit [269281] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Regression(r269227) imported/w3c/web-platform-tests/service-workers/service-worker/referrer-toplevel-script-fetch.https.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=218468
<rdar://problem/70969071>

Reviewed by Darin Adler.

Code in ServiceWorkerContainer::ready() was queueing an event loop task and then dereferencing
scriptExecutionContext() in the task. This is no longer safe after r269227 since tasks may
still be run after ActiveDOMObjects have been stopped. To address the issue, we need to
null check the scriptExecutionContext.

No new tests, covered by existing test.

  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::ready):

4:59 PM Changeset in webkit [269280] by weinig@apple.com
  • 2 edits in trunk/Tools

Sort/cleanup preferences in resetWebPreferencesToConsistentValues
https://bugs.webkit.org/show_bug.cgi?id=218467

Reviewed by Darin Adler.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):
Sort things.

4:40 PM Changeset in webkit [269279] by Devin Rousso
  • 4 edits in trunk/Source

guard UIScribbleInteraction class property observing behind a LOA check
https://bugs.webkit.org/show_bug.cgi?id=218463
<rdar://problem/70747966>

Reviewed by Tim Horton.

Some apps appear to swizzle -[NSObject addObserver:forKeyPath:options:context:] without
support for the fact that the object can be a class rather than an instance and therefore
crash. Use a LOA check to guard observing +[UIScribbleInteraction isPencilInputExpected]
so that this doesn't happen, but only until the apps update, at which point they can fix it.

Source/WebCore:

  • platform/cocoa/VersionChecks.h:

This appears to be the first instance of observing a class property, so add a new version
value for FirstThatObservesClassProperty.

Source/WebKit:

  • UIProcess/ios/WKStylusDeviceObserver.mm:

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

4:05 PM Changeset in webkit [269278] by weinig@apple.com
  • 10 edits in trunk

[Testing] Match WebKitTestRunner and enable all "experimental" features in DumpRenderTree (cocoa)
https://bugs.webkit.org/show_bug.cgi?id=218447

Reviewed by Darin Adler.

Source/WebKitLegacy/mac:

  • Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb:
  • Scripts/PreferencesTemplates/WebPreferencesInternalFeatures.mm.erb:
  • WebView/WebFeature.m:

(-[WebFeature initWithKey:preferencesKey:name:details:defaultValue:hidden:]):
(-[WebFeature initWithKey:name:details:defaultValue:hidden:]): Deleted.

  • WebView/WebFeatureInternal.h:

Handle non-standard preference keys by ensure we initialize WebFeatures with the generated
preferenceKey accessor rather than trying to derive it from the key directly.

Tools:

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:

Add missing file, TestOptionsGeneratedWebKitLegacyKeyMapping.cpp.erb.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):
(enableExperimentalFeatures): Deleted.
Match WebKitTestRunner and enable all experimental features by default. Disable a few of them to
keep the current behavior, but added FIXME to figure out why they are exposed but not enabled. Also
ensure a few preferences that are not experimental features, but were in the enableExperimentalFeatures
function remain set.

2:41 PM Changeset in webkit [269277] by Diego Pino Garcia
  • 2 edits
    1 copy
    2 deletes in trunk/LayoutTests

[WPE] Unreviewed test gardening. Update test expectations.

Also remove stale WPE baseline for test imported/w3c/web-platform-tests/css/css-text/white-space/trailing-space-before-br-001.html

  • platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/trailing-space-before-br-001-expected.txt: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-text/white-space/trailing-space-before-br-001-expected.txt.
  • platform/wpe/TestExpectations:
  • platform/wpe/imported/w3c/web-platform-tests/css/css-text/white-space/trailing-space-before-br-001-expected.txt: Removed.
2:35 PM Changeset in webkit [269276] by Chris Dumez
  • 3 edits in trunk/LayoutTests

Unreviewed, deflake imported/w3c/web-platform-tests/payment-request/show-method-optional-promise-rejects.https.html

Dump its console logging to stderr to address flakiness.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
2:24 PM Changeset in webkit [269275] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

REGRESSION (r269227): Crash in WebCore::WorkerOrWorkletGlobalScope::prepareForDestruction
https://bugs.webkit.org/show_bug.cgi?id=218455
<rdar://problem/70963191>

Reviewed by Geoffrey Garen.

Document::willBeRemovedFromFrame() may have the same PaintWorkletGlobalScope instance
more than once in its m_paintWorkletGlobalScopes HashMap, under different keys. As a
result, it may call PaintWorkletGlobalScope::prepareForDestruction() more than once
on the same instance. This was causing issues because
EventLoopTaskGroup::markAsReadyToStop(), when called the second time, would move the
state from Stopped and back to ReadyToStop, which is unexpected.

To address the issue, EventLoopTaskGroup::markAsReadyToStop() now returns early if
the state is "Stopped". Also, I added a boolean check in PaintWorkletGlobalScope's
prepareForDestruction() to make sure we only do the work once per instance.

No new tests, covered by existing tests.

  • dom/EventLoop.h:

(WebCore::EventLoopTaskGroup::markAsReadyToStop):

  • worklets/PaintWorkletGlobalScope.h:
2:07 PM Changeset in webkit [269274] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Unreviewed, reverting r269245.

3 LFC tests asserting in
WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree

Reverted changeset:

"[LFC][IFC] Empty lines stay empty even when the imaginary
strut is present"
https://bugs.webkit.org/show_bug.cgi?id=218420
https://trac.webkit.org/changeset/269245

1:53 PM Changeset in webkit [269273] by James Savage
  • 2 edits in trunk/Source/WebKit

Changes to SWIFT_MODULE_ONLY_ARCHS
https://bugs.webkit.org/show_bug.cgi?id=218404

Reviewed by Tim Horton.

  • SwiftOverlay/Configurations/WebKitSwiftOverlay.xcconfig: Simplify how

we specify these options.

1:43 PM Changeset in webkit [269272] by Antti Koivisto
  • 11 edits in trunk

[LFC][Integration] RenderText::absoluteQuadsForRange should use iterator
https://bugs.webkit.org/show_bug.cgi?id=218444

Reviewed by Zalan Bujtas.

Source/WebCore:

Add the required iterator support and convert absoluteQuadsForRange to use it.
This eliminates ensureLineBoxes from two places.

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::PathTextRun::isSelectable const):
(WebCore::LayoutIntegration::PathTextRun::selectionRect const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::RunIteratorLegacyPath::isSelectable const):
(WebCore::LayoutIntegration::RunIteratorLegacyPath::selectionRect const):

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::RunIteratorModernPath::offsetForPosition const):
(WebCore::LayoutIntegration::RunIteratorModernPath::isSelectable const):
(WebCore::LayoutIntegration::RunIteratorModernPath::selectionRect const):
(WebCore::LayoutIntegration::RunIteratorModernPath::clampedOffset const):
(WebCore::LayoutIntegration::RunIteratorModernPath::createTextRun const):

  • rendering/RenderText.cpp:

(WebCore::RenderText::absoluteRectsForRange const):
(WebCore::localQuadForTextRun):
(WebCore::RenderText::absoluteQuadsForRange const):

  • rendering/RenderTextLineBoxes.cpp:

(WebCore::localQuadForTextBox): Deleted.
(WebCore::RenderTextLineBoxes::absoluteQuadsForRange const): Deleted.
(WebCore::RenderTextLineBoxes::absoluteRectsForRange const): Deleted.

  • rendering/RenderTextLineBoxes.h:

LayoutTests:

  • fast/dom/Range/getBoundingClientRect-expected.txt:
  • fast/dom/Range/getBoundingClientRect.html:

On legacy path <br> y position is miscomputed affecting getBoundingClientRect().
Update the test to match the new behavior. Results now match Firefox and Chrome.

1:21 PM Changeset in webkit [269271] by Chris Dumez
  • 5 edits in trunk

[ macOS ] webaudio/OfflineAudioContext/onstatechange.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217543
<rdar://problem/70160122>

Reviewed by Alex Christensen.

Source/WebCore:

No new tests, unskipped existing test.

  • Modules/webaudio/OfflineAudioDestinationNode.cpp:

(WebCore::OfflineAudioDestinationNode::startRendering):
After offline rendering on the audio thread and we go back to the main thread, make sure we queue a task of the
event loop to fire the statechange and completion events. We were previously failing to do so and that meant
that the ordering with other main thread events (which were queued on the event loop) was not always correct.

LayoutTests:

  • platform/mac/TestExpectations:

Unskip test that should no longer be flaky.

  • webaudio/OfflineAudioContext/onstatechange-expected.txt:

Rebaseline test now that the order of the promise resolution and the statechange event have changed.
Note that the new ordering is consistent with both Chrome and Firefox.

1:17 PM Changeset in webkit [269270] by Diego Pino Garcia
  • 1 edit
    1 delete in trunk/LayoutTests

[WPE] Unreviewed test gardening. Remove outdated baselines no longer necessary after r269104.

  • platform/wpe/webaudio/codec-tests/aac/vbr-128kbps-44khz-expected.wav: Removed.
  • platform/wpe/webaudio/codec-tests/mp3/128kbps-44khz-expected.wav: Removed.
  • platform/wpe/webaudio/codec-tests/vorbis/vbr-128kbps-44khz-expected.wav: Removed.
  • platform/wpe/webaudio/codec-tests/vorbis/vbr-70kbps-44khz-expected.wav: Removed.
  • platform/wpe/webaudio/codec-tests/vorbis/vbr-96kbps-44khz-expected.wav: Removed.
  • platform/wpe/webaudio/codec-tests/wav/24bit-44khz-expected.wav: Removed.
12:55 PM Changeset in webkit [269269] by ddkilzer@apple.com
  • 6 edits in trunk

Sort Xcode project file

Source/bmalloc:

  • bmalloc.xcodeproj/project.pbxproj:

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:

Tools:

  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
12:31 PM Changeset in webkit [269268] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, skip imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-connections.html on mac-arm64 only.

Sadly, there is no way to land a mac-arm64 specific baseline yet so we have to mark the test as failing on this platform, even though it
is actually passing (with slightly different values).

  • platform/mac/TestExpectations:
12:17 PM Changeset in webkit [269267] by Alan Coon
  • 1 copy in tags/Safari-611.1.4.0.1

Tag Safari-611.1.4.0.1.

12:14 PM Changeset in webkit [269266] by Alan Coon
  • 2 edits in branches/safari-611.1.4.0-branch/Source/WebCore

Cherry-pick r269206. rdar://problem/70730895

Further lessen reliance on VPATH in WebCore/DerivedSources.make
https://bugs.webkit.org/show_bug.cgi?id=218378
<rdar://problem/70730895>

Reviewed by Darin Adler.

Bug 217696 updated WebCore/DerivedSources.make to rely less on VPATH
and make more use of explicit partial or full paths. The solution
there, however, did not go far enough, and led to failures when
building WebKit for Safari Tech Preview and using old SDKs that
contains files that have since been "upstreamed" into WebKit. Address
this problem by taking further control of how DerivedSources.make
finds needed files instead of using the VPATH mechanism.

No new tests -- this is a build fix.

  • DerivedSources.make:

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

12:07 PM Changeset in webkit [269265] by Alan Coon
  • 8 edits in branches/safari-611.1.4.0-branch/Source

Versioning.

WebKit-7611.1.4.0.1

11:56 AM Changeset in webkit [269264] by Diego Pino Garcia
  • 6 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening. Update baselines of several tests failing.

  • platform/glib/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt: Needs update after r269224.
  • platform/gtk/editing/inserting/paragraph-separator-in-table-1-expected.txt: Needs update after r269214.
  • platform/gtk/editing/inserting/paragraph-separator-in-table-1-expected.png: Needs update after r269214.
  • platform/gtk/imported/w3c/web-platform-tests/css/css-text/white-space/trailing-space-before-br-001-expected.txt: Needs update after r269238.
  • platform/gtk/tables/mozilla/bugs/bug28928-expected.txt: Needs update after r269238.
11:46 AM Changeset in webkit [269263] by Aditya Keerthi
  • 3 edits in trunk/Source/WebKit

[iOS] Link Contacts.framework during build
https://bugs.webkit.org/show_bug.cgi?id=218289
<rdar://problem/70770410>

Reviewed by Andy Estes.

Contacts.framework is currrently soft linked in PaymentAuthorizationPresenter.
Soft linking is generally discouraged, since it requires running the linker
at runtime, leading to an unwanted performance cost. By normally linking
the framework, the linkage is declared at build time, which enables running
the linker at build/update/install time and avoiding the runtime cost.

Unfortunately, we still have to soft link the framework on macOS, to avoid
introducing a dependency cycle. Upward linking is not an option, since the
Contacts framework does not implement InstallAPI.

The SOFT_LINK_FRAMEWORK macro has been kept in PaymentAuthorizationPresenter
to avoid introducing additional #ifs. This should be fine to keep on iOS,
since the framework will already loaded in the address space, and the call
to dlopen() should be much less expensive.

  • Configurations/WebKit.xcconfig:
  • Platform/cocoa/PaymentAuthorizationPresenter.mm:
11:45 AM Changeset in webkit [269262] by Alan Bujtas
  • 3 edits in trunk/LayoutTests

[LFC] Do not [ ImageOnlyFailure ] all the tests in fast/layoutformattingcontext
https://bugs.webkit.org/show_bug.cgi?id=218446

Many tests pass now.

Reviewed by Simon Fraser.

11:21 AM Changeset in webkit [269261] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Only upload to S3 when running on ews-build.webkit.org (follow-up fix for unit-test).
https://bugs.webkit.org/show_bug.cgi?id=218439

Unreviewed follow-up fix.

  • CISupport/ews-build/steps_unittest.py: Set CURRENT_HOSTNAME to EWS_BUILD_HOSTNAME during TestTransferToS3 unit-tests,

restore it in tearDown so that it doesn't affect any other unit-test.

11:20 AM Changeset in webkit [269260] by Alan Coon
  • 4 edits in branches/safari-610-branch

Cherry-pick r268199. rdar://problem/70952726

Crash under WebKit::WebProcessCache::clear()
https://bugs.webkit.org/show_bug.cgi?id=217480

Reviewed by Geoffrey Garen.

Source/WebKit:

Protect |process| in the responsiveness check lambda in WebProcessCache::addProcessIfPossible().
If we fail to do so and WebProcessCache::clear() gets called while the responsiveness check is
pending, the WebProcessProxy destructor may get called while clear() clears m_pendingAddRequests,
which would resolve the responsiveness check with responsive=false, and cause the lambda to
try and remove the entry from m_pendingAddRequests (while clear() is clearing it).

  • UIProcess/WebProcessCache.cpp: (WebKit::WebProcessCache::addProcessIfPossible):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

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

11:20 AM Changeset in webkit [269259] by Alan Coon
  • 1 edit in branches/safari-610-branch/Source/WebCore/platform/audio/mac/AudioSampleDataSource.mm

Apply patch. rdar://problem/70952670

Cherry-pick part of r268577 to branch.

11:20 AM Changeset in webkit [269258] by Alan Coon
  • 1 edit
    2 adds in branches/safari-610-branch

Apply patch. rdar://problem/70733358

11:13 AM Changeset in webkit [269257] by Chris Dumez
  • 2 edits in trunk/LayoutTests

REGRESSION (r268897): [macOS WK1] inspector/cpu-profiler/threads.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=218253
<rdar://problem/70732755>

Reviewed by Geoffrey Garen.

Check the thread name to identify the 2 worker threads. This is needed so that worklet thread are
not identified as worker threads after r268897.

  • inspector/cpu-profiler/threads.html:
11:01 AM Changeset in webkit [269256] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Crash under ProcessThrottler::setAssertionType()
https://bugs.webkit.org/show_bug.cgi?id=218448
<rdar://problem/67419221>

Reviewed by Geoffrey Garen.

A ProcessThrottler object is owned by its associated AuxiliaryProcessProxy. The crash was happening
in ProcessThrottler::setAssertionType(), we would replace m_assertion with a new "Suspended"
assertion and then crash on the next line when using m_assertion. The reason we crash is that
when we replaced m_assertion with a new assertion, the destruction of the previous assertion
caused the UIProcess's background task to get released (because this was the last non-suspended
process assertion). When we release the UIProcess' background task, we call
WebProcessPool::notifyProcessPoolsApplicationIsAboutToSuspend(), which destroys non-critical
WebProcesses (e.g. WebProcesses in the back/forward cache), which in turns destroy their
ProcessThrottler. As a result, when replacing m_assertion, the ProcessAssertion may get
destroyed, which is why we would crash on the next line when trying to use m_assertion.

To address the issue, we now release the UIProcess's background task asynchronously when
releasing the last non-suspended ProcessAssertion, making sure we still need to release
the assertion beforehand. This has 2 benefits:

  • The ProcessThrottler can no longer get destroyed synchronously when releasing its ProcessAssertion.
  • In the case where the ProcessThrottler replaces a foreground assertion with a background assertion (or vice-versa) and this is the last non-suspended assertion, this avoids unnecessarily releasing and retaking the UIProcess's background task. This also avoids killing non-critical processes unnecessarily.
  • UIProcess/ios/ProcessAssertionIOS.mm:

(-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]):

11:01 AM Changeset in webkit [269255] by Alan Coon
  • 1 copy in branches/safari-611.1.4.0-branch

New branch.

10:59 AM Changeset in webkit [269254] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

[macOS] Remove unneeded shmem access to ColorSync
https://bugs.webkit.org/show_bug.cgi?id=218395
<rdar://problem/70354916>

Reviewed by Per Arne Vollan.

ColorSync on macOS has not used shared memory since Mac OS X 10.7, and our sandbox
should not have this access. Removing this unused shared memory capability.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
10:53 AM Changeset in webkit [269253] by Darin Adler
  • 22 edits
    6 adds in trunk

Start removing functions that implicitly use composed tree
https://bugs.webkit.org/show_bug.cgi?id=218424

Reviewed by Ryosuke Niwa.

Source/WebCore:

Tests: fast/dom/rangeContainsNode.html

fast/dom/rangeContainsRange.html
fast/dom/treeOrder.html

Ryosuke pointed out that most clients should not be using the composed tree, so this
is a step in work to make the use of the composed tree explicit. After that we can
more easily find and correct call sites where use of the composed tree is incorrect.

Likely that most or all cases of treeOrder<ComposedTree> can be changed to just
treeOrder and contains<ComposedTree> to just contains; will do those in follow-ups.

  • Modules/highlight/Highlight.cpp:

(WebCore::repaintRange): Simplified code to use boundary points, and changed to use
treeOrder<ComposedTree>.

  • dom/AbstractRange.h: Export makeSimpleRange so it can be used in Internals.
  • dom/AbstractRange.idl: Export the class so it can be used in Internals.
  • dom/Node.cpp:

(WebCore::parent<ShadowIncludingTree>): Added.
(WebCore::treeOrderForTesting): Added.
(WebCore::documentOrder): Deleted.

  • dom/Node.h: Updated for the above.
  • dom/RadioButtonGroups.cpp:

(WebCore::RadioButtonGroup::members const): Use treeOrder<ComposedTree>.

  • dom/SimpleRange.cpp:

(WebCore::contains): Removed a couple contains functions that implicitly use
composed tree.
(WebCore::containsForTesting): Added.

  • dom/SimpleRange.h: Updated for the above. Should also make contains<Tree> the

default and remove the <Tree> at all call sites, but it's safer to do that in a
separate patch after this is landed and builds on all platforms.

  • editing/Editing.cpp:

(WebCore::isNodeVisiblyContainedWithin): Use contains<ComposedTree>.

  • page/DragController.cpp:

(WebCore::DragController::draggableElement const): Ditto.

  • page/EventHandler.cpp:

(WebCore::EventHandler::dispatchMouseEvent): Ditto. Note that this has a call to
isDescendantOf right next to it, which does not use the composed tree.

  • page/Page.cpp:

(WebCore::Page::findTextMatches): Use treeOrder<ComposedTree>.
(WebCore::replaceRanges): Ditto.

  • page/mac/ServicesOverlayController.mm:

(WebCore::ServicesOverlayController::findTelephoneNumberHighlightContainingSelectionHighlight):
Use contains<ComposedTree>.

  • testing/Internals.cpp:

(WebCore::string): Added.
(WebCore::convertType): Added.
(WebCore::Internals::treeOrder): Added.
(WebCore::Internals::rangeContainsNode): Added.
(WebCore::Internals::rangeContainsRange): Added.

  • testing/Internals.h: Updated for added functions above.
  • testing/Internals.idl: Ditto. These functions were tested in a

TestWebKitAPI test, but we plan to move those types of tests to
internals-based tests instead.

Source/WebKit:

  • WebProcess/WebPage/glib/WebPageGLib.cpp:

(WebKit::WebPage::getPlatformEditorState const): Use contains<ComposedTree>.

Tools:

  • TestWebKitAPI/Tests/WebCore/DocumentOrder.cpp: Moved the tests of documentOrder

for two nodes and contains for range/range or range/node into internals-based tests
in the LayoutTests directory. Eventually we'll move the rest of these tests, too.

LayoutTests:

  • fast/dom/rangeContainsNode-expected.txt: Added.
  • fast/dom/rangeContainsNode.html: Added.
  • fast/dom/rangeContainsRange-expected.txt: Added.
  • fast/dom/rangeContainsRange.html: Added.
  • fast/dom/treeOrder-expected.txt: Added.
  • fast/dom/treeOrder.html: Added.

These tests were formerly part of TestWebKitAPI, although treeOrder was named documentOrder.
Moving to internals-style tests at Ryosuke's suggestion since these are not something exposed
as API or even SPI.

10:35 AM Changeset in webkit [269252] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Remove compiler warning in LLIntData.cpp
https://bugs.webkit.org/show_bug.cgi?id=218443

Patch by Xan Lopez <Xan Lopez> on 2020-11-02
Reviewed by Mark Lam.

Fix compiler warning by casting a scoped enum to its underlying
type. Not allowing implicit type conversions is the whole point of
scoped enums.

  • interpreter/CallFrame.h: remove underlying type specifier, since

we are using the default anyway ('int').

  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions): cast the scoped enum to its
underlying type.

10:11 AM Changeset in webkit [269251] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

Fix link error with WebKit.framework

Undefined symbols for architecture x86_64:

"JSC::GenericTypedArrayView<JSC::Uint8Adaptor>::create(WTF::RefPtr<JSC::ArrayBuffer, WTF::RawPtrTraits<JSC::ArrayBuffer>, WTF::DefaultRefDerefTraits<JSC::ArrayBuffer> >&&, unsigned int, unsigned int)", referenced from:

WebKit::convertToUint8Array(IPC::SharedBufferCopy&&) in UnifiedSource7.o

ld: symbol(s) not found for architecture x86_64

  • GPUProcess/media/RemoteLegacyCDMSessionProxy.cpp:
  • Include <JavaScriptCore/GenericTypedArrayViewInlines.h> to fix linker error with some builds of WebKit.
  • See also WebProcess/GPU/media/RemoteLegacyCDMSession.cpp.
9:56 AM Changeset in webkit [269250] by Alan Coon
  • 8 edits in branches/safari-610-branch/Source

Versioning.

WebKit-7610.3.7

9:23 AM Changeset in webkit [269249] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Don't fail the build on S3 upload failure
https://bugs.webkit.org/show_bug.cgi?id=218438

Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2020-11-02
Reviewed by Aakash Jain.

This allows buildbots to keep going even when S3 is down. Using
S3 is not strictly necessary, as the built product can also be
downloaded from the buildbot server.

Patch-by: aakash_jain@apple.com

  • CISupport/ews-build/steps.py:

(CompileWebKit.evaluateCommand):
(TransferToS3):
(TransferToS3.finished):

8:59 AM Changeset in webkit [269248] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Only upload to S3 when running on ews-build.webkit.org
https://bugs.webkit.org/show_bug.cgi?id=218439

Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2020-11-02
Reviewed by Aakash Jain.

Uploading to S3 is inconvenient for testing instances, so only run this
step if we're executing on ews-build.webkit.org. Otherwise, transfer the
file through the buildbot server.

Patch-by: aakash_jain@apple.com

  • CISupport/ews-build/steps.py:

(TransferToS3.doStepIf):

7:54 AM Changeset in webkit [269247] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests/imported/w3c

Update baselines of tests failing after WPT resync

Unreviewed test gardening.

These tests are failing in several platforms (iOS, Mac, GTK, WPE, ...) with the same diff. Thus, the general expectations file is updated.

  • web-platform-tests/css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-invalid-expected.txt: Needs update after r269187.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing-expected.txt: Needs update after r269235.
6:59 AM Changeset in webkit [269246] by commit-queue@webkit.org
  • 9 edits in trunk

[GLIB] REGRESSION(r269144) imported/w3c/web-platform-tests/css/cssom-view/scrollIntoView-scrollMargin.html is failing
https://bugs.webkit.org/show_bug.cgi?id=218358

Patch by Martin Robinson <mrobinson@igalia.com> on 2020-11-02
Reviewed by Simon Fraser.

Source/WebCore:

Finish some missing pieces of exposing scroll-margin when ENABLE_SCROLL_SNAP is off.
This allows non-scroll-snap ports to use scroll-margin.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle): Move scroll margin code
out of the ENABLE_SCROLL_SNAP block.

  • css/CSSProperties.json: Remove ENABLE_SCROLL_SNAP requirement for scroll-margin properties.
  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue const): Move scroll-margin code out of ENABLE_SCROLL_MARGIN block.
(WebCore::StyleProperties::asText const): Ditto.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::parseSingleValue): Ditto.
(WebCore::CSSPropertyParser::parseShorthand): Ditto.

LayoutTests:

  • platform/glib/TestExpectations: Mark test as passing.
  • platform/gtk/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt: Update expectations.
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt: Ditto.
6:12 AM Changeset in webkit [269245] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Empty lines stay empty even when the imaginary strut is present
https://bugs.webkit.org/show_bug.cgi?id=218420

Reviewed by Antti Koivisto.

Use the more correct runs.isEmpty() check to decide whether the root inline box should stay empty.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

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

12:35 AM Changeset in webkit [269244] by youenn@apple.com
  • 19 edits
    1 add in trunk/Source

Stop sending origins from WebProcess to UIProcess for getUserMedia requests
https://bugs.webkit.org/show_bug.cgi?id=218192

Reviewed by Eric Carlson.

Source/WebCore:

No change of behavior, move UserMediaRequestIdentifier in its own header.
Covered by existing tests.

  • Headers.cmake:
  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::userMediaDocumentOrigin const): Deleted.
(WebCore::UserMediaRequest::topLevelDocumentOrigin const): Deleted.

  • Modules/mediastream/UserMediaRequest.h:
  • Modules/mediastream/UserMediaRequestIdentifier.h:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

Pass directly a UserMediaRequestIdentifier through IPC.
Stop passing origins from IPC and instead compute them from UIProcess side.

  • Scripts/webkit/messages.py:
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::denyRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::grantRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionInvalidRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):

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

(WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):

  • UIProcess/UserMediaPermissionRequestProxy.h:

(WebKit::UserMediaPermissionRequestProxy::create):
(WebKit::UserMediaPermissionRequestProxy::userMediaID const):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
(WebKit::WebPageProxy::enumerateMediaDevicesForFrame):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:

(WebKit::UserMediaPermissionRequestManager::sendUserMediaRequest):
(WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted):
(WebKit::UserMediaPermissionRequestManager::userMediaAccessWasDenied):
(WebKit::UserMediaPermissionRequestManager::enumerateMediaDevices):

  • WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::userMediaAccessWasGranted):
(WebKit::WebPage::userMediaAccessWasDenied):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
12:32 AM Changeset in webkit [269243] by youenn@apple.com
  • 3 edits in trunk/Source/ThirdParty/libwebrtc

Set vpcC box for hardware WebRTC VP9 decoder
https://bugs.webkit.org/show_bug.cgi?id=218337

Reviewed by Eric Carlson.

Hardware VP9 decoder code path requires vpcC box information.
Provide it as part of the video format.
Initialize the vpcC box with a zeroed buffer.

Make sure WebKitVP9Decoder is able to handle dynamically 10 bits or 8 bits frames.

  • Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:

(webrtc::createWebKitVP9Decoder):
(webrtc::startVP9DecoderSession):
(webrtc::WebKitVP9DecoderReceiver::initializeFromFormatDescription):
(webrtc::WebKitVP9DecoderReceiver::pixelBufferPool):
(webrtc::WebKitVP9DecoderReceiver::Decoded):

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderVTBVP9.mm:

(-[RTCVideoDecoderVTBVP9 decodeData:size:timeStamp:]):
(-[RTCVideoDecoderVTBVP9 resetDecompressionSession]):

Note: See TracTimeline for information about the timeline view.