Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge commit '817c46e152af795d735678386db68805d0aa505e' from upstream #38

Closed
wants to merge 1,459 commits into from

Conversation

kenmays
Copy link

@kenmays kenmays commented Jun 10, 2021

Webkit 611.1.5

peng.liu6@apple.com and others added 30 commits October 21, 2020 19:21
https://bugs.webkit.org/show_bug.cgi?id=217999

Reviewed by Eric Carlson.

When a video element is entering picture-in-picture from fullscreen,
WebKit should only fire the `webkitendfullscreenEvent` event, but should not
request the player in the UI process to exit fullscreen(picture-in-picture).
So the condition to decide sending the exit fullscreen request is wrong because
HTMLMediaElement::didBecomeFullscreenElement(), which sets `m_waitingToEnterFullscreen`
to false, might be called before dispatching the `webkitendfullscreenEvent` event.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::dispatchEvent): Fix the condition.
(WebCore::HTMLMediaElement::exitFullscreen): Set fullscreen mode to VideoFullscreenModeNone.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268816 268f45cc-cd09-0410-ab3c-d52691b4dbfc
… iterator interface

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

Reviewed by Antti Koivisto.

Snapping is done during display content construction.

* layout/integration/LayoutIntegrationRunIteratorModernPath.h:
(WebCore::LayoutIntegration::RunIteratorModernPath::rect const):
(WebCore::LayoutIntegration::verticallyRoundedRect): Deleted.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268817 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218017
<rdar://problem/70531938>

Reviewed by Zalan Bujtas.

Followup fix.

* layout/integration/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::containing):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268818 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=208225

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

Add status entry for lazy image loading.

* features.json:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268819 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…ction

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

Reviewed by Eric Carlson.

Add addOutput() / removeOutput() utility functions to AudioSummingJunction to add
or remove outputs from m_outputs and abstract away the call to changedOutputs().
It was awkward that subclasses were modifying m_outputs directly and had to
explicitly call changedOutputs() whenever they did.

No new tests, no web-facing behavior change.

* Modules/webaudio/AudioNode.cpp:
(WebCore::AudioNode::updateChannelsForInputs):
* Modules/webaudio/AudioNodeInput.cpp:
(WebCore::AudioNodeInput::connect):
(WebCore::AudioNodeInput::disconnect):
(WebCore::AudioNodeInput::disable):
(WebCore::AudioNodeInput::enable):
(WebCore::AudioNodeInput::numberOfChannels const):
* Modules/webaudio/AudioParam.cpp:
(WebCore::AudioParam::connect):
(WebCore::AudioParam::disconnect):
* Modules/webaudio/AudioSummingJunction.cpp:
(WebCore::AudioSummingJunction::markRenderingStateAsDirty):
(WebCore::AudioSummingJunction::addOutput):
(WebCore::AudioSummingJunction::removeOutput):
(WebCore::AudioSummingJunction::maximumNumberOfChannels const):
(WebCore::AudioSummingJunction::changedOutputs): Deleted.
* Modules/webaudio/AudioSummingJunction.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268820 268f45cc-cd09-0410-ab3c-d52691b4dbfc
… candidate is trimmable

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

Reviewed by Antti Koivisto.

This patch addresses the cases when the candidate content is partially/fully trimmable and
after putting the content on the line, there's still enough room to accommodate some more content.

* layout/inlineformatting/InlineContentBreaker.cpp:
(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268821 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=217995

Reviewed by Darin Adler.

Share more code between WorkerGlobalScope and WorkletGlobalScope by
moving shared logic to WorkerOrWorkletGlobalScope.

No new tests, no Web-facing behavior change.

* Modules/webaudio/AudioWorkletGlobalScope.cpp:
(WebCore::AudioWorkletGlobalScope::prepareForDestruction):
* Modules/webaudio/AudioWorkletGlobalScope.h:
* Modules/webaudio/AudioWorkletThread.cpp:
(WebCore::AudioWorkletThread::stop):
* workers/WorkerEventLoop.cpp:
(WebCore::WorkerEventLoop::create):
(WebCore::WorkerEventLoop::WorkerEventLoop):
* workers/WorkerEventLoop.h:
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::prepareForDestruction):
(WebCore::WorkerGlobalScope::removeAllEventListeners):
(WebCore::WorkerGlobalScope::suspend):
(WebCore::WorkerGlobalScope::resume):
(WebCore::WorkerGlobalScope::close):
(WebCore::WorkerGlobalScope::wrapCryptoKey):
(WebCore::WorkerGlobalScope::unwrapCryptoKey):
(WebCore::WorkerGlobalScope::thread const):
* workers/WorkerGlobalScope.h:
* workers/WorkerOrWorkletGlobalScope.cpp:
(WebCore::WorkerOrWorkletGlobalScope::WorkerOrWorkletGlobalScope):
(WebCore::WorkerOrWorkletGlobalScope::prepareForDestruction):
(WebCore::WorkerOrWorkletGlobalScope::disableEval):
(WebCore::WorkerOrWorkletGlobalScope::disableWebAssembly):
(WebCore::WorkerOrWorkletGlobalScope::isJSExecutionForbidden const):
(WebCore::WorkerOrWorkletGlobalScope::eventLoop):
(WebCore::WorkerOrWorkletGlobalScope::isContextThread const):
(WebCore::WorkerOrWorkletGlobalScope::postTask):
* workers/WorkerOrWorkletGlobalScope.h:
(WebCore::WorkerOrWorkletGlobalScope::isClosing const):
(WebCore::WorkerOrWorkletGlobalScope::workerOrWorkletThread const):
(WebCore::WorkerOrWorkletGlobalScope::markAsClosing):
* workers/WorkerThread.cpp:
(WebCore::WorkerThread::stop):
* worklets/WorkletGlobalScope.cpp:
(WebCore::WorkletGlobalScope::WorkletGlobalScope):
(WebCore::WorkletGlobalScope::prepareForDestruction):
* worklets/WorkletGlobalScope.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268822 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218043

Reviewed by Antti Koivisto.

The inline level box initiated by <br> should be vertically sized the same way as the root inline box is.
(e.g. <div>root text<br></div> <- line break's inline level box should match the layout bounds of the root inline box).

* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::LineBoxBuilder::isRootInlineBox const):
(WebCore::Layout::LineBoxBuilder::isRootBox const):
(WebCore::Layout::LineBoxBuilder::setVerticalGeometryForInlineBox const):
(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268823 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218034

Reviewed by Antti Koivisto.

This patch ensures that IFC integration line snapping matches the legacy line layout snapping behavior (e.g. images prevent line snapping).

* layout/inlineformatting/InlineLineBox.h:
(WebCore::Layout::LineBox::InlineLevelBox::isAtomicInlineLevelBox const):
* layout/integration/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::constructContent):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268825 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218048

Reviewed by Philippe Normand.

Update FFTFrame::realData() / imagData() to return an AudioFloatArray instead of a float*.
It is risky to expose a float* since the caller has no way to know the actual size of the
array. By returning an AudioFloatArray, the caller can query AudioFloatArray::size() to
know the actual size. Note that it is not safe to assume that the size of these arrays
is FFTFrame::fftSize() because this is not true for ports using GStreamer.

