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

Timeline



Oct 12, 2020:

9:52 PM Changeset in webkit [268385] by ysuzuki@apple.com
  • 12 edits in trunk/Source

JIT operations do not need extern "C"
https://bugs.webkit.org/show_bug.cgi?id=217636

Reviewed by Saam Barati.

Source/JavaScriptCore:

Since they are directly embedded by JIT code generator (not linked via linker), they do not need to be C linkage.

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • ftl/FTLOSRExitCompiler.cpp:
  • ftl/FTLOSRExitCompiler.h:
  • ftl/FTLOperations.cpp:
  • ftl/FTLOperations.h:
  • jit/JITOperations.cpp:
  • jit/JITOperations.h:

Source/WebCore:

  • domjit/DOMJITHelpers.h:
  • domjit/JSDocumentDOMJIT.cpp:
7:15 PM Changeset in webkit [268384] by Devin Rousso
  • 17 edits
    1 copy
    2 adds in trunk

CSS "any-pointer:fine" media query false on iPad/Pencil
https://bugs.webkit.org/show_bug.cgi?id=212580
<rdar://problem/63813283>

Reviewed by Wenson Hsieh.

Source/WebKit:

Use +[UIScribbleInteraction isPencilInputExpected] as a proxy for the presence of stylus
devices as there's no way of directly querying for connected stylus devices (especially if
there is no active connection). When the value is changed to YES, notify all WebProcess
immediately. When the value is changed to NO, use an NSTimer to delay notifying all
WebProcess for 10min in case the user starts using their stylus again.

For live-on/tweaking purposes this 10min timeout can be adjusted before the UIProcess is
created with the WKStylusDeviceObserverChangeTimeInterval key in NSUserDefaults.

  • UIProcess/ios/WKStylusDeviceObserver.h: Added.
  • UIProcess/ios/WKStylusDeviceObserver.mm: Added.

(+[WKStylusDeviceObserver sharedInstance]):
(-[WKStylusDeviceObserver init]):
(-[WKStylusDeviceObserver setHasStylusDevice:]):
(-[WKStylusDeviceObserver start]):
(-[WKStylusDeviceObserver stop]):
(-[WKStylusDeviceObserver observeValueForKeyPath:ofObject:change:context:]):
(-[WKStylusDeviceObserver startChangeTimer:]):
(-[WKStylusDeviceObserver changeTimerFired:]):
Use ObjC KVO to listen for changes to +[UIScribbleInteraction isPencilInputExpected].

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::notifyHasStylusDeviceChanged): Added.

  • UIProcess/ios/WebProcessProxyIOS.mm:

(WebKit::WebProcessProxy::platformInitialize):
(WebKit::WebProcessProxy::platformDestroy):
Tell the shared WKStylusDeviceObserver to start listening when creating the WebProcess.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • Shared/WebProcessCreationParameters.h:
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
Use the current state of the shared WKStylusDeviceObserver when creating WebProcess
instead of sending a SetHasStylusDevice message immediately after the WebProcess is
created.

  • WebProcess/WebProcess.messages.in:
  • WebProcess/WebProcess.h:

(WebKit::WebProcess::hasStylusDevice const): Added.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::setHasStylusDevice): Added.
(WebKit::WebProcess::initializeWebProcess):
Update style (including any-pointer) whenever stylus devices change.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::hasStylusDevice): Added.
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const):
Include fine when there is a stylus device.

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

(-[WKMouseDeviceObserver start]):
(-[WKMouseDeviceObserver stop]):
(-[WKMouseDeviceObserver dealloc]): Removed.
Drive-by: use a count of start/stop instead of WebProcessProxy::allProcesses size.

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/iOSStylusSupport.mm: Added.

(iOSStylusSupport.StylusInitiallyDisconnected):
(iOSStylusSupport.StylusInitiallyConnected):
(iOSStylusSupport.StylusLaterDisconnected):
(iOSStylusSupport.StylusLaterConnected):
(iOSStylusSupport.StylusDisconnectedTimeout):

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
7:11 PM Changeset in webkit [268383] by Darin Adler
  • 6 edits in trunk/Source

Eliminate some "using namespace WebCore" cases in global scope
https://bugs.webkit.org/show_bug.cgi?id=217644

Reviewed by Tim Horton.

Source/WebKit:

  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:
  • NetworkProcess/cocoa/WebSocketTaskCocoa.mm:
  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

Move "using namespace WebCore" inside WebKit namespace.

Source/WebKitLegacy/mac:

  • Storage/WebStorageTrackerClient.h: Remove "using namespace WebCore".
7:02 PM Changeset in webkit [268382] by Alan Bujtas
  • 4 edits in trunk

REGRESSION (r268294): [ iOS wk2 ] imported/blink/fast/css/zoomed-intrinsic-width.html is a constant image failure
https://bugs.webkit.org/show_bug.cgi?id=217610
<rdar://problem/70207977>

Reviewed by Antti Koivisto.

Source/WebCore:

InlineTree snaps line boxes to integral values.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::constructContent):

LayoutTests:

  • platform/ios-simulator-wk2/TestExpectations:
6:55 PM Changeset in webkit [268381] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Fix the macCatalyst build ("reference to 'Rect' is ambiguous")
https://bugs.webkit.org/show_bug.cgi?id=217642
<rdar://problem/70224629>

Reviewed by Wenson Hsieh.

  • UIProcess/ios/forms/WKDateTimeInputControl.mm:

(-[WKDateTimePicker initWithView:datePickerMode:]):
(-[WKDateTimePicker shouldPresentGregorianCalendar:]):
(-[WKDateTimePicker controlBeginEditing]):
(-[WKDateTimeInputControl initWithView:]):
An earlier unified source's using namespace WebCore inside namespace WebKit
and then WKDateTimeInputControl's using namespace WebKit in the global namespace
resulted in once-again conflicting definitions of Rect between CSS
code and MacTypes.h.

5:30 PM Changeset in webkit [268380] by Hector Lopez
  • 3 edits in trunk/LayoutTests

[ macOS iOS Debug ] imported/w3c/web-platform-tests/xhr/event-timeout.any.worker.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217641

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
5:02 PM Changeset in webkit [268379] by Hector Lopez
  • 2 edits in trunk/LayoutTests

Test expectation adjustment
https://bugs.webkit.org/show_bug.cgi?id=209073

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:59 PM Changeset in webkit [268378] by Hector Lopez
  • 3 edits in trunk/LayoutTests

Test expectation adjustment
https://bugs.webkit.org/show_bug.cgi?id=209073

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
4:35 PM Changeset in webkit [268377] by aestes@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed build fix after r268367.

  • Configurations/WebKit.xcconfig: Corrected the definition of

WK_PDFKIT_LDFLAGS_maccatalyst.

4:30 PM Changeset in webkit [268376] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit

Cursor window is transparent - but not hidden - when cursor: none is specified
https://bugs.webkit.org/show_bug.cgi?id=217639
<rdar://problem/70006186>

Reviewed by Simon Fraser.

  • Platform/spi/mac/AppKitSPI.h:
  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::setCursor):
Adopt new AppKit SPI to actually hide the cursor when we set it to the "none" shape.
This hiding lives until the next time the app-global cursor shape is changed by any client.]
We'll re-set it the next time we set the "none" shape.

This is important, because on some platforms, hiding the cursor is a performance improvement
over simply making it transparent.

4:21 PM Changeset in webkit [268375] by sbarati@apple.com
  • 3 edits
    1 add in trunk

Array.prototype.sort's sortBucketSort accesses an array in an invalid way that can lead to incorrect results with indexed properties on the prototype chain
https://bugs.webkit.org/show_bug.cgi?id=217634
<rdar://problem/69489404>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/sort-should-not-look-up-prototype-properties.js: Added.

(assert):

Source/JavaScriptCore:

Inside one of Array.prototype.sort's builtin helper methods, we are using an
array as an internal data structure to do some bookkeeping. However, we were
accessing it in such a way that it was reading properties from the prototype
chain. The code is written in a way such that it is only correct if it is
reading self properties (as the prototype chain can be user controlled). The
fix is to set this bookkeeping array's proto to null, so we don't read
from the prototype chain.

  • builtins/ArrayPrototype.js:

(globalPrivate.sortBucketSort):

4:02 PM Changeset in webkit [268374] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

OpToPropertyKey only accepts temporary for destination
https://bugs.webkit.org/show_bug.cgi?id=217471

Reviewed by Saam Barati.

JSTests:

  • stress/spread-to-property-key-constant.js: Added.

Source/JavaScriptCore:

propertyName register can be constant. We should create temporary register if it is necessary for the destination.

  • bytecompiler/NodesCodegen.cpp:

(JSC::ObjectPatternNode::bindValue const):

3:54 PM Changeset in webkit [268373] by Jonathan Bedard
  • 3 edits in trunk/Tools

[webkitcorepy] Attempt to terminate stuck processes before killing them
https://bugs.webkit.org/show_bug.cgi?id=217632
<rdar://problem/70222803>

