Timeline



Oct 13, 2020:

8:20 PM Changeset in webkit [268443] by rniwa@webkit.org
  • 3 edits in trunk

IPC testing JS API should expose a reply and describe the list of arguments for each message
https://bugs.webkit.org/show_bug.cgi?id=217565

Fixed the tests.

  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:
8:03 PM Changeset in webkit [268442] by sbarati@apple.com
  • 3 edits
    1 add in trunk

JSObject::getPropertyNames should have a stack overflow check
https://bugs.webkit.org/show_bug.cgi?id=217677
<rdar://problem/69286436>

Reviewed by Tadeu Zagallo.

JSTests:

  • stress/get-property-names-stack-overflow.js: Added.

Source/JavaScriptCore:

A prototype chain can be long enough where the recursion causes a stack
overflow. The attached test case uses $vm to mimic such a prototype chain
by using JSProxy to make a cyclic prototype chain. But the same works by
making a prototype chain very long, but the test case takes too long to
run to justify landing. For posterity, the alternate test case is:

`
function makeLongProtoChain(length) {

let object = /foo/;
for (let i = 0; i < length; ++i) {

next = /foo/;
next.proto = object;
object = next;

}
return object;

}

let o = makeLongProtoChain(30000);
for (let q in o) {}
`

  • runtime/JSObject.cpp:

(JSC::JSObject::getPropertyNames):

6:30 PM Changeset in webkit [268441] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (iOS 14): [ iOS wk2 ] 12 2d.gradient.radial WPT tests are a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217690

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
6:10 PM Changeset in webkit [268440] by Jonathan Bedard
  • 3 edits in trunk/Tools

[webkitscmpy] Add git-webkit find (Follow up fix)
https://bugs.webkit.org/show_bug.cgi?id=217534
<rdar://problem/70152431>

Unreviewed follow up fix.

  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Version bump.
  • Scripts/libraries/webkitscmpy/setup.py: "program" was not a directory in the landed change.
5:43 PM Changeset in webkit [268439] by Alan Coon
  • 4 edits in branches/safari-610.2.11.0-branch

Revert r268206. rdar://problem/70258965

5:28 PM Changeset in webkit [268438] by Hector Lopez
  • 2 edits in trunk/LayoutTests

[ macOS ] inspector/page/overrideSetting-ITPDebugModeEnabled.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217686

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
5:23 PM Changeset in webkit [268437] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (iOS 14): [ iOS wk2 ] accessibility tests are a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=217687

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
5:19 PM Changeset in webkit [268436] by Megan Gardner
  • 6 edits
    3 adds in trunk

Paint CSS highlights over images
https://bugs.webkit.org/show_bug.cgi?id=217417
Source/WebCore:

<rdar://problem/58459054>

Reviewed by Darin Adler.

Add support to paint CSS pseudo highlights over images that are in the
range of the defined highlight.

Test: http/wpt/css/css-highlight-api/highlight-image.html

  • rendering/HighlightData.cpp:

(WebCore::HighlightData::highlightStateForRenderer):

  • rendering/HighlightData.h:
  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::potentialHighlightColor const):
(WebCore::RenderReplaced::paint):

  • rendering/RenderReplaced.h:

LayoutTests:

Reviewed by Darin Adler.

  • http/wpt/css/css-highlight-api/highlight-image-expected-mismatched.html: Added.
  • http/wpt/css/css-highlight-api/highlight-image.html: Added.
5:16 PM commit-identifiers edited by Jonathan Bedard
(diff)
5:14 PM Changeset in webkit [268435] by weinig@apple.com
  • 5 edits in trunk/Source/WebCore

[WebIDL] Add support for identifiers with dashes ('-')
https://bugs.webkit.org/show_bug.cgi?id=217667

Reviewed by Darin Adler.

To support CSSStyleDeclaration.idl correctly, we need to add support for dashes ('-')
in WebIDL identifers.

  • bindings/scripts/IDLParser.pm:

Update identifer regular expression to match current spec which allows for dashes ('-').

  • bindings/scripts/CodeGeneratorJS.pm:

(MangleAttributeOrFunctionName):
Helper to centralize mangling required to construct valid c++ identifiers from the WebIDL
identifiers, since now WebIDL identifiers can contain dashes ('-'), which is not valid in
c++. For now, we use a very simple mangling which replaces all dashes ('-') with the string
"_dash_".

(GetAttributeGetterName):
(GetAttributeSetterName):
(GetFunctionName):
Clarify and cleanup logic a bit and call the new mangler.

(GenerateImplementation):
GetAttributeGetterName will now always use the $className, so this caller needs to actually
pass the right value in. Previously, the $generatorName it passed in was not actually used.
Also removes some duplicate definitions of $interfaceName.

  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/TestObj.idl:

Adds tests for various combinations of underscores and dashes in identifiers.

4:57 PM Changeset in webkit [268434] by Alan Coon
  • 1 copy in tags/Safari-610.2.11.1.2

Tag Safari-610.2.11.1.2.

4:53 PM Changeset in webkit [268433] by Jonathan Bedard
  • 9 edits
    2 copies
    2 adds in trunk/Tools

[webkitscmpy] Add git-webkit find
https://bugs.webkit.org/show_bug.cgi?id=217534
<rdar://problem/70152431>

Reviewed by Dewei Zhu.

  • Scripts/git-webkit: Added.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/arguments.py:

(NoAction.call):
(CountAction): Create an action to increment or decrement a variable by a value.
(CallbackAction): Create an action which will trigger a callback when set.
(LoggingGroup): Create a group which allows the user to change logging behavior.

  • Scripts/libraries/webkitscmpy/git-webkit: Added.
  • Scripts/libraries/webkitscmpy/setup.py: Add webkitscmpy.program and git-webkit.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/commit.py:

(Commit): Make the 12 character hash based on a class variable.

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

(Git.default_branch): Fallback to 'master' or 'main' if the remote isn't available.
(Git.find): Use git to match branches and tags to a hash instead of trying to do it ourselves.

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

(Scm.find): Add function to convert generic string arguments to a commit, and then find that commit in
the repository.

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

(Svn): Support a few different SVN binary paths.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py: Add rev-parse branch/tag/HEAD -> hash conversion.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program.py: Added.

(Command): Base class for all commands.
(Find):
(Find.parser): Configure parser for 'find' sub-program.
(Find.main): Given an identifier, revision, hash or branch name, find and print the matching commit from
(main): Entry point to git-<project> scripts.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/find_unittest.py: Added.

(TestFind):
(TestFind.test_basic_git):
(TestFind.test_basic_git_svn):
(TestFind.test_basic_svn):
(TestFind.test_branch_tilde):
(TestFind.test_identifier_git):
(TestFind.test_identifier_git_svn):
(TestFind.test_identifier_svn):
(TestFind.test_hash):
(TestFind.test_revision_svn):
(TestFind.test_revision_git_svn):
(TestFind.test_standard):

4:28 PM Changeset in webkit [268432] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Null dereference in PDFPlugin::snapshot()
https://bugs.webkit.org/show_bug.cgi?id=217668

Patch by Julian Gonzalez <julian_a_gonzalez@apple.com> on 2020-10-13
Reviewed by Ryosuke Niwa.

Source/WebKit:

Add a null pointer check in PDFPlugin's snapshot method
to prevent a crash if the backing store's size
isn't sufficient for the ShareableBitmap.

Test: plugins/pdf-plugin-null-onloaddeddata.html

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::snapshot):

LayoutTests:

Add new pass-if-no-crash test to catch crash in PDFPlugin
snapshotting.

  • plugins/pdf-plugin-null-onloaddeddata-expected.txt: Added.
  • plugins/pdf-plugin-null-onloaddeddata.html: Added.
4:20 PM Changeset in webkit [268431] by rniwa@webkit.org
  • 13 edits
    2 adds in trunk

IPC testing JS API should expose a reply and describe the list of arguments for each message
https://bugs.webkit.org/show_bug.cgi?id=217565

Reviewed by Geoffrey Garen.

Source/WebKit:

This patch makes IPC.sendMessage and IPC.sendSyncMessage decode the reply. IPC.sendSyncMessage now returns
a dictionary with two keys: "buffer" and "arguments", the first of which returns ArrayBuffer of the decoded
message reply and the second of which is an array of decoded arguments where there was an appropriate JS
binding code existed for the argument type. IPC.sendMessage now returns a Promise which can either resolve
with the same dictionary as IPC.sendSyncMessage or reject when the decoding fails.

In addition, this patch exposes a dictionary describing each IPC message argument's type and parameter name.

In order to add these two functionalities, this patch adds a new step in generate-message-receiver.py to
generate MessageArgumentDescriptions.cpp, which contains functions which know how to decode arguments of
any IPC message and create a JS dictionary describing it as well as functions that return descriptions of
arguments or reply arguments.

Finally, this patch adds encoders for a few types found to be very common after r268239 had been landed.

Tests: TestWebKitAPI.IPCTestingAPI.DecodesReplyArgumentsForPrompt

TestWebKitAPI.IPCTestingAPI.DecodesReplyArgumentsForAsyncMessage
TestWebKitAPI.IPCTestingAPI.DescribesArguments

  • CMakeLists.txt:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Platform/IPC/Decoder.h:

(IPC::Decoder::buffer const):

  • Platform/IPC/JSIPCBinding.h: Added.

(jsValueForDecodedArgumentValue): Added. A template function to construct a JS value for a given C++ value.
(jsValueForDecodedNumericArgumentValue): Added. A helper for constructing a JS value for numeric values.
(jsValueForDecodedArgumentRect): Added. Ditto for IntRect and FloatRect.
(DecodedArgumentJSValueConverter): Added. A helper class to construct JS values for a tuple of values using
partial template specializations.
(DecodedArgumentJSValueConverter::convert): Added.
(jsValueForArgumentTuple): Added. A helper to construct a JS array for the decoded IPC arguments.
(jsValueForDecodedArguments): Added.

  • Platform/IPC/MessageArgumentDescriptions.h: Added.

(IPC::ArgumentDescription): Added.

  • Scripts/generate-message-receiver.py:

(main): Generate MessageArgumentDescriptions.cpp.

  • Scripts/webkit/messages.py:

(headers_for_type): Removed the special case for PaymentMethodUpdate now that it's in its own header. Also
added made webrtc::WebKitEncodedFrameInfo include LibWebRTCEnumTraits.h as it uses webrtc::VideoFrameType.
(collect_header_conditions_for_receiver): Extracted from generate_message_handler.
(generate_header_includes_from_conditions): Ditto.
(generate_message_handler):
(generate_js_value_conversion_function): Added.
(generate_js_argument_descriptions): Added.
(generate_message_argument_description_implementation): Added.

  • Shared/ApplePay/ApplePayPaymentSetupFeaturesWebKit.h: Fixed a bug that we were not forward declaring NSArray.
  • SourcesCocoa.txt: Added MessageArgumentDescriptions.cpp as a non-unified cpp file as its size is around 1MB.
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/IPCTestingAPI.cpp:

(WebKit::IPCTestingAPI::JSIPC::staticValues): Added the session ID and page ID as static variables.
(WebKit::IPCTestingAPI::encodePointType): Added.
(WebKit::IPCTestingAPI::encodeRectType): Fixed the bug was that this code wasn't checking for any exceptions.
(WebKit::IPCTestingAPI::encodeNumericType): Renamed from encodeIntegralType since this function is now used
to encode double and float, not just integral types.
(WebKit::IPCTestingAPI::encodeArgument): Added the support for IntPoint, FloatPoint, URL, RegistrableDomain,
double, and float all of which turned out to be in the top 20 most common types.
(WebKit::IPCTestingAPI::jsResultFromReplyDecoder): Added.
(WebKit::IPCTestingAPI::JSIPC::sendMessage): Added the code to return Promise when there is a reply and resolve
it with the JS object describing the decoded argument. We use messageReplyArgumentDescriptions to figure out
whether there is a reply or not.
(WebKit::IPCTestingAPI::JSIPC::sendSyncMessage): Decode the reply and return a JS object which describes it.
(WebKit::IPCTestingAPI::JSIPC::frameID): Renamed from frameIdentifier to be consistent.
(WebKit::IPCTestingAPI::JSIPC::pageID): Added.
(WebKit::IPCTestingAPI::JSIPC::sessionID): Added.
(WebKit::IPCTestingAPI::createJSArrayForArgumentDescriptions): Added.
(WebKit::IPCTestingAPI::JSIPC::messages): Added the code to generate descriptions for arguments.

Tools:

Added tests for decoding replies for sync and async messages and one for argument descriptions.

  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:

(-[IPCTestingAPIDelegate webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler:]):
(-[IPCTestingAPIDelegate _webView:webContentProcessDidTerminateWithReason:]):
(IPCTestingAPI.DecodesReplyArgumentsForPrompt):
(IPCTestingAPI.DecodesReplyArgumentsForAsyncMessage):
(IPCTestingAPI.DescribesArguments):

4:01 PM Changeset in webkit [268430] by Alan Coon
  • 1 copy in tags/Safari-611.1.3.2

Tag Safari-611.1.3.2.

3:49 PM Changeset in webkit [268429] by aakash_jain@apple.com
  • 5 edits in trunk/Tools

[build.webkit.org] Rename slave to worker in config.json
https://bugs.webkit.org/show_bug.cgi?id=217672

Reviewed by Dewei Zhu.

  • BuildSlaveSupport/build.webkit.org-config/config.json: Renamed slaves to workers and slavenames to workernames.

Also deleted unused entry for test-slave.

  • BuildSlaveSupport/build.webkit.org-config/loadConfig.py: Renamed slave to worker.
  • BuildSlaveSupport/build.webkit.org-config/loadConfig_unittest.py: Ditto.
  • BuildSlaveSupport/build.webkit.org-config/make_passwords_json.py: Ditto.

(create_mock_worker_passwords_dict):

3:49 PM Changeset in webkit [268428] by commit-queue@webkit.org
  • 7 edits in trunk

Expose a property on WKWebView to know if it's being inspected.
https://bugs.webkit.org/show_bug.cgi?id=217629
rdar://70073369

Patch by Ellie Epskamp-Hunt <eepskamphunt@apple.com> on 2020-10-13
Reviewed by Brian Burg.

Source/WebKit:

Move an existing property from WKWebViewPrivateForTesting to WKWebViewPrivate so Safari can
know when a web view is being inspected.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _isBeingInspected]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _hasInspectorFrontend]): Deleted.

Tools:

Update the property name in existing tests.

  • TestWebKitAPI/Tests/WebKitCocoa/WKInspectorDelegate.mm:

(TEST):

3:46 PM Changeset in webkit [268427] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Sources: tab has wrong icon when paused if added after pause
https://bugs.webkit.org/show_bug.cgi?id=217671

Reviewed by Brian Burg.

  • UserInterface/Views/SourcesTabContentView.js:

(WI.SourcesTabContentView.tabInfo):

3:46 PM Changeset in webkit [268426] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Simplify AudioNode::checkNumberOfChannelsForInput()
https://bugs.webkit.org/show_bug.cgi?id=217674

Reviewed by Geoffrey Garen.

Simplify AudioNode::checkNumberOfChannelsForInput() by simply calling
updateInternalBus() on the input in release. We only iterate m_inputs
in debug to make sure this is an input associated with this node.

  • Modules/webaudio/AudioNode.cpp:

(WebCore::AudioNode::checkNumberOfChannelsForInput):

3:39 PM Changeset in webkit [268425] by Russell Epstein
  • 1 copy in tags/Safari-610.3.3

Tag Safari-610.3.3.

3:16 PM Changeset in webkit [268424] by Chris Dumez
  • 4 edits in trunk

It should be possible to create an AudioWorkletNode for a context that has finished rendering
https://bugs.webkit.org/show_bug.cgi?id=217666

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

Rebaseline WPT test that is now passing.

  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/suspended-context-messageport.https-expected.txt:

Source/WebCore:

It should be possible to create an AudioWorkletNode for a context that has finished rendering.
We were previously throwing an exception when trying to create an AudioWorkletNode for a context
whose state is "closed" (OfflineAudioContext's state becomes closed as soon as rendering
finishes). This was causing us to fail a WPT test and did not match Blink's behavior.

No new tests, rebaselined existing test.

  • Modules/webaudio/AudioWorkletNode.cpp:

(WebCore::AudioWorkletNode::create):

2:53 PM Changeset in webkit [268423] by Chris Dumez
  • 21 edits in trunk

WebAudio tests are crashing in debug when enabling the GPU process
https://bugs.webkit.org/show_bug.cgi?id=217663

Reviewed by Geoff Garen.

Source/WebCore:

No new tests, unskipped existing tests.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/PushPullFIFO.h:

Export PushPullFIFO so that it can be used at WebKit layer.

Source/WebKit:

WebAudio tests were crashing in debug when enabling the GPU process because it did audio
processing on the WebContent process's main thread. To address the issue, I made
RemoteAudioDestinationProxy a ThreadMessageReceiver so that it receives IPC on an audio
thread instead of the main thread. IPC messages are processed directly on the AudioWorklet
thread when active or on an audio thread constructed by RemoteAudioDestinationProxy
otherwise.

  • GPUProcess/media/RemoteAudioDestinationManager.cpp:

(WebKit::RemoteAudioDestination::RemoteAudioDestination):
Use a PushPullFIFO structure in render() to avoid hanging the audio rendering thread
on a semaphore. Hanging the rendering thread was terrible for performance and was also
a source of deadlock since the underlying framework is holding a lock while render() is
called. We could process a RemoteAudioDestination::CreateAudioDestination sync IPC on the
main thread and deadlock on that lock.

  • GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererManager.h:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.h:
  • NetworkProcess/IndexedDB/WebIDBServer.h:
  • NetworkProcess/webrtc/NetworkRTCProvider.h:
  • WebProcess/Network/webrtc/LibWebRTCNetwork.h:
  • WebProcess/cocoa/RemoteCaptureSampleManager.h:

Use ThreadMessageReceiverRefCounted instead of ThreadMessageReceiver since those classes
do not provide their own RefCounting.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::addWorkQueueMessageReceiver):
(IPC::Connection::removeWorkQueueMessageReceiver):
(IPC::Connection::addThreadMessageReceiver):
(IPC::Connection::removeThreadMessageReceiver):
(IPC::Connection::processIncomingMessage):
(IPC::Connection::dispatchMessageToWorkQueueReceiver):
(IPC::Connection::dispatchMessageToThreadReceiver):

  • Platform/IPC/Connection.h:

(IPC::Connection::ThreadMessageReceiver::ref):
(IPC::Connection::ThreadMessageReceiver::deref):

  • Add support for passing a destinationID when registering a WorkQueueMessageReceiver or a ThreadMessageReceiver, similarly to regular MessageReceivers. This was needed here since The GPUProcess sends IPC messages to the RemoteAudioDestinationProxy with a given destinationID and since RemoteAudioDestinationProxy is now a ThreadMessageReceiver.
  • Stop having ThreadMessageReceiver subclass ThreadSafeRefCounted since RemoteAudioDestinationProxy already subclasses ThreadSafeRefCounted indirectly. A new ThreadMessageReceiverRefCounted class was added for convenience for existing code that relied on its refcounting.
  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::RemoteAudioDestinationProxy):
(WebKit::RemoteAudioDestinationProxy::~RemoteAudioDestinationProxy):
(WebKit::RemoteAudioDestinationProxy::start):
(WebKit::RemoteAudioDestinationProxy::stop):
(WebKit::RemoteAudioDestinationProxy::renderBuffer):
(WebKit::RemoteAudioDestinationProxy::didChangeIsPlaying):
(WebKit::RemoteAudioDestinationProxy::dispatchToThread):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.h:

Use a PushPullFIFO container in render() to avoid handing the audio rendering thread on
a semaphore while the Render IPC is getting processed by the WebProcess.

Source/WTF:

  • wtf/CrossThreadQueue.h:

(WTF::CrossThreadQueue<DataType>::waitForMessage):
If CrossThreadQueue::kill() gets called while another thread is waiting on a
CrossThreadQueue::waitForMessage() call, make it so that waitForMessage()
returns a default-constructed DataType instead of crashing trying to
dequeue (since the queue is empty).