* Modules/webaudio/PeriodicWave.cpp:
(WebCore::PeriodicWave::createBandLimitedTables):
* Modules/webaudio/RealtimeAnalyser.cpp:
(WebCore::RealtimeAnalyser::doFFTAnalysisIfNecessary):
* platform/audio/FFTFrame.cpp:
(WebCore::FFTFrame::interpolateFrequencyComponents):
(WebCore::FFTFrame::scaleFFT):
(WebCore::FFTFrame::multiply):
(WebCore::FFTFrame::extractAverageGroupDelay):
(WebCore::FFTFrame::addConstantGroupDelay):
(WebCore::FFTFrame::print):
* platform/audio/FFTFrame.h:
(WebCore::FFTFrame::realData):
(WebCore::FFTFrame::imagData):
(WebCore::FFTFrame::realData const):
(WebCore::FFTFrame::imagData const):
* platform/audio/FFTFrameStub.cpp:
(WebCore::FFTFrame::realData const): Deleted.
(WebCore::FFTFrame::imagData const): Deleted.
* platform/audio/gstreamer/FFTFrameGStreamer.cpp:
(WebCore::FFTFrame::FFTFrame):
(WebCore::FFTFrame::realData const): Deleted.
(WebCore::FFTFrame::imagData const): Deleted.
* platform/audio/mac/FFTFrameMac.cpp:
(WebCore::FFTFrame::FFTFrame):
(WebCore::FFTFrame::doFFT):
(WebCore::FFTFrame::realData const): Deleted.
(WebCore::FFTFrame::imagData const): Deleted.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268826 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…as problems updating

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

Reviewed by Philippe Normand.

This scripts were returning zero status when flatpak failed to
update in some cases. Fix them to return a non-zero status.

* Scripts/update-webkit-flatpak: Add missing sys.exit call with the return code.
* flatpak/flatpakutils.py:
(WebkitFlatpak.run_in_sandbox): In python false is zero when casted to int.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268827 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…sts/mathml/relations/css-styling/padding-border-margin/border-002.html is a constant failure

rdar://70546330

Unreviewed test gardening.

* platform/mac/TestExpectations:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268839 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…css-styling/padding-border-margin/border-002.html is a constant failure

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

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268840 268f45cc-cd09-0410-ab3c-d52691b4dbfc
* Modules/webaudio/AudioSummingJunction.cpp:
(WebCore::AudioSummingJunction::maximumNumberOfChannels const):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268841 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218053

Reviewed by Tim Horton.

UIDocumentMenuViewController is deprecated and its last
use was removed in r258092.

* Platform/spi/ios/UIKitSPI.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268842 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218046

Patch by Alex Christensen <achristensen@webkit.org> on 2020-10-21
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

* web-platform-tests/encoding/iso-2022-jp-encoder-expected.txt:
* web-platform-tests/encoding/iso-2022-jp-encoder.html:

Source/WebCore:

https://encoding.spec.whatwg.org/#iso-2022-jp-encoder step 3 was put in a few years ago and recently implemented by Firefox.
Covered by updated and newly passing web platform tests.

* platform/text/TextCodecCJK.cpp:
(WebCore::iso2022JPEncode):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268843 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218049
<rdar://problem/70542684>

Reviewed by Aakash Jain.

* Scripts/webkitpy/__init__.py:
* Scripts/webkitpy/thirdparty/BeautifulSoup.py:
* Scripts/webkitpy/thirdparty/__init__.py:
(AutoinstallImportHook.find_module): Remove _install_beatifulsoup.
(AutoinstallImportHook._install_pytest_timeout): Deleted.
(AutoinstallImportHook._install_pytest): Deleted.
(AutoinstallImportHook._install_beautifulsoup): Deleted.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268844 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…sts/mathml/relations/html5-tree/dynamic-childlist-001.htm is a constant failure

rdar://70550210

Unreviewed test gardening.

* platform/mac/TestExpectations:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268845 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…html5-tree/dynamic-childlist-001.html is a constant failure

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

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268846 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218020
Source/WebCore:

<rdar://problem/69542459>

Reviewed by Darin Adler.

The refactoring in https://bugs.webkit.org/show_bug.cgi?id=216739 caused selections to
expand in both directions after a double-click and drag to expand on mac. This behavior
was not observed on iOS. This removes the error-prone calculation.
Note that this bug does not occur if only testing immediatly moving the drag point to the
end of the selection. Dragging across all the words as a real user would needs to be emulated.

Test: editing/selection/double-click-and-drag-over-anchor-to-select.html

* editing/VisibleSelection.cpp:
(WebCore::VisibleSelection::validate):

LayoutTests:

Reviewed by Darin Adler.

* editing/selection/double-click-and-drag-over-anchor-to-select-expected.txt: Added.
* editing/selection/double-click-and-drag-over-anchor-to-select.html: Added.
* resources/ui-helper.js:
(window.UIHelper.doubleClickAtMouseDown):
(window.UIHelper.mouseUp):
(window.UIHelper.dragMouseAcrossElement):
(window.UIHelper.doubleClickElementMouseDown):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268847 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…sent and received

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

Reviewed by Darin Adler.

Source/WebKit:

Added IPC.addIncomingMessageListener and IPC.addOutgoingMessageListener which allows JavaScript
to observe IPC messages being sent or received by WebContent process. We use the generated code
added in r268503 to decode the IPC arguments.

Tests: TestWebKitAPI.IPCTestingAPI.CanInterceptAlert
       TestWebKitAPI.IPCTestingAPI.CanInterceptHasStorageAccess
       TestWebKitAPI.IPCTestingAPI.CanInterceptFindString

* Platform/IPC/Connection.cpp:
(IPC::Connection::sendMessage): Added the code to invoke MessageObserver::willSendMessage.
Also remove any stale MessageObserver as neded.
(IPC::Connection::addMessageObserver): Added.
(IPC::Connection::dispatchMessage): Added the code to invoke MessageObserver::didReceiveMessage.
Also remove any stale MessageObserver as neded.
* Platform/IPC/Connection.h:
(IPC::Connection::MessageObserver): Added. A pure virtual interface for observing IPC messages.
* Platform/IPC/JSIPCBinding.h:
(IPC::jsValueForDecodedStringArgumentValue): Extracted from jsValueForDecodedArgumentValue<String>.
Now takes the type name as an argument.
(IPC::jsValueForDecodedArgumentValue<URL>): Use "URL" as the type name.
(IPC::jsValueForDecodedArgumentValue<RegistrableDomain>): Use "RegistrableDomain" as the type name.
(IPC::jsValueForDecodedArgumentValue<OptionSet<U>>): Added. Specializations for OptionSet<U>
* WebProcess/WebPage/IPCTestingAPI.cpp:
(WebKit::IPCTestingAPI::JSMessageListener): Added. Implements IPC::MessageObserver.
(WebKit::IPCTestingAPI::JSIPC::staticFunctions):
(WebKit::IPCTestingAPI::createTypeError): Moved.
(WebKit::IPCTestingAPI::JSIPC::addMessageListener): Added.
(WebKit::IPCTestingAPI::JSIPC::addIncomingMessageListener): Added.
(WebKit::IPCTestingAPI::JSIPC::addOutgoingMessageListener): Added.
(WebKit::IPCTestingAPI::JSMessageListener::JSMessageListener): Added.
(WebKit::IPCTestingAPI::JSMessageListener::didReceiveMessage): Added.
(WebKit::IPCTestingAPI::JSMessageListener::willSendMessage): Added.
(WebKit::IPCTestingAPI::JSMessageListener::jsDescriptionFromDecoder): Added.