Reviewed by Dewei Zhu.

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

(run): Killed processes will sometimes not have stdout or stderr, while terminated processes often will.

3:28 PM Changeset in webkit [268372] by commit-queue@webkit.org
  • 17 edits
    1 move in trunk/Source

[GPU Process]: Replace "ImageBufferIdentifier" by a generic identifier named "RemoteResourceIdentifier"
https://bugs.webkit.org/show_bug.cgi?id=217550

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-10-12
Reviewed by Simon Fraser.

Source/WebCore:

RemoteResourceIdentifier will be used in WebCore when recording drawing
a remote ImageBuffer to another remote ImageBuffer. Eventually it will
be used drawing a remote NativeImage to a remote ImageBuffer or DOM layer.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/RemoteResourceIdentifier.h: Added.

Source/WebKit:

GPU Process needs a universal identifier for drawing cached resources and
drawing buffers and layers. The meaning of RemoteResourceIdentifier will
depend on the context it is used in.

  • GPUProcess/graphics/RemoteImageBufferMessageHandlerProxy.cpp:

(WebKit::RemoteImageBufferMessageHandlerProxy::RemoteImageBufferMessageHandlerProxy):
(WebKit::RemoteImageBufferMessageHandlerProxy::createBackend):
(WebKit::RemoteImageBufferMessageHandlerProxy::commitFlushContext):

  • GPUProcess/graphics/RemoteImageBufferMessageHandlerProxy.h:
  • GPUProcess/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::create):
(WebKit::RemoteImageBufferProxy::RemoteImageBufferProxy):

  • GPUProcess/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::createImageBuffer):
(WebKit::RemoteRenderingBackendProxy::releaseRemoteResource):
(WebKit::RemoteRenderingBackendProxy::getImageData):
(WebKit::RemoteRenderingBackendProxy::flushImageBufferDrawingContext):
(WebKit::RemoteRenderingBackendProxy::flushImageBufferDrawingContextAndCommit):
(WebKit::RemoteRenderingBackendProxy::releaseImageBuffer): Deleted.

  • GPUProcess/graphics/RemoteRenderingBackendProxy.h:
  • GPUProcess/graphics/RemoteRenderingBackendProxy.messages.in:
  • Scripts/webkit/messages.py:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/RemoteImageBufferMessageHandler.cpp:

(WebKit::RemoteImageBufferMessageHandler::RemoteImageBufferMessageHandler):
(WebKit::RemoteImageBufferMessageHandler::~RemoteImageBufferMessageHandler):
(WebKit::RemoteImageBufferMessageHandler::getImageData const):
(WebKit::RemoteImageBufferMessageHandler::flushDrawingContext):
(WebKit::RemoteImageBufferMessageHandler::flushDrawingContextAndWaitCommit):

  • WebProcess/GPU/graphics/RemoteImageBufferMessageHandler.h:

(WebKit::RemoteImageBufferMessageHandler::remoteResourceIdentifier const):
(WebKit::RemoteImageBufferMessageHandler::imageBufferIdentifier const): Deleted.

  • WebProcess/GPU/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::createImageBuffer):
(WebKit::RemoteRenderingBackend::releaseRemoteResource):
(WebKit::RemoteRenderingBackend::createImageBufferBackend):
(WebKit::RemoteRenderingBackend::commitImageBufferFlushContext):
(WebKit::RemoteRenderingBackend::releaseImageBuffer): Deleted.

  • WebProcess/GPU/graphics/RemoteRenderingBackend.h:
  • WebProcess/GPU/graphics/RemoteRenderingBackend.messages.in:
3:09 PM Changeset in webkit [268371] by commit-queue@webkit.org
  • 34 edits in trunk

[macOS] Workaround for MAC_OS_X_VERSION_MAJOR incorrectly including minor version when building
with Xcode 12 on macOS Big Sur SUs
https://bugs.webkit.org/show_bug.cgi?id=217602
rdar://70194453

Patch by Luming Yin <luming_yin@apple.com> on 2020-10-12
Reviewed by Darin Adler.

The previous workaround turns out to be ineffective because we can't set the value of
TARGET_MAC_OS_X_VERSION_MAJOR based on a previous value of itself. Introduce a new
variable TARGET_MAC_OS_X_VERSION_MAJOR to determine whether we need to explicitly
adjust MAC_OS_X_VERSION_MAJOR to 110000.

PerformanceTests:

  • DecoderTest/Configurations/DebugRelease.xcconfig:
  • MediaTime/Configurations/DebugRelease.xcconfig:

Source/bmalloc:

  • Configurations/DebugRelease.xcconfig:

Source/JavaScriptCore:

  • Configurations/DebugRelease.xcconfig:

Source/ThirdParty:

  • gtest/xcode/Config/General.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/DebugRelease.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/DebugRelease.xcconfig:

Source/WebCore:

  • Configurations/DebugRelease.xcconfig:

Source/WebCore/PAL:

  • Configurations/DebugRelease.xcconfig:

Source/WebInspectorUI:

  • Configurations/DebugRelease.xcconfig:

Source/WebKit:

  • Configurations/DebugRelease.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/DebugRelease.xcconfig:

Source/WTF:

  • Configurations/DebugRelease.xcconfig:

Tools:

  • ContentExtensionTester/Configurations/DebugRelease.xcconfig:
  • DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
  • ImageDiff/cg/Configurations/DebugRelease.xcconfig:
  • MiniBrowser/Configurations/DebugRelease.xcconfig:
  • TestWebKitAPI/Configurations/DebugRelease.xcconfig:
  • WebEditingTester/Configurations/DebugRelease.xcconfig:
  • WebKitTestRunner/Configurations/DebugRelease.xcconfig:
  • lldb/lldbWebKitTester/Configurations/DebugRelease.xcconfig:
2:54 PM Changeset in webkit [268370] by weinig@apple.com
  • 17 edits
    1 move
    3 adds in trunk/Tools

Share TestFeatures and TestCommand infrastructure between DumpRenderTree and WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=217614

Reviewed by Dean Jackson.

Move TestFeatures and TestCommand code from WebKitTestRunner to TestRunnerShared
and adopt shared code in both WebKitTestRunner and DumpRenderTree.

This allows us to remove duplicate argument and test header parsing code and
avoid updating both when we want want change things.

To support different sets of test header options, featureDefaultsFromTestHeaderForTest now
has a parameter for a key type map, rather than the old hardcoded set. This allows
WebKitTestRunner and DumpRenderTree, which currently have slightly different options
to continue to behave in the same way. Eventually, it will probably make sense to have these
mostly generated from the WebPreferences*.yaml configuration files.

Matching precedent, shared files use the WTR namespace.

  • DumpRenderTree/CMakeLists.txt:
  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
  • TestRunnerShared/CMakeLists.txt:
  • WebKitTestRunner/CMakeLists.txt:
  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:

Add new files.

  • DumpRenderTree/DumpRenderTree.h:

Removes TestCommand and parseInputLine now that they come from shared TestCommand.h

  • DumpRenderTree/DumpRenderTreeCommon.cpp: Removed.

Moved contents to shared TestCommand.cpp

  • DumpRenderTree/TestOptions.cpp:
  • DumpRenderTree/TestOptions.h:

Adopt model from WebKitTestRunner and use initialization from TestFeatures.

  • DumpRenderTree/mac/DumpRenderTree.mm:

Adopt shared TestFeatures and TestCommand infrastructure. Construct TestOptions
in a similar manner to WebKitTestRunner by merging together hardcoded / path based
features and test header based features.

  • DumpRenderTree/mac/UIDelegate.h:
  • DumpRenderTree/mac/UIDelegate.mm:

Update for new namespace.

  • TestRunnerShared/TestCommand.cpp: Added.
  • TestRunnerShared/TestCommand.h: Added.
  • TestRunnerShared/TestFeatures.cpp: Added.
  • TestRunnerShared/TestFeatures.h: Added.
  • WebKitTestRunner/TestController.cpp:
  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestOptions.cpp:
  • WebKitTestRunner/TestOptions.h:

Moved from WebKitTestRunner. Generalized to TestFeatures to take a key type map,
rather than hard coding it. Replace use of WebKit types, like WKURLRef, with std::string
and std::filesystem::path.

2:35 PM Changeset in webkit [268369] by Chris Dumez
  • 6 edits in trunk

AudioWorkletGlobalScope should perform a microtask checkpoint after each rendering quantum
https://bugs.webkit.org/show_bug.cgi?id=217624

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that it is passing.

  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-promises.https-expected.txt:

Source/WebCore:

AudioWorkletGlobalScope should perform a microtask checkpoint after each rendering quantum:

Because JSC drains its microtask queue when releasing the API lock, the AudioWorkletGlobalScope
grabs the API lock at the beginning of each render quantum, then the process() functions get
called for each AudioWorkletProcessor, and finally the AudioWorkletGlobalScope releases the
API lock at the end of the render quantum so that the microtask queue is drained then, as per
the specification.