LayoutTests:

Unskip webaudio tests when the GPU process is enabled.

  • gpu-process/TestExpectations:
2:41 PM Changeset in webkit [268422] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (iOS 14): [ iOS wk2 ] service-workers-spinning tests are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=217669

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
2:38 PM Changeset in webkit [268421] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS 14] Hang in -[WKUserDefaults _notifyObserversOfChangeFromValuesForKeys:toValuesForKeys:]
https://bugs.webkit.org/show_bug.cgi?id=217183
<rdar://problem/69916673>

Reviewed by Geoffrey Garen.

Dispatch this work on a non-main thread, in order to avoid blocking the main thread.

  • UIProcess/Cocoa/PreferenceObserver.mm:

(-[WKUserDefaults _notifyObserversOfChangeFromValuesForKeys:toValuesForKeys:]):

2:25 PM Changeset in webkit [268420] by Keith Rollin
  • 28 edits in trunk

Remove leftover MACOSX_DEPLOYMENT_TARGET_macosx support
https://bugs.webkit.org/show_bug.cgi?id=217649
<rdar://problem/70236877>

Reviewed by Darin Adler.

Bug 42796 introduced MACOSX_DEPLOYMENT_TARGET_<PLATFORM> as "support
for compiling WebKit against iOS SDKs". Support for the iOS part of
this feature was later removed in several changes, including Bug
139212, Bug 139463 and Bug 144762. However, vestiges have remained for
five or six years in the form of MACOSX_DEPLOYMENT_TARGET_macosx. The
inclusion of the platform in MACOSX_DEPLOYMENT_TARGET is no longer
needed and can be removed.

This changes brings most projects in conformance with other projects
that don't support including the platform in MACOSX_DEPLOYMENT_TARGET,
including WebEditingTester, gtest, WebKitTestRunner, MiniBrowser, and
TestWebKitAPI.

Along the way, remove a couple of left-over references to macOS 10.16,
and a couple of places where [sdk=macosx*] was still being used.

With this change, initialization of MACOSX_DEPLOYMENT_TARGET should be
consistent across all projects, with two exceptions: WebKitLauncher
(which hardcodes it to 10.12) and libwebrtc's copy of googletest
(which hardcodes it to 10.4). The reasons for these hard-coded values
is not apparent, so leave them be.

PerformanceTests:

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

Source/bmalloc:

  • Configurations/DebugRelease.xcconfig:

Source/JavaScriptCore:

  • Configurations/DebugRelease.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/DebugRelease.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/DebugRelease.xcconfig:

Source/WebCore:

No new tests -- no changed functionality.

  • 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:
  • lldb/lldbWebKitTester/Configurations/DebugRelease.xcconfig:
2:09 PM Changeset in webkit [268419] by Russell Epstein
  • 2 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r268381. rdar://problem/70260409

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.

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

2:06 PM Changeset in webkit [268418] by Russell Epstein
  • 8 edits in branches/safari-610-branch/Source

Versioning.

WebKit-7610.3.3

1:53 PM Changeset in webkit [268417] by Simon Fraser
  • 19 edits in trunk/Source

Plumb OptionSet<WheelEventProcessingSteps> through the wheel event handling code
https://bugs.webkit.org/show_bug.cgi?id=217660

Reviewed by Tim Horton.

Source/WebCore:

Async scrolling in passive wheel event regions will require that the main thread event
handling code knows that the scrolling thread did the scrolling. To propagate this
information, plumb OptionSet<WheelEventProcessingSteps> through.

No behavior change.

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleWheelEvent):
(WebCore::EventHandler::passWheelEventToWidget):

  • page/EventHandler.h:
  • page/ios/EventHandlerIOS.mm:

(WebCore::EventHandler::wheelEvent):
(WebCore::EventHandler::passWheelEventToWidget):

  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::wheelEvent):
(WebCore::EventHandler::passWheelEventToWidget):

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::determineWheelEventProcessing):
(WebCore::ScrollingTree::handleWheelEvent):

  • page/scrolling/ScrollingTree.h:

(WebCore::WheelEventHandlingResult::handled):
(WebCore::WheelEventHandlingResult::unhandled):
(WebCore::ScrollingTree::handleWheelEvent):

  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::handleWheelEvent):

  • page/scrolling/ThreadedScrollingTree.h:
  • platform/PlatformWheelEvent.cpp:

(WebCore::operator<<):

  • replay/UserInputBridge.cpp:

(WebCore::UserInputBridge::handleWheelEvent):

  • replay/UserInputBridge.h:

Source/WebKit:

Async scrolling in passive wheel event regions will require that the main thread event
handling code knows that the scrolling thread did the scrolling. To propagate this
information, plumb OptionSet<WheelEventProcessingSteps> through.

No behavior change.

  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::wheelEvent):
(WebKit::EventDispatcher::dispatchWheelEventViaMainThread):
(WebKit::EventDispatcher::dispatchWheelEvent):

  • WebProcess/WebPage/EventDispatcher.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::handleWheelEvent):
(WebKit::WebPage::wheelEvent):

  • WebProcess/WebPage/WebPage.h:

Source/WebKitLegacy/win:

  • WebView.cpp:

(WebView::mouseWheel):

1:15 PM Changeset in webkit [268416] by Alan Coon
  • 4 edits in branches/safari-610.2.11.1-branch

Revert r268206. rdar://problem/70258921

1:06 PM Changeset in webkit [268415] by Fujii Hironori
  • 5 edits in trunk

[WinCairo][MediaFoundation] Many test cases are timing out by waiting for events
https://bugs.webkit.org/show_bug.cgi?id=217463

Reviewed by Don Olmstead.

Source/WebCore:

The ended event wasn't dispatched because MediaFoundation winds
back currentTime to 0 at the end of play back. The currentTime
should keep the position. Added m_sessionEnded to return the
duration in currentTime() if m_sessionEnded is true.

currentTime() didn't work for audio elements because m_presenter is
available only for videos. Use IMFMediaSession::GetClock instead.

seek() started play back even if it is paused. Added m_seeking to
remember it is seeking and pause the session in onSessionStarted if
m_seeking and m_paused are true.

Update NetworkState properly. Return NetworkState::FormatError on
MF_E_TOPO_CODEC_NOT_FOUND, NetworkState::DecodeError on MEError
event.

MEError event with MF_E_NOT_INITIALIZED status was dispatch if
SetVideoPosition is called while the session is not started. Deffer
calling SetVideoPosition to onSessionStarted.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::MediaPlayerPrivateMediaFoundation):
(WebCore::MediaPlayerPrivateMediaFoundation::play):
(WebCore::MediaPlayerPrivateMediaFoundation::seeking const):
(WebCore::MediaPlayerPrivateMediaFoundation::seek):
(WebCore::MediaPlayerPrivateMediaFoundation::currentTime const):
(WebCore::MediaPlayerPrivateMediaFoundation::buffered const):
(WebCore::MediaPlayerPrivateMediaFoundation::setSize):
(WebCore::MediaPlayerPrivateMediaFoundation::endCreatedMediaSource):
(WebCore::MediaPlayerPrivateMediaFoundation::endGetEvent):
(WebCore::MediaPlayerPrivateMediaFoundation::updateReadyState):
(WebCore::MediaPlayerPrivateMediaFoundation::onTopologySet):
(WebCore::MediaPlayerPrivateMediaFoundation::onSessionStarted):
(WebCore::MediaPlayerPrivateMediaFoundation::onSessionEnded):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::currentTime): Deleted.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:

LayoutTests:

  • platform/wincairo/TestExpectations: Unskip media tests. Marked

failing tests.

1:02 PM Changeset in webkit [268414] by Chris Dumez
  • 22 edits in trunk

'parameters' argument to AudioWorkletProcessor.process() is not spec-compliant
https://bugs.webkit.org/show_bug.cgi?id=217637

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline WPT tests that are now passing.

  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet-connections.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam-size.https-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/audioworkletnode-channel-count.https-expected.txt:

Source/WebCore:

'parameters' argument to AudioWorkletProcessor.process() is not spec-compliant:

Its type should not be a JS Map, as evidenced by how WPT tests use it. We now pass a generic JS Object,
as Blink is doing.

Also, as per the specification, if no automation is scheduled during the render quantum, the array may
have length 1 with the array element being the constant value of the AudioParam for the render quantum.

No new tests, rebaselined existing tests.

  • Modules/webaudio/AudioParam.cpp:

(WebCore::AudioParam::hasSampleAccurateValues):

  • Modules/webaudio/AudioParam.h:
  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::hasValues const):

  • Modules/webaudio/AudioParamTimeline.h:

This is an optimization to avoid calculating sample accurate values if the first timeline event is
still in the future. At some point, we should consider improving the logic to do so when all events
are in the past, similarly to what Blink is doing.

  • Modules/webaudio/AudioWorkletNode.cpp:

(WebCore::AudioWorkletNode::initializeAudioParameters):
Do not initialize memory for the AudioFloatArrays of each AudioParam yet since we won't know until
process() is called if size will be 1 or renderQuantumSize and since the size can change dynamically.

(WebCore::AudioWorkletNode::process):
As per the specification, if there is no timeline event, we pass an array that has length 1 and whose
element is the constant value.

  • Modules/webaudio/AudioWorkletProcessor.cpp:

(WebCore::constructFrozenKeyValueObject):
(WebCore::AudioWorkletProcessor::process):
Instead of passing the parameters as a JS map, we now use a simple frozen object. We also make sure
the Float32Array we pass JS has length 1 if the input array constains a constant value. This behavior
is consistent with what Blink is doing.

  • Modules/webaudio/DelayDSPKernel.cpp:

(WebCore::DelayDSPKernel::DelayDSPKernel):

  • Modules/webaudio/RealtimeAnalyser.cpp:

(WebCore::RealtimeAnalyser::setFftSize):

  • platform/audio/AudioArray.h:

(WebCore::AudioArray::AudioArray):
(WebCore::AudioArray::resize):
(WebCore::AudioArray::at):
(WebCore::AudioArray::zero):
(WebCore::AudioArray::zeroRange):
(WebCore::AudioArray::copyToRange):
(WebCore::AudioArray::containsConstantValue const):

  • platform/audio/Biquad.cpp:

(WebCore::Biquad::Biquad):

  • platform/audio/ReverbConvolverStage.cpp:

(WebCore::ReverbConvolverStage::ReverbConvolverStage):

  • platform/audio/ios/AudioFileReaderIOS.cpp:

(WebCore::AudioFileReader::createBus):

  • platform/audio/mac/AudioFileReaderMac.cpp:

(WebCore::AudioFileReader::createBus):
Rename AudioArray::allocate() to AudioArray::resize() for clarity since it can be called multiple times
after construction of the AudioArray. Make it a no-op if the new size is the same as the old one.
Also add a utility function to check if the array constains a constant value.

12:35 PM Changeset in webkit [268413] by Alan Coon
  • 4 edits in branches/safari-610.2-branch/Source/WebCore/dom

Cherry-pick f9437de2cd47. rdar://problem/69101091

Fix the build after cherry-picking r266909.

12:35 PM Changeset in webkit [268412] by Alan Coon
  • 8 edits
    2 adds in branches/safari-610.2-branch

Cherry-pick r266909. rdar://problem/69101091

Source/WebCore:
Text replacements at the beginning of a second line are replaced too early
https://bugs.webkit.org/show_bug.cgi?id=216327
<rdar://problem/68170353>

Reviewed by Darin Adler.

In the changes in r258871, using SimpleRanges instead of Range causing some side effects
when the replacements at the beginning of lines. The ranges that we are counting are backwards
and the return characters are being counted instead of being ignored. There is almost
certainly a better fix than this, but this patch restores the original logic that
was present when Range was being used, until a better fix can be worked out.

Test: editing/spelling/text-replacement-first-word-second-line.html

  • editing/Editor.cpp: (WebCore::Editor::markAndReplaceFor):
  • editing/TextCheckingHelper.cpp: (WebCore::TextCheckingParagraph::automaticReplacementStart const): (WebCore::TextCheckingParagraph::automaticReplacementLength const):
  • editing/TextCheckingHelper.h:

LayoutTests:
Overlapping text replacements at the beginning of a line are replaced too early
https://bugs.webkit.org/show_bug.cgi?id=216327

Reviewed by Darin Adler.

  • editing/spelling/text-replacement-first-word-second-line-expected.txt: Added.
  • editing/spelling/text-replacement-first-word-second-line.html: Added.

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

12:32 PM Changeset in webkit [268411] by Alan Coon
  • 2 edits in branches/safari-611.1.3-branch/Source/WebKit

Cherry-pick r268401. rdar://problem/70259990

Allow legacy custom scheme registration on non-main threads
https://bugs.webkit.org/show_bug.cgi?id=217656
<rdar://problem/70228036>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-10-13
Reviewed by Brady Eidson.

r267802 was quite necessary, but it exposed an internal client calling our API on a background thread,
which crashes now. Make it not crash. There is a race condition in their registration, but there already was.

  • UIProcess/API/Cocoa/WKBrowsingContextController.mm: (+[WKBrowsingContextController registerSchemeForCustomProtocol:]): (+[WKBrowsingContextController unregisterSchemeForCustomProtocol:]):

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

12:27 PM Changeset in webkit [268410] by Alan Coon
  • 8 edits in branches/safari-611.1.3-branch/Source

Versioning.

WebKit-7611.1.3.2

12:22 PM Changeset in webkit [268409] by Alan Coon
  • 5 edits in branches/safari-610.2.11.1-branch/Source/WebCore

Cherry-pick r268308. rdar://problem/70259013

[Mac] AirPlay menu does not show up when AirPlay button is clicked
https://bugs.webkit.org/show_bug.cgi?id=217536
<rdar://problem/69973777>

Reviewed by Eric Carlson.

Source/WebCore:

PAL tries to soft-link the AVRoutePickerView from the AVFoundation framework, rather than the (correct)
AVKit framework. Remove AVRoutePickerView from AVFoundationSoftLink.h and use the already declared version
inside AVRoutePickerViewTargetPicker.mm.

  • platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.mm: (WebCore::AVRoutePickerViewTargetPicker::isAvailable):

Source/WebCore/PAL:

  • pal/cocoa/AVFoundationSoftLink.h:
  • pal/cocoa/AVFoundationSoftLink.mm:

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

12:21 PM Changeset in webkit [268408] by Alan Coon
  • 4 edits in branches/safari-610.2.11.1-branch

Cherry-pick r268206. rdar://problem/70258921

Presidential Executive Order pages not accessible with Safari.
https://bugs.webkit.org/show_bug.cgi?id=217415
<rdar://problem/69922416>

Reviewed by Chris Fleizach and Simon Fraser.

Follow up to the previous change for this bug per Simon Fraser's comment.
Check not only the visibility and opacity of the object in question but
also of its ancestors.
Expanded the test accessibility/aria-modal.html to include the case
where the visibility of the modal dialog is determined by the opacity of
its parent object.

  • accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::isNodeVisible const):

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

12:19 PM Changeset in webkit [268407] by Alan Coon
  • 8 edits in branches/safari-610.2.11.1-branch/Source

Versioning.

WebKit-7610.2.11.1.2

12:12 PM Changeset in webkit [268406] by Alan Coon
  • 4 edits in branches/safari-610.2.11.0-branch

Cherry-pick r268206. rdar://problem/70258965

Presidential Executive Order pages not accessible with Safari.
https://bugs.webkit.org/show_bug.cgi?id=217415
<rdar://problem/69922416>

Reviewed by Chris Fleizach and Simon Fraser.

Follow up to the previous change for this bug per Simon Fraser's comment.
Check not only the visibility and opacity of the object in question but
also of its ancestors.
Expanded the test accessibility/aria-modal.html to include the case
where the visibility of the modal dialog is determined by the opacity of
its parent object.

  • accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::isNodeVisible const):

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

12:11 PM Changeset in webkit [268405] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: [ Mac ] inspector/audit/basic-async.htm is flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=217620

Unreviewed test gardening.

  • platform/mac/TestExpectations:
12:08 PM Changeset in webkit [268404] by Alan Coon
  • 8 edits in branches/safari-610.2.11.0-branch/Source

Versioning.

WebKit-7610.2.11.0.2

12:02 PM Changeset in webkit [268403] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: [ Mac iOS ] fast/css-custom-paint/out-of-memory-while-adding-worklet-module.html is flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=217618

Unreviewed test Gardening.

11:43 AM Changeset in webkit [268402] by Lauro Moura
  • 3 edits in trunk/Tools

webkitpy: Log and report webdriver harness errors
https://bugs.webkit.org/show_bug.cgi?id=217659

Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py:

(WebDriverTestRunner.process_results): Report failed harness tests,
not just subtests.

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:

(WebDriverTestRunnerW3C.run): Print to error log when a test run
fails, not just subtests.

11:42 AM Changeset in webkit [268401] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Allow legacy custom scheme registration on non-main threads
https://bugs.webkit.org/show_bug.cgi?id=217656
<rdar://problem/70228036>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-10-13
Reviewed by Brady Eidson.

r267802 was quite necessary, but it exposed an internal client calling our API on a background thread,
which crashes now. Make it not crash. There is a race condition in their registration, but there already was.

  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:

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

10:16 AM Changeset in webkit [268400] by weinig@apple.com
  • 525 edits in trunk

[Testing] Rename test header commands to match names in WebPreferences*.yaml
https://bugs.webkit.org/show_bug.cgi?id=217654

Reviewed by Simon Fraser.

Tools:

Renames all the test header commands (e.g. useAcceleratedDrawing) to match name in
WebPreferences*.yaml files (e.g. AcceleratedDrawingEnabled).

Also splits up TestFeatures into test runner specific features (e.g. runSingly) that
don't have a WebPreferences counterpart, and WebPreferences specific features. This
will allow future patches to support arbritrary WebPreferences more easily.

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

(setWebPreferencesForTestOptions):

  • TestRunnerShared/TestFeatures.cpp:
  • TestRunnerShared/TestFeatures.h:
  • WebKitTestRunner/TestController.cpp:
  • WebKitTestRunner/TestOptions.cpp:
  • WebKitTestRunner/TestOptions.h:
  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:
  • WebKitTestRunner/gtk/TestControllerGtk.cpp:
  • WebKitTestRunner/mac/TestControllerMac.mm:
  • WebKitTestRunner/wpe/TestControllerWPE.cpp:

LayoutTests:

Update test header commands to match names in the WebPreferences*.yaml configuration files.

  • accessibility/attachment-element.html:
  • accessibility/content-changed-notification-causes-crash.html:
  • accessibility/contenteditable-table-check-causes-crash.html:
  • accessibility/duplicate-axrenderobject-crash.html:
  • accessibility/ios-simulator/attributed-string-for-range.html:
  • accessibility/ios-simulator/has-touch-event-listener-with-shadow.html:
  • accessibility/ios-simulator/media-with-aria-label.html:
  • accessibility/mac/attachment-element-replacement-character.html:
  • accessibility/mac/video-tag-hit-test.html:
  • accessibility/mac/video-volume-slider-accessibility.html:
  • accessibility/media-element.html:
  • accessibility/media-emits-object-replacement.html:
  • accessibility/media-with-aria-label.html:
  • animations/resume-after-page-cache.html:
  • compositing/accelerated-layers-after-back.html:
  • compositing/iframes/page-cache-layer-tree.html:
  • compositing/page-cache-back-crash.html:
  • compositing/show-composited-iframe-on-back-button.html:
  • compositing/video/poster-expected.html:
  • compositing/video/poster.html:
  • css3/color-filters/color-filter-animation.html:
  • css3/color-filters/color-filter-apple-invert-lightness.html:
  • css3/color-filters/color-filter-backgrounds-borders.html:
  • css3/color-filters/color-filter-box-shadow.html:
  • css3/color-filters/color-filter-brightness.html:
  • css3/color-filters/color-filter-caret-color.html:
  • css3/color-filters/color-filter-color-property-list-item.html:
  • css3/color-filters/color-filter-color-property.html:
  • css3/color-filters/color-filter-color-text-decorations.html:
  • css3/color-filters/color-filter-column-rule.html:
  • css3/color-filters/color-filter-composition-underline-color-expected.html:
  • css3/color-filters/color-filter-composition-underline-color.html:
  • css3/color-filters/color-filter-contrast.html:
  • css3/color-filters/color-filter-current-color.html:
  • css3/color-filters/color-filter-filter-list.html:
  • css3/color-filters/color-filter-gradients.html:
  • css3/color-filters/color-filter-grayscale.html:
  • css3/color-filters/color-filter-hue-rotate.html:
  • css3/color-filters/color-filter-ignore-semantic-expected.html:
  • css3/color-filters/color-filter-ignore-semantic.html:
  • css3/color-filters/color-filter-inherits.html:
  • css3/color-filters/color-filter-invert.html:
  • css3/color-filters/color-filter-opacity.html:
  • css3/color-filters/color-filter-outline.html:
  • css3/color-filters/color-filter-parsing.html:
  • css3/color-filters/color-filter-saturate.html:
  • css3/color-filters/color-filter-sepia.html:
  • css3/color-filters/color-filter-text-decoration-shadow.html:
  • css3/color-filters/color-filter-text-emphasis.html:
  • css3/color-filters/color-filter-text-shadow.html:
  • css3/color-filters/color-filter-text-stroke.html:
  • css3/color-filters/svg/color-filter-inline-svg.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-read-text-from-platform.html:
  • editing/async-clipboard/clipboard-read-text-same-origin.html:
  • editing/async-clipboard/clipboard-read-while-pasting.html:
  • editing/async-clipboard/sanitize-when-reading-markup.html:
  • editing/execCommand/set-backColor-with-color-filter-from-scripts.html:
  • editing/execCommand/set-foreColor-with-color-filter-from-scripts.html:
  • editing/mac/attributed-string/attrib-string-colors-with-color-filter.html:
  • editing/mac/attributed-string/attrib-string-range-with-color-filter.html:
  • editing/mac/attributed-string/attribute-string-for-copy-with-color-filter.html:
  • editing/mac/attributed-string/attributed-string-for-typing-with-color-filter.html:
  • editing/mac/input/unconfirmed-text-navigation-with-page-cache.html:
  • editing/pasteboard/copy-paste-attachment.html:
  • editing/pasteboard/dom-paste/dom-paste-confirmation.html:
  • editing/pasteboard/dom-paste/dom-paste-consecutive-confirmations.html:
  • editing/pasteboard/dom-paste/dom-paste-rejection.html:
  • editing/pasteboard/dom-paste/dom-paste-requires-user-gesture.html:
  • editing/pasteboard/dom-paste/dom-paste-same-origin.html:
  • editing/pasteboard/drag-file-promises-to-editable-element-as-URLs.html:
  • editing/pasteboard/drag-file-promises-to-editable-element-as-attachment.html:
  • editing/pasteboard/drag-files-to-editable-element-as-URLs.html:
  • editing/pasteboard/drag-files-to-editable-element-as-attachment.html:
  • editing/pasteboard/entries-api/DirectoryEntry-getFile-back-forward-cache.html:
  • editing/pasteboard/entries-api/DirectoryReader-readEntries-back-forward-cache.html:
  • editing/pasteboard/paste-dark-mode-color-filtered.html:
  • editing/selection/selection-change-in-disconnected-frame-crash.html:
  • editing/style/inverse-color-filter.html:
  • editing/style/set-backColor-with-color-filter.html:
  • editing/style/set-foreColor-with-color-filter.html:
  • fast/attachment/attachment-action-expected.html:
  • fast/attachment/attachment-action.html:
  • fast/attachment/attachment-border-should-stay-inside-attachment.html:
  • fast/attachment/attachment-borderless-expected-mismatch.html:
  • fast/attachment/attachment-borderless.html:
  • fast/attachment/attachment-default-icon-expected.html:
  • fast/attachment/attachment-default-icon.html:
  • fast/attachment/attachment-dom.html:
  • fast/attachment/attachment-dynamic-type.html:
  • fast/attachment/attachment-folder-icon-expected.html:
  • fast/attachment/attachment-folder-icon.html:
  • fast/attachment/attachment-icon-from-file-extension-expected.html:
  • fast/attachment/attachment-icon-from-file-extension.html:
  • fast/attachment/attachment-label-highlight.html:
  • fast/attachment/attachment-progress.html:
  • fast/attachment/attachment-rendering.html:
  • fast/attachment/attachment-respects-css-size.html:
  • fast/attachment/attachment-select-on-click-inside-user-select-all.html:
  • fast/attachment/attachment-select-on-click.html:
  • fast/attachment/attachment-subtitle-resize.html:
  • fast/attachment/attachment-subtitle.html:
  • fast/attachment/attachment-thumbnail-preserves-aspect-ratio.html:
  • fast/attachment/attachment-title-with-rtl-expected.html:
  • fast/attachment/attachment-title-with-rtl.html:
  • fast/attachment/attachment-title.html:
  • fast/attachment/attachment-type-attribute-expected.html:
  • fast/attachment/attachment-type-attribute.html:
  • fast/attachment/attachment-uti-expected.html:
  • fast/attachment/attachment-uti.html:
  • fast/attachment/attachment-wrapping-action-expected-mismatch.html:
  • fast/attachment/attachment-wrapping-action.html:
  • fast/block/float/float-not-removed-from-first-letter.html:
  • fast/block/float/split-inline-sibling-of-float-crash.html:
  • fast/canvas/2d.currentPoint.html:
  • fast/canvas/2d.getPath.modification.html:
  • fast/canvas/2d.getPath.newobject.html:
  • fast/canvas/2d.setPath.html:
  • fast/canvas/webgl/canvas-webgl-page-cache.html:
  • fast/css/fontloader-page-cache.html:
  • fast/css/has-attachment.html:
  • fast/css/pseudo-required-optional-unapplied.html:
  • fast/dom/DeviceMotion/no-page-cache.html:
  • fast/dom/DeviceOrientation/event-after-navigation.html:
  • fast/dom/DeviceOrientation/no-page-cache.html:
  • fast/dom/HTMLFormElement/associated-elements-after-index-assertion-fail1.html:
  • fast/dom/HTMLKeygenElement/keygen-keytype.html:
  • fast/dom/HTMLKeygenElement/keygen.html:
  • fast/dom/Window/timer-resume-on-navigation-back.html:
  • fast/dom/adopt-node-crash-2.html:
  • fast/dom/attribute-set-before-element-in-tree.html:
  • fast/dom/domstring-attribute-reflection.html:
  • fast/dom/set-custom-validity-with-too-few-arguments.html:
  • fast/dom/tabindex-defaults.html:
  • fast/dom/wrapper-classes.html:
  • fast/dynamic/insertAdjacentHTML-allowed-parents.html:
  • fast/events/ios/do-not-show-keyboard-when-focusing-after-blur.html:
  • fast/events/ios/pdf-modifer-key-down-crash.html:
  • fast/events/ios/rotation/do-not-shrink-to-fit-content-after-rotation.html:
  • fast/events/onunload-back-to-page-cache.html:
  • fast/events/pagehide-timeout.html:
  • fast/events/pagehide-xhr-open.html:
  • fast/events/pageshow-pagehide-on-back-cached-with-frames.html:
  • fast/events/pageshow-pagehide-on-back-cached.html:
  • fast/events/suspend-timers.html:
  • fast/files/file-reader-back-forward-cache.html:
  • fast/flexbox/crash-button-keygen.html:
  • fast/forms/ValidityState-001.html:
  • fast/forms/autocomplete-off-with-default-value-does-not-clear.html:
  • fast/forms/autofocus-keygen.html:
  • fast/forms/checkValidity-001.html:
  • fast/forms/fieldset/fieldset-elements-htmlcollection.html:
  • fast/forms/fieldset/fieldset-elements.html:
  • fast/forms/form-associated-element-crash3.html:
  • fast/forms/form-attribute.html:
  • fast/forms/form-collection-elements-order.html:
  • fast/forms/form-collection-elements.html:
  • fast/forms/form-collection-radio-node-list.html:
  • fast/forms/ios/no-scrolling-when-moving-focus-between-adjacent-fields.html:
  • fast/forms/label/labelable-elements.html:
  • fast/forms/label/labels-add-htmlFor-label.html:
  • fast/forms/label/labels-add-parent-label.html:
  • fast/forms/label/labels-change-htmlFor-attribute.html:
  • fast/forms/label/labels-multiple-sibling-labels.html:
  • fast/forms/label/labels-parent-and-sibling-labels.html:
  • fast/forms/label/labels-remove-htmlFor-attribute.html:
  • fast/forms/label/labels-remove-htmlFor-label.html:
  • fast/forms/label/labels-remove-parent-label.html:
  • fast/forms/large-parts.html:
  • fast/forms/scrollheight-with-mutation-crash.html:
  • fast/forms/setCustomValidity-arguments.html:
  • fast/forms/setCustomValidity-existence.html:
  • fast/forms/setCustomValidity-null-parameter.html:
  • fast/forms/state-restore-skip-stateless.html:
  • fast/forms/update-form-owner-in-moved-subtree-assertion-failure.html:
  • fast/forms/validationMessage.html:
  • fast/forms/willvalidate.html:
  • fast/frames/frame-crash-with-page-cache.html:
  • fast/frames/frame-unload-navigate-and-setTimeout-assert-fail.html:
  • fast/frames/page-hide-document-open.html:
  • fast/frames/restoring-page-cache-should-not-run-scripts-via-style-update.html:
  • fast/frames/restoring-page-cache-should-not-run-scripts.html:
  • fast/harness/page-cache-crash-on-data-urls.html:
  • fast/harness/use-page-cache.html:
  • fast/hidpi/video-controls-in-hidpi.html:
  • fast/history/back-forward-cache-visibility-state.html:
  • fast/history/back-from-page-with-focused-iframe.html:
  • fast/history/go-back-to-iframe-with-plugin.html:
  • fast/history/go-back-to-object-subframe.html:
  • fast/history/history-back-while-pdf-in-pagecache.html:
  • fast/history/multiple-back-forward-navigations.html:
  • fast/history/page-cache-MessagePort-pending-message.html:
  • fast/history/page-cache-active-fetch-request-blobReadAsBlob.html:
  • fast/history/page-cache-active-fetch-request-blobReadAsReadableStream.html:
  • fast/history/page-cache-active-fetch-request-blobReadAsText.html:
  • fast/history/page-cache-active-fetch-response-blobReadAsBlob.html:
  • fast/history/page-cache-after-window-open.html:
  • fast/history/page-cache-back-navigation-crash.html:
  • fast/history/page-cache-clearing.html:
  • fast/history/page-cache-closed-audiocontext.html:
  • fast/history/page-cache-createImageBitmap.html:
  • fast/history/page-cache-createObjectURL-using-open-panel.html:
  • fast/history/page-cache-createObjectURL.html:
  • fast/history/page-cache-destroy-document.html:
  • fast/history/page-cache-element-state-focused.html:
  • fast/history/page-cache-execute-script-during-restore.html:
  • fast/history/page-cache-geolocation-active-oneshot.html:
  • fast/history/page-cache-geolocation-active-watcher.html:
  • fast/history/page-cache-geolocation.html:
  • fast/history/page-cache-gpu-canvas-context.html:
  • fast/history/page-cache-iframe-js-url.html:
  • fast/history/page-cache-indexed-closed-db.html:
  • fast/history/page-cache-indexed-opened-db.html:
  • fast/history/page-cache-media-recorder.html:
  • fast/history/page-cache-media-source-closed-2.html:
  • fast/history/page-cache-media-source-closed.html:
  • fast/history/page-cache-media-source-opened.html:
  • fast/history/page-cache-navigate-during-restore.html:
  • fast/history/page-cache-notification-showing.html:
  • fast/history/page-cache-notification-suspendable.html:
  • fast/history/page-cache-removed-source-buffer.html:
  • fast/history/page-cache-running-audiocontext.html:
  • fast/history/page-cache-subframes-with-provisional-load.html:
  • fast/history/page-cache-suspended-audiocontext.html:
  • fast/history/page-cache-webdatabase-no-transaction-db.html:
  • fast/history/page-cache-webdatabase-pending-transaction.html:
  • fast/history/page-cache-with-opener.html:
  • fast/history/pagehide-remove-iframe-crash.html:
  • fast/history/resources/page-cache-window-with-iframe.html:
  • fast/history/resources/page-cache-window-with-opener.html:
  • fast/history/timed-refresh-in-cached-frame.html:
  • fast/html/clone-keygen.html:
  • fast/html/keygen.html:
  • fast/html/marquee-reparent-check.html:
  • fast/html/menuitem-element.html:
  • fast/images/animated-gif-restored-from-bfcache.html:
  • fast/invalid/residual-style-expected.html:
  • fast/invalid/residual-style.html:
  • fast/layers/video-layer.html:
  • fast/loader/data-url-load-denied.html:
  • fast/loader/frames-with-unload-handlers-in-page-cache.html:
  • fast/loader/image-in-page-cache.html:
  • fast/loader/input-element-page-cache-crash.html:
  • fast/loader/navigate-with-new-target-after-back-forward-navigation.html:
  • fast/loader/navigate-with-post-to-new-target-after-back-forward-navigation.html:
  • fast/loader/scroll-position-restored-on-back.html:
  • fast/loader/stateobjects/no-popstate-when-back-to-stateless-entry-with-page-cache.html:
  • fast/loader/stateobjects/popstate-fires-with-page-cache.html:
  • fast/loader/unschedule-relayout-after-unload.html:
  • fast/loader/window-properties-restored-from-page-cache.html:
  • fast/mediastream/MediaStream-video-element-video-tracks-disabled.html:
  • fast/mediastream/RTCPeerConnection-page-cache.html:
  • fast/mediastream/captureInGPUProcess.html:
  • fast/mediastream/media-stream-track-interrupted.html:
  • fast/multicol/span/positioned-child-not-removed-crash.html:
  • fast/overflow/horizontal-scroll-after-back.html:
  • fast/ruby/float-object-doesnt-crash.html:
  • fast/sandbox/ios/sandbox-mach-lookup-attachment-element.html:
  • fast/scrolling/iframe-scrollable-after-back.html:
  • fast/scrolling/ios/scroll-events-back-forward-after-pageshow.html:
  • fast/scrolling/ios/scroll-events-back-forward.html:
  • fast/scrolling/ios/touch-scroll-back-forward.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/overflow-scrollable-after-back.html:
  • fast/scrolling/page-cache-back-overflow-scroll-restore.html:
  • fast/scrolling/rtl-scrollbars-animation-property.html:
  • fast/shadow-dom/keygen-shadow-manipulation.html:
  • fast/table/crash-splitColumn-2.html:
  • fast/table/multiple-captions-crash3-expected.html:
  • fast/table/multiple-captions-crash3.html:
  • fast/text-autosizing/ios/text-autosizing-after-back.html:
  • fast/viewport/ios/ignore-minimum-device-width-for-page-with-viewport-device-width.html:
  • fast/viewport/ios/minimum-scale-after-changing-view-scale.html:
  • fast/viewport/ios/resources/go-back.html:
  • fast/viewport/ios/shrink-to-fit-content-constant-width.html:
  • fast/viewport/ios/shrink-to-fit-content-large-constant-width.html:
  • fast/viewport/ios/shrink-to-fit-content-large-width-breakpoint.html:
  • fast/viewport/ios/shrink-to-fit-content-no-viewport.html:
  • fast/viewport/ios/shrink-to-fit-content-responsive-viewport-with-horizontal-overflow.html:
  • fast/viewport/ios/shrink-to-fit-content-temporary-overflow.html:
  • fast/viewport/ios/shrink-to-fit-for-page-without-viewport-meta.html:
  • fast/viewport/ios/shrink-to-fit-large-content-width.html:
  • fast/viewport/ios/use-minimum-device-width-for-page-without-viewport-meta.html:
  • fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html:
  • fast/viewport/viewport-128.html:
  • fast/workers/worker-page-cache.html:
  • fullscreen/video-controls-drag.html:
  • fullscreen/video-controls-override.html:
  • fullscreen/video-controls-rtl.html:
  • fullscreen/video-controls-timeline.html:
  • http/tests/cache-storage/page-cache-domcache-pending-promise.html:
  • http/tests/cache-storage/page-cache-domcachestorage-pending-promise.html:
  • http/tests/cache/display-image-unset-allows-cached-image-load.html:
  • http/tests/eventsource/eventsource-page-cache-connected.html:
  • http/tests/eventsource/eventsource-page-cache-connecting.html:
  • http/tests/loading/main-resource-delegates-on-back-navigation.html:
  • http/tests/loading/unfinished-load-back-to-cached-page-callbacks.html:
  • http/tests/loading/unfinished-main-resource-back-to-cached-page-callbacks.html:
  • http/tests/media/hls/video-controls-live-stream.html:
  • http/tests/media/hls/video-duration-accessibility.html:
  • http/tests/media/reload-after-dialog.html:
  • http/tests/media/video-auth-with-allowCrossOriginSubresourcesToAskForCredentials.html:
  • http/tests/misc/resources/check-keygen-post.php:
  • http/tests/misc/submit-post-keygen.html:
  • http/tests/navigation/go-back-to-error-page.html:
  • http/tests/navigation/https-in-page-cache.html:
  • http/tests/navigation/https-no-store-subframe-in-page-cache.html:
  • http/tests/navigation/image-load-in-pagehide-handler.html:
  • http/tests/navigation/page-cache-failed-xhr.html:
  • http/tests/navigation/page-cache-fontfaceset.html:
  • http/tests/navigation/page-cache-fragment-referrer.html:
  • http/tests/navigation/page-cache-getUserMedia-pending-promise.html:
  • http/tests/navigation/page-cache-iframe-no-current-historyItem.html:
  • http/tests/navigation/page-cache-iframe-provisional-load-async-delegates.html:
  • http/tests/navigation/page-cache-iframe-provisional-load.html:
  • http/tests/navigation/page-cache-mediakeysession.html:
  • http/tests/navigation/page-cache-mediastream.html:
  • http/tests/navigation/page-cache-pending-image-load-cache-partition.html:
  • http/tests/navigation/page-cache-pending-image-load.html:
  • http/tests/navigation/page-cache-pending-load.html:
  • http/tests/navigation/page-cache-pending-ping-load-cross-origin.html:
  • http/tests/navigation/page-cache-pending-ping-load-same-origin.html:
  • http/tests/navigation/page-cache-requestAnimationFrame.html:
  • http/tests/navigation/page-cache-video.html:
  • http/tests/navigation/page-cache-xhr-in-loading-iframe.html:
  • http/tests/navigation/page-cache-xhr-in-pagehide.html:
  • http/tests/navigation/page-cache-xhr.html:
  • http/tests/navigation/resources/https-in-page-cache-3.html:
  • http/tests/navigation/subframe-pagehide-handler-starts-load.html:
  • http/tests/navigation/subframe-pagehide-handler-starts-load2.html:
  • http/tests/paymentrequest/page-cache-closed-payment-request.https.html:
  • http/tests/paymentrequest/page-cache-completed-payment-response.https.html:
  • http/tests/paymentrequest/page-cache-created-payment-request.https.html:
  • http/tests/paymentrequest/page-cache-created-payment-response.https.html:
  • http/tests/paymentrequest/page-cache-interactive-payment-request.https.html:
  • http/tests/paymentrequest/page-cache-retried-payment-response.https.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-allowed.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-blocked.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-blocked2.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/video-controls-allowed.html:
  • http/tests/security/credentials-iframes-allowCrossOriginSubresourcesToAskForCredentials.html:
  • http/tests/security/cross-origin-window-open-insert-script.html:
  • http/tests/security/cross-origin-window-open-javascript-url.html:
  • http/tests/security/mixedContent/insecure-basic-auth-image-allowCrossOriginSubresourcesToAskForCredentials.https.html:
  • http/tests/security/mixedContent/insecure-image-redirects-to-basic-auth-secure-image-allowCrossOriginSubresourcesToAskForCredentials.html:
  • http/tests/security/mixedContent/secure-redirect-to-insecure-redirect-to-basic-auth-secure-image-allowCrossOriginSubresourcesToAskForCredentials.https.html:
  • http/tests/security/mixedContent/secure-redirect-to-secure-redirect-to-basic-auth-insecure-image-allowCrossOriginSubresourcesToAskForCredentials.https.html:
  • http/tests/security/mixedContent/secure-redirect-to-secure-redirect-to-basic-auth-secure-image-allowCrossOriginSubresourcesToAskForCredentials.https.html:
  • http/tests/security/navigate-when-restoring-cached-page.html:
  • http/tests/security/xss-DENIED-click-and-form-submission-from-inactive-domwindow.html:
  • http/tests/security/xss-DENIED-script-inject-into-inactive-window.html:
  • http/tests/security/xss-DENIED-script-inject-into-inactive-window2-pson.html:
  • http/tests/security/xss-DENIED-script-inject-into-inactive-window2.html:
  • http/tests/security/xss-DENIED-script-inject-into-inactive-window3.html:
  • http/tests/ssl/applepay/page-cache-active-apple-pay-session.html:
  • http/tests/ssl/applepay/page-cache-inactive-apple-pay-session.html:
  • http/tests/websocket/tests/hybi/closed-when-entering-page-cache.html:
  • http/tests/websocket/tests/hybi/stop-on-resume-in-error-handler.html:
  • http/tests/workers/service/client-added-to-clients-when-restored-from-page-cache.html:
  • http/tests/workers/service/client-removed-from-clients-while-in-page-cache.html:
  • http/tests/workers/service/page-cache-service-worker-pending-promise.https.html:
  • http/tests/workers/service/page-caching.html:
  • http/wpt/beacon/support/sendBeacon-onpagehide-window.html:
  • http/wpt/fetch/resources/fetch-in-pagehide-window.html:
  • http/wpt/notifications/constructor-basic-bfcache.html:
  • http/wpt/service-workers/mac/throttleable.https.html:
  • http/wpt/service-workers/service-worker-spinning-activate.https.html:
  • http/wpt/service-workers/service-worker-spinning-fetch.https.html:
  • http/wpt/service-workers/service-worker-spinning-install.https.html:
  • http/wpt/service-workers/service-worker-spinning-message.https.html:
  • imported/blink/fast/dom/shadow/shadowdom-for-keygen-only-shadow-expected.html:
  • imported/blink/fast/dom/shadow/shadowdom-for-keygen-only-shadow.html:
  • imported/blink/fast/text/international-iteration-simple-text.html:
  • inspector/css/pseudo-element-matches.html:
  • intersection-observer/intersection-observer-entry-interface.html:
  • intersection-observer/intersection-observer-interface.html:
  • intersection-observer/root-element-deleted.html:
  • intersection-observer/root-element-moved.html:
  • intersection-observer/target-deleted.html:
  • js/dom/regress-157246.html:
  • loader/go-back-cached-main-resource.html:
  • loader/go-back-to-different-window-size.html:
  • media/accessibility-closed-captions-has-aria-owns.html:
  • media/adopt-node-crash.html:
  • media/airplay-allows-buffering.html:
  • media/airplay-autoplay.html:
  • media/audio-as-video-fullscreen.html:
  • media/audio-controls-do-not-fade-out.html:
  • media/audio-controls-rendering.html:
  • media/audio-controls-timeline-in-media-document.html:
  • media/audio-delete-while-slider-thumb-clicked.html:
  • media/audio-repaint.html:
  • media/click-placeholder-not-pausing.html:
  • media/click-volume-bar-not-pausing.html:
  • media/controls-after-reload.html:
  • media/controls-drag-timebar.html:
  • media/controls-right-click-on-timebar.html:
  • media/controls-strict.html:
  • media/controls-styling.html:
  • media/controls-without-preload.html:
  • media/controls/airplay-controls.html:
  • media/controls/airplay-picker.html:
  • media/controls/basic.html:
  • media/controls/elementOrder.html:
  • media/controls/forced-tracks-only.html:
  • media/controls/fullscreen-button-inline-layout.html:
  • media/controls/inline-elements-dropoff-order.html:
  • media/controls/picture-in-picture.html:
  • media/controls/pip-placeholder-without-video-controls.html:
  • media/controls/showControlsButton.html:
  • media/controls/statusDisplay.html:
  • media/controls/statusDisplayBad.html:
  • media/controls/track-menu.html:
  • media/crash-closing-page-with-media-as-plugin-fallback.html:
  • media/mac/controls-panel-not-clipped-out-expected.html:
  • media/mac/controls-panel-not-clipped-out.html:
  • media/media-captions-no-controls.html:
  • media/media-controller-drag-crash.html:
  • media/media-controls-accessibility.html:
  • media/media-controls-cancel-events.html:
  • media/media-controls-clone.html:
  • media/media-controls-drag-timeline-set-controls-property.html:
  • media/media-controls-timeline-updates-after-playing.html:
  • media/media-controls-timeline-updates-when-hovered.html:
  • media/media-controls-timeline-updates.html:
  • media/media-document-audio-controls-visible.html:
  • media/media-document-audio-repaint.html:
  • media/media-fullscreen-loop-inline.html:
  • media/media-fullscreen-pause-inline.html:
  • media/media-fullscreen-return-to-inline.html:
  • media/media-source/media-source-page-cache.html:
  • media/nodesFromRect-shadowContent.html:
  • media/progress-events-generated-correctly.html:
  • media/require-user-gesture-to-load-video.html:
  • media/restore-from-page-cache.html:
  • media/tab-focus-inside-media-elements.html:
  • media/track/track-cue-rendering-horizontal.html:
  • media/track/track-cue-rendering-snap-to-lines-not-set.html:
  • media/track/track-cue-rendering-vertical.html:
  • media/track/track-cues-cuechange.html:
  • media/track/track-cues-enter-exit.html:
  • media/track/track-in-band-duplicate-tracks-when-source-changes.html:
  • media/track/track-manual-mode.html:
  • media/video-click-dblckick-standalone.html:
  • media/video-controls-audiotracks-trackmenu.html:
  • media/video-controls-captions-trackmenu-localized.html:
  • media/video-controls-captions-trackmenu-only-captions-descriptions-and-subtitles.html:
  • media/video-controls-captions-trackmenu-sorted.html:
  • media/video-controls-captions-trackmenu.html:
  • media/video-controls-drop-and-restore-timeline.html:
  • media/video-controls-in-media-document.html:
  • media/video-controls-no-display-with-text-track.html:
  • media/video-controls-rendering.html:
  • media/video-controls-show-on-kb-or-ax-event.html:
  • media/video-controls-toggling.html:
  • media/video-controls-transformed.html:
  • media/video-controls-visible-audio-only.html:
  • media/video-controls-visible-exiting-fullscreen.html:
  • media/video-controls-zoomed.html:
  • media/video-display-toggle.html:
  • media/video-empty-source.html:
  • media/video-fullscreen-only-controls.html:
  • media/video-fullscreen-only-playback.html:
  • media/video-initially-hidden-volume-slider-up.html:
  • media/video-no-audio.html:
  • media/video-play-audio-require-user-gesture.html:
  • media/video-play-require-user-gesture.html:
  • media/video-trackmenu-selection.html:
  • media/video-volume-slider-drag.html:
  • media/video-volume-slider.html:
  • media/video-zoom-controls.html:
  • media/volume-bar-empty-when-muted.html:
  • platform/ios/ios/fixed/fixed-back-forward.html:
  • platform/ios/media/video-play-glyph-composited-outside-overflow-scrolling-touch-container.html:
  • platform/ios/mediastream/audio-muted-in-background-tab-gpu-process.html:
  • platform/ios/mediastream/audio-muted-in-background-tab.html:
  • platform/ios/mediastream/getUserMedia-single-capture-gpu-process.html:
  • platform/ios/mediastream/getUserMedia-single-capture.html:
  • platform/ipad/fast/viewport/meta-viewport-ignored.html:
  • platform/ipad/fast/viewport/viewport-overriden-by-minimum-effective-width-if-ignore-meta-viewport.html:
  • plugins/crash-restoring-plugin-page-from-page-cache.html:
  • plugins/frameset-with-plugin-frame.html:
  • plugins/netscape-plugin-page-cache-works.html:
  • requestidlecallback/requestidlecallback-in-page-cache.html:
  • storage/indexeddb/IDBRequest-page-cache.html:
  • storage/indexeddb/IDBTransaction-page-cache.html:
  • svg/dom/css-animate-input-foucs-crash.html:
  • swipe/basic-cached-back-swipe.html:
  • swipe/main-frame-pinning-requirement.html:
  • swipe/pushState-cached-back-swipe.html:
  • swipe/pushState-programmatic-back-while-swiping-crash.html:
  • swipe/pushstate-with-manual-scrollrestoration.html:
  • tiled-drawing/scrolling/null-parent-back-crash.html:
  • tiled-drawing/tiled-drawing-scroll-position-page-cache-restoration.html:
  • webanimations/animation-page-cache.html:
  • webrtc/datachannel/datachannel-page-cache-send.html:
  • webrtc/datachannel/datachannel-page-cache.html:
  • webrtc/peerconnection-new-candidate-page-cache.html:
  • webrtc/peerconnection-page-cache-long.html:
  • webrtc/peerconnection-page-cache.html:
  • webrtc/video-rotation-no-cvo.html:
10:13 AM WebKitGTK/2.30.x edited by Michael Catanzaro
(diff)
10:10 AM Changeset in webkit [268399] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Introduce InlineLevelBox::LineBreakBox and GenericInlineLevelBox
https://bugs.webkit.org/show_bug.cgi?id=217646

Reviewed by Antti Koivisto.

This is in preparation for adding support for https://www.w3.org/TR/css-inline-3/#layout-bounds.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes): Cleaning up a bit and moving adjustVerticalGeometryForNonEmptyInlineBox
to a dedicated function. constructInlineLevelBoxes was getting a bit too busy.

  • layout/inlineformatting/InlineLineBox.cpp:

(WebCore::Layout::LineBox::InlineLevelBox::InlineLevelBox):

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::InlineLevelBox::createRootInlineBox):
(WebCore::Layout::LineBox::InlineLevelBox::createAtomicInlineLevelBox):
(WebCore::Layout::LineBox::InlineLevelBox::createInlineBox):
(WebCore::Layout::LineBox::InlineLevelBox::createLineBreakBox):
(WebCore::Layout::LineBox::InlineLevelBox::createGenericInlineLevelBox):

10:06 AM Changeset in webkit [268398] by youenn@apple.com
  • 7 edits in trunk/Source/WebCore

Webcam video from navigator.mediaDevices.getUserMedia() to 2D canvas fails on Safari on iPhone
https://bugs.webkit.org/show_bug.cgi?id=217578
<rdar://problem/70183875>

Reviewed by Eric Carlson.

It is unneeded for MediaStream video backends to enqueue samples to the display layer if the video element is hidden.
In iOS, the samples may never be flushed which might cause capture failing after enqueuing too many camera samples.
To avoid that, we no longer enqueue samples to the display layer when the player is not visible.
In case of canvas painting, other backends need to be made visible for canvas painting to work.
For MediaStream backend, we do not need that since we always keep the last sample.
For that reason, we keep the backend as not visible even if canvas happens.
We do so by introducing a setVisibleForCanvas that is a no-op for MediaStream backend and similar to setVisible for other backends.
For good measure, we now flush the MediaStream display layer whenever visibility changed.

Manually tested.

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::paintCurrentFrameInContext):

  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::setVisibleForCanvas):

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::setVisibleForCanvas):

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

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVisible):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVisibleForCanvas):

9:56 AM Changeset in webkit [268397] by Peng Liu
  • 2 edits in trunk/Tools

Clean up the API tests of CARingBuffer
https://bugs.webkit.org/show_bug.cgi?id=217633

Reviewed by Simon Fraser.

Remove unused private functions and enable the tests for iOS.

  • TestWebKitAPI/Tests/WebCore/CARingBuffer.cpp:

(TestWebKitAPI::CARingBufferTest::audioBufferListSizeForStream): Deleted.
(TestWebKitAPI::CARingBufferTest::configureBufferListForStream): Deleted.

9:13 AM Changeset in webkit [268396] by youenn@apple.com
  • 4 edits in trunk/Source/WebCore

Improve computation of default audio input and output devices
https://bugs.webkit.org/show_bug.cgi?id=217652
<rdar://problem/69857857>

Reviewed by Eric Carlson.

Add support for computation of the default audio output device.
Fix a bug in the computation of the default device on the first call to refreshAudioCaptureDevices.
Refactor the code as follows to make it easier to read:

  • for each case we want to refresh devices, compute a Vector of audio devices, first microphones, then speakers.
  • make sure to put in that list the default microphone first in the list and the default speaker just after the last microphone in the list.
  • check whether the list is equal to the current list of audio devices. If it is equal, abort.
  • update microphone and speaker lists and send notification of device change.

Minor refactoring to make CoreAudioCaptureDevice isAlive a private method.

Manually tested.

  • platform/mediastream/mac/CoreAudioCaptureDevice.cpp:

(WebCore::CoreAudioCaptureDevice::CoreAudioCaptureDevice):

  • platform/mediastream/mac/CoreAudioCaptureDevice.h:
  • platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:

(WebCore::getDefaultCaptureOutputDevice):
(WebCore::CoreAudioCaptureDeviceManager::coreAudioCaptureDevices):
(WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices):

9:10 AM Changeset in webkit [268395] by Lauro Moura
  • 2 edits in trunk/Tools

REGRESSION(r268267) [webkitpy] Add missing deps for pytest when running webdriver tests
https://bugs.webkit.org/show_bug.cgi?id=217650

Reviewed by Jonathan Bedard.

scandir (needed as os.scandir was added only in py 3.5)

Also fixed more_itertools autoinstall declaration so the package
name, with underscore, is the name of the webkitcorepy package and the
dash is used for the pypi package name.

With these changes the script does not error anymore, although there
seems to be some issues with the executor when running tests. They
happen to only start and stop the webserver but not actually being
run. To be investigated in a separate bug.

  • Scripts/webkitpy/init.py:
8:39 AM Changeset in webkit [268394] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

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

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

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

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

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

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

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

  • platform/network/soup/CertificateInfo.h:

(WebCore::CertificateInfo::isolatedCopy const):

  • platform/network/soup/CertificateInfoSoup.cpp:

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

7:38 AM Changeset in webkit [268393] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[LFC][IFC] Remove fully collapsed trailing run
https://bugs.webkit.org/show_bug.cgi?id=217653

Reviewed by Antti Koivisto.

Source/WebCore:

We don't attach fully collapsible runs to the line.
When Line::appendText sees an inline item that would generate such run
(e.g. <div>foobar <span> <span></div> - the inline text item inside the <span> would generate fully collapsed run)
it simply ignores it and will not generate a run for it.

In this patch when the trailing trimmable run is fully collapsed, we should not only collapse it,
but also remove it from the line.

Test: fast/layoutformattingcontext/replaced-and-trailing-trimmable-content.html

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::TrimmableTrailingContent::addFullyTrimmableContent):
(WebCore::Layout::Line::TrimmableTrailingContent::addPartiallyTrimmableContent):
(WebCore::Layout::Line::TrimmableTrailingContent::remove):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::TrimmableTrailingContent::isEmpty const):
(WebCore::Layout::Line::TrimmableTrailingContent::reset):

LayoutTests:

  • fast/layoutformattingcontext/replaced-and-trailing-trimmable-content-expected.html: Added.
  • fast/layoutformattingcontext/replaced-and-trailing-trimmable-content.html: Added.
5:10 AM WebKitGTK/2.30.x edited by Philippe Normand
(diff)
5:08 AM Changeset in webkit [268392] by Philippe Normand
  • 5 edits in trunk

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

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

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

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

  • platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:

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

LayoutTests:

  • media/media-can-play-mpeg4-video-expected.txt:
  • media/media-can-play-mpeg4-video.html: Add test for "avc1" codec.
2:24 AM Changeset in webkit [268391] by Adrian Perez de Castro
  • 7 edits in trunk

[GTK] Add support for gamepad tests
https://bugs.webkit.org/show_bug.cgi?id=98937

Reviewed by Carlos Garcia Campos.

Change PLATFORM(MAC) guards to ENABLE(GAMEPAD) around the support code used for
testing gamepad support in WKTR, and update GTK port test expectations accordingly.

Tools:

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp: Change guards to ENABLE(GAMEPAD).
  • WebKitTestRunner/TestController.cpp: Ditto.

(WTR::TestController::initialize):

  • WebKitTestRunner/TestInvocation.cpp: Ditto.

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

  • platform/glib/TestExpectations: Remove skipped gamepad tests.
  • platform/wpe/TestExpectations: Skip gamepad tests for the WPE port.
2:20 AM Changeset in webkit [268390] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebCore

[GTK] Make gamepads visible after their first input is received
https://bugs.webkit.org/show_bug.cgi?id=217494

Reviewed by Carlos Garcia Campos.

Turns out this was mostly working already, with a small caveat: Sometimes there would
be a timing issue if m_inputNotificationTimer would be fired before having a chance
of setting the m_initialGamepadsConnected flag, and in that case the early return
would prevent dispatchPlatformGamepadInputActivity() from ever being called. This
re-arms the timer to be fired again in the next event loop iteration if the flag was
unset, so it will be checked again after it has been toggled. This same approach is
used by HIDGamepadProvider in the Mac port, for example.

  • platform/gamepad/manette/ManetteGamepadProvider.cpp:

(WebCore::ManetteGamepadProvider::inputNotificationTimerFired): Re-arm timer if
m_initialGamepadsConnected was not yet set.

2:15 AM Changeset in webkit [268389] by Adrian Perez de Castro
  • 2 edits in trunk

[GTK] Set ENABLE_GAMEPAD=ON for developer builds
https://bugs.webkit.org/show_bug.cgi?id=217493

Reviewed by Carlos Garcia Campos.

  • Source/cmake/OptionsGTK.cmake: Make the default value of ENABLE_GAMEPAD

depend on ENABLE_EXPERIMENTAL_FEATURES.

1:17 AM Changeset in webkit [268388] by commit-queue@webkit.org
  • 3 edits in trunk

[WPE][GTK] ENABLE_SHAREABLE_RESOURCE should be PRIVATE build option
https://bugs.webkit.org/show_bug.cgi?id=217592

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

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:
12:44 AM Changeset in webkit [268387] by Diego Pino Garcia
  • 2 edits in trunk/Tools

Unreviewed GLIB gardening. Remove several tests that were only failing in EWS API-GTK.

  • TestWebKitAPI/glib/TestExpectations.json:
12:16 AM Changeset in webkit [268386] by commit-queue@webkit.org
  • 11 edits
    1 copy
    1 add in trunk/Source

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:

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):

Oct 10, 2020:

10:27 PM Changeset in webkit [268316] by ysuzuki@apple.com
  • 27 edits in trunk

[JSC] Assert Operation and HostFunction are in JITOperationsList
https://bugs.webkit.org/show_bug.cgi?id=217500

Reviewed by Saam Barati.

Source/JavaScriptCore:

We make JSC PtrTag more restricted. We add the following information for each PtrTag.

  1. What code target is tagged with this PtrTag? Native or JIT.
  2. What uses this PtrTag when invoking code? Native, JIT, or None.

And we will verify via JIT-caging.

This patch adds HostFunctionPtrTag and sign host functions with it. Previously, it was signed with JSEntryPtrTag,
and this is wrong since it is used for JS entry thunks. And we introduce assertion that function is registered in
JITOperationList when signing function with OperationPtrTag or HostFunctionPtrTag.

We also annotate all operations in testb3 so that testb3 can work with OperationPtrTag / HostFunctionPtrTag assertions.

  • assembler/JITOperationList.cpp:

(JSC::addPointers):

  • assembler/JITOperationList.h:
  • b3/testb3_1.cpp:

(main):

  • b3/testb3_5.cpp:

(JSC_DEFINE_JIT_OPERATION):
(simpleFunction): Deleted.
(functionWithHellaArguments): Deleted.
(functionWithHellaArguments2): Deleted.
(functionWithHellaArguments3): Deleted.
(simpleFunctionDouble): Deleted.
(simpleFunctionFloat): Deleted.
(functionWithHellaDoubleArguments): Deleted.
(functionWithHellaFloatArguments): Deleted.

  • b3/testb3_6.cpp:

(JSC_DEFINE_JIT_OPERATION):
(interpreterPrint): Deleted.

  • b3/testb3_7.cpp:

(JSC_DEFINE_JIT_OPERATION):
(oneFunction): Deleted.
(noOpFunction): Deleted.
(functionNineArgs): Deleted.

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

  • dfg/DFGOperations.cpp:
  • jit/JITOperations.cpp:
  • jit/ThunkGenerators.cpp:

(JSC::nativeForGenerator):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSCPtrTag.cpp:

(JSC::tagForPtr):
(JSC::ptrTagName):

  • runtime/JSCPtrTag.h:

(JSC::tagJSCCodePtrImpl):
(JSC::untagJSCCodePtrImpl):

  • runtime/NativeFunction.h:

(JSC::TaggedNativeFunction::TaggedNativeFunction):
(JSC::TaggedNativeFunction::operator NativeFunction):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::doOSREntry):

Source/WebCore:

  • testing/js/WebCoreTestSupport.cpp:

(WebCoreTestSupport::populateJITOperations):

  • testing/js/WebCoreTestSupport.h:

Source/WTF:

This patch makes tagCodePtr etc. take PtrTag only from template parameter.
As a result, we can easily customize special verification process for specific PtrTag.
By leveraging this feature, we introduce HostFunction / JITOperation assertions for HostFunctionPtrTag and OperationPtrTag.

We also add tagCodePtrWithStackPointerForJITCall and untagCodePtrWithStackPointerForJITCall, they are used only when we need
to tag a pointer with stack pointer which is a dynamic PtrTag.

  • wtf/PtrTag.cpp:

(WTF::tagForPtr):

  • wtf/PtrTag.h:

(WTF::tagNativeCodePtrImpl):
(WTF::untagNativeCodePtrImpl):
(WTF::PtrTagTraits::tagCodePtr):
(WTF::PtrTagTraits::untagCodePtr):
(WTF::registerPtrTagLookup):
(WTF::reportBadTag):
(WTF::removeCodePtrTag):
(WTF::tagCodePtrImpl):
(WTF::tagCodePtr):
(WTF::untagCodePtrImpl):
(WTF::untagCodePtr):
(WTF::retagCodePtrImplHelper):
(WTF::retagCodePtrImpl):
(WTF::retagCodePtr):
(WTF::assertIsCFunctionPtr):
(WTF::isTaggedWith):
(WTF::tagCFunctionPtrImpl):
(WTF::tagCFunctionPtr):
(WTF::tagCFunction):
(WTF::untagCFunctionPtrImpl):
(WTF::untagCFunctionPtr):
(WTF::tagArrayPtr):
(WTF::untagArrayPtr):
(WTF::removeArrayPtrTag):
(WTF::retagArrayPtr):
(WTF::tagCodePtrWithStackPointerForJITCall):
(WTF::untagCodePtrWithStackPointerForJITCall):
(WTF::untagCodePtrImplHelper): Deleted.

Tools:

This patch turned out that WebCoreTestSupport has its own JIT operations. So we need to populate them in test harness specially.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(dumpRenderTree):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(main):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize):

6:30 PM Changeset in webkit [268315] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Rename LineBox::InlineBox to InlineLevelBox
https://bugs.webkit.org/show_bug.cgi?id=217562

Reviewed by Simon Fraser.

Let's use spec terms (https://www.w3.org/TR/css-inline-3/) where applicable.

InlineLevelBox -> box generated by an inline level element (replaced, non-replaced etc). LineBox contains a list of InlineLevelBoxes.
InlineBox -> A non-replaced InlineLevelBox. The contents of an inline box participate in the

same inline formatting context as the inline box itself (e.g. <span>this content is in the same IFC as the span box</span>).

RootInlineBox -> a special, anonymous inline box for all the IFC content (e.g. <div>this content is part of the root inline box</div>).

  • layout/inlineformatting/InlineFormattingContext.cpp:

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

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::build):
(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):
(WebCore::Layout::LineBoxBuilder::adjustInlineBoxesLogicalHeight):
(WebCore::Layout::LineBoxBuilder::alignInlineLevelBoxesVerticallyAndComputeLineBoxHeight):
(WebCore::Layout::InlineFormattingContext::Geometry::computedLineLogicalRect const):
(WebCore::Layout::LineBoxBuilder::constructInlineBoxes): Deleted.
(WebCore::Layout::LineBoxBuilder::computeInlineBoxesLogicalHeight): Deleted.
(WebCore::Layout::LineBoxBuilder::alignInlineBoxesVerticallyAndComputeLineBoxHeight): Deleted.

  • layout/inlineformatting/InlineLineBox.cpp:

(WebCore::Layout::LineBox::InlineLevelBox::InlineLevelBox):
(WebCore::Layout::m_type):
(WebCore::Layout::LineBox::addRootInlineBox):
(WebCore::Layout::LineBox::addInlineLevelBox):
(WebCore::Layout::LineBox::logicalRectForTextRun const):
(WebCore::Layout::LineBox::InlineBox::InlineBox): Deleted.
(WebCore::Layout::m_baseline): Deleted.
(): Deleted.
(WebCore::Layout::LineBox::addInlineBox): Deleted.

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::InlineLevelBox::isInlineBox const):
(WebCore::Layout::LineBox::inlineLevelBoxForLayoutBox const):
(WebCore::Layout::LineBox::inlineLevelBoxList const):
(WebCore::Layout::LineBox::containsInlineLevelBox const):
(WebCore::Layout::LineBox::rootInlineBox):
(WebCore::Layout::LineBox::nonRootInlineLevelBoxes const):
(WebCore::Layout::LineBox::inlineLevelBoxForLayoutBox):
(WebCore::Layout::LineBox::InlineLevelBox::createRootInlineBox):
(WebCore::Layout::LineBox::InlineLevelBox::createAtomicInlineLevelBox):
(WebCore::Layout::LineBox::InlineLevelBox::createInlineBox):
(WebCore::Layout::LineBox::InlineBox::logicalRect const): Deleted.
(WebCore::Layout::LineBox::InlineBox::logicalTop const): Deleted.
(WebCore::Layout::LineBox::InlineBox::logicalBottom const): Deleted.
(WebCore::Layout::LineBox::InlineBox::logicalLeft const): Deleted.
(WebCore::Layout::LineBox::InlineBox::logicalWidth const): Deleted.
(WebCore::Layout::LineBox::InlineBox::logicalHeight const): Deleted.
(WebCore::Layout::LineBox::InlineBox::baseline const): Deleted.
(WebCore::Layout::LineBox::InlineBox::descent const): Deleted.
(WebCore::Layout::LineBox::InlineBox::isEmpty const): Deleted.
(WebCore::Layout::LineBox::InlineBox::setIsNonEmpty): Deleted.
(WebCore::Layout::LineBox::InlineBox::lineSpacing const): Deleted.
(WebCore::Layout::LineBox::InlineBox::fontMetrics const): Deleted.
(WebCore::Layout::LineBox::InlineBox::layoutBox const): Deleted.
(WebCore::Layout::LineBox::InlineBox::setLogicalTop): Deleted.
(WebCore::Layout::LineBox::InlineBox::setLogicalWidth): Deleted.
(WebCore::Layout::LineBox::InlineBox::setLogicalHeight): Deleted.
(WebCore::Layout::LineBox::InlineBox::setBaseline): Deleted.
(WebCore::Layout::LineBox::InlineBox::setDescent): Deleted.
(WebCore::Layout::LineBox::InlineBox::setLineSpacing): Deleted.
(WebCore::Layout::LineBox::inlineBoxForLayoutBox const): Deleted.
(WebCore::Layout::LineBox::inlineBoxList const): Deleted.
(WebCore::Layout::LineBox::nonRootInlineBoxes const): Deleted.
(WebCore::Layout::LineBox::inlineBoxForLayoutBox): Deleted.
(WebCore::Layout::LineBox::InlineBox::createBoxForRootInlineBox): Deleted.
(WebCore::Layout::LineBox::InlineBox::createBoxForAtomicInlineLevelBox): Deleted.
(WebCore::Layout::LineBox::InlineBox::createBoxForInlineBox): Deleted.

1:39 PM Changeset in webkit [268314] by Darin Adler
  • 5 edits in trunk

replaceChildren() (with no arguments) silently does nothing rather than removing the children
https://bugs.webkit.org/show_bug.cgi?id=217537

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/dom/nodes/ParentNode-replaceChildren-expected.txt:
  • web-platform-tests/dom/nodes/ParentNode-replaceChildren.html:

Added a test of replaceChildren without any argument, on a parent having a child.

Source/WebCore:

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::replaceChildren): Removed incorrect early return when the
node is null, instead added some null checks around the parts of the algorithm that
should be skipped in that case.

12:49 PM Changeset in webkit [268313] by weinig@apple.com
  • 26 edits in trunk/Source

Use WebPreference definitions from shared configuration files in WebCore (Part 1)
https://bugs.webkit.org/show_bug.cgi?id=217551

Reviewed by Darin Adler.

Source/WebCore:

This begins using the WebPreferences*.yaml files for the generation of
WebCore's Settings and InternalSettings classes. In this first part, we
only are moving settings that already exist in the WebPreferences*.yaml
files. A subsequent change will migrate the remaining additional settings
over.

  • Configurations/WebCore.xcconfig:

Add variable (already used by WebKit) to access the WTF build scripts
directory for access to the WebPreferences*.yaml files in DerivedSources.make

  • DerivedSources-input.xcfilelist:

Update with new input files, the WebPreferences*.yaml files.

  • WebCoreMacros.cmake:
  • DerivedSources.make:

Update GenerateSettings.rb call with new parameters.

  • Scripts/GenerateSettings.rb:

Adds support for generating Settings based on preferences in the
WebPreferences*.yaml files while maintaining support for the additional
settings from Settings.yaml. Adds support for a new key, 'webcoreImplementation'
to continue supporting custom implementations in SettingsBase.

  • Scripts/SettingsTemplates/InternalSettingsGenerated.cpp.erb:
  • Scripts/SettingsTemplates/InternalSettingsGenerated.h.erb:
  • Scripts/SettingsTemplates/InternalSettingsGenerated.idl.erb:
  • Scripts/SettingsTemplates/Settings.cpp.erb:
  • Scripts/SettingsTemplates/Settings.h.erb:

Update to account for new names (@allSettingsSet) and differentiation
between custom and non-custom implementations.

  • editing/EditorCommand.cpp:
  • page/Frame.cpp:

Update for new name. DOMPasteAllowed -> domPasteAllowed, which matches convention.

  • page/Settings.yaml:

Moved settings that were bound by WebPreferences to WebPreferences. Sorted remaining
ones left.

  • page/SettingsDefaultValues.h:

Remove defaults that were the same on all platforms. These are now hardcoded in
WebPreferences.

  • style/StyleFontSizeFunctions.cpp:

(WebCore::Style::fontSizeForKeyword):
Add explicit type, now that minimumLogicalFontSize is a double, not an int in WebCore
(it was already a double at the WebKit/WebKitLegacy level).

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::sendViewportAttributesChanged):
Add explicit type to support layoutFallbackWidth now being an unsigned int
in Settings (it was already an unsigned int at the WebKit level).

Source/WTF:

This begins using the WebPreferences*.yaml files for the generation of
WebCore's Settings and InternalSettings classes. In this first part, we
only are moving settings that already exist in the WebPreferences*.yaml
files. A subsequent change will migrate the remaining additional settings
over.

To do this we must add default values for 'WebCore', which are unfortunately
still needed for things like the empty client based SVGImage and sanitizing
web content functionality. We only need default WebCore values for preferences
that are bound to WebCore::Settings. It would be good to eliminate the need
for these eventually, but that is not a goal of this change.

This also adds some new keys from WebCore's Settings.yaml:

  • 'webcoreOnChange: *' called by WebCore::Settings when the setting changes.
  • 'inspectorOverride: true' used to allow the inspector to override the setting.
  • 'webcoreImplementation: custom' used to indicate that WebCore::SettingsBase implements the setting.
  • 'webcoreGetter: *' used to provide an alternate name for the getter in WebCore::Settings.
  • 'webcoreExcludeFromInternalSettings: true' used to exclude from WebCore's InternalSettings bindings.
  • Scripts/GeneratePreferences.rb:

Adds check that if the preference is bound to WebCore, it includes defaults for all
three front generators, 'WebKit', WebKitLegacy', and 'WebCore'.

  • Scripts/Preferences/WebPreferences.yaml:
  • Scripts/Preferences/WebPreferencesDebug.yaml:
  • Scripts/Preferences/WebPreferencesExperimental.yaml:
  • Scripts/Preferences/WebPreferencesInternal.yaml:

Migrates defaults and additional keys from Settings.yaml.

12:46 PM Changeset in webkit [268312] by Adrian Perez de Castro
  • 11 edits in trunk/Source

[GTK] Build broken with ENABLE_GAMEPAD enabled
https://bugs.webkit.org/show_bug.cgi?id=217226

Reviewed by Darin Adler.

Source/WebCore:

No new tests needed.

  • Headers.cmake: List SharedGamepadValue.h in WebCore_PRIVATE_FRAMEWORK_HEADERS, which

was missing.

  • platform/gamepad/EmptyGamepadProvider.h: Mark class as final, because the destructor

is final itself.

  • platform/gamepad/manette/ManetteGamepad.cpp:

(WebCore::ManetteGamepad::ManetteGamepad): Adapt to use SharedGamepadValue.
(WebCore::ManetteGamepad::buttonPressedOrReleased): Ditto.
(WebCore::ManetteGamepad::absoluteAxisChanged): Ditto.

  • platform/gamepad/manette/ManetteGamepad.h: Ditto.
  • platform/gamepad/manette/ManetteGamepadProvider.cpp: Rename m_connectionDelayTimer

to m_initialGamepadsConnectedTimer, which better reflects the usage and also makes the
provider a bit more similar to HIDGamepadProvider (from the Mac port). Arrange to use
the EventMakesGamepadsVisible flag.
(WebCore::ManetteGamepadProvider::ManetteGamepadProvider): Remove the loop that iterates
over the pre-detected gamepads because they are being added too early before any client
has had the chance to be attached.
(WebCore::ManetteGamepadProvider::startMonitoringGamepads): The loop that iterates and
adds pre-detected gamepads is moved here, once there is at least a client. This solves
hitting an assertion later on when UIGamepadProvider checks that the number of gamepads
it has been notified of matches the amount tracked by ManetteGamepadProvider.
(WebCore::ManetteGamepadProvider::stopMonitoringGamepads):
(WebCore::ManetteGamepadProvider::deviceConnected):
(WebCore::ManetteGamepadProvider::deviceDisconnected):
(WebCore::ManetteGamepadProvider::initialGamepadsConnectedTimerFired):
(WebCore::ManetteGamepadProvider::inputNotificationTimerFired):

  • platform/gamepad/manette/ManetteGamepadProvider.h: Ditto.

Source/WebKit:

  • UIProcess/Gamepad/UIGamepadProvider.h: Mark class as final, because the destructor is

final itself.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::numberOfConnectedGamepadsForTesting): Reorganize PLATFORM(MAC)
guards to use GameControllerGamepadProvider only on macOS, as it is unavailable on other
ports.

  • WebProcess/Gamepad/WebGamepadProvider.h: Mark class as final, because the destructor

is final itself.

12:42 PM Changeset in webkit [268311] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

[LFC Display] Only dump the trees when the log channel is enabled
https://bugs.webkit.org/show_bug.cgi?id=217560

Reviewed by Zalan Bujtas.

Only dump the layout and display trees when the FormattingContextLayout log channel
is enabled. Add ability to get the trees as a String for logging.

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::build const):
(WebCore::Display::displayTreeAsText):
(WebCore::Display::showDisplayTree):

  • display/DisplayTreeBuilder.h:
  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::layoutTreeAsText):
(WebCore::Layout::showLayoutTree):

  • layout/layouttree/LayoutTreeBuilder.h:
5:50 AM Changeset in webkit [268310] by Oriol Brufau
  • 2 edits
    1 delete in trunk/LayoutTests

Fix mac expectations for text-selection.html
https://bugs.webkit.org/show_bug.cgi?id=217475

Reviewed by Alexey Proskuryakov.

In Mojave this test produces a different result than in other platforms.
r268233 already added a Mojave-specific expected.txt, this patch removes
the failure from TestExpectations and removes the Mac-specific
expected.txt, which is identical to the non-platform-specific one.

  • platform/mac/TestExpectations:
  • platform/mac/imported/w3c/web-platform-tests/css/css-pseudo/text-selection-expected.txt: Removed.
5:49 AM Changeset in webkit [268309] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][Integration] Turn parent/first child check into establishesInlineFormattingContext in canUseForLineLayoutWithReason
https://bugs.webkit.org/show_bug.cgi?id=217545

Reviewed by Antti Koivisto.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

  • layout/integration/LayoutIntegrationCoverage.h:

Oct 9, 2020:

9:37 PM Changeset in webkit [268308] by jer.noble@apple.com
  • 5 edits in trunk/Source/WebCore

[Mac] AirPlay menu does not show up when AirPlay button is clicked
https://bugs.webkit.org/show_bug.cgi?id=217536
<rdar://problem/69973777>

Reviewed by Eric Carlson.

Source/WebCore:

PAL tries to soft-link the AVRoutePickerView from the AVFoundation framework, rather than the (correct)
AVKit framework. Remove AVRoutePickerView from AVFoundationSoftLink.h and use the already declared version
inside AVRoutePickerViewTargetPicker.mm.

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

(WebCore::AVRoutePickerViewTargetPicker::isAvailable):

Source/WebCore/PAL:

  • pal/cocoa/AVFoundationSoftLink.h:
  • pal/cocoa/AVFoundationSoftLink.mm:
9:12 PM Changeset in webkit [268307] by Alan Bujtas
  • 7 edits
    1 delete in trunk/Source/WebCore

[LFC][Display] Remove the WK1-only display painter
https://bugs.webkit.org/show_bug.cgi?id=217553

Reviewed by Simon Fraser.

This is replaced by /WebCode/display/css/DisplayCSSPainter.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::paint): Deleted.

  • layout/LayoutContext.h:
  • layout/displaytree/DisplayPainter.cpp: Removed.
  • layout/displaytree/DisplayPainter.h: Removed.
  • page/FrameView.cpp:

(WebCore::FrameView::paintContents):

7:47 PM Changeset in webkit [268306] by Kocsen Chung
  • 1 copy in tags/Safari-610.3.1

Tag Safari-610.3.1.

6:32 PM Changeset in webkit [268305] by Hector Lopez
  • 2 edits
    1 add in trunk/LayoutTests

[ macOS wk2 Debug ] editing/mac/spelling/autocorrection-contraction.html is a constant timeout
https://bugs.webkit.org/show_bug.cgi?id=217548

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:41 PM Changeset in webkit [268304] by mmaxfield@apple.com
  • 4 edits in trunk/Source/WebCore

[GPU Process] Delete DisplayList::DrawGlyphs::m_blockLocation because it's always 0
https://bugs.webkit.org/show_bug.cgi?id=217541

Reviewed by Wenson Hsieh.

There's no reason for it to exist.

No new tests because there is no behavior change.

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::DrawGlyphs::DrawGlyphs):
(WebCore::DisplayList::DrawGlyphs::computeBounds):
(WebCore::DisplayList::DrawGlyphs::localBounds const):
(WebCore::DisplayList::operator<<):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawGlyphs::create):
(WebCore::DisplayList::DrawGlyphs::localAnchor const):
(WebCore::DisplayList::DrawGlyphs::anchorPoint const):
(WebCore::DisplayList::DrawGlyphs::encode const):
(WebCore::DisplayList::DrawGlyphs::decode):
(WebCore::DisplayList::DrawGlyphs::blockLocation const): Deleted.
(WebCore::DisplayList::DrawGlyphs::setBlockLocation): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

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