Tools:

Added tests to intercept IPC messages sent and received by WebContent process.

* TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:
(IPCTestingAPI.CanInterceptAlert):
(IPCTestingAPI.CanInterceptHasStorageAccess):
(IPCTestingAPI.CanInterceptFindString):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268848 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218001

Reviewed by Darin Adler.

Remove use of the $(findstring NEEDLE,$(FEATURE_AND_PLATFORM_DEFINES)) idiom in
DerivedSources.make to pave the way to passing FEATURE_AND_PLATFORM_DEFINES as a
file to scripts, rather than always on the command line, which is quite noisy.

* DerivedSources.make:
Remove conditionalized additions to ADDITIONAL_BINDING_IDLS and just always add
the concrete set, relying on the existing extended attributes in the IDLs instead.
It's also not necessary to ever add the touch related IDL files in WebCore here
as no users of DerivedSources.make use those.

Also removes conditional additions to USER_AGENT_STYLE_SHEETS and instead adds
the appropriate #ifdefs to the css files themselves which are already getting
preprocessed appropriately.

* css/fullscreen.css:
* css/mathml.css:
* css/mediaControls.css:
* html/shadow/mac/imageControlsMac.css:
Put required #ifdefs into the css files themselves, rather than embedding the
logic in the makefile.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268849 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218017

Unreviewed build-fix.

* rendering/RenderBox.cpp:
(WebCore::RenderBox::styleDidChange): Add missing ifdef guards.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268850 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…ed-fallback.html is a constant failure

rdar://70556068

Unreviewed test gardening.

* platform/mac/TestExpectations:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268851 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218062

Patch by Alex Christensen <achristensen@webkit.org> on 2020-10-21
Reviewed by Alexey Shvayka.

r268709 introduced a Vector::findMatching call inside a loop that populates the Vector.
This causes very slow construction of URLSearchParams with large dictionaries with 16-bit keys.
To speed things up, keep a HashMap of the 16-bit strings we have already inserted to their index in the Vector
so we don't need to search the Vector.

* bindings/js/JSDOMConvertRecord.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268852 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218056

Reviewed by Tim Horton.

LayoutTests/imported/w3c:

* web-platform-tests/url/a-element-expected.txt:
* web-platform-tests/url/a-element-xhtml-expected.txt:
* web-platform-tests/url/resources/setters_tests.json:
* web-platform-tests/url/resources/urltestdata.json:
* web-platform-tests/url/url-constructor-expected.txt:
* web-platform-tests/url/url-searchparams.any.js:
* web-platform-tests/url/url-setters-expected.txt:

Source/WebCore:

Don't add an extra forward slash at the beginning when setting the path of a file URL
that starts with a backslash, which we turn into a forward slash when parsing file URL paths.
This conveniently involves removing duplicate code.

This matches the behavior of Chrome and the URL spec.
Covered by newly passing web platform tests.

* html/URLDecomposition.cpp:
(WebCore::URLDecomposition::setPathname):

Source/WTF:

* wtf/URL.cpp:
(WTF::URL::setPath):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268853 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218065

Reviewed by Wenson Hsieh.

Added JSIPCBinding.cpp and moved the code from JSIPCBinding.h to JSIPCBinding.cpp.

No new tests since there is no behavior change.

* Platform/IPC/JSIPCBinding.cpp: Added.
(IPC::jsValueForDecodedStringArgumentValue): Moved from .h.
(IPC::jsValueForDecodedArgumentValue<String>): Ditto.
(IPC::jsValueForDecodedArgumentValue<URL>): Ditto.
(IPC::jsValueForDecodedArgumentValue<RegistrableDomain>): Ditto.
(IPC::jsValueForDecodedNumericArgumentValue): Ditto.
(IPC::jsValueForDecodedArgumentValue<double>): Ditto.
(IPC::jsValueForDecodedArgumentValue<float>): Ditto.
(IPC::jsValueForDecodedArgumentValue<int8_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<int16_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<int32_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<int64_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<uint8_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<uint16_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<uint32_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<uint64_t>): Ditto.
(IPC::jsValueForDecodedArgumentRect): Ditto.
(IPC::jsValueForDecodedArgumentValue<IntRect>): Ditto.
(IPC::jsValueForDecodedArgumentValue<FloatRect>): Ditto.
* Platform/IPC/JSIPCBinding.h:
(IPC::jsValueForDecodedArgumentValue):
* Sources.txt:
* WebKit.xcodeproj/project.pbxproj:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268854 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218068

Reviewed by Adrian Perez de Castro.

On r268591 I updated the version of wpebackend-fdo to the last stable 1.8
but this version is failing to build on Ubuntu-18.04 because of the cmake version.
Backport a patch to fix this.

* gtk/jhbuild.modules:
* gtk/patches/wpebackend-fdo-cmake-buildfix-3.10.patch: Added.
* jhbuild/jhbuild-minimal.modules:
* jhbuild/patches/wpebackend-fdo-cmake-buildfix-3.10.patch: Added.
* wpe/jhbuild.modules:
* wpe/patches/wpebackend-fdo-cmake-buildfix-3.10.patch: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268855 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=216882
<rdar://problem/69443288>

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

LayoutTests/imported/w3c:

Update expectations for these tests.

* web-platform-tests/css/css-scroll-snap/nested-scrollIntoView-snaps-expected.txt:
* web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area-expected.txt:
* web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-expected.txt:
* web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets-expected.txt:
* web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container-expected.txt:

Source/WebCore:

* page/scrolling/AxisScrollSnapOffsets.cpp:
(WebCore::updateSnapOffsetsForScrollableArea): No longer call adjustmentForTextAutosizing and
only conditionally adjust the scroll area by the scroll offset, becauase mapping to container
coordinates only applies container scroll offsets in the case that the container is not a
ScrollView.
(WebCore::adjustAxisSnapOffsetsForScrollExtent): Deleted.

LayoutTests:

* TestExpectations: Mark some tests as passing.
* css3/scroll-snap/nested-elements-expected.txt: Update results to eliminate implicit stops.
* css3/scroll-snap/scroll-snap-children-with-padding-expected.txt: Ditto.
* css3/scroll-snap/scroll-snap-children-with-scroll-snap-margin-expected.txt: Ditto.
* css3/scroll-snap/scroll-snap-children-with-transforms-expected.txt: Ditto.
* css3/scroll-snap/scroll-snap-elements-container-larger-than-children-expected.txt: Ditto.
* css3/scroll-snap/scroll-snap-elements-container-larger-than-children-rtl-expected.txt: Ditto.
* css3/scroll-snap/scroll-snap-offsets-expected.txt: Ditto.
* css3/scroll-snap/scroll-snap-offsets-rtl-expected.txt: Ditto.
* css3/scroll-snap/scroll-snap-positions-expected.txt: Ditto.
* css3/scroll-snap/scroll-snap-with-scroll-padding-expected.txt: Ditto.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268856 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Tools:

Always connect to WebKitWebView::close even if the view is never made active.

* MiniBrowser/gtk/BrowserWindow.c:
(browserWindowSwitchTab):
(browser_window_append_view):

WebDriverTests:

* TestExpectations.json:
* imported/w3c/importer.json:
* imported/w3c/tools/webdriver/webdriver/client.py:
* imported/w3c/tools/wptrunner/wptrunner/browsers/android_weblayer.py:
* imported/w3c/tools/wptrunner/wptrunner/browsers/chrome.py:
* imported/w3c/tools/wptrunner/wptrunner/browsers/chrome_android.py:
* imported/w3c/tools/wptrunner/wptrunner/environment.py:
* imported/w3c/tools/wptrunner/wptrunner/executors/base.py:
* imported/w3c/tools/wptrunner/wptrunner/executors/executormarionette.py:
* imported/w3c/tools/wptrunner/wptrunner/executors/executorselenium.py:
* imported/w3c/tools/wptrunner/wptrunner/executors/executorservodriver.py:
* imported/w3c/tools/wptrunner/wptrunner/executors/executorwebdriver.py:
* imported/w3c/tools/wptrunner/wptrunner/executors/protocol.py:
* imported/w3c/tools/wptrunner/wptrunner/testdriver-extra.js:
* imported/w3c/tools/wptrunner/wptrunner/testharnessreport.js:¡
* imported/w3c/tools/wptrunner/wptrunner/webdriver_server.py:
* imported/w3c/tools/wptrunner/wptrunner/wptcommandline.py:
* imported/w3c/tools/wptrunner/wptrunner/wptrunner.py:
* imported/w3c/webdriver/tests/element_click/shadow_dom.py: Added.
* imported/w3c/webdriver/tests/perform_actions/support/refine.py:
* imported/w3c/webdriver/tests/print/printcmd.py:
* imported/w3c/webdriver/tests/print/user_prompts.py:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@268857 268f45cc-cd09-0410-ab3c-d52691b4dbfc
calvaris@igalia.com and others added 27 commits October 28, 2020 11:41
Original patch was revert, should revert expectations as well

Reverted changeset:

"Unreviewed, GStreamer gardening"
https://trac.webkit.org/changeset/269043

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269098 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218245

Reviewed by Xabier Rodriguez-Calvar.

Plug non-video pads to a fake sink in order to maintain a valid pipeline. Later we should
switch to decodebin3 and rely on the stream selection facilities.

* platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:
(WebCore::ImageDecoderGStreamer::InnerDecoder::connectDecoderPad):
(WebCore::ImageDecoderGStreamer::InnerDecoder::preparePipeline):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269099 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218281

Patch by Philippe Normand <pnormand@igalia.com> on 2020-10-28
Reviewed by Carlos Alberto Lopez Perez.

* buildstream/elements/flatpak/sdk.bst: Switch to app-debug-link as in the upstream FDO SDK.
* buildstream/elements/freedesktop-sdk.bst: Bump junction ref.
* buildstream/elements/sdk/mesa.bst: Update to 20.1.10 and add patch not present in stable release yet.
* buildstream/patches/fdo-0001-pango-Bump-to-1.47.patch: Added.
* buildstream/patches/mesa/0001-mesa-rename-_mesa_free_errors_data.patch: Removed.
* buildstream/patches/mesa/0002-mesa-add-bool-param-to-_mesa_free_context_data.patch: Removed.
* buildstream/patches/mesa/0003-mesa-st-release-debug_output-after-destroying-the-co.patch: Removed.
* buildstream/patches/mesa/0004-mesa-clear-texture-s-views-when-texture-is-remove.patch: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269100 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218248

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

Set framerate on the sample caps and reduce code duplication.

* platform/graphics/gstreamer/MediaSampleGStreamer.cpp:
(WebCore::MediaSampleGStreamer::createImageSample):
* platform/graphics/gstreamer/MediaSampleGStreamer.h:
* platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:
(WebCore::MockRealtimeVideoSourceGStreamer::updateSampleBuffer):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269101 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…s the root inlinebox vertical position

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

Reviewed by Antti Koivisto.

Let's start tracking the nested vertical alignment offsets from the root's baseline.
It enables us to find out how much offset the root inlinebox's baseline is required inside the line box.
e.g.
<div style="font-size: 50px;">
  root inlinebox text content
  <span style="font-size: 10px; vertical-align: text-bottom">and some nested text with an image
    <img src="broken.jpg" style="vertical-align: baseline; height: 100px; width: 100px;">
  </span>
</div>
In this case, the nested inline box (<span>) has 'text-bottom' vertical alignment which may stretch the line box and
may push the root inlinebox downwards so as the nested <img> (aligned with the <span>'s baseline).

We simply compute the absolute offset value for each inline level boxes as we walk the "tree" and hold on to the maximum value.

* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::LineBoxBuilder::alignInlineLevelBoxesVerticallyAndComputeLineBoxHeight):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269102 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218182

Reviewed by Philippe Normand.

In certain cases, like smoothstreaming with PlayReady, the init
datas we are getting are correct but are not in PSSH box format
they would be "sanitized away". In this patch you can enable
sanitization customization depending on the CDM you're using.

* Modules/encryptedmedia/CDM.cpp:
(WebCore::CDM::sanitizeInitData):
* platform/encryptedmedia/CDMPrivate.cpp:
(WebCore::CDMPrivate::sanitizeInitData const):
* platform/encryptedmedia/CDMPrivate.h:
* platform/graphics/gstreamer/eme/CDMThunder.cpp:
(WebCore::CDMPrivateThunder::sanitizeInitData const):
* platform/graphics/gstreamer/eme/CDMThunder.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269103 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=215255

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

The audio file reader used to handle up to stereo audio layouts. It can now handle up to 5.1
surround layouts. This patch also modernizes the coding style of this module in various
parts.

* platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:
(WebCore::initializeDebugCategory):
(WebCore::AudioFileReader::handleSample):
(WebCore::AudioFileReader::handleMessage):
(WebCore::AudioFileReader::handleNewDeinterleavePad):
(WebCore::AudioFileReader::plugDeinterleave):
(WebCore::AudioFileReader::decodeAudioForBusCreation):
(WebCore::AudioFileReader::createBus):
(WebCore::createBusFromAudioFile):
(WebCore::createBusFromInMemoryAudioFile):

LayoutTests:

* platform/glib/TestExpectations: audiobuffersource-multi-channels.html is now passing.
* platform/glib/webaudio/codec-tests/aac/vbr-128kbps-44khz-expected.wav: Added.
* platform/glib/webaudio/codec-tests/vorbis/vbr-128kbps-44khz-expected.wav: Added.
* platform/glib/webaudio/codec-tests/vorbis/vbr-70kbps-44khz-expected.wav: Added.
* platform/glib/webaudio/codec-tests/vorbis/vbr-96kbps-44khz-expected.wav: Added.
* platform/glib/webaudio/codec-tests/wav/24bit-22khz-resample-expected.wav: Added.
* platform/gtk/webaudio/codec-tests/aac/vbr-128kbps-44khz-expected.wav: Removed.
* platform/gtk/webaudio/codec-tests/mp3/128kbps-44khz-expected.wav: Removed.
* platform/gtk/webaudio/codec-tests/vorbis/vbr-128kbps-44khz-expected.wav: Removed.
* platform/gtk/webaudio/codec-tests/vorbis/vbr-70kbps-44khz-expected.wav: Removed.
* platform/gtk/webaudio/codec-tests/vorbis/vbr-96kbps-44khz-expected.wav: Removed.
* platform/gtk/webaudio/codec-tests/wav/24bit-44khz-expected.wav: Removed.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269104 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…at needs testing

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