No new tests, rebaselined existing tests.

  • Modules/webaudio/AudioDestinationNode.cpp:

(WebCore::AudioDestinationNode::render):

  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::handlePreRenderTasks):
(WebCore::AudioWorkletGlobalScope::handlePostRenderTasks):

  • Modules/webaudio/AudioWorkletGlobalScope.h:
2:02 PM Changeset in webkit [268368] by Chris Dumez
  • 8 edits in trunk

Calling AudioContext.resume() right after AudioContext.suspend() should not be a no-op
https://bugs.webkit.org/show_bug.cgi?id=217628

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline WPT test that is now passing.

  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/process-parameters.https-expected.txt:

Source/WebCore:

We had an issue with our implementation of AudioContext's suspend() / resume(). Both functions
would update the AudioContext's state asynchronously (as per specification [1][2]) but would
check the state syncronously and return early if the state is already as expected (which is
not as per specification). This meant that calling suspend() then resume() right away would
leave the context suspended instead of running.

[1] https://www.w3.org/TR/webaudio/#dom-audiocontext-suspend
[2] https://www.w3.org/TR/webaudio/#dom-audiocontext-resume

No new tests, rebaselined existing test.

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::setState):
(WebCore::BaseAudioContext::suspendRendering):
(WebCore::BaseAudioContext::resumeRendering):

LayoutTests:

Unskip test that is no longer timing out.

  • webaudio/audiocontext-promise-expected.txt:
  • webaudio/audiocontext-promise.html:

Udpate existing layout test to reflect behavior change.

1:16 PM Changeset in webkit [268367] by aestes@apple.com
  • 4 edits in trunk/Source

[macCatalyst] Enable WKPDFView
https://bugs.webkit.org/show_bug.cgi?id=217403
<rdar://problem/48217791>

Reviewed by Tim Horton.

Source/WebKit:

  • Configurations/WebKit.xcconfig: Linked PDFKit.framework when building for the Catalyst

variant on Big Sur or later.

Source/WTF:

  • wtf/PlatformEnableCocoa.h: Enabled WKPDFView when building for the Catalyst variant on

Big Sur or later.

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

Fix wheel event region overlay painting
https://bugs.webkit.org/show_bug.cgi?id=217619

Reviewed by Antti Koivisto.

TWo changes related to wheel event region overlay painting.

First, the painted debug regions were misplaced inside overflow:scroll, because
RenderLayerBacking::paintDebugOverlays() used contentOffsetInCompositingLayer() rather than
graphicsLayer->offsetFromRenderer() - the scrolled contents layer can have a different
offsetFromRenderer to the other GraphicsLayers for a given RenderLayerBacking.

Second, with ENABLE(WHEEL_EVENT_REGIONS) we paint the wheel event regions in
RenderLayerBacking::paintDebugOverlays() so MouseWheelRegionOverlay should not also paint
the old ones.

  • page/DebugPageOverlays.cpp:

(WebCore::MouseWheelRegionOverlay::updateRegion):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::paintDebugOverlays):

11:37 AM Changeset in webkit [268365] by Chris Dumez
  • 30 edits in trunk

Use AudioWorkletProcessor to process audio
https://bugs.webkit.org/show_bug.cgi?id=217531

Reviewed by Youenn Fablet and Saam Barati.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

  • web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-process-frozen-array.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-process-zero-outputs.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-promises.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/process-getter.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processor-construction-port.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/simple-input-output.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/no-cors.https-expected.txt:

Source/WebCore:

Use AudioWorkletProcessor to process audio:

The AudioWorkletNode logic is based on the Blink implementation at:

This was the last piece of logic needed to make AudioWorklet functional.
I did not enable AudioWorklets by default in this patch though because
there are still some test failures that we should investigate first.
Most AudioWorklet tests are passing though.

No new tests, rebaselined existing tests.

  • Modules/webaudio/AudioParam.h:

Return a const reference to avoid refcounting churn.

  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::createProcessor):
After the JSAudioWorkletProcessor, we construct a JSCallbackData from the
JSAudioWorkletProcessor and the global object and call a setter on the
AudioWorkletProcessor. The processor will use this when process() is called
to forward the call to process() in JavaScript.

  • Modules/webaudio/AudioWorkletNode.cpp:

(WebCore::AudioWorkletNode::create):

  • Move the logic dealing with AudioParam objects to its own initializeAudioParameters()

function.

  • Call context.refNode(node) so that the node is kept alive by the audio context until playback is finished. The call to context().notifyNodeFinishedProcessing(this) in didFinishProcessingOnRenderingThread() is what notifies the context that we finished playback and allows the node to get destroyed. This is similar to what is done for AudioScheduledSourceNodes.
  • Call updatePullStatus() so that the node gets added to the automatic pull list if it does not have any outputs. Otherwise, the node would not be used for rendering if it did not have any outputs.

(WebCore::AudioWorkletNode::AudioWorkletNode):
(WebCore::AudioWorkletNode::~AudioWorkletNode):

(WebCore::AudioWorkletNode::initializeAudioParameters):
This logic was mostly moved from the create() function. The part that's new is the
initialization of m_paramValuesMap to fill it with empty audio arrays. These arrays
are used in process() to store the samples from AudioParam objects.

(WebCore::AudioWorkletNode::setProcessor):
Fire a processor error if the processor gets set to nullptr, indicating that we failed
to construct the AudioWorkletProcessor object.

(WebCore::AudioWorkletNode::process):
Fill m_paramValuesMap with samples from associated AudioParam objects then call
AudioWorkletProcessor::process() with input & output AudioBus objects, as well
as m_paramValuesMap. If process() returns false or encountered an error, we finish
rendering.

(WebCore::AudioWorkletNode::didFinishProcessingOnRenderingThread):
This is called by process() whenever process() returns false or encountered an error.
If process() encountered an error, we make sure to fire a processorevent event to
let the script know. Then we null out the processor and finish rendering.

(WebCore::AudioWorkletNode::updatePullStatus):
If the node has no output, we need to make sure to add it to the automatic pull
list in the context so that it is used for rendering.

(WebCore::AudioWorkletNode::checkNumberOfChannelsForInput):
Use same logic as Blink here.

(WebCore::AudioWorkletNode::fireProcessorErrorOnMainThread):
Logic to fire a processorerror event on the main thread with a decent error message.

(WebCore::AudioWorkletNode::activeDOMObjectName const):
(WebCore::AudioWorkletNode::virtualHasPendingActivity const):
ActiveDOMObject overrides.

  • Modules/webaudio/AudioWorkletNode.h:

Subclass AudioWorkletNode since we can fire processorerror events
at any point during rendering.

  • Modules/webaudio/AudioWorkletNode.idl:

Make it an ActiveDOMObject.

  • Modules/webaudio/AudioWorkletProcessor.cpp:

(WebCore::constructJSFloat32Array):
(WebCore::constructJSMap):
(WebCore::constructFrozenJSArray):
(WebCore::copyDataFromJSArrayToBuses):
A bunch of utility functions to convert WebCore types into the suitable
JavaScript types that are expected by the process() function.

(WebCore::AudioWorkletProcessor::process):
Provide implementation for process():

We convert the parameters into the JavaScript types that the JS process()
function expects, then call the process() function and finally return
the value returned by the JS process() function.

(WebCore::AudioWorkletProcessor::setProcessCallback):
This is called by the AudioWorkletGlobalScope right after the AudioWorkletProcessor
wrapper gets constructed to set the JSCallbackData object that is used
by process() to call the JS process() function.

  • Modules/webaudio/AudioWorkletProcessor.h:
  • bindings/js/JSCallbackData.h:

(WebCore::JSCallbackDataStrong::JSCallbackDataStrong):
Make JSCallbackData fast allocated. The bindings and my new code heap-allocate it.

  • dom/ErrorEvent.cpp:

(WebCore::ErrorEvent::ErrorEvent):

  • dom/ErrorEvent.h:

Add an eventType parameter since AudioWorkletNode now needs to dispatch an ErrorEvent
whose type is "processorerror", not the generic "error".

  • dom/MessagePort.cpp:

(WebCore::MessagePort::virtualHasPendingActivity const):
Fix MessagePort garbase collection logic to properly deal with MessagePorts from
worklets. This addresses crashes found by the unskipped layout tests.

LayoutTests:

Unskip all AudioWorklet tests now that they are no longer timing out.

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