5:20 PM Changeset in webkit [268303] by Hector Lopez
  • 2 edits in trunk/LayoutTests

[ macOS ] webaudio/OfflineAudioContext/onstatechange.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217543

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:17 PM Changeset in webkit [268302] by Kocsen Chung
  • 1 copy in tags/Safari-610.2.11.1.1

Tag Safari-610.2.11.1.1.

5:10 PM Changeset in webkit [268301] by Hector Lopez
  • 2 edits in trunk/LayoutTests

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

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:08 PM Changeset in webkit [268300] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebCore

[GPU Process] Mechanical cleanup in DisplayListRecorder
https://bugs.webkit.org/show_bug.cgi?id=217539

Reviewed by Sam Weinig.

Move duplicated code into a helper function.

No new tests because there is no behavior change.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::drawGlyphs):
(WebCore::DisplayList::Recorder::drawImage):
(WebCore::DisplayList::Recorder::drawTiledImage):
(WebCore::DisplayList::Recorder::drawNativeImage):
(WebCore::DisplayList::Recorder::drawPattern):
(WebCore::DisplayList::Recorder::beginTransparencyLayer):
(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::appendItemAndUpdateExtent):

  • platform/graphics/displaylists/DisplayListRecorder.h:
4:39 PM Changeset in webkit [268299] by Wenson Hsieh
  • 11 edits in trunk

[GPU Process] Add additional support for painting video elements to 2D contexts
https://bugs.webkit.org/show_bug.cgi?id=217532

Reviewed by Tim Horton.

Source/WebCore:

Add support for using video elements as sources for createImageBitmap and createPattern by ensuring that
we use display-list-backed image buffers for painting when using the GPU process for media. See below for more
details.

Tests: fast/canvas/canvas-createPattern-video-loading.html

fast/canvas/canvas-createPattern-video-modify.html
imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/canvas-createImageBitmap-video-resize.html
imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-drawImage.html
imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-flipY.html

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::createBufferForPainting const):

  • html/HTMLVideoElement.h:

Add a helper function to create an ImageBuffer compatible with this video element, for the purpose of
painting video frames. In particular, if GPU process for media is enabled, we'll create a display-list-backed
remote image buffer.

  • html/ImageBitmap.cpp:

(WebCore::ImageBitmap::createPromise):

Call into HTMLVideoElement::createBufferForPainting to construct the ImageBuffer.

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::createPattern):

Call into HTMLVideoElement::createBufferForPainting to construct the ImageBuffer.

  • platform/graphics/RenderingMode.h:

Add a "purpose" enum value for media painting.

  • platform/graphics/displaylists/DisplayListImageBuffer.h:

Adjust this to avoid forcing the platform context to be created in the case where there are no display list
items to flush. Needed to avoid crashing when creating CanvasPattern with a video element.

Source/WebKit:

See WebCore/ChangeLog for more details.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::shouldUseRemoteRenderingFor):

LayoutTests:

Unskip several layout tests that pass after this change.

  • gpu-process/TestExpectations:
4:34 PM Changeset in webkit [268298] by Hector Lopez
  • 2 edits in trunk/LayoutTests

imported/w3c/web-platform-tests/mediacapture-record/idlharness.window.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=217525

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:26 PM Changeset in webkit [268297] by Karl Rackler
  • 2 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

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:17 PM Changeset in webkit [268296] by Hector Lopez
  • 2 edits in trunk/LayoutTests

[ iOS Debug ] imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-stop.html is a constant timeout
https://bugs.webkit.org/show_bug.cgi?id=217538

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:06 PM Changeset in webkit [268295] by Kocsen Chung
  • 1 copy in tags/Safari-611.1.3

Tag Safari-611.1.3.

4:02 PM Changeset in webkit [268294] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][Integration] Enable overflow hidden.
https://bugs.webkit.org/show_bug.cgi?id=217488

Reviewed by Antti Koivisto.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForStyle):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::collectOverflow):

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

[webkitscmpy] Handle svn info run from directory
https://bugs.webkit.org/show_bug.cgi?id=217521
<rdar://problem/70144173>

Reviewed by Dewei Zhu.

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

(Svn.init): Set the root_path, so that svn info is run from the top level.
(Svn.info): Rely on root_path, not path.
(Svn.root_path): Use self._root_path instead of self.info() call.
(Svn.list): Rely on root_path, not path.
(Svn._cache_revisions): Ditto.
(Svn.remote): The repository root will not change during a single command invocation.
(Svn._branch_for): Handle initial branch commits, which. may have non-standard change lists.
(Svn.commit): Rely on root_path, not path, certain svn info calls will not change during
the invocation of a single program.

3:15 PM Changeset in webkit [268292] by Peng Liu
  • 3 edits in trunk/Source/WebKit

[Media in GPU Process] Enable audio routing arbitration on Mac
https://bugs.webkit.org/show_bug.cgi?id=217528

Reviewed by Eric Carlson.

Use the audio routing arbitration implementation in the Web process and UI process
before moving AudioSessionRoutingArbitratorProxy to the GPU process (which will
require some sandbox changes).

  • WebProcess/GPU/media/RemoteAudioSession.cpp:

(WebKit::RemoteAudioSession::setCategory):
(WebKit::RemoteAudioSession::category const):

  • WebProcess/GPU/media/RemoteAudioSession.h:
2:48 PM Changeset in webkit [268291] by Kocsen Chung
  • 1 copy in tags/Safari-610.2.11.0.1

Tag Safari-610.2.11.0.1.

2:45 PM Changeset in webkit [268290] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit

Promote WKWebView media playback SPI to API
https://bugs.webkit.org/show_bug.cgi?id=217335

Unreviewed build fix for macCatalyst.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::isUserFacingChanged):

2:32 PM Changeset in webkit [268289] by Russell Epstein
  • 1 edit in branches/safari-610.2.11.1-branch/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h

Unreviewed build fix, rdar://problem/70142496

2:07 PM Changeset in webkit [268288] by Ryan Haddad
  • 12 edits
    1 delete in trunk/Source

Unreviewed, reverting r267539.

Causes WebContent process crash in certain configurations

Reverted changeset:

"Add libwebrtc.dylib version check"
https://bugs.webkit.org/show_bug.cgi?id=216884
https://trac.webkit.org/changeset/267539

1:56 PM Changeset in webkit [268287] by Simon Fraser
  • 9 edits
    2 adds in trunk/Source

Refactor wheel event coalescing into its own class
https://bugs.webkit.org/show_bug.cgi?id=217523

Reviewed by Sam Weinig.
Source/WebCore:

Export the TextStream outputter.

  • platform/PlatformWheelEvent.h:

Source/WebKit:

WebPageProxy had some confusing code for coalescing wheel events, first added in r116466.
To prepare this code for partial re-use in another place, factor it into its own class, WebWheelEventCoalescer.

WebWheelEventCoalescer holds a queue of pending NativeWebWheelEvents, and a queue of sequences of
NativeWebWheelEvents, where each sequence has been coalesced into a single WebWeelEvent which was
sent to the Web Process.

When the UI process receives a message back from the Web Process, it calls takeOldestEventBeingProcessed()
which removes the first sequence from m_eventsBeingProcessed. This code has to track NativeWebWheelEvents, because
we need to dig the NSEvent out of the NativeWebWheelEvent at this stage.

  • Platform/Logging.h: Add a WheelEvents log channel.
  • Shared/NativeWebWheelEvent.h:
  • Shared/WebWheelEventCoalescer.cpp: Added.

(WebKit::operator<<):
(WebKit::WebWheelEventCoalescer::canCoalesce):
(WebKit::WebWheelEventCoalescer::coalesce):
(WebKit::WebWheelEventCoalescer::shouldDispatchEventNow const):
(WebKit::WebWheelEventCoalescer::nextEventToDispatch):
(WebKit::WebWheelEventCoalescer::shouldDispatchEvent):
(WebKit::WebWheelEventCoalescer::takeOldestEventBeingProcessed):
(WebKit::WebWheelEventCoalescer::clear):

  • Shared/WebWheelEventCoalescer.h: Added.

(WebKit::WebWheelEventCoalescer::hasEventsBeingProcessed const):

  • Sources.txt:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::handleWheelEvent):
(WebKit::WebPageProxy::wheelEventCoalescer):
(WebKit::WebPageProxy::didReceiveEvent):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
(WebKit::canCoalesce): Deleted.
(WebKit::coalesce): Deleted.
(WebKit::coalescedWheelEvent): Deleted.
(WebKit::WebPageProxy::processNextQueuedWheelEvent): Deleted.
(WebKit::WebPageProxy::shouldProcessWheelEventNow const): Deleted.

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
1:53 PM Changeset in webkit [268286] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

REGRESSION: [Mac Release] 2 Cookie API are failing
https://bugs.webkit.org/show_bug.cgi?id=217393

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

If bad things happen when running API tests, the TestWebKitAPI default cookie storage can get stuck with
a cookie accept policy of never, which causes future tests to fail. All existing tests restore the cookie
accept policy to what it was before the test started, but once a machine gets into a bad state, there's nothing
to reset it to the default state. Some of our test bots have gotten into this bad state, causing 2 cookie API
tests to fail. To fix this, set the cookie accept policy to its default value before running these two tests.
I verified this works by getting my computer into this bad state, verifying repeated API test runs don't fix it,
and verified this brings the computer back into a good state and causes the API tests to pass again.

  • TestWebKitAPI/Tests/WebKitCocoa/CookiePrivateBrowsing.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/Proxy.mm:

(TestWebKitAPI::TEST):

1:05 PM Changeset in webkit [268285] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Overflow clip blocks visual overflow
https://bugs.webkit.org/show_bug.cgi?id=217526

Reviewed by Antti Koivisto.

This is in preparation for enabling 'overflow: hidden' for IFC.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::collectOverflow):

1:04 PM Changeset in webkit [268284] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Enable WeakRefs/FinalizationRegistries by default.
https://bugs.webkit.org/show_bug.cgi?id=215789

Reviewed by Yusuke Suzuki.

  • runtime/OptionsList.h:
1:03 PM Changeset in webkit [268283] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Expand the line content width with the caret when applicable
https://bugs.webkit.org/show_bug.cgi?id=217527

Reviewed by Antti Koivisto.

This patch is in preparation for enabling 'overflow: hidden' for IFC.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

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

1:02 PM Changeset in webkit [268282] by Russell Epstein
  • 12 edits
    1 delete in branches/safari-611.1.3-branch/Source

Revert r267539. rdar://problem/70148261

12:55 PM Changeset in webkit [268281] by Fujii Hironori
  • 5 edits in trunk

[WinCairo][GraphicsLayerTextureMapper] backdrop-filter support
https://bugs.webkit.org/show_bug.cgi?id=217081

Reviewed by Don Olmstead.

.:

  • Source/cmake/OptionsWin.cmake: Turn ENABLE_FILTERS_LEVEL_2 on for WinCairo.

Source/WebCore:

r264968 added TextureMapper backdrop-filter support for
Coordinated Graphics. This change enables it for
GraphicsLayerTextureMapper.

Existing backdrop-filter tests cover this change, but WinCairo DRT
and WTR don't support pixel dump in AC mode yet (Bug 215041).

  • platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:

(WebCore::GraphicsLayerTextureMapper::commitLayerChanges):
(WebCore::GraphicsLayerTextureMapper::flushCompositingState):
(WebCore::GraphicsLayerTextureMapper::setBackdropFilters):
(WebCore::GraphicsLayerTextureMapper::setBackdropFiltersRect):

  • platform/graphics/texmap/GraphicsLayerTextureMapper.h:
12:51 PM Changeset in webkit [268280] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

[WinCairo][GraphicsLayerTextureMapper] Image layers are entirely clipped since r260174
https://bugs.webkit.org/show_bug.cgi?id=217507

Reviewed by Don Olmstead.

r260174 added contentsClippingRect to TextureMapperLayer::State to
clip the content. However, it implemented setContentsClippingRect
only for CoordinatedGraphicsLayer but for
GraphicsLayerTextureMapper. Because the initial value of
contentsClippingRect is empty, entire image layers are clipped in
GraphicsLayerTextureMapper.

Existing compositing/images tests covers this change, but WinCairo
DRT and WTR don't support pixel dump in AC mode at the moment (Bug 215041).

  • platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:

(WebCore::GraphicsLayerTextureMapper::setContentsClippingRect): Added.
(WebCore::GraphicsLayerTextureMapper::commitLayerChanges):

  • platform/graphics/texmap/GraphicsLayerTextureMapper.h:
12:49 PM Changeset in webkit [268279] by Russell Epstein
  • 2 edits in branches/safari-611.1.3-branch/Source/WebKit

Cherry-pick r268273. rdar://problem/70148870

Change RELEASE_ASSERT to ASSERT in networkProcessesSet
https://bugs.webkit.org/show_bug.cgi?id=217524
<rdar://problem/70115841>

Reviewed by Tim Horton.

  • UIProcess/Network/NetworkProcessProxy.cpp:

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

12:35 PM Changeset in webkit [268278] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[GPU Process] Use correct GPU runtime settings when creating the dynamic IOKit sandbox extensions for the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=217491
<rdar://problem/70066087>

Reviewed by Youenn Fablet.

Currently, the creation of the dynamic IOKit sandbox extensions for the WebContent process is incorrectly using the same GPU
runtime settings as when creating Media related dynamic mach-lookup extensions. There are several other GPU runtime flags
that needs to be checked before creating the extensions.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

12:34 PM Changeset in webkit [268277] by Chris Fleizach
  • 2 edits in trunk/Source/WebKit

AX: Mark malware safe browser as a header for VoiceOver
https://bugs.webkit.org/show_bug.cgi?id=217505

Reviewed by Sam Weinig.

Mark this UI element as a header for VoiceOver on iOS.

  • UIProcess/Cocoa/WKSafeBrowsingWarning.mm:

(makeLabel):

12:33 PM Changeset in webkit [268276] by Aditya Keerthi
  • 6 edits
    7 adds in trunk

[macOS] Add editability to input type=month
https://bugs.webkit.org/show_bug.cgi?id=217481
<rdar://problem/70097164>

Reviewed by Sam Weinig.

Source/WebCore:

This patch adds editability to input type=month by leveraging existing
logic to add editable components to date/time inputs.

Tests: fast/forms/month/month-editable-components/month-editable-components-focus-and-blur-events.html

fast/forms/month/month-editable-components/month-editable-components-keyboard-events.html
fast/forms/month/month-editable-components/month-editable-components-mouse-events.html

  • html/MonthInputType.cpp:

(WebCore::MonthInputType::formatDateTimeFieldsState const):
(WebCore::MonthInputType::setupLayoutParameters const):

  • platform/text/cocoa/LocaleCocoa.mm:

(WebCore::LocaleCocoa::shortMonthFormat):

Update presented month format string to match AppKit.

LayoutTests:

  • TestExpectations:
  • fast/forms/month/month-editable-components/month-editable-components-focus-and-blur-events-expected.txt: Added.
  • fast/forms/month/month-editable-components/month-editable-components-focus-and-blur-events.html: Added.
  • fast/forms/month/month-editable-components/month-editable-components-keyboard-events-expected.txt: Added.
  • fast/forms/month/month-editable-components/month-editable-components-keyboard-events.html: Added.
  • fast/forms/month/month-editable-components/month-editable-components-mouse-events-expected.txt: Added.
  • fast/forms/month/month-editable-components/month-editable-components-mouse-events.html: Added.
  • platform/mac-wk2/TestExpectations:
12:19 PM Changeset in webkit [268275] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Support unicode contributor names
https://bugs.webkit.org/show_bug.cgi?id=217520
<rdar://problem/70143490>

Reviewed by Dewei Zhu.

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

(Contributor.init): Standardize name and emails as unicode.
(Contributor.repr): Ensure native string representation.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/contributor_unittest.py:

(TestContributor):
(TestContributor.test_unicode):

12:15 PM Changeset in webkit [268274] by Hector Lopez
  • 2 edits in trunk/LayoutTests

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

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:52 AM Changeset in webkit [268273] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Change RELEASE_ASSERT to ASSERT in networkProcessesSet
https://bugs.webkit.org/show_bug.cgi?id=217524
<rdar://problem/70115841>

Reviewed by Tim Horton.

  • UIProcess/Network/NetworkProcessProxy.cpp:
11:40 AM Changeset in webkit [268272] by Russell Epstein
  • 6 edits in branches/safari-610.2.11.1-branch/Source

Cherry-pick r268003. rdar://problem/70142496

Make NetscapePlugInStreamLoaderClient a weak pointer on NetscapePlugInStreamLoader
<https://webkit.org/b/217237>
<rdar://problem/69776714>

Reviewed by Alex Christensen.

Source/WebCore:

Could not write a test since reproducing a crash requires
rapidly reloading a URL to a PDF at random points during the
previous load.

Make NetscapePlugInStreamLoaderClient a WeakPtr on
NetscapePlugInStreamLoader, and add nullptr checks for
NetscapePlugInStreamLoader.m_client as needed.

  • loader/NetscapePlugInStreamLoader.cpp: (WebCore::NetscapePlugInStreamLoader::NetscapePlugInStreamLoader): (WebCore::NetscapePlugInStreamLoader::willSendRequest): (WebCore::NetscapePlugInStreamLoader::didReceiveResponse): (WebCore::NetscapePlugInStreamLoader::didReceiveDataOrBuffer): (WebCore::NetscapePlugInStreamLoader::didFinishLoading): (WebCore::NetscapePlugInStreamLoader::didFail): (WebCore::NetscapePlugInStreamLoader::willCancel):
  • loader/NetscapePlugInStreamLoader.h:

Source/WebKit:

Making NetscapePlugInStreamLoaderClient inherit from
CanMakeWeakPtr<> caused PDFPlugin to fail to compile because one
of its parent classes already inherited from CanMakeWeakPtr<>.
To fix this, extract a PDFPluginStreamLoaderClient class from
PDFPlugin and link the lifetime of PDFPluginStreamLoaderClient
to PDFPlugin.

After moving the NetscapePlugInStreamLoaderClient virtual
methods from PDFPlugin to PDFPluginStreamLoaderClient, add some
simple methods to PDFPlugin so that PDFPluginStreamLoaderClient
doesn't access the instance variables directly. Also make use
of these new methods in other parts of PDFPlugin.

  • WebProcess/Plugins/PDF/PDFPlugin.h: (WebKit::PDFPlugin::documentFinishedLoading): Add. (WebKit::PDFPlugin::identifierForLoader): Add. (WebKit::PDFPlugin::removeOutstandingByteRangeRequest): Add. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient): Add class.
  • WebProcess/Plugins/PDF/PDFPlugin.mm: (WebKit::PDFPlugin::PDFPlugin): (WebKit::PDFPlugin::receivedNonLinearizedPDFSentinel): (WebKit::PDFPlugin::getResourceBytesAtPosition): (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::willSendRequest): Move from PDFPlugin. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didReceiveResponse): Ditto. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didReceiveData): Ditto. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didFail): Ditto. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didFinishLoading): Ditto. (WebKit::PDFPlugin::byteRangeRequestForLoader): (WebKit::PDFPlugin::forgetLoader): (WebKit::PDFPlugin::willSendRequest): Move to PDFPluginStreamLoaderClient. (WebKit::PDFPlugin::didReceiveResponse): Ditto. (WebKit::PDFPlugin::didReceiveData): Ditto. (WebKit::PDFPlugin::didFail): Ditto. (WebKit::PDFPlugin::didFinishLoading): Ditto.

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

11:10 AM Changeset in webkit [268271] by keith_miller@apple.com
  • 25 edits in trunk

Finalizers shouldn't run if events can't fire
https://bugs.webkit.org/show_bug.cgi?id=214508

Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