Reviewed by Simon Fraser.

Source/WebKitLegacy/mac:

Expose a set of setters to for DumpRenderTree to use when setting preferences
by string.

* WebView/WebPreferences.mm:
(-[WebPreferences _setBoolPreferenceForTestingWithValue:forKey:]):
(-[WebPreferences _setUInt32PreferenceForTestingWithValue:forKey:]):
(-[WebPreferences _setDoublePreferenceForTestingWithValue:forKey:]):
(-[WebPreferences _setStringPreferenceForTestingWithValue:forKey:]):
* WebView/WebPreferencesPrivate.h:

Tools:

Removes the requirement for WebKitLegacy (macOS), which has already been lifted for
modern WebKit, that testing new preferences requires new WebPreferences SPI. Instead,
new testing specific SPI ([WebPreferences _set*PreferenceForTestingWithValue:forKey:])
are used to allow string based setting.

To make this work with the shared WebPreferences*.yaml names, a helper is generated to
map from the shared name to the WebKitLegacy specific name.

This still doesn't quite take us all the way to supporting any WebPreferences*.yaml name
in test headers, as is supported in WebKitTestRunner, as we still need a viable mechanism
to fully reset WebPreferences between tests. Right now, each preference must be set on
each test run, requiring the complete set of preferences to be known up front.

* DumpRenderTree/CMakeLists.txt:
* DumpRenderTree/DerivedSources-input.xcfilelist:
* DumpRenderTree/DerivedSources-output.xcfilelist:
* DumpRenderTree/DerivedSources.make:
* DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
* DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedWebKitLegacyKeyMapping.cpp.erb: Added.
* DumpRenderTree/TestOptions.cpp:
(WTR::TestOptions::supportedBoolWebPreferenceFeatures):
* DumpRenderTree/TestOptions.h:
* DumpRenderTree/mac/DumpRenderTree.mm:
(setWebPreferencesForTestOptions):
* DumpRenderTree/mac/TestRunnerMac.mm:
(TestRunner::overridePreference):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269105 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218227

Reviewed by Jonathan Bedard.

* CISupport/ews-build/send_email.py:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269106 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…re not in SSA form)

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

Reviewed by Saam Barati.

JSTests:

The only testcase I managed to get for this bug loops forever when not crashing.
So I use a 1s timeout through --watchdog=1000.

* stress/bounds-checking-in-cold-loop.js: Added.
(true.vm.ftlTrue):

Source/JavaScriptCore:

In DFGIntegerRangeOptimization, when visiting an Upsilon node, we call setEquivalence, that calls setRelationship.
But despite its name, this function does not overwrite a pre-existing relationship, it simply replaces it by an over-approximation of the intersection of the old and new relationship (see the filter method).
Since the old relationship is always (by definition) an over-approximation of this intersection, it will often do nothing at all if it cannot find a closer approximation.
This is a problem specifically for Upsilon nodes, because several of them can store to the same "shadow node" corresponding to a given Phi, so they are the only case where there can already be a completely different relationship for the same nodes (coming from a different Upsilon).

The fix is very simple thanks to a suggestion by Phil: we just remove all relationships referring to the shadow node just before executing an Upsilon.
This is correct since the upsilon effectively kills that shadow node, before making it live again with a different value, and we already aggressively prune the relationshipMaps by liveness.

* dfg/DFGIntegerRangeOptimizationPhase.cpp:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269107 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218286

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

Rebaseline WPT test that is now passing. This test is also passing in Firefox. It is crashing in Blink.

* web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/transferred-buffer-output-expected.txt:

Source/WebCore:

AudioBuffer channels should be neuterable / detachable:
- https://webaudio.github.io/web-audio-api/#acquire-the-content

When the one of the channels' buffers gets detached/neutered, the array returned by
getChannelData(0) is neutered and thus has zero length. Internally though, if
channelData() gets called and ANY of the channels' buffers are detached, we return
a new empty array, as per the specification. This makes sure we end up with silence
on all channels when any of the channels gets detached, which is consistent with the
specification and Firefox (Blink seems to crash).

To make the AudioBuffer API less error-prone when used natively, I updated length()
and duration() to return 0 whenever any of the channels is detached. This is safer
since channelData() returns 0-length arrays in this case. The Web API keeps returning
the original values though so they rely on new originalLength() / originalDuration()
getters.

No new tests, rebaselined / updated existing tests.

* Modules/webaudio/AudioBuffer.cpp:
(WebCore::AudioBuffer::create):
(WebCore::AudioBuffer::AudioBuffer):
(WebCore::AudioBuffer::invalidate):
(WebCore::AudioBuffer::channelData):
(WebCore::AudioBuffer::zero):
(WebCore::AudioBuffer::hasDetachedChannelBuffer const):
* Modules/webaudio/AudioBuffer.h:
(WebCore::AudioBuffer::originalLength const):
(WebCore::AudioBuffer::originalDuration const):
(WebCore::AudioBuffer::length const):
(WebCore::AudioBuffer::duration const):
* Modules/webaudio/AudioBuffer.idl:
* Modules/webaudio/ConvolverNode.cpp:
(WebCore::ConvolverNode::setBuffer):
* Modules/webaudio/ScriptProcessorNode.cpp:
(WebCore::ScriptProcessorNode::initialize):

LayoutTests:

* webaudio/audiobuffer-neuter-expected.txt:
* webaudio/audiobuffer-neuter.html:
Extend layout test coverage. I have verified that this new version of the test is fully passing in
Gecko. In Blink, the initial checks all pass but it then crashes during rendering.

* webaudio/resources/audio-testing.js:
(createConstantBuffer):
Improve createConstantBuffer() so that it can construct buffers with multiple channels.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269108 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218289

Reviewed by Geoff Garen.

Since Contacts.framework does not depend on WebKit and soft linking is
discouraged, WebKit should link Contacts.framework normally.

Soft linking requires running the linker at runtime, leading to an
unwanted performance cost. By normally linking (on iOS) and weak linking
(on macOS), the linkage is declared at build time, which enables running
the linker at build/update/install time and avoiding the runtime cost.

* Configurations/WebKit.xcconfig:

On macOS, weak link the framework since Contacts.framework is not
available on the Base System.

* Platform/cocoa/PaymentAuthorizationPresenter.mm:
(WebKit::toNSError):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269109 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218285
<rdar://problem/70730722>

Reviewed by Antti Koivisto.

LineBoxBuilder functions check for empty run list except this static helper.

* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::horizontalAlignmentOffset):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269110 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218288

Reviewed by Tim Horton.

Source/WebKit:

Removes WKPreferencesGet/SetTabToLinksEnabled preference as it duplicates functionality of
WKPreferencesGet/SetTabsToLinks. The former was added for https://bugs.webkit.org/show_bug.cgi?id=95329
but was redundant even at the time. We can now use test header commands for all of its
use cases.

Also removes testing only bundle SPI for enabling spatial navigation which also can be
set via test headers instead.

* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetTabToLinksEnabled): Deleted.
(WKPreferencesGetTabToLinksEnabled): Deleted.
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/InjectedBundle/API/c/WKBundle.cpp:
(WKBundleSetSpatialNavigationEnabled): Deleted.
* WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
(WebKit::InjectedBundle::setSpatialNavigationEnabled): Deleted.
* WebProcess/InjectedBundle/InjectedBundle.h:
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::setTabToLinksEnabled): Deleted.
(WebKit::WebPage::tabToLinksEnabled const): Deleted.