[ macOS iOS ] 2 imported/w3c/web-platform-tests/service-workers/service-worker/* tests are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=217617

Unreviewed test gardening.

10:42 AM Changeset in webkit [268363] by youenn@apple.com
  • 23 edits in trunk

Add support for MediaRecorder bitrate getters
https://bugs.webkit.org/show_bug.cgi?id=217383

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/mediacapture-record/MediaRecorder-bitrate.https-expected.txt:
  • web-platform-tests/mediacapture-record/idlharness.window-expected.txt:

Source/WebCore:

Do a first computation of bitrates when creating the recorder as per spec.
Update bit rates when starting the recording.

Covered by rebased tests.

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::startRecording):

  • Modules/mediarecorder/MediaRecorder.h:
  • Modules/mediarecorder/MediaRecorder.idl:
  • platform/mediarecorder/MediaRecorderPrivate.cpp:

(WebCore::MediaRecorderPrivate::updateOptions):

  • platform/mediarecorder/MediaRecorderPrivate.h:

(WebCore::MediaRecorderPrivate::startRecording):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::startRecording):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.h:
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:

(WebCore::AudioSampleBufferCompressor::bitRate const):

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::audioBitRate const):
(WebCore::MediaRecorderPrivateWriter::videoBitRate const):
(WebCore::MediaRecorderPrivate::updateOptions):

  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.h:
  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:

(WebCore::VideoSampleBufferCompressor::bitRate const):

Source/WebKit:

Pipe up bit rates through IPC

  • GPUProcess/webrtc/RemoteMediaRecorder.h:

(WebKit::RemoteMediaRecorder::audioBitRate const):
(WebKit::RemoteMediaRecorder::videoBitRate const):

  • GPUProcess/webrtc/RemoteMediaRecorderManager.cpp:

(WebKit::RemoteMediaRecorderManager::createRecorder):

  • GPUProcess/webrtc/RemoteMediaRecorderManager.h:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.messages.in:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::startRecording):

10:39 AM Changeset in webkit [268362] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WTF

-Wsign-compare warnings in URL.cpp and URLParser.cpp
https://bugs.webkit.org/show_bug.cgi?id=217583

Using unsigned literals where required.

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-10-12
Reviewed by Darin Adler.

  • wtf/URL.cpp:

(WTF::URL::pathStart const):

  • wtf/URLParser.cpp:

(WTF::URLParser::needsNonSpecialDotSlash const):

10:37 AM Changeset in webkit [268361] by youenn@apple.com
  • 3 edits in trunk/LayoutTests

[ iOS ] 2 mediacapture-record tests are a constant failure
https://bugs.webkit.org/show_bug.cgi?id=217263
<rdar://problem/69904225>

Unreviewed.
Marking some tests as slow.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-wk2/TestExpectations:
10:35 AM Changeset in webkit [268360] by youenn@apple.com
  • 2 edits in trunk/LayoutTests

REGRESSION: [ Catalina wk2 ] imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-peerconnection.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217262
<rdar://problem/69904100>

Unreviewed.

  • platform/mac/TestExpectations:

Removed flaky expectation now that it passes consistently.

10:31 AM Changeset in webkit [268359] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Update WebAudioBufferList::zeroFlatBuffer to write up to current size instead of capacity
https://bugs.webkit.org/show_bug.cgi?id=217604
<rdar://problem/70164719>

Reviewed by Eric Carlson.

Covered by http/wpt/mediarecorder/mute-tracks.html.

  • platform/audio/cocoa/WebAudioBufferList.cpp:

(WebCore::WebAudioBufferList::zeroFlatBuffer):
Only set values up to size instead of capacity.
This is a small optimization and makes sure to not trigger ASAN errors.

10:30 AM Changeset in webkit [268358] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

ASSERTION FAILED: REGRESSION(r268052?): WTF::CompletionHandler<void ()>::~CompletionHandler(): Completion handler should always be called !m_function
https://bugs.webkit.org/show_bug.cgi?id=217525
<rdar://problem/70147564>

Reviewed by Eric Carlson.

MediaRecorderPrivateWriter::flushCompressedSampleBuffers cannot take a completion handler since, on destruction
the underlying writer may not call the requestMediaDataWhenReadyOnQueue block.
Instead, for every fetchData call, we store the completion handler in m_fetchDataCompletionHandler.
MediaRecorder is making sure to not call fetchData until the previous one was done.
Then we can call flushCompressedSampleBuffers with a Function instead of a CompletionHandler.
Minor refactoring in fetchData to improve readability.

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::fetchData):
(WebCore::MediaRecorderPrivateWriter::completeFetchData):
(WebCore::MediaRecorderPrivateWriter::updateTimeCode): Deleted.

10:29 AM WebKitGTK/2.30.x edited by Adrian Perez de Castro
(diff)
10:29 AM Changeset in webkit [268357] by Adrian Perez de Castro
  • 3 edits in releases/WebKitGTK/webkit-2.30/Source/WebCore

Merge r268350 - REGRESSION(r256892): [WPE][GTK] Build broken with ENABLE_ACCELERATED_2D_CANVAS=ON
https://bugs.webkit.org/show_bug.cgi?id=217384

Most of the patch by Žan Doberšek.

Reviewed by Darin Adler.

No new tests needed.

  • platform/graphics/cairo/ImageBufferCairoGLSurfaceBackend.cpp: Move the namespace

declaration after the #include statements, to avoid incorrect nested WebCore::WebCore
namespace declarations.
(WebCore::ImageBufferCairoGLSurfaceBackend::create): Add missing semicolon to statement,
use getter for Cairo surface.
(WebCore::ImageBufferCairoGLSurfaceBackend::platformLayer const): Rename from
ImageBuffer::platformLayer.
(WebCore::ImageBufferCairoGLSurfaceBackend::copyToPlatformTexture const): Add missing
first argument.

  • platform/graphics/cairo/ImageBufferCairoGLSurfaceBackend.h: Adapt.
10:18 AM Changeset in webkit [268356] by Darin Adler
  • 3 edits
    14 deletes in trunk/LayoutTests

Selection API: Update some more tests to not *require* non-standard behavior
https://bugs.webkit.org/show_bug.cgi?id=217597

Reviewed by Anders Carlsson.

  • editing/mac/selection/doubleclick-should-not-expand-across-lines-expected.txt:
  • editing/mac/selection/doubleclick-should-not-expand-across-lines.html:

Updated this test and its result to not rely in getSelection() returning a selection
inside a textarea element. Doing that is non-standard incorrect behavior. Instead,
use the selectionStart, selectionEnd, and value methods on the textarea element to
check the same thing in a standard way.

  • editing/selection/DOMSelection-DocumentType-expected.txt: Removed.
  • editing/selection/DOMSelection-DocumentType.html: Removed.
  • editing/selection/addRange.html: Removed.
  • editing/selection/legal-positions-expected.txt: Removed.
  • editing/selection/legal-positions.html: Removed.
  • editing/selection/selection-invalid-offset-expected.txt: Removed.
  • editing/selection/selection-invalid-offset.html: Removed.
  • platform/gtk/editing/selection/addRange-expected.png: Removed.
  • platform/gtk/editing/selection/addRange-expected.txt: Removed.
  • platform/ios/editing/selection/addRange-expected.txt: Removed.
  • platform/mac/editing/selection/addRange-expected.png: Removed.
  • platform/mac/editing/selection/addRange-expected.txt: Removed.
  • platform/win/editing/selection/addRange-expected.txt: Removed.
  • platform/wincairo/editing/selection/addRange-expected.txt: Removed.

These test results expect and require incorrect non-standard behavior.
In most cases they also cover things that are tested by web-platform-tests.
So we don't need to keep these tests around.

10:03 AM Changeset in webkit [268355] by Simon Fraser
  • 14 edits
    2 copies in trunk/Source/WebCore

[LFC Display] Introduce BoxModelBox, and clarify some naming
https://bugs.webkit.org/show_bug.cgi?id=217601

Reviewed by Zalan Bujtas.

Add BoxModelBox, which is a box in the CSS "Box Model" sense; it can draw
backgrounds and borders.

The base class, Box, just represents some rectangular area (e.g. for text).

Rename the "frameRect" functions; "frame" implies relative to the parent, but these
are actually root-relative ("absolute"). It's only BoxModelBox for which the term
"borderBox" makes sense.

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

(WebCore::Display::LayerController::prepareForDisplay):

  • display/css/DisplayBox.cpp:

(WebCore::Display::Box::Box):
(WebCore::Display::Box::debugDescription const):

  • display/css/DisplayBox.h:

(WebCore::Display::Box::Box):
(WebCore::Display::Box::absoluteBoxRect const):
(WebCore::Display::Box::isBoxModelBox const):
(WebCore::Display::Box::borderBoxFrame const): Deleted.

  • display/css/DisplayBoxModelBox.cpp: Copied from Source/WebCore/display/css/DisplayBox.cpp.

(WebCore::Display::BoxModelBox::BoxModelBox):
(WebCore::Display::BoxModelBox::debugDescription const):

  • display/css/DisplayBoxModelBox.h: Copied from Source/WebCore/display/css/DisplayContainerBox.h.

(WebCore::Display::BoxModelBox::BoxModelBox):
(WebCore::Display::BoxModelBox::absoluteBorderBoxRect const):

  • display/css/DisplayCSSPainter.cpp:

(WebCore::Display::CSSPainter::paintBoxDecorations):
(WebCore::Display::CSSPainter::paintBoxContent):
(WebCore::Display::CSSPainter::paintBox):
(WebCore::Display::CSSPainter::recursivePaintDescendants):
(WebCore::Display::CSSPainter::paintStackingContext):
(WebCore::Display::CSSPainter::recursiveCollectLayers):

  • display/css/DisplayCSSPainter.h:
  • display/css/DisplayContainerBox.cpp:

(WebCore::Display::ContainerBox::ContainerBox):
(WebCore::Display::ContainerBox::debugDescription const):

  • display/css/DisplayContainerBox.h:
  • display/css/DisplayImageBox.cpp:

(WebCore::Display::ImageBox::debugDescription const):

  • display/css/DisplayReplacedBox.cpp:

(WebCore::Display::ReplacedBox::ReplacedBox):

  • display/css/DisplayReplacedBox.h:
  • display/css/DisplayTextBox.cpp:

(WebCore::Display::TextBox::debugDescription const):

9:42 AM Changeset in webkit [268354] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

[LFC][Integration] RenderReplaced::positionForPoint should use the iterator
https://bugs.webkit.org/show_bug.cgi?id=217605

Reviewed by Zalan Bujtas.

  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::positionForPoint):

Also remove an unnecessary ensureLineBoxes.

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::positionForPoint):

9:27 AM Changeset in webkit [268353] by commit-queue@webkit.org
  • 34 edits in trunk

[macOS] Workaround for MAC_OS_X_VERSION_MAJOR incorrectly including minor version when building
with Xcode 12 on macOS Big Sur SUs
https://bugs.webkit.org/show_bug.cgi?id=217602
rdar://70194453

Patch by Luming Yin <luming_yin@apple.com> on 2020-10-12
Reviewed by Darin Adler.

Due to a bug in Xcode (rdar://70185899), Xcode 12.0 and Xcode 12.1 Beta incorrectly includes the
minor release number in MAC_OS_X_VERSION_MAJOR, which causes Debug and Release builds of WebKit
to be misconfigured when building on macOS Big Sur SUs, leading to webpages failing to load.

To work around the Xcode bug, when the MAC_OS_X_VERSION_MAJOR includes the minor version number,
drop the minor version number by explicitly setting TARGET_MAC_OS_X_VERSION_MAJOR to 110000.

Note: This change should be reverted after <rdar://70185899> is resolved.

PerformanceTests:

  • DecoderTest/Configurations/DebugRelease.xcconfig:
  • MediaTime/Configurations/DebugRelease.xcconfig:

Source/bmalloc:

  • Configurations/DebugRelease.xcconfig:

Source/JavaScriptCore:

  • Configurations/DebugRelease.xcconfig:

Source/ThirdParty:

  • gtest/xcode/Config/General.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/DebugRelease.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/DebugRelease.xcconfig:

Source/WebCore:

  • Configurations/DebugRelease.xcconfig:

Source/WebCore/PAL:

  • Configurations/DebugRelease.xcconfig:

Source/WebInspectorUI:

  • Configurations/DebugRelease.xcconfig:

Source/WebKit:

  • Configurations/DebugRelease.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/DebugRelease.xcconfig:

Source/WTF:

  • Configurations/DebugRelease.xcconfig:

Tools:

  • ContentExtensionTester/Configurations/DebugRelease.xcconfig:
  • DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
  • ImageDiff/cg/Configurations/DebugRelease.xcconfig:
  • MiniBrowser/Configurations/DebugRelease.xcconfig:
  • TestWebKitAPI/Configurations/DebugRelease.xcconfig:
  • WebEditingTester/Configurations/DebugRelease.xcconfig:
  • WebKitTestRunner/Configurations/DebugRelease.xcconfig:
  • lldb/lldbWebKitTester/Configurations/DebugRelease.xcconfig:
9:24 AM Changeset in webkit [268352] by Wenson Hsieh
  • 5 edits in trunk/Source/WebCore

[MotionMark] Add an inline path data type to represent a circular sector
https://bugs.webkit.org/show_bug.cgi?id=217568

Reviewed by Darin Adler.

The Canvas Arcs subtest consists primarily of two different types of drawing operations: stroking circular arcs
(roughly 80% of paths over the course of the subtest) and filling circular sectors (which accounts for the
remaining 20%). After r268320, when stroking circular arcs, we currently take full advantage of inline path data
by representing a single arc with ArcData. This prevents us from allocating platform CGPath objects for every
stroked arc in the web process, and also reduces the overhead of IPC encoding and decoding when serializing and
deserializing display list items in the GPU process.

However, when filling circular sectors, each sector is a path created by doing the following:

  1. Move to (x, y)
  2. Add an arc
  3. Add a line back to (x, y)

In this scenario, step (3) currently bails us out of the inline ArcData representation. However, since we're
already tracking the fact that we started the path by moving to (x, y), we can change the current hasStart
bool flag on ArcData into a tri-state enum type consisting of ArcOnly, LineAndArc, and ClosedLineAndArc,
and simply transition from LineAndArc to ClosedLineAndArc instead of bailing out of inline path data
entirely. This allows us to entirely eliminate CGPath creation in the web process, and makes it so that we
only reify CGPaths in the GPU process, right before we're using it to paint using CoreGraphics.

No change in behavior.

  • platform/graphics/InlinePathData.h:

(WebCore::ArcData::encode const):
(WebCore::ArcData::decode):

Replace the boolean hasStart flag with the new enum.

  • platform/graphics/Path.cpp:

(WebCore::Path::currentPoint const):

Make it so that asking for currentPoint with inline arc data doesn't fall into the slow case and cause us to
create a CGPath.

(WebCore::Path::addArc):
(WebCore::Path::addLineTo):

In the case where the path is represented by inline ArcData and we're just adding a line back to the start
location, don't fall back to CGPathRef. Instead, just change the ArcData type to ClosedLineAndArc.

  • platform/graphics/Path.h:

(WebCore::Path::inlineData):

Add a private version of the inlineData<T> method that returns a mutable reference to the inline data.

  • platform/graphics/cg/PathCG.cpp:

(WebCore::Path::createCGPath const):

If the type is ClosedLineAndArc, make sure we set up the platform CGPathRef by adding a line back to the
start of the start location.

8:51 AM Changeset in webkit [268351] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (r268294): [ iOS wk2 ] imported/blink/fast/css/zoomed-intrinsic-width.html is a constant image failure
https://bugs.webkit.org/show_bug.cgi?id=217610

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
7:32 AM Changeset in webkit [268350] by Adrian Perez de Castro
  • 3 edits in trunk/Source/WebCore

REGRESSION(r256892): [WPE][GTK] Build broken with ENABLE_ACCELERATED_2D_CANVAS=ON
https://bugs.webkit.org/show_bug.cgi?id=217384

Most of the patch by Žan Doberšek.

Reviewed by Darin Adler.

No new tests needed.

  • platform/graphics/cairo/ImageBufferCairoGLSurfaceBackend.cpp: Move the namespace

declaration after the #include statements, to avoid incorrect nested WebCore::WebCore
namespace declarations.
(WebCore::ImageBufferCairoGLSurfaceBackend::create): Add missing semicolon to statement,
use getter for Cairo surface.
(WebCore::ImageBufferCairoGLSurfaceBackend::platformLayer const): Rename from
ImageBuffer::platformLayer.
(WebCore::ImageBufferCairoGLSurfaceBackend::copyToPlatformTexture const): Add missing
first argument.

  • platform/graphics/cairo/ImageBufferCairoGLSurfaceBackend.h: Adapt.
7:31 AM Changeset in webkit [268349] by commit-queue@webkit.org
  • 11 edits in trunk/Source/WebKit

DownloadProxy::cancel should take a CompletionHandler
https://bugs.webkit.org/show_bug.cgi?id=217547

Patch by Alex Christensen <achristensen@webkit.org> on 2020-10-12
Reviewed by Youenn Fablet.

This paves the way for a new download cancel API that looks like this:

  • (void)cancelByProducingResumeData:(void ()(NSData *resumeData))completionHandler;

In order to do this, we push the legacy didCancel client call into the legacy API implementations.

The resume data will be accessible through this completion handler and the didFail callback
instead of querying the DownloadProxy wrapper for it, so I renamed it to legacyResumeData.

No change in behavior, as verified by existing tests.

  • UIProcess/API/APIDownloadClient.h:

(API::DownloadClient::legacyDidCancel):
(API::DownloadClient::didCancel): Deleted.

  • UIProcess/API/C/WKContext.cpp:

(WKContextSetDownloadClient):

  • UIProcess/API/C/WKDownload.cpp:

(WKDownloadGetResumeData):
(WKDownloadCancel):

  • UIProcess/API/Cocoa/_WKDownload.mm:

(-[_WKDownload cancel]):
(-[_WKDownload resumeData]):

  • UIProcess/API/glib/WebKitDownload.cpp:

(webkit_download_cancel):

  • UIProcess/API/glib/WebKitDownloadClient.cpp:
  • UIProcess/Cocoa/LegacyDownloadClient.h:
  • UIProcess/Cocoa/LegacyDownloadClient.mm:

(WebKit::LegacyDownloadClient::legacyDidCancel):
(WebKit::LegacyDownloadClient::didCancel): Deleted.

  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::cancel):
(WebKit::DownloadProxy::didFail):

  • UIProcess/Downloads/DownloadProxy.h:

(WebKit::DownloadProxy::legacyResumeData const):
(WebKit::DownloadProxy::client):
(WebKit::DownloadProxy::resumeData const): Deleted.

1:45 AM Changeset in webkit [268348] by commit-queue@webkit.org
  • 13 edits in trunk

Improve serialization of scroll-snap-type
https://bugs.webkit.org/show_bug.cgi?id=217469

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

LayoutTests/imported/w3c:

Improve serialization of scroll-snap-type

  • web-platform-tests/css/css-scroll-snap/inheritance-expected.txt: Tests now passing.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-computed-expected.txt: Ditto.

Source/WebCore:

Improve serialization of scroll-snap-type

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::valueForScrollSnapType): Don't include "proximity" in the serialization,
because it is the default value.

LayoutTests:

  • web-platform-tests/css/css-scroll-snap/inheritance-expected.txt: Tests now passing.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-computed-expected.txt: Ditto.
  • css3/scroll-snap/scroll-snap-inherit-expected.txt: Update test to reflect new serialization.
  • css3/scroll-snap/scroll-snap-inherit.html: Ditto.
  • css3/scroll-snap/scroll-snap-initial-expected.txt: Ditto.
  • css3/scroll-snap/scroll-snap-initial.html: Ditto.
  • css3/scroll-snap/scroll-snap-property-computed-style-expected.txt: Ditto.
  • css3/scroll-snap/scroll-snap-property-computed-style.js: Ditto.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-then-proximity-expected.txt: Ditto.
1:10 AM Changeset in webkit [268347] by bshafiei@apple.com
  • 1 copy in tags/Safari-610.2.11.51.1

Tag Safari-610.2.11.51.1.

1:08 AM Changeset in webkit [268346] by bshafiei@apple.com
  • 20 edits in branches/safari-610.2.11.51-branch/Source

Cherry-pick r268330. rdar://problem/70189394

Strip patch version from TARGET_MAC_OS_X_VERSION_MAJOR when building for macOS Big Sur
or later
https://bugs.webkit.org/show_bug.cgi?id=217594
rdar://70188497

Patch by Luming Yin <luming_yin@apple.com> on 2020-10-11
Reviewed by Darin Adler.

To ensure successful Mac Catalyst WebKit builds, strip the patch version from
TARGET_MAC_OS_X_VERSION_MAJOR by using two base:s on MACOSX_DEPLOYMENT_TARGET.

  • Configurations/Base.xcconfig:

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

1:08 AM Changeset in webkit [268345] by bshafiei@apple.com
  • 20 edits in branches/safari-610.2.11.51-branch/Source

Cherry-pick r268327. rdar://problem/70189401

Ignore deployment suffix and identifier when computing major OS version for macOS
Big Sur and newer
https://bugs.webkit.org/show_bug.cgi?id=217584
rdar://70168426

Patch by Luming Yin <luming_yin@apple.com> on 2020-10-11
Reviewed by Darin Adler.

Stop using MACOSX_DEPLOYMENT_TARGET:suffix:identifier to compute major OS versions.
Only use the deployment target base for macOS Big Sur and newer. Keep the manual
definitions for legacy versions of macOS.

  • Configurations/Base.xcconfig:

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

1:04 AM Changeset in webkit [268344] by bshafiei@apple.com
  • 8 edits in branches/safari-610.2.11.51-branch/Source

Versioning.

WebKit-7610.2.11.51.1

12:45 AM Changeset in webkit [268343] by bshafiei@apple.com
  • 1 copy in branches/safari-610.2.11.51-branch

New branch.

Oct 11, 2020:

11:29 PM Changeset in webkit [268342] by weinig@apple.com
  • 22 edits
    1 add in trunk

[Preferences] Introduce string based SPI for WKPreferences to allow tests to change internal behavior without always adding additional SPI
https://bugs.webkit.org/show_bug.cgi?id=217582

Reviewed by Darin Adler.

Source/WebKit:

Add SPI for setting any WebKit preference using the key as defined in the WebPreferences*.yaml
files. This will allow adding testing of non-default behavior that we don't necessarily want to
expose via its own API or SPI.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Scripts/PreferencesTemplates/WebPreferencesGetterSetters.cpp.erb: Added.
  • WebKit.xcodeproj/project.pbxproj:

Add new generated file, WebPreferencesGetterSetters.cpp.

  • Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
  • Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:

Moved getter/setter definitions to WebPreferencesGetterSetters.cpp.erb

  • UIProcess/WebPreferences.cpp:
  • UIProcess/WebPreferences.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetBoolValueForKey):
(WKPreferencesSetDoubleValueForKey):
(WKPreferencesSetUInt32ValueForKey):
(WKPreferencesSetStringValueForKey):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:

Expose new SPI.

Tools:

Adopt new WebKit SPI to set preferences using the keys defined in the WebPreferences*.yaml
files.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize):
Remove need for m_shouldUseAcceleratedDrawing by merging it into the global feature set.

(WTR::TestController::createWebViewWithOptions):
Move WKHTTPCookieStoreDeleteAllCookies() call out of resetPreferencesToConsistentValues
where it did not make sense.

(WTR::TestController::resetPreferencesToConsistentValues):
Replace preference setters that used values from TestOptions with use of the new
WKPreferencesSetBoolValueForKey SPI. Also removes some unnecessary #ifdefs, as the API
it was guarding is always available, though may just be a no-op if the feature is disabled.

(WTR::TestController::resetStateToConsistentValues):
Move Cocoa specific call to WebCoreTestSupport::setAdditionalSupportedImageTypesForTesting to
TestControllerCocoa.mm and Gtk specific call to WKTextCheckerContinuousSpellCheckingEnabledStateChanged
to TestControllerGtk.cpp.

  • WebKitTestRunner/TestController.h:

Remove unimplemented globalFeatureDefaultsForTest() function and now unused m_shouldUseAcceleratedDrawing
member variable.

  • WebKitTestRunner/TestOptions.cpp:

(WTR::TestOptions::boolWKPreferences const):
Add helper to get all the bool options in TestOptions that correspond with WebKit preferences.

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::useAcceleratedDrawing const): Deleted.
(WTR::TestOptions::useMockScrollbars const): Deleted.
(WTR::TestOptions::needsSiteSpecificQuirks const): Deleted.
(WTR::TestOptions::enableIntersectionObserver const): Deleted.
(WTR::TestOptions::enableMenuItemElement const): Deleted.
(WTR::TestOptions::enableKeygenElement const): Deleted.
(WTR::TestOptions::enableModernMediaControls const): Deleted.
(WTR::TestOptions::enablePointerLock const): Deleted.
(WTR::TestOptions::enableWebAuthentication const): Deleted.
(WTR::TestOptions::enableWebAuthenticationLocalAuthenticator const): Deleted.
(WTR::TestOptions::enableInspectorAdditions const): Deleted.
(WTR::TestOptions::allowCrossOriginSubresourcesToAskForCredentials const): Deleted.
(WTR::TestOptions::domPasteAllowed const): Deleted.
(WTR::TestOptions::enableColorFilter const): Deleted.
(WTR::TestOptions::checkForWorldLeaks const): Deleted.
(WTR::TestOptions::shouldIgnoreMetaViewport const): Deleted.
(WTR::TestOptions::enableServiceControls const): Deleted.
(WTR::TestOptions::enableAppNap const): Deleted.
(WTR::TestOptions::enableBackForwardCache const): Deleted.
(WTR::TestOptions::enableCaptureVideoInUIProcess const): Deleted.
(WTR::TestOptions::enableCaptureVideoInGPUProcess const): Deleted.
(WTR::TestOptions::enableCaptureAudioInUIProcess const): Deleted.
(WTR::TestOptions::enableCaptureAudioInGPUProcess const): Deleted.
Remove all getters that are now replaced by boolWKPreferences.
Also, sorts all the lists to make it easier to find things.

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::initializeWebViewConfiguration):
(WTR::TestController::platformCreateWebView):
Remove setting of configuration values that also covered by boolWKPreferences.

(WTR::TestController::cocoaResetStateToConsistentValues):
Move Cocoa specific call here.

  • WebKitTestRunner/gtk/TestControllerGtk.cpp:

(WTR::TestController::platformResetStateToConsistentValues):
Move Gtk specific call here.

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetPreferencesToConsistentValues):
(WTR::TestController::platformConfigureViewForTest):
Remove setting of configuration values that also covered by boolWKPreferences.

  • WebKitTestRunner/win/TestControllerWin.cpp:

(WTR::TestController::platformResetStateToConsistentValues):
Moved default no-op implementation from TestController.cpp now that not all
non-Cocoa platforms use the same implementation.

  • WebKitTestRunner/wpe/TestControllerWPE.cpp:

(WTR::TestController::platformResetStateToConsistentValues):
Moved default no-op implementation from TestController.cpp now that not all
non-Cocoa platforms use the same implementation.

9:58 PM Changeset in webkit [268341] by bshafiei@apple.com
  • 1 copy in tags/Safari-611.1.3.1

Tag Safari-611.1.3.1.

9:35 PM Changeset in webkit [268340] by bshafiei@apple.com
  • 1 copy in tags/Safari-610.3.2

Tag Safari-610.3.2.

7:21 PM Changeset in webkit [268339] by Kocsen Chung
  • 20 edits in branches/safari-611.1.3-branch/Source

Cherry-pick r268330. rdar://problem/70188497

Strip patch version from TARGET_MAC_OS_X_VERSION_MAJOR when building for macOS Big Sur
or later
https://bugs.webkit.org/show_bug.cgi?id=217594
rdar://70188497

Patch by Luming Yin <luming_yin@apple.com> on 2020-10-11
Reviewed by Darin Adler.

To ensure successful Mac Catalyst WebKit builds, strip the patch version from
TARGET_MAC_OS_X_VERSION_MAJOR by using two base:s on MACOSX_DEPLOYMENT_TARGET.

  • Configurations/Base.xcconfig:

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

7:21 PM Changeset in webkit [268338] by Kocsen Chung
  • 20 edits in branches/safari-611.1.3-branch/Source

Cherry-pick r268327. rdar://problem/70168426

Ignore deployment suffix and identifier when computing major OS version for macOS
Big Sur and newer
https://bugs.webkit.org/show_bug.cgi?id=217584
rdar://70168426

Patch by Luming Yin <luming_yin@apple.com> on 2020-10-11
Reviewed by Darin Adler.

Stop using MACOSX_DEPLOYMENT_TARGET:suffix:identifier to compute major OS versions.
Only use the deployment target base for macOS Big Sur and newer. Keep the manual
definitions for legacy versions of macOS.

  • Configurations/Base.xcconfig:

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

7:15 PM Changeset in webkit [268337] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

-Wdeprecated-declarations caused by WKTR using WKBundlePostSynchronousMessage
https://bugs.webkit.org/show_bug.cgi?id=217591

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-10-11
Reviewed by Darin Adler.

Use ALLOW_DEPRECATED_DECLARATIONS_BEGIN/END.

  • WebKitTestRunner/InjectedBundle/InjectedBundle.h:

(WTR::postSynchronousMessage):

7:14 PM Changeset in webkit [268336] by Kocsen Chung
  • 8 edits in branches/safari-611.1.3-branch/Source

Versioning.

WebKit-7611.1.3.1

7:02 PM Changeset in webkit [268335] by Kocsen Chung
  • 8 edits in branches/safari-610-branch/Source

Versioning.

WebKit-7610.3.2

6:38 PM Changeset in webkit [268334] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

GeneratePreferences.rb is noisy
https://bugs.webkit.org/show_bug.cgi?id=217589

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-10-11
Reviewed by Sam Weinig.

Don't print anything when the script is successful. Since it runs during the build, it
should only print errors.

  • Scripts/GeneratePreferences.rb:
6:34 PM Changeset in webkit [268333] by Kocsen Chung
  • 20 edits in branches/safari-610-branch/Source

Cherry-pick r268330. rdar://problem/70189394

Strip patch version from TARGET_MAC_OS_X_VERSION_MAJOR when building for macOS Big Sur
or later
https://bugs.webkit.org/show_bug.cgi?id=217594
rdar://70188497

Patch by Luming Yin <luming_yin@apple.com> on 2020-10-11
Reviewed by Darin Adler.

To ensure successful Mac Catalyst WebKit builds, strip the patch version from
TARGET_MAC_OS_X_VERSION_MAJOR by using two base:s on MACOSX_DEPLOYMENT_TARGET.

  • Configurations/Base.xcconfig:

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

6:34 PM Changeset in webkit [268332] by Kocsen Chung
  • 20 edits in branches/safari-610-branch/Source

Cherry-pick r268327. rdar://problem/70189401

Ignore deployment suffix and identifier when computing major OS version for macOS
Big Sur and newer
https://bugs.webkit.org/show_bug.cgi?id=217584
rdar://70168426

Patch by Luming Yin <luming_yin@apple.com> on 2020-10-11
Reviewed by Darin Adler.

Stop using MACOSX_DEPLOYMENT_TARGET:suffix:identifier to compute major OS versions.
Only use the deployment target base for macOS Big Sur and newer. Keep the manual
definitions for legacy versions of macOS.

  • Configurations/Base.xcconfig:

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

6:25 PM Changeset in webkit [268331] by Darin Adler
  • 9 edits in trunk

[macOS] Harden more build configurations against macOS versions 11 and higher as well as inclusion of patch versions
https://bugs.webkit.org/show_bug.cgi?id=217595

Reviewed by Alexey Proskuryakov.

PerformanceTests:

  • MediaTime/Configurations/Base.xcconfig: Updated to same idiom used elsewhere.

Tools:

  • ContentExtensionTester/Configurations/Base.xcconfig: Updated to same idiom used elsewhere.
  • DumpRenderTree/mac/Configurations/Base.xcconfig: Ditto.
  • ImageDiff/cg/Configurations/Base.xcconfig: Ditto.
  • WebKitTestRunner/Configurations/Base.xcconfig: Ditto.
  • lldb/lldbWebKitTester/Configurations/Base.xcconfig: Ditto.
  • Scripts/webkitpy/common/config/contributors.json: Added contributor Luming Yin, an engineer who works on Safari at

Apple who has been contributing build fixes like these.

6:11 PM Changeset in webkit [268330] by Darin Adler
  • 20 edits in trunk/Source

Strip patch version from TARGET_MAC_OS_X_VERSION_MAJOR when building for macOS Big Sur
or later
https://bugs.webkit.org/show_bug.cgi?id=217594
rdar://70188497

Patch by Luming Yin <luming_yin@apple.com> on 2020-10-11
Reviewed by Darin Adler.

To ensure successful Mac Catalyst WebKit builds, strip the patch version from
TARGET_MAC_OS_X_VERSION_MAJOR by using two base:s on MACOSX_DEPLOYMENT_TARGET.

  • Configurations/Base.xcconfig:
5:39 PM Changeset in webkit [268329] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Build failures and warning under Source/WebCore/layout/integration/
https://bugs.webkit.org/show_bug.cgi?id=217593

Unreviewed, fix two build failures caused by missing #includes. (Forward declarations are
not enough here, we need to #include the necessary header.)

Also, fix an unused function warning when LFC is not enabled.

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-10-11

  • layout/integration/LayoutIntegrationLineIterator.cpp:
  • layout/integration/LayoutIntegrationLineIteratorLegacyPath.h:
  • layout/integration/LayoutIntegrationRunIterator.cpp:
5:16 PM Changeset in webkit [268328] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

-Wreorder in MediaPlayerPrivateRemote.cpp
https://bugs.webkit.org/show_bug.cgi?id=217590

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-10-11
Reviewed by Eric Carlson.

Reorder initializer list to avoid misleading initialization order.

It might be nicer to actually reorder the member variables in the class itself, which would
probably be safe, but that would be a behavior change and I'd rather avoid changing
behavior.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote):

4:34 PM Changeset in webkit [268327] by commit-queue@webkit.org
  • 20 edits in trunk/Source

Ignore deployment suffix and identifier when computing major OS version for macOS
Big Sur and newer
https://bugs.webkit.org/show_bug.cgi?id=217584
rdar://70168426

Patch by Luming Yin <luming_yin@apple.com> on 2020-10-11
Reviewed by Darin Adler.

Stop using MACOSX_DEPLOYMENT_TARGET:suffix:identifier to compute major OS versions.
Only use the deployment target base for macOS Big Sur and newer. Keep the manual
definitions for legacy versions of macOS.

  • Configurations/Base.xcconfig:
4:11 PM Changeset in webkit [268326] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

-Wunused-param in MediaRecorder.cpp
https://bugs.webkit.org/show_bug.cgi?id=217587

Unreviewed, fix build warning

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-10-11

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::isTypeSupported):

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

Unreviewed, mark missing custom getter and setters
https://bugs.webkit.org/show_bug.cgi?id=217500

  • tools/JSDollarVM.cpp:
12:16 PM Changeset in webkit [268324] by commit-queue@webkit.org
  • 4 edits
    4 adds in trunk

Various test-cases from Gecko assert with ASSERTION FAILED: tagName == mmultiscriptsTag or ASSERTION FAILED: tagName == mrootTag
https://bugs.webkit.org/show_bug.cgi?id=202804

Patch by Rob Buis <rbuis@igalia.com> on 2020-10-11
Reviewed by Frédéric Wang.

Source/WebCore:

Both rootTypeOf and scriptTypeOf were expecting the qualified name
to have no prefix, however it is possible in xhtml that prefixes are
set, as seen in the Gecko test cases. Failing to detect the qname
would hit an ASSERT in both cases. So use QualifiedName.matches
which ignores prefixes.

Tests: mathml/scripts-with-prefixes.xhtml

mathml/square-roots-with-prefixes.xhtml

  • mathml/MathMLRootElement.cpp:

(WebCore::rootTypeOf):

  • mathml/MathMLScriptsElement.cpp:

(WebCore::scriptTypeOf):

LayoutTests:

Reduce Gecko test crashes into two tests.

  • mathml/scripts-with-prefixes-expected.txt: Added.
  • mathml/scripts-with-prefixes.xhtml: Added.
  • mathml/square-roots-with-prefixes-expected.txt: Added.
  • mathml/square-roots-with-prefixes.xhtml: Added.
11:21 AM Changeset in webkit [268323] by ysuzuki@apple.com
  • 8 edits
    1 add in trunk

[JSC] arguments.callee should become ThrowTypeError if function has non simple parameter list
https://bugs.webkit.org/show_bug.cgi?id=217574

Reviewed by Darin Adler.

JSTests:

  • stress/arguments-and-non-simple-parameters.js: Added.

(shouldBe):
(ThrowTypeError.Object.getOwnPropertyDescriptor):
(testUnmappedArguments):
(testMappedArguments):
(argumentGenerator2.inner):
(argumentGenerator2):
(argumentGenerator3.inner):
(argumentGenerator3):
(argumentGenerator4):
(argumentGenerator5.inner.inner2):
(argumentGenerator5.inner):
(argumentGenerator5):
(argumentGenerator6):
(argumentGenerator7.inner):
(argumentGenerator7):
(argumentGenerator8.inner):
(argumentGenerator8):
(argumentGenerator9.inner):
(argumentGenerator9):
(argumentGenerator10.inner.inner2):
(argumentGenerator10.inner):
(argumentGenerator10):

  • test262/expectations.yaml:

Source/JavaScriptCore:

We should set ThrowTypeError in ClonedArguments when the callee is strict mode or callee has non simple parameter list[1].
We propagate NonSimpleParameterList information from parser and use it when materializing "callee" property of ClonedArguments.

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

  • parser/Nodes.h:

(JSC::ScopeNode::isStrictMode const):
(JSC::ScopeNode::usesNonSimpleParameterList const):
(JSC::ScopeNode::setFeatures): Deleted.
(JSC::ScopeNode::setUsesArguments): Deleted.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseInner):

  • parser/ParserModes.h:
  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::getOwnPropertySlot):
(JSC::ClonedArguments::materializeSpecials):

  • runtime/ScriptExecutable.h:

(JSC::ScriptExecutable::usesNonSimpleParameterList const):

11:14 AM Changeset in webkit [268322] by ysuzuki@apple.com
  • 4 edits
    1 add in trunk

[JSC] BigInt constructor should be constructible while it always throws an error
https://bugs.webkit.org/show_bug.cgi?id=217575

Reviewed by Darin Adler.

JSTests:

  • stress/is-constructor.js:
  • stress/non-constructable-constructors.js: Added.

(shouldThrow):

Source/JavaScriptCore:

In terms of the spec, BigInt constructor should be a constructor. So we should put constructBigIntConstructor function instead of nullptr.
But it should always throw a TypeError. Error message looks a bit awkward ("TypeError: function is not a constructor..."), but this looks
most intuitive to users. Note that V8 and SpiderMonkey throw similar messages ("is not a constructor").

  • runtime/BigIntConstructor.cpp:

(JSC::BigIntConstructor::BigIntConstructor):
(JSC::JSC_DEFINE_HOST_FUNCTION):

11:03 AM Changeset in webkit [268321] by Darin Adler
  • 7 edits
    1 add
    4 deletes in trunk

REGRESSION (r267761): editing/mac/spelling/autocorrection-contraction.html is a constant timeout on macOS wk2 Debug
https://bugs.webkit.org/show_bug.cgi?id=217548

Reviewed by Alexey Proskuryakov.

Tools:

  • TestRunnerShared/Bindings/JSBasics.cpp:

(WTR::objectProperty): Use JSValueIsObject instead of JSValueToObject. The latter
function is *very* slow when passed undefined or null, creating an exception object
every time, even when we pass nullptr to indicate that we don't want the exception
object, and also invoking debugging machinery to inform the "inspector" about this
exception, which results in logging to the console while running tests. This
inefficiency is something we can fix in JavaScriptCore if we like, and makes it a
bad idea to call the function on undefined and null. And also points out the problem
with passing exceptions to anyone except the caller: there's no reason the inspector
needs to know about the exception in a case like this. Because the uses of this
function in the test runners don't need that behavior of converting non-object values
to objects, it was best just to stop using JSValueToObject entirely.

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage): Use uint64Value here. Just something
missed in my earlier refactoring and spotted while debugging.

LayoutTests:

  • editing/mac/spelling/autocorrection-contraction-expected.html: Added.
  • editing/mac/spelling/autocorrection-contraction-expected.png: Removed.
  • editing/mac/spelling/autocorrection-contraction-expected.txt: Removed.
  • editing/mac/spelling/autocorrection-contraction.html: Simplified this and changed it to a ref test.
  • platform/mac-wk2/editing/mac/spelling/autocorrection-contraction-expected.png: Removed.
  • platform/mac-wk2/editing/mac/spelling/autocorrection-contraction-expected.txt: Removed.
  • platform/win/editing/mac/spelling/autocorrection-contraction-expected.txt: Removed.
  • platform/mac/TestExpectations: Remove failure and timeout expectations for autocorrection-contraction.html.

Both because the slowness in WebKitTestRunner causing the timeout issue was fixed, and because the new
reference test is unlikely to be flaky.

  • platform/wk2/TestExpectations: Removed timeout expectations for two other tests affected by the same

bug in WebKitTestRunner.

9:33 AM Changeset in webkit [268320] by Wenson Hsieh
  • 6 edits in trunk/Source/WebCore

[MotionMark] Computing the fast bounding rect of an arc should not materialize a CGPathRef
https://bugs.webkit.org/show_bug.cgi?id=217563

Reviewed by Darin Adler.

Avoid hitting the slow case when asking for the fast bounding rect of a Path, in the case where the path
consists of a single circular arc. This fast bounding rect is intended to be a conservative way to estimate the
bounds of the path, such that the actual bounds of the path must lie within the bounds of this fast rect. At the
cost of being less accurate, we can make this fast computation much cheaper in the case of a circular arc by
simply returning the bounding rect of the circle containing the arc.

  • platform/graphics/InlinePathData.h:

(WebCore::ArcData::encode const):
(WebCore::ArcData::decode):

Additionally rename what is currently ArcData's offset member to start instead, and hasOffset to
hasStart for clarity. This point optionally provides the starting point of a line segment that is connected to
the circular arc defined by the center point, radius, and start and end angles. Note that this starting point
needs to be included in the fast bounding rect computation for this reason (see above).

  • platform/graphics/Path.cpp:

(WebCore::Path::addArc):
(WebCore::Path::fastBoundingRect const):
(WebCore::Path::fastBoundingRectFromInlineData const):
(WebCore::Path::boundingRectFromInlineData const):

  • platform/graphics/Path.h:
  • platform/graphics/cg/PathCG.cpp:

(WebCore::Path::createCGPath const):

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::StrokePath::localBounds const):

Also, use the fast bounding rect when estimating localBounds of the StrokePath item; these local bounds are
only used in an optimization that skips display list items during playback, based on the extent of the item, so
it's safe to use extents that are potentially inflated. Using the fast bounding rect also helps in the case of
the more complex paths encountered in the Canvas Paths subtest of MotionMark, where each Path contains multiple
components and cannot be expressed solely with inline path data.

9:12 AM Changeset in webkit [268319] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Support json encoding of Commit object
https://bugs.webkit.org/show_bug.cgi?id=217533
<rdar://problem/70151709>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/commit.py:

(Commit.repr): Support identifiers being 0.
(Commit.Encoder): Encode commit as dictionary.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/commit_unittest.py:
3:26 AM Changeset in webkit [268318] by ysuzuki@apple.com
  • 4 edits in trunk

[JSC] LowerCase when LanguageTag checks duplicate variants
https://bugs.webkit.org/show_bug.cgi?id=217571

Reviewed by Ross Kirsling.

JSTests:

  • stress/intl-language-tag.js:

Source/JavaScriptCore:

Since Unicode LanguageTag is case insensitive, we need to recognize "VARIANT0" and "variant0" are the same language tag variants.
To achieve that, we perform toASCIILower when computing VariantCode.

  • runtime/IntlObject.cpp:

(JSC::parseVariantCode):

1:48 AM Changeset in webkit [268317] by ysuzuki@apple.com
  • 2 edits in trunk/Tools

Unreviewed, fix WK2 Debug test failures
https://bugs.webkit.org/show_bug.cgi?id=217500

WebKitTestRunner also uses WebCoreTestSupport's JIT operations so we need to populate them too.

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::initialize):

Note: See TracTimeline for information about the timeline view.