This patch makes it so the DeferredWorkTimer won't run scheduled
tasks if those would not have run if they were scheduled in
WebCore. To do this there is now a concept of a
ScriptExecutionOwner. The ScriptExecutionOwner is almost always
the same as the global object of the pending task (referred to as
the ticket). The only exception to this is if the global object
is a JSDOMWindowBase, then the ScriptExecutionOwner is the
Document's JS wrapper. To tell the status of a
ScriptExecutionOwner, the DeferredWorkTimer calls a virtual
function on the global object of the ticket, for JSC-only this
just always returns Running. For WebCore, we ask the
ScriptExecutionContext associated with the ScriptExecutionOwner.

  • API/JSAPIGlobalObject.cpp:
  • API/JSAPIGlobalObject.mm:
  • jsc.cpp:
  • runtime/DeferredWorkTimer.cpp:

(JSC::DeferredWorkTimer::doWork):
(JSC::DeferredWorkTimer::addPendingWork):
(JSC::DeferredWorkTimer::hasDependancyInPendingWork):
(JSC::DeferredWorkTimer::didResumeScriptExecutionOwner):

  • runtime/DeferredWorkTimer.h:
  • runtime/JSFinalizationRegistry.cpp:

(JSC::JSFinalizationRegistry::create):
(JSC::JSFinalizationRegistry::finishCreation):

  • runtime/JSFinalizationRegistry.h:
  • runtime/JSGlobalObject.cpp:
  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::currentScriptExecutionOwner):
(JSC::JSGlobalObject::scriptExecutionStatus):

Source/WebCore:

This patch makes it so the DeferredWorkTimer won't run scheduled
tasks if those would not have run if they were scheduled in
WebCore. To do this there is now a concept of a
ScriptExecutionOwner. The ScriptExecutionOwner is almost always
the same as the global object of the pending task (referred to as
the ticket). The only exception to this is if the global object
is a JSDOMWindowBase, then the ScriptExecutionOwner is the
Document's JS wrapper. To tell the status of a
ScriptExecutionOwner, the DeferredWorkTimer calls a virtual
function on the global object of the ticket, for JSC-only this
just always returns Running. For WebCore, we ask the
ScriptExecutionContext associated with the ScriptExecutionOwner.

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::currentScriptExecutionOwner):
(WebCore::JSDOMWindowBase::scriptExecutionStatus):

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSDOMWrapperCache.h:
  • bindings/js/JSRemoteDOMWindowBase.cpp:
  • bindings/js/JSWorkerGlobalScopeBase.cpp:

(WebCore::JSWorkerGlobalScopeBase::scriptExecutionStatus):

  • bindings/js/JSWorkerGlobalScopeBase.h:
  • bindings/js/JSWorkletGlobalScopeBase.cpp:

(WebCore::JSWorkletGlobalScopeBase::scriptExecutionStatus):

  • bindings/js/JSWorkletGlobalScopeBase.h:
  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::contextIdentifier const):
(WebCore::ScriptExecutionContext::removeFromContextsMap):
(WebCore::ScriptExecutionContext::~ScriptExecutionContext):
(WebCore::ScriptExecutionContext::jscScriptExecutionStatus const):
(WebCore::ScriptExecutionContext::resumeActiveDOMObjects):
(WebCore::ScriptExecutionContext::postTaskTo):

  • dom/ScriptExecutionContext.h:

Source/WTF:

Add a DropLockScope to make it easier to drop a lock for a short
piece of code. Also, instead of deleting int Locker constructor
we should just delete the underlying type of the
NoLockingNecessary enum.

  • wtf/Locker.h:

(WTF::Locker::~Locker):
(WTF::Locker::unlockEarly):
(WTF::Locker::Locker):
(WTF::Locker::operator=):
(WTF::Locker::unlock):
(WTF::DropLockForScope::DropLockForScope):
(WTF::DropLockForScope::~DropLockForScope):

LayoutTests:

Add tests that check we don't run any tasks from JSC's event loop while contexts
are suspended/stopped. Also skip the WASM tests on Win because WASM doesn't work
there.

  • fast/frames/detached-frame-wasm-resolve-expected.txt: Added.
  • fast/frames/detached-frame-wasm-resolve.html: Added.
  • fast/history/page-cache-active-finalization-registry-callback-expected.txt: Added.
  • fast/history/page-cache-active-finalization-registry-callback.html: Added.
  • fast/history/page-cache-wasm-promise-resolve-expected.txt: Added.
  • fast/history/page-cache-wasm-promise-resolve.html: Added.
  • platform/win/TestExpectations:
11:07 AM Changeset in webkit [268270] by pvollan@apple.com
  • 7 edits in trunk/Source/WebKit

[macOS] Issue sandbox extension for icon service when attachment element is enabled
https://bugs.webkit.org/show_bug.cgi?id=217483
<rdar://problem/70099680>

Reviewed by Brent Fulgham.

This has previously been done on iOS, and should be done on macOS as well.

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

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

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

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

(WebKit::WebPageProxy::creationParameters):

  • UIProcess/WebProcessProxy.h:
  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/com.apple.WebProcess.sb.in:
11:03 AM Changeset in webkit [268269] by achristensen@apple.com
  • 10 edits in trunk/Source/WebKit

Merge DownloadProxy::DidReceiveResponse and DownloadProxy::DecideDestinationWithSuggestedFilename into one message
https://bugs.webkit.org/show_bug.cgi?id=217519

Reviewed by Youenn Fablet.

No change in behavior. The current API has them as separate callbacks so we can have them as separate messages,
but future API probably won't, so let's merge them.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::findPendingDownloadLocation):

  • UIProcess/API/APIDownloadClient.h:

(API::DownloadClient::didReceiveAuthenticationChallenge):
(API::DownloadClient::decideDestinationWithSuggestedFilename):
(API::DownloadClient::didReceiveResponse): Deleted.

  • UIProcess/API/C/WKContext.cpp:

(WKContextSetDownloadClient):

  • UIProcess/Cocoa/LegacyDownloadClient.h:
  • UIProcess/Cocoa/LegacyDownloadClient.mm:

(WebKit::LegacyDownloadClient::decideDestinationWithSuggestedFilename):

  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::decideDestinationWithSuggestedFilename):
(WebKit::DownloadProxy::didReceiveResponse): Deleted.

  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/Downloads/DownloadProxy.messages.in:
10:37 AM Changeset in webkit [268268] by Kate Cheney
  • 20 edits
    2 adds in trunk

Promote WKWebView media playback SPI to API
https://bugs.webkit.org/show_bug.cgi?id=217335
<rdar://problem/63406100>

Reviewed by Jer Noble.

Source/WebCore:

Change stopAllMediaPlayback to be more aptly named
pauseAllMediaPlayback because it is possible to resume
playing media after this is called. 'Stop' implies more permanence.
Add a function to the Document and Page objects to see if media playback
exists, is paused, or is suspended to determine media playback state.

  • dom/Document.cpp:

(WebCore::Document::~Document):
(WebCore::Document::mediaPlaybackExists):
(WebCore::Document::mediaPlaybackIsPaused):
(WebCore::Document::pauseAllMediaPlayback):
(WebCore::Document::stopAllMediaPlayback): Deleted.

  • dom/Document.h:
  • page/Page.cpp:

(WebCore::Page::mediaPlaybackExists):
(WebCore::Page::mediaPlaybackIsPaused):
(WebCore::Page::pauseAllMediaPlayback):
(WebCore::Page::stopAllMediaPlayback): Deleted.

  • page/Page.h:
  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::pauseAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::mediaPlaybackIsPaused):
(WebCore::PlatformMediaSessionManager::stopAllMediaPlaybackForDocument): Deleted.

  • platform/audio/PlatformMediaSessionManager.h:

Source/WebKit:

Currently the only way to interact with video in WKWebView is by injecting
JavaScript into a page. It would be useful to promote various media
playback SPI to API to make this easier for clients, including adding
completion handlers to the new API calls. Along with this,
we should add new API to check for media playback state.
This patch keeps the SPI around for compatibility.

  • Shared/API/Cocoa/WebKit.h:
  • Shared/MediaPlaybackState.h: Added.
  • UIProcess/API/Cocoa/WKMediaPlaybackState.h: Added.
  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView closeAllMediaPresentations]):
(-[WKWebView pauseAllMediaPlayback:]):
(-[WKWebView suspendAllMediaPlayback:]):
(-[WKWebView resumeAllMediaPlayback:]):
(toWKMediaPlaybackState):
(-[WKWebView requestMediaPlaybackState:]):
(-[WKWebView _closeAllMediaPresentations]):
(-[WKWebView _stopAllMediaPlayback]):
(-[WKWebView _suspendAllMediaPlayback]):
(-[WKWebView _resumeAllMediaPlayback]):

  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm:

(-[WKFullScreenViewController _showPhishingAlert]):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestMediaPlaybackState):
(WebKit::WebPageProxy::pauseAllMediaPlayback):
(WebKit::WebPageProxy::suspendAllMediaPlayback):
(WebKit::WebPageProxy::resumeAllMediaPlayback):
(WebKit::WebPageProxy::stopAllMediaPlayback): Deleted.

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::requestMediaPlaybackState):
(WebKit::WebPage::pauseAllMediaPlayback):
(WebKit::WebPage::suspendAllMediaPlayback):
(WebKit::WebPage::resumeAllMediaPlayback):
(WebKit::WebPage::stopAllMediaPlayback): Deleted.

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

Tools:

Add API testing coverage for new API. Also converted testing to
use the new API instead of SPI.

  • TestWebKitAPI/Tests/WebKitCocoa/StopSuspendResumeAllMedia.mm:

(TestWebKitAPI::TEST):

10:33 AM Changeset in webkit [268267] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitpy] Use webkitcorepy's auto installer for pytest packages
https://bugs.webkit.org/show_bug.cgi?id=215895
<rdar://problem/67885471>

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/init.py: Add pytest and it's dependencies.
  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module): Remove pytest and pytest_timeout.
(AutoinstallImportHook._install_pytest_timeout): Deleted.
(AutoinstallImportHook._install_pytest): Deleted.

  • Scripts/webkitpy/webdriver_tests/pytest_runner.py: Implicitly use webkitcorepy's autoinstaller.
10:10 AM Changeset in webkit [268266] by Peng Liu
  • 3 edits
    8 moves in trunk/Source/WebCore

Move some audio buffer management related files from folder "mac" to folder "cocoa"
https://bugs.webkit.org/show_bug.cgi?id=217497

Reviewed by Youenn Fablet.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/cocoa/AudioSampleBufferList.cpp: Renamed from Source/WebCore/platform/audio/mac/AudioSampleBufferList.cpp.
  • platform/audio/cocoa/AudioSampleBufferList.h: Renamed from Source/WebCore/platform/audio/mac/AudioSampleBufferList.h.
  • platform/audio/cocoa/AudioSampleDataSource.h: Renamed from Source/WebCore/platform/audio/mac/AudioSampleDataSource.h.
  • platform/audio/cocoa/AudioSampleDataSource.mm: Renamed from Source/WebCore/platform/audio/mac/AudioSampleDataSource.mm.
  • platform/audio/cocoa/CAAudioStreamDescription.cpp: Renamed from Source/WebCore/platform/audio/mac/CAAudioStreamDescription.cpp.

(WebCore::CAAudioStreamDescription::sampleRate const):
(WebCore::CAAudioStreamDescription::isPCM const):
(WebCore::CAAudioStreamDescription::isInterleaved const):
(WebCore::CAAudioStreamDescription::isSignedInteger const):
(WebCore::CAAudioStreamDescription::isFloat const):
(WebCore::CAAudioStreamDescription::isNativeEndian const):
(WebCore::CAAudioStreamDescription::numberOfInterleavedChannels const):
(WebCore::CAAudioStreamDescription::numberOfChannelStreams const):
(WebCore::CAAudioStreamDescription::numberOfChannels const):
(WebCore::CAAudioStreamDescription::sampleWordSize const):
(WebCore::CAAudioStreamDescription::bytesPerFrame const):
(WebCore::CAAudioStreamDescription::bytesPerPacket const):
(WebCore::CAAudioStreamDescription::formatFlags const):
(WebCore::CAAudioStreamDescription::operator== const):
(WebCore::CAAudioStreamDescription::operator!= const):
(WebCore::CAAudioStreamDescription::streamDescription const):
(WebCore::CAAudioStreamDescription::streamDescription):
Move the inline function definitions out-of-line to fix styling issues.

  • platform/audio/cocoa/CAAudioStreamDescription.h: Renamed from Source/WebCore/platform/audio/mac/CAAudioStreamDescription.h.
  • platform/audio/cocoa/CARingBuffer.cpp: Renamed from Source/WebCore/platform/audio/mac/CARingBuffer.cpp.
  • platform/audio/cocoa/CARingBuffer.h: Renamed from Source/WebCore/platform/audio/mac/CARingBuffer.h.
9:55 AM Changeset in webkit [268265] by Russell Epstein
  • 2 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r268257. rdar://problem/70142057

Switch Allow/Don't Allow buttons in getUserMedia prompt
https://bugs.webkit.org/show_bug.cgi?id=217513
<rdar://problem/70134429>

Reviewed by Eric Carlson.

Return NotAllowedError instead of SecurityError in case user denies with default prompt.
Make sure to have the Allow button in iOS prompt on the right instead of the left.
Tested in MiniBrowser and MobileMiniBrowser.

  • UIProcess/Cocoa/UserMediaPermissionRequestProxy.mm: (WebKit::UserMediaPermissionRequestProxy::doDefaultAction):

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

9:55 AM Changeset in webkit [268264] by Russell Epstein
  • 6 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r268256. rdar://problem/70142054

Implement TCC checks in UserMediaPermissionRequestManagerProxy
https://bugs.webkit.org/show_bug.cgi?id=217508
<rdar://problem/70129993>

Reviewed by Eric Carlson.

TCC checks must be done before asking the page client to decide whether to grant or not camera and/or microphone.
This ensures that, should the default action be done (default prompt), for instance in case the WKWebView application does not provide any delegate,
the TCC checks will happen before the default prompt.

For that reason, we move the TCC checks from UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest to UserMediaPermissionRequestManagerProxy::requestSystemValidation.

Manually tested in Safari and MiniBrowser.

  • UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): (WebKit::requestUserMediaAuthorizationForFrame): Deleted. (WebKit::requestAVCaptureAccessForMediaType): Deleted.
  • UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm: (WebKit::requestAVCaptureAccessForMediaType): (WebKit::UserMediaPermissionRequestManagerProxy::requestSystemValidation):
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp: (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest): (WebKit::UserMediaPermissionRequestManagerProxy::decidePolicyForUserMediaPermissionRequest): (WebKit::UserMediaPermissionRequestManagerProxy::requestSystemValidation):
  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::preferences const):

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

9:26 AM Changeset in webkit [268263] by graouts@webkit.org
  • 10 edits
    2 adds in trunk

CSS transform computed style should not reflect individual transform properties
https://bugs.webkit.org/show_bug.cgi?id=217473
<rdar://problem/70091605>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Add a newly-authored WPT test to check that setting individual transform properties does not interfere with the
computed style for the "transform" property.

  • web-platform-tests/css/css-transforms/transform-and-individual-transform-properties-computed-style-expected.txt: Added.
  • web-platform-tests/css/css-transforms/transform-and-individual-transform-properties-computed-style.html: Added.

Source/WebCore:

Because RenderStyle::applyTransform() accounts for the new rotate, scale and translate properties, we need a way to call this
method from computedTransform() without accounting for those properties. While we used to only have the option to include or
exclude transform-origin, we now allow for multiple options to be specified using a new TransformOperationOption enum and
passing an OptionSet<TransformOperationOption> to RenderStyle::applyTransform().

Test: imported/w3c/web-platform-tests/css/css-transforms/transform-and-individual-transform-properties-computed-style.html

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::computeTransformedExtentViaMatrix const):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::computedTransform):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::updateTransform):
(WebCore::RenderLayer::currentTransform const):

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

(WebCore::RenderLayerBacking::updateTransform):
(WebCore::RenderLayerBacking::getCurrentTransform const):

  • rendering/style/RenderStyle.cpp:

(WebCore::requireTransformOrigin):
(WebCore::RenderStyle::applyTransform const):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::applyTransform):

  • svg/SVGTextElement.cpp:

(WebCore::SVGTextElement::animatedLocalTransform const):

9:25 AM Changeset in webkit [268262] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][Integration] Enable FlowTextIsEmpty case
https://bugs.webkit.org/show_bug.cgi?id=217512

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendTextContent): A zero length content is not considered
whitespace content (it does not really have type) but it still collapses completely (does not generate a run).
and it does not really have a type

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForFontAndText):

  • layout/integration/LayoutIntegrationCoverage.h:
9:24 AM Changeset in webkit [268261] by achristensen@apple.com
  • 20 edits in trunk

Use sendWithAsyncReply for NetworkProcess::CancelDownload
https://bugs.webkit.org/show_bug.cgi?id=217420

Reviewed by Youenn Fablet.

Source/WebKit:

This paves the way for a good download API that has a completion handler when you call cancel that gives you the resume data if it can.
Currently you have to call cancel on the download, wait for didCancel on the delegate, then get the resume data from the download again.
This has the side effect of DownloadMonitor cancellations calling didFailWithError instead of didCancel, which makes sense and shouldn't
cause any problems in practice. Safari is the only API client that uses this, and it behaves similarly in didCancel and didFailWithError.

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::cancel):
(WebKit::Download::didCancel):

  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::cancelDownload):

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/Downloads/DownloadMonitor.cpp:

(WebKit::DownloadMonitor::timerFired):

  • NetworkProcess/Downloads/PendingDownload.cpp:

(WebKit::PendingDownload::cancel):

  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:

(-[WKDownloadProgress performCancel]):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::cancelDownload):
(WebKit::NetworkProcess::findPendingDownloadLocation):
(WebKit::NetworkProcess::pendingDownloadCanceled): Deleted.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::createData):
(WebKit::DownloadProxy::cancel):
(WebKit::DownloadProxy::didCancel): Deleted.

  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/Downloads/DownloadProxy.messages.in:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(-[WaitUntilDownloadCanceledDelegate _download:didFailWithError:]):
(-[DownloadMonitorTestDelegate _download:didFailWithError:]):
(-[DownloadMonitorTestDelegate waitForDidFail]):
(-[DownloadMonitorTestDelegate stopWaitingForDidFail]):
(TestWebKitAPI::monitorDelegate):
(TestWebKitAPI::webViewWithDownloadMonitorSpeedMultiplier):
(TestWebKitAPI::downloadAtRate):
(TestWebKitAPI::TEST):
(-[WaitUntilDownloadCanceledDelegate _downloadDidCancel:]): Deleted.
(-[DownloadMonitorTestDelegate _downloadDidCancel:]): Deleted.

9:21 AM Changeset in webkit [268260] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

[LFC][Integration] Add a way to get runs from line iterator
https://bugs.webkit.org/show_bug.cgi?id=217518

Reviewed by Zalan Bujtas.

And use it in startPositionForLine/endPositionForLine functions in RenderedPosition.

  • editing/RenderedPosition.h:

(WebCore::RenderedPosition::line const):

  • editing/VisibleUnits.cpp:

(WebCore::startPositionForLine):
(WebCore::endPositionForLine):

  • layout/integration/LayoutIntegrationLine.h:

(WebCore::LayoutIntegration::Line::Line):
(WebCore::LayoutIntegration::Line::firstRunIndex const):
(WebCore::LayoutIntegration::Line::runCount const):

Lines now track the first run and the run count.

  • layout/integration/LayoutIntegrationLineIterator.cpp:

(WebCore::LayoutIntegration::LineIterator::firstRun const):
(WebCore::LayoutIntegration::LineIterator::lastRun const):
(WebCore::LayoutIntegration::LineIterator::logicalStartRunWithNode const):
(WebCore::LayoutIntegration::LineIterator::logicalEndRunWithNode const):

  • layout/integration/LayoutIntegrationLineIterator.h:
  • layout/integration/LayoutIntegrationLineIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LineIteratorLegacyPath::firstRun const):