Source/WTF:

* Scripts/Preferences/WebPreferences.yaml:
Unify TabToLinksEnabled and TabsToLinks. TabToLinksEnabled was added for https://bugs.webkit.org/show_bug.cgi?id=95329
and has never actually been needed.

Tools:

Replace uses of testRunner.overridePreference("WebKitTabToLinksPreferenceKey", ...) and
testRunner.setSpatialNavigationEnabled(...) with test header commands, helping to reduce
the number of different ways we have to override preferences in LayoutTests.

* DumpRenderTree/TestOptions.cpp:
(WTR::TestOptions::defaults):
* DumpRenderTree/TestRunner.cpp:
(TestRunner::staticFunctions):
(setSpatialNavigationEnabledCallback): Deleted.
* DumpRenderTree/TestRunner.h:
* DumpRenderTree/mac/DumpRenderTree.mm:
(resetWebPreferencesToConsistentValues):
* DumpRenderTree/mac/TestRunnerMac.mm:
(TestRunner::setSpatialNavigationEnabled): Deleted.
* DumpRenderTree/win/DumpRenderTree.cpp:
(resetWebPreferencesToConsistentValues):
(setWebPreferencesForTestOptions):
* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::beginTesting):
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setSpatialNavigationEnabled): Deleted.
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

Replace uses of testRunner.overridePreference("WebKitTabToLinksPreferenceKey", ...) and
testRunner.setSpatialNavigationEnabled(...) with test header commands, helping to reduce
the number of different ways we have to override preferences in LayoutTests.

* accessibility/mac/caret-browsing-tab-selection.html:
* accessibility/mac/focus-setting-selection-syncronizing-not-clearing.html:
* accessibility/mac/selection-element-tabbing-to-link.html:
* accessibility/mac/selection-notification-focus-change.html:
* accessibility/mac/tab-focus-post-notification.html:
* fast/events/tab-focus-anchor.html:
* fast/events/tab-focus-link-in-canvas.html:
* fast/spatial-navigation/snav-1st-stop.html:
* fast/spatial-navigation/snav-clipped-overflowed-content.html:
* fast/spatial-navigation/snav-container-only-white-space.html:
* fast/spatial-navigation/snav-container-white-space.html:
* fast/spatial-navigation/snav-display-contents-crash.html:
* fast/spatial-navigation/snav-div-overflow-scrol-hidden.html:
* fast/spatial-navigation/snav-div-scrollable-but-without-focusable-content.html:
* fast/spatial-navigation/snav-fully-aligned-horizontally.html:
* fast/spatial-navigation/snav-fully-aligned-vertically.html:
* fast/spatial-navigation/snav-hidden-focusable-element.html:
* fast/spatial-navigation/snav-hidden-iframe-zero-size.html:
* fast/spatial-navigation/snav-hidden-iframe.html:
* fast/spatial-navigation/snav-iframe-flattening-simple.html:
* fast/spatial-navigation/snav-iframe-nested.html:
* fast/spatial-navigation/snav-iframe-no-focusable-content.html:
* fast/spatial-navigation/snav-iframe-no-scrollable-content.html:
* fast/spatial-navigation/snav-iframe-recursive-offset-parent.html:
* fast/spatial-navigation/snav-iframe-with-offscreen-focusable-element.html:
* fast/spatial-navigation/snav-imagemap-area-not-focusable.html:
* fast/spatial-navigation/snav-imagemap-area-without-image.html:
* fast/spatial-navigation/snav-imagemap-overlapped-areas.html:
* fast/spatial-navigation/snav-imagemap-simple.html:
* fast/spatial-navigation/snav-input.html:
* fast/spatial-navigation/snav-media-elements.html:
* fast/spatial-navigation/snav-multiple-select-focusring.html:
* fast/spatial-navigation/snav-multiple-select-optgroup.html:
* fast/spatial-navigation/snav-multiple-select.html:
* fast/spatial-navigation/snav-offscreen-content.html:
* fast/spatial-navigation/snav-only-clipped-overflow-content.html:
* fast/spatial-navigation/snav-radio-group.html:
* fast/spatial-navigation/snav-radio.html:
* fast/spatial-navigation/snav-search-optimization.html:
* fast/spatial-navigation/snav-simple-content-overflow.html:
* fast/spatial-navigation/snav-single-select-list.html:
* fast/spatial-navigation/snav-single-select.html:
* fast/spatial-navigation/snav-table-traversal.html:
* fast/spatial-navigation/snav-textarea.html:
* fast/spatial-navigation/snav-tiny-table-traversal.html:
* fast/spatial-navigation/snav-two-elements-one-line.html:
* fast/spatial-navigation/snav-unit-overflow-and-scroll-in-direction.html:
* fast/spatial-navigation/snav-z-index.html:
* fast/spatial-navigation/snav-zero-margin-content.html:
* media/media-controls-accessibility.html:
* media/tab-focus-inside-media-elements.html:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269111 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218257
<rdar://problem/70736269>

Rubber-stamped by Aakash Jain.

* Scripts/libraries/resultsdbpy/resultsdbpy/__init__.py:
(_maybe_add_webkit_python_library_paths): Add webkitcorepy and webkitflaskpy.
(_maybe_add_webkitcorepy_path): Renamed _maybe_add_webkit_python_library_paths.
* Scripts/libraries/resultsdbpy/resultsdbpy/flask_support/util.py: Moved to webkitflaskpy/util.py.
* Scripts/libraries/resultsdbpy/resultsdbpy/flask_support/util_unittest.py: Moved to webkitflaskpy/util_unittest.py.
* Scripts/libraries/webkitflaskpy: Added.
* Scripts/libraries/webkitflaskpy/MANIFEST.in: Added.
* Scripts/libraries/webkitflaskpy/README.md: Added.
* Scripts/libraries/webkitflaskpy/setup.py: Added.
* Scripts/libraries/webkitflaskpy/webkitflaskpy: Added.
* Scripts/libraries/webkitflaskpy/webkitflaskpy/__init__.py: Added.
* Scripts/libraries/webkitflaskpy/webkitflaskpy/util.py: Moved from resultsdpy/flask_support/util.py.
* Scripts/libraries/webkitflaskpy/webkitflaskpy/util_unittest.py: Moved from resultsdpy/flask_support/util_unittest.py.
* Scripts/webkitpy/test/main.py:
(main): Add


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269114 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…ting FunctionExecutables during bytecode generation

https://bugs.webkit.org/show_bug.cgi?id=199866
<rdar://problem/53333108>

Reviewed by Tadeu Zagallo.

JSTests:

* microbenchmarks/let-const-tdz-environment-parsing-and-hash-consing-speed.js: Added.

Source/JavaScriptCore:

This patch removes performance pathologies regarding programs with
many variables under TDZ (let/const). We had an algorithm for caching
the results of gathering all variables under TDZ, but that algorithm
wasn't nearly aggressive enough in its caching. This lead us to worst
case quadratic runtime, which could happens in practice for large functions.

There are a few fixes here:
- Instead of flattening the entire TDZ stack, and caching that result,
we now cache each stack entry individually. So as you push/pop to the
TDZ environment stack, we no longer invalidate everything. Instead, we
will just need to cache the newly pushed entry. We also no longer invalidate
the cache for lifting a TDZ check. The compromise here is we may emit
more runtime TDZ checks for closure variables. This is better than N^2
bytecode compile time perf, since a well predicted branch for a TDZ
check is essentially free.
- We no longer transform the CompactTDZEnvironment (formerly CompactVariableEnvironment)
from a Vector into a HashSet each time we generate code for an inner function. Instead,
CompactTDZEnvironment can be in two modes: compact and inflated. It starts life off in
compact mode (a vector), and will turn into an inflated mode if it's ever needed. Once
inflated, it'll stay this way until it's destructed. This improves our algorithm from being
O(EnvSize * NumFunctions) to O(EnvSize) at the cost of using more space in a HashTable versus a
Vector. In the future, we could consider just binary searching through this Vector, and never using
a hash table.

* bytecode/UnlinkedFunctionExecutable.cpp:
(JSC::generateUnlinkedFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
* bytecode/UnlinkedFunctionExecutable.h:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::popLexicalScopeInternal):
(JSC::BytecodeGenerator::needsTDZCheck):
(JSC::BytecodeGenerator::liftTDZCheckIfPossible):
(JSC::BytecodeGenerator::pushTDZVariables):
(JSC::BytecodeGenerator::getVariablesUnderTDZ):
(JSC::BytecodeGenerator::preserveTDZStack):
(JSC::BytecodeGenerator::restoreTDZStack):
(JSC::BytecodeGenerator::emitNewInstanceFieldInitializerFunction):
* bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::makeFunction):
* debugger/DebuggerCallFrame.cpp:
(JSC::DebuggerCallFrame::evaluateWithScopeExtension):
* interpreter/Interpreter.cpp:
(JSC::eval):
* parser/Parser.h:
(JSC::Parser<LexerType>::parse):
(JSC::parse):
* parser/VariableEnvironment.cpp:
(JSC::CompactTDZEnvironment::sortCompact):
(JSC::CompactTDZEnvironment::CompactTDZEnvironment):
(JSC::CompactTDZEnvironment::operator== const):
(JSC::CompactTDZEnvironment::toTDZEnvironmentSlow const):
(JSC::CompactTDZEnvironmentMap::get):
(JSC::CompactTDZEnvironmentMap::Handle::~Handle):
(JSC::CompactTDZEnvironmentMap::Handle::Handle):
(JSC::CompactVariableEnvironment::CompactVariableEnvironment): Deleted.
(JSC::CompactVariableEnvironment::operator== const): Deleted.
(JSC::CompactVariableEnvironment::toVariableEnvironment const): Deleted.
(JSC::CompactVariableMap::get): Deleted.
(JSC::CompactVariableMap::Handle::~Handle): Deleted.
(JSC::CompactVariableMap::Handle::Handle): Deleted.
* parser/VariableEnvironment.h:
(JSC::CompactTDZEnvironment::toTDZEnvironment const):
(JSC::CompactTDZEnvironmentKey::CompactTDZEnvironmentKey):
(JSC::CompactTDZEnvironmentKey::hash):
(JSC::CompactTDZEnvironmentKey::equal):
(JSC::CompactTDZEnvironmentKey::makeDeletedValue):
(JSC::CompactTDZEnvironmentKey::isHashTableDeletedValue const):
(JSC::CompactTDZEnvironmentKey::environment):
(WTF::HashTraits<JSC::CompactTDZEnvironmentKey>::emptyValue):
(WTF::HashTraits<JSC::CompactTDZEnvironmentKey>::isEmptyValue):
(WTF::HashTraits<JSC::CompactTDZEnvironmentKey>::constructDeletedValue):
(WTF::HashTraits<JSC::CompactTDZEnvironmentKey>::isDeletedValue):
(JSC::CompactTDZEnvironmentMap::Handle::environment const):
(JSC::CompactVariableEnvironment::hash const): Deleted.
(JSC::CompactVariableMapKey::CompactVariableMapKey): Deleted.
(JSC::CompactVariableMapKey::hash): Deleted.
(JSC::CompactVariableMapKey::equal): Deleted.
(JSC::CompactVariableMapKey::makeDeletedValue): Deleted.
(JSC::CompactVariableMapKey::isHashTableDeletedValue const): Deleted.
(JSC::CompactVariableMapKey::isHashTableEmptyValue const): Deleted.
(JSC::CompactVariableMapKey::environment): Deleted.
(WTF::HashTraits<JSC::CompactVariableMapKey>::emptyValue): Deleted.
(WTF::HashTraits<JSC::CompactVariableMapKey>::isEmptyValue): Deleted.
(WTF::HashTraits<JSC::CompactVariableMapKey>::constructDeletedValue): Deleted.
(WTF::HashTraits<JSC::CompactVariableMapKey>::isDeletedValue): Deleted.
(JSC::CompactVariableMap::Handle::Handle): Deleted.
(JSC::CompactVariableMap::Handle::operator=): Deleted.
(JSC::CompactVariableMap::Handle::operator bool const): Deleted.
(JSC::CompactVariableMap::Handle::environment const): Deleted.
(JSC::CompactVariableMap::Handle::swap): Deleted.
* runtime/CachedTypes.cpp:
(JSC::Decoder::handleForTDZEnvironment const):
(JSC::Decoder::setHandleForTDZEnvironment):
(JSC::CachedCompactTDZEnvironment::encode):
(JSC::CachedCompactTDZEnvironment::decode const):
(JSC::CachedCompactTDZEnvironmentMapHandle::encode):
(JSC::CachedCompactTDZEnvironmentMapHandle::decode const):
(JSC::CachedFunctionExecutableRareData::decode const):
(JSC::Decoder::handleForEnvironment const): Deleted.
(JSC::Decoder::setHandleForEnvironment): Deleted.
(JSC::CachedCompactVariableEnvironment::encode): Deleted.
(JSC::CachedCompactVariableEnvironment::decode const): Deleted.
(JSC::CachedCompactVariableMapHandle::encode): Deleted.
(JSC::CachedCompactVariableMapHandle::decode const): Deleted.
* runtime/CachedTypes.h:
* runtime/CodeCache.cpp:
(JSC::generateUnlinkedCodeBlockImpl):
(JSC::generateUnlinkedCodeBlock):
(JSC::generateUnlinkedCodeBlockForDirectEval):
(JSC::recursivelyGenerateUnlinkedCodeBlockForProgram):
(JSC::recursivelyGenerateUnlinkedCodeBlockForModuleProgram):
(JSC::CodeCache::getUnlinkedGlobalCodeBlock):
* runtime/CodeCache.h:
* runtime/Completion.cpp:
(JSC::generateProgramBytecode):
(JSC::generateModuleBytecode):
* runtime/DirectEvalExecutable.cpp:
(JSC::DirectEvalExecutable::create):
* runtime/DirectEvalExecutable.h:
* runtime/JSScope.cpp:
(JSC::JSScope::collectClosureVariablesUnderTDZ):
* runtime/JSScope.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

Source/WTF:

* wtf/RefPtr.h:
(WTF::swap): Deleted.
This function is no longer necessary, and causes ADL (https://en.cppreference.com/w/cpp/language/adl)
compile errors when not using DumbPtrTraits and calling sort on a vector of that type.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269115 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…es by unifying replicaSurface and mainSurface

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

Reviewed by Don Olmstead.

TextureMapperLayer::paintWithIntermediateSurface was using two
BitmapTextures for the main layer and replica layer. But, a single
BitmapTexture suffices. Create a BitmapTexture and render both
layers onto it.

No new tests, no behavior changes.

* platform/graphics/texmap/TextureMapperLayer.cpp:
(WebCore::TextureMapperLayer::paintIntoSurface):
(WebCore::TextureMapperLayer::paintWithIntermediateSurface):
* platform/graphics/texmap/TextureMapperLayer.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269116 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218212
<rdar://problem/70700121>

Reviewed by Dewei Zhu.

* Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Bump version.
* Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:
(Git.commit): Find a commit referred to by a provided tag.
* Scripts/libraries/webkitscmpy/webkitscmpy/local/scm.py:
(Scm.find): Find a commit by tag, if applicable.
(Scm.commit):
* Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:
(Svn.info): Pull information by tag, support non-standard branches.
(Svn._cache_revisions): Support non-standard branches.
(Svn._branch_for): Return the non-standard branch name for tags.
(Svn.commit): Find a commit referred to by a provided tag.
* Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:
(Git): Support tags.
* Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/svn.py:
(Svn.__init__): Support tags.
(Svn.tags): Tags are simply specialized branches, return the names of those tags
based on the commit mapping.
* Scripts/libraries/webkitscmpy/webkitscmpy/test/find_unittest.py:
* Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:
(TestGit):
(TestGit.test_tag):
* Scripts/libraries/webkitscmpy/webkitscmpy/test/svn_unittest.py:
(TestSvn):
(TestSvn.test_tag):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269117 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218303
<rdar://problem/70587571>

Reviewed by Geoffrey Garen.

Source/ThirdParty/ANGLE:

* src/gpu_info_util/SystemInfo.h:
* src/gpu_info_util/SystemInfo_apple.mm:
(angle::GetSystemInfo):
We can just use the macOS version of GetSystemInfo in macCatalyst.

* src/gpu_info_util/SystemInfo_macos.mm:
(angle::GetSystemInfo_mac):
* src/libANGLE/Display.cpp:
* src/libANGLE/formatutils.cpp:
(gl::BuildInternalFormatInfoMap):
* src/libANGLE/renderer/gl/renderergl_utils.cpp:
(rx::nativegl_gl::GenerateCaps):
It turns out we must use EAGL in macCatalyst on Apple Silicon in all cases,
not just in-process in iOS apps (the problem is not just about coexistence
of the two GLs, but actually about our ability to load the accelerated
renderer /at all/ in macCatalyst processes).

I left the runtime switching in place, because there is a future in which
we /can/ use CGL in non-iOS-app processes, but that future is not now.

Source/WebCore:

* platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:
(WebCore::needsEAGLOnMac):
(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::IOSurfaceTextureTarget):
(WebCore::GraphicsContextGLOpenGL::IOSurfaceTextureTargetQuery):
(WebCore::GraphicsContextGLOpenGL::EGLIOSurfaceTextureTarget):
(WebCore::isiOSAppOnMac): Deleted.
See ANGLE ChangeLog.

Source/WebKit:

* UIProcess/mac/HighPerformanceGPUManager.mm:
(WebKit::HighPerformanceGPUManager::addProcessRequiringHighPerformance):
(WebKit::HighPerformanceGPUManager::removeProcessRequiringHighPerformance):
(WebKit::HighPerformanceGPUManager::updateState):
(WebKit::isiOSAppOnMac): Deleted.
HighPerformanceGPUManager is PLATFORM(MAC)-only, which is not true
for MACCATALYST, so delete this dead code.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269118 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218302

Reviewed by Jonathan Bedard.

* CISupport/build-webkit-org: Copied from Tools/CISupport/build.webkit.org-config.
* CISupport/build-webkit-org/htdigestparser_unittest.py:
* CISupport/build-webkit-org/public_html/TestFailures/scripts/builders_unittests.js:
* CISupport/build-webkit-org/steps.py:
* CISupport/build-webkit-org/steps_unittest.py:
* CISupport/build-webkit-org/wkbuild.py:
* CISupport/build-webkit-org/wkbuild_unittest.py:
* CISupport/build.webkit.org-config: Removed.
* CISupport/ews-build/steps.py:
* CISupport/ews-build/steps_unittest.py:
* Scripts/run-dashboard-tests:
* Scripts/webkitpy/layout_tests/views/buildbot_results.py:
* Scripts/webkitpy/style/checker_unittest.py:
* Scripts/webkitpy/tool/servers/gardeningserver.py:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269120 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218294
<rdar://problem/70771306>

Reviewed by Eric Carlson.

Source/WebCore:

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

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

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

LayoutTests:

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


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269121 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…ter changes in r269036

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

Unreviewed test gardening.

* platform/mac-catalina/fast/forms/input-appearance-spinbutton-expected.txt:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269122 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218116

Reviewed by Simon Fraser.

Flush the DrawingContext of the RemoteImageBufferProxy once the PutImageData
item is recorded. So no expensive operation is going to block the painting.

* WebProcess/GPU/graphics/RemoteImageBufferProxy.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269123 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=218304

Reviewed by Tim Horton.

There's no longer a need to pipe diagnostic logging up to clients.

* history/BackForwardCache.cpp:
(WebCore::canCacheFrame):

* loader/SubframeLoader.cpp:
(WebCore::logPluginRequest):
Remove a now-unused parameter.
(WebCore::FrameLoader::SubframeLoader::requestObject):
(WebCore::FrameLoader::SubframeLoader::createJavaAppletWidget):

* page/DiagnosticLoggingKeys.cpp:
(WebCore::DiagnosticLoggingKeys::pluginLoadedKey): Deleted.
(WebCore::DiagnosticLoggingKeys::pluginLoadingFailedKey): Deleted.
(WebCore::DiagnosticLoggingKeys::pageContainsPluginKey): Deleted.
(WebCore::DiagnosticLoggingKeys::pageContainsAtLeastOnePluginKey): Deleted.
(WebCore::DiagnosticLoggingKeys::hasPluginsKey): Deleted.

* page/DiagnosticLoggingKeys.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269124 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Checked in Change markers

Reverted changeset:

"Rebase for fast/forms/input-appearance-spinbutton.html on
Catalina after changes in r269036"
https://bugs.webkit.org/show_bug.cgi?id=218151
https://trac.webkit.org/changeset/269122

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269125 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…ter changes in r269036

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

Unreviewed test gardening.

* platform/mac-catalina/fast/forms/input-appearance-spinbutton-expected.txt:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269126 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…n is wrong

https://bugs.webkit.org/show_bug.cgi?id=218058
<rdar://problem/70550459>

Patch by Federico Bucchi <fbucchi@apple.com> on 2020-10-28
Reviewed by Devin Rousso.

* UserInterface/Views/NetworkTableContentView.css:
(.network-table > .table li:not(.filler, .selected) .cell:not(.name, .current-session),):
(.network-table > .table li:not(.filler, .selected) .cell:not(.current-session)): Deleted.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@269127 268f45cc-cd09-0410-ab3c-d52691b4dbfc
@kenmays kenmays closed this Jun 10, 2021
@kenmays kenmays reopened this Jun 14, 2021
@kenmays kenmays closed this Jun 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

1 participant