(WebCore::LayoutIntegration::LineIteratorLegacyPath::lastRun const):
(WebCore::LayoutIntegration::LineIteratorLegacyPath::logicalStartRunWithNode const):
(WebCore::LayoutIntegration::LineIteratorLegacyPath::logicalEndRunWithNode const):

  • layout/integration/LayoutIntegrationLineIteratorModernPath.h:

(WebCore::LayoutIntegration::LineIteratorModernPath::firstRun const):
(WebCore::LayoutIntegration::LineIteratorModernPath::lastRun const):
(WebCore::LayoutIntegration::LineIteratorModernPath::logicalStartRunWithNode const):
(WebCore::LayoutIntegration::LineIteratorModernPath::logicalEndRunWithNode const):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

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

  • layout/integration/LayoutIntegrationPagination.cpp:

(WebCore::LayoutIntegration::makeAdjustedContent):

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::RunIteratorModernPath::RunIteratorModernPath):

8:52 AM Changeset in webkit [268259] by Chris Dumez
  • 8 edits in trunk/Source/WebCore

Add proper implementation for WorkletGlobalScope::isContextThread()
https://bugs.webkit.org/show_bug.cgi?id=217486

Reviewed by Sam Weinig.

Add proper implementation for WorkletGlobalScope::isContextThread() to enable more threading
checks in AudioWorklet code.

  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::AudioWorkletGlobalScope):
(WebCore::AudioWorkletGlobalScope::thread const):

  • Modules/webaudio/AudioWorkletGlobalScope.h:

(WebCore::AudioWorkletGlobalScope::thread): Deleted.

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::createdMessagePort):
(WebCore::ScriptExecutionContext::destroyedMessagePort):

  • workers/WorkerGlobalScope.h:
  • workers/WorkerOrWorkletGlobalScope.h:
  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::WorkletGlobalScope):
(WebCore::WorkletGlobalScope::isContextThread const):

  • worklets/WorkletGlobalScope.h:
8:33 AM Changeset in webkit [268258] by Lauro Moura
  • 2 edits in trunk/Tools

[GLIB] Fix tests compilation warnings with deprecated API
https://bugs.webkit.org/show_bug.cgi?id=217504

Reviewed by Carlos Garcia Campos.

webkit_web_context_set_network_proxy_settings() is deprecated in favor of
webkit_website_data_manager_set_network_proxy_settings().

  • TestWebKitAPI/Tests/WebKitGLib/TestAuthentication.cpp:

(ProxyAuthenticationTest::ProxyAuthenticationTest):

7:11 AM Changeset in webkit [268257] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Switch Allow/Don't Allow buttons in getUserMedia prompt
https://bugs.webkit.org/show_bug.cgi?id=217513
<rdar://problem/70134429>

Reviewed by Eric Carlson.

Return NotAllowedError instead of SecurityError in case user denies with default prompt.
Make sure to have the Allow button in iOS prompt on the right instead of the left.
Tested in MiniBrowser and MobileMiniBrowser.

  • UIProcess/Cocoa/UserMediaPermissionRequestProxy.mm:

(WebKit::UserMediaPermissionRequestProxy::doDefaultAction):

7:06 AM Changeset in webkit [268256] by youenn@apple.com
  • 6 edits in trunk/Source/WebKit

Implement TCC checks in UserMediaPermissionRequestManagerProxy
https://bugs.webkit.org/show_bug.cgi?id=217508
<rdar://problem/70129993>

Reviewed by Eric Carlson.

TCC checks must be done before asking the page client to decide whether to grant or not camera and/or microphone.
This ensures that, should the default action be done (default prompt), for instance in case the WKWebView application does not provide any delegate,
the TCC checks will happen before the default prompt.

For that reason, we move the TCC checks from UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest to UserMediaPermissionRequestManagerProxy::requestSystemValidation.

Manually tested in Safari and MiniBrowser.

  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
(WebKit::requestUserMediaAuthorizationForFrame): Deleted.
(WebKit::requestAVCaptureAccessForMediaType): Deleted.

  • UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:

(WebKit::requestAVCaptureAccessForMediaType):
(WebKit::UserMediaPermissionRequestManagerProxy::requestSystemValidation):

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::decidePolicyForUserMediaPermissionRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::requestSystemValidation):

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::preferences const):

4:49 AM Changeset in webkit [268255] by svillar@igalia.com
  • 7 edits in trunk/Source/WebCore

[WebXR] Make enumerateImmersiveXRDevices() asynchronnous
https://bugs.webkit.org/show_bug.cgi?id=217172

Reviewed by Youenn Fablet.

The call to enumerateImmersiveXRDevices() can block the main thread and thus it should be asynchronous. The specs
clearly state that it should be run "in parallel". The list of available devices will be provided to the callback
(a CompletionHandler). Note that the OpenXR code is still running on the main thread but it will be migrated in
a follow up patch.

This change forced us to modify the whole chain of calls that end in enumerateImmersiveXRDevices() in the WebXR code.
Good news is that it allowed us to remove some calls to postTask() or queueTaskKeepingObjectAlive() because code is
already running "in parallel" after moving to an asynchronnous paradigm so they were redundant.

No new tests required as there is no change in behaviour.

  • Modules/webxr/WebXRSystem.cpp:

(WebCore::WebXRSystem::ensureImmersiveXRDeviceIsSelected): Added a callback parameter. Moved most of the code
to the callback provided to enumerateImmersiveXRDevices().
(WebCore::WebXRSystem::obtainCurrentDevice): Returns void and accepts a new callback paramater. Had to migrate it
because it can eventually call ensureImmersiveXRDeviceIsSelected().
(WebCore::WebXRSystem::isSessionSupported): Removed postTask(), ensureImmersiveXRDeviceIsSelected()
is run in parallel.
(WebCore::WebXRSystem::requestSession): Removed queueTaskKeepingObjectAlive() as obtainCurrentDevice()
is run in parallel.

  • Modules/webxr/WebXRSystem.h:
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createContextWebGL): Pass a no-op callback to ensureImmersiveXRDeviceIsSelected().

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::makeXRCompatible): Moved most of the code into the callback
of ensureImmersiveXRDeviceIsSelected().

  • platform/xr/PlatformXR.h:

(PlatformXR::Instance::immersiveXRDevices const): Deleted.

  • platform/xr/openxr/PlatformXROpenXR.cpp:

(PlatformXR::Instance::enumerateImmersiveXRDevices): Receives a new callback parameter, returns the list of
immersive devices to the callback as a const parameter.

4:42 AM Changeset in webkit [268254] by Andres Gonzalez
  • 6 edits in trunk

Fix for accessibility tests keyevents-posted-for-increment-actions.html and keyevents-for-increment-actions-with-node-removal.html in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=217501

Reviewed by Chris Fleizach.

Source/WebCore:

Implementation of AXIsolatedObject::increment/decrement.

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::increment):
(WebCore::AXIsolatedObject::decrement):

  • accessibility/isolatedtree/AXIsolatedObject.h:

LayoutTests:

  • accessibility/keyevents-for-increment-actions-with-node-removal.html:

Removed extra <html> tag and minor spacing and reordering to make it
more consistent with other accessibility tests.

  • accessibility/keyevents-posted-for-increment-actions.html:

Corrected number of expected key events from 4 to 8.
Same minor spacing and ordering changes.

4:26 AM Changeset in webkit [268253] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][Integration] Remove redundant AvoidanceReason values
https://bugs.webkit.org/show_bug.cgi?id=217510

Reviewed by Antti Koivisto.

Remove both FlowTextHasSoftHyphen (should have removed when it got enabled) and the redundant FlowHasLineBreak.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForStyle):

  • layout/integration/LayoutIntegrationCoverage.h:
4:24 AM Changeset in webkit [268252] by Antti Koivisto
  • 9 edits in trunk/Source/WebCore

[LFC][Integration] Rename iterator path variant structs for consistency
https://bugs.webkit.org/show_bug.cgi?id=217511

Reviewed by Zalan Bujtas.

ModernPath -> RunIteratorModernPath
LegacyPath -> RunIteratorLegacyPath
ModernLinePath -> LineIteratorModernPath
LegacyLinePath -> LineIteratorLegacyPath

  • layout/integration/LayoutIntegrationLineIterator.h:

(WebCore::LayoutIntegration::LineIterator::LineIterator):

  • layout/integration/LayoutIntegrationLineIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LineIteratorLegacyPath::LineIteratorLegacyPath):
(WebCore::LayoutIntegration::LineIteratorLegacyPath::operator== const):
(WebCore::LayoutIntegration::LegacyLinePath::LegacyLinePath): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::top const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::bottom const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::selectionTop const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::selectionTopForHitTesting const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::selectionBottom const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::traverseNext): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::traversePrevious): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::operator== const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::atEnd const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::setAtEnd): Deleted.

  • layout/integration/LayoutIntegrationLineIteratorModernPath.h:

(WebCore::LayoutIntegration::LineIteratorModernPath::LineIteratorModernPath):
(WebCore::LayoutIntegration::LineIteratorModernPath::operator== const):
(WebCore::LayoutIntegration::ModernLinePath::ModernLinePath): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::top const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::bottom const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::selectionTop const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::selectionTopForHitTesting const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::selectionBottom const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::traverseNext): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::traversePrevious): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::operator== const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::atEnd const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::setAtEnd): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::lines const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::line const): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::textRunsFor const):
(WebCore::LayoutIntegration::LineLayout::runFor const):

  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::RunIterator::line const):
(WebCore::LayoutIntegration::firstTextRunFor):
(WebCore::LayoutIntegration::firstTextRunInTextOrderFor):
(WebCore::LayoutIntegration::runFor):
(WebCore::LayoutIntegration::PathRun::modernPath const):
(WebCore::LayoutIntegration::PathRun::legacyPath const):
(WebCore::LayoutIntegration::PathRun::modernPath): Deleted.
(WebCore::LayoutIntegration::PathRun::legacyPath): Deleted.

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::RunIterator::RunIterator):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::RunIteratorLegacyPath::RunIteratorLegacyPath):
(WebCore::LayoutIntegration::RunIteratorLegacyPath::operator== const):
(WebCore::LayoutIntegration::RunIteratorLegacyPath::nextInlineTextBoxInTextOrder const):
(WebCore::LayoutIntegration::LegacyPath::LegacyPath): Deleted.
(WebCore::LayoutIntegration::LegacyPath::isText const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::rect const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::isHorizontal const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::dirOverride const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::isLineBreak const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::baseline const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::minimumCaretOffset const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::maximumCaretOffset const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::bidiLevel const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::useLineBreakBoxRenderTreeDumpQuirk const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::hasHyphen const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::text const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::localStartOffset const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::localEndOffset const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::length const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::offsetForPosition const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::isLastTextRunOnLine const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::isLastTextRun const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::renderer const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::traverseNextTextRun): Deleted.
(WebCore::LayoutIntegration::LegacyPath::traverseNextTextRunInTextOrder): Deleted.
(WebCore::LayoutIntegration::LegacyPath::traverseNextOnLine): Deleted.
(WebCore::LayoutIntegration::LegacyPath::traversePreviousOnLine): Deleted.
(WebCore::LayoutIntegration::LegacyPath::operator== const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::atEnd const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::setAtEnd): Deleted.
(WebCore::LayoutIntegration::LegacyPath::legacyInlineBox const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::rootInlineBox const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::inlineTextBox const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::nextInlineTextBoxInTextOrder const): Deleted.

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::RunIteratorModernPath::RunIteratorModernPath):
(WebCore::LayoutIntegration::RunIteratorModernPath::operator== const):
(WebCore::LayoutIntegration::ModernPath::ModernPath): Deleted.
(WebCore::LayoutIntegration::ModernPath::isText const): Deleted.
(WebCore::LayoutIntegration::ModernPath::rect const): Deleted.
(WebCore::LayoutIntegration::ModernPath::baseline const): Deleted.
(WebCore::LayoutIntegration::ModernPath::isHorizontal const): Deleted.
(WebCore::LayoutIntegration::ModernPath::dirOverride const): Deleted.
(WebCore::LayoutIntegration::ModernPath::isLineBreak const): Deleted.
(WebCore::LayoutIntegration::ModernPath::minimumCaretOffset const): Deleted.
(WebCore::LayoutIntegration::ModernPath::maximumCaretOffset const): Deleted.
(WebCore::LayoutIntegration::ModernPath::bidiLevel const): Deleted.
(WebCore::LayoutIntegration::ModernPath::useLineBreakBoxRenderTreeDumpQuirk const): Deleted.
(WebCore::LayoutIntegration::ModernPath::hasHyphen const): Deleted.
(WebCore::LayoutIntegration::ModernPath::text const): Deleted.
(WebCore::LayoutIntegration::ModernPath::localStartOffset const): Deleted.
(WebCore::LayoutIntegration::ModernPath::localEndOffset const): Deleted.
(WebCore::LayoutIntegration::ModernPath::length const): Deleted.
(WebCore::LayoutIntegration::ModernPath::offsetForPosition const): Deleted.
(WebCore::LayoutIntegration::ModernPath::isLastTextRunOnLine const): Deleted.
(WebCore::LayoutIntegration::ModernPath::isLastTextRun const): Deleted.
(WebCore::LayoutIntegration::ModernPath::renderer const): Deleted.
(WebCore::LayoutIntegration::ModernPath::traverseNextTextRun): Deleted.
(WebCore::LayoutIntegration::ModernPath::traverseNextTextRunInTextOrder): Deleted.
(WebCore::LayoutIntegration::ModernPath::traverseNextOnLine): Deleted.
(WebCore::LayoutIntegration::ModernPath::traversePreviousOnLine): Deleted.
(WebCore::LayoutIntegration::ModernPath::operator== const): Deleted.
(WebCore::LayoutIntegration::ModernPath::atEnd const): Deleted.
(WebCore::LayoutIntegration::ModernPath::setAtEnd): Deleted.
(WebCore::LayoutIntegration::ModernPath::legacyInlineBox const): Deleted.
(WebCore::LayoutIntegration::ModernPath::runs const): Deleted.
(WebCore::LayoutIntegration::ModernPath::run const): Deleted.
(WebCore::LayoutIntegration::ModernPath::line const): Deleted.

3:14 AM Changeset in webkit [268251] by Paulo Matos
  • 2 edits in trunk/Tools

Add armv8l arch to generic arm umbrella architecture variable
https://bugs.webkit.org/show_bug.cgi?id=217470

Reviewed by Adrian Perez de Castro.

The armv8l architecture specifies a system running an arm64 kernel
but running in 32bit user land. Therefore for JSC purposes armv8l and
armv7l are arm (32bit) architectures.

  • Scripts/webkitdirs.pm:

(determineNativeArchitecture):

1:28 AM Changeset in webkit [268250] by commit-queue@webkit.org
  • 8 edits
    168 adds in trunk/LayoutTests

Import scroll-snap WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=217467

Patch by Martin Robinson <Martin Robinson> on 2020-10-09
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • resources/import-expectations.json: Add scroll snap import directive.
  • resources/resource-files.json:
  • web-platform-tests/css/css-scroll-snap/META.yml: Added.
  • web-platform-tests/css/css-scroll-snap/inheritance-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/inheritance.html: Added.
  • web-platform-tests/css/css-scroll-snap/input/keyboard-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/input/keyboard.html: Added.
  • web-platform-tests/css/css-scroll-snap/input/w3c-import.log: Added.
  • web-platform-tests/css/css-scroll-snap/nested-scrollIntoView-snaps-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/nested-scrollIntoView-snaps.html: Added.
  • web-platform-tests/css/css-scroll-snap/no-snap-position-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/no-snap-position.html: Added.
  • web-platform-tests/css/css-scroll-snap/overflowing-snap-areas-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/overflowing-snap-areas.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-shorthand-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-shorthand.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-shorthand-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-shorthand.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-shorthand-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-shorthand.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-shorthand-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-shorthand.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/w3c-import.log: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-margin-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-margin.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-padding-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-padding.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-stop-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-stop.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-change-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-change.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-on-root-element-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-on-root-element.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-align-001-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-align-001.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-align-002-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-align-002.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-align-003-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-align-003.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-001-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-001.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-002-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-002.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-003-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-003.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-004-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-004.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-padding-001-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-padding-001.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-padding-002-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-padding-002.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-padding-003-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-padding-003.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-snap-001-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-snap-001.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-snap-002-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-snap-002.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-snap-003-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-snap-003.html: Added.
  • web-platform-tests/css/css-scroll-snap/scrollTo-scrollBy-snaps-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scrollTo-scrollBy-snaps.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/direction-rtl-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/direction-rtl.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/w3c-import.log: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-snap-area-while-snapped-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-snap-area-while-snapped.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/move-current-target-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/move-current-target.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/remove-current-target-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/remove-current-target.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/w3c-import.log: Added.
  • web-platform-tests/css/css-scroll-snap/snap-area-capturing-add-scroll-container-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-area-capturing-add-scroll-container.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-inline-block-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-inline-block.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-transformed-target-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-transformed-target.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-both-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-both.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-both-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-both.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-x-axis-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-x-axis.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-y-axis-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-y-axis.html: Added.
  • web-platform-tests/css/css-scroll-snap/support/common.css: Added.

(body):
(#scroller):
(.snap):
(#space):
(.left):
(.top):
(.right):
(.bottom):

  • web-platform-tests/css/css-scroll-snap/support/common.js: Added.

(async keyPress):
(waitForAnimationEnd.):
(waitForAnimationEnd):

  • web-platform-tests/css/css-scroll-snap/support/scroll-target-align-001-iframe.html: Added.
  • web-platform-tests/css/css-scroll-snap/support/scroll-target-margin-001-iframe.html: Added.
  • web-platform-tests/css/css-scroll-snap/support/scroll-target-padding-001-iframe.html: Added.
  • web-platform-tests/css/css-scroll-snap/support/scroll-target-snap-001-iframe.html: Added.
  • web-platform-tests/css/css-scroll-snap/support/w3c-import.log: Added.
  • web-platform-tests/css/css-scroll-snap/unreachable-snap-positions-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/unreachable-snap-positions.html: Added.
  • web-platform-tests/css/css-scroll-snap/w3c-import.log: Added.

LayoutTests:

  • TestExpectations: Add failing reference tests.
  • platform/gtk/TestExpectations: Skip tests on platform that does not support scroll-snap.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-snap-type-on-root-element-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-scroll-snap/scrollTo-scrollBy-snaps-expected.txt: Added.
  • platform/win/TestExpectations: Ditto.
  • platform/wpe/TestExpectations: Ditto.
1:19 AM Changeset in webkit [268249] by Noam Rosenthal
  • 7 edits
    9 adds in trunk

CSS image-orientation: none should be ignored for cross-origin images
https://bugs.webkit.org/show_bug.cgi?id=217294

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-images/image-orientation/image-orientation-none-cross-origin-expected.html: Added.
  • web-platform-tests/css/css-images/image-orientation/image-orientation-none-cross-origin.html: Added.

Imported a new W3C test for remote image with image-orientation.

Source/WebCore:

Per the new spec in https://github.com/w3c/csswg-drafts/issues/5165,
the orientation should be baked into the image if the image is cross origin, to avoid
exposing remote image orientation to embedders.

The meaning of it in practice is that image-orientation: none would have no effect on remote,
image as it's the only web-facing feature exposing image-orientation.

This change disables image-orientation override for remote images.

Tests: http/wpt/css/css-images/image-orientation/image-orientation-none-cross-origin-canvas.html
imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-none-cross-origin.html

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::allowsOrientationOverride const):

  • html/HTMLImageElement.h:

Add a check whether an element is allowed to override/expose orientation.

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::drawImage):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::imageOrientation const):
Only apply orientation for eligible images.

LayoutTests:

  • http/wpt/css/css-images/image-orientation/image-orientation-none-cross-origin-canvas.html: Added.
  • http/wpt/css/css-images/image-orientation/image-orientation-none-cross-origin-canvas-expected.html: Added.
Note: See TracTimeline for information about the timeline view.