WebKit-https.git
23 months agoRemove LayoutTests/platform/mac-bigsur-wk1
tsavell@apple.com [Thu, 17 Dec 2020 00:26:12 +0000 (00:26 +0000)]
Remove LayoutTests/platform/mac-bigsur-wk1
https://bugs.webkit.org/show_bug.cgi?id=218359

Unreviewed test gardening

* platform/mac-catalina-wk1/editing/selection/select-across-readonly-input-4-expected.txt: Copied from LayoutTests/platform/mac-bigsur-wk1/editing/selection/select-across-readonly-input-4-expected.txt.
* platform/mac-catalina-wk1/editing/selection/select-across-readonly-input-5-expected.txt: Copied from LayoutTests/platform/mac-bigsur-wk1/editing/selection/select-across-readonly-input-5-expected.txt.
* platform/mac-catalina-wk1/http/tests/cookies/js-get-and-set-http-only-cookie-expected.txt: Copied from LayoutTests/platform/mac-bigsur-wk1/http/tests/cookies/js-get-and-set-http-only-cookie-expected.txt.
* platform/mac-wk1/editing/selection/select-across-readonly-input-4-expected.txt: Renamed from LayoutTests/platform/mac-bigsur-wk1/editing/selection/select-across-readonly-input-4-expected.txt.
* platform/mac-wk1/editing/selection/select-across-readonly-input-5-expected.txt: Renamed from LayoutTests/platform/mac-bigsur-wk1/editing/selection/select-across-readonly-input-5-expected.txt.
* platform/mac-wk1/http/tests/cookies/js-get-and-set-http-only-cookie-expected.txt: Renamed from LayoutTests/platform/mac-bigsur-wk1/http/tests/cookies/js-get-and-set-http-only-cookie-expected.txt.

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

23 months agoStill can't login to my.playstation.com
katherine_cheney@apple.com [Wed, 16 Dec 2020 23:14:20 +0000 (23:14 +0000)]
Still can't login to my.playstation.com
https://bugs.webkit.org/show_bug.cgi?id=219900
<rdar://problem/72062985>

Reviewed by John Wilander.

Adapted from an original patch by John Wilander.

This is a temporary quirk to assist a high-traffic website while they
complete the large task of migrating away from login flows that
require third party cookies. This quirk will be removed when the site
is updated.

Source/WebCore:

Create a quirk to call the Storage Access API on behalf of Sony. This
case is unique because playstation.com requires storage access for 2
login domains: sony.com and sonyentertainmentnetwork.com. This patch
handles this by requesting storage access for both domains if either
domain is requested to avoid massive changes to the Storage Access
code to handle multiple domains at once.

This patch adjusts the quirk code in NetworkStorageSession to handle
multiple login domains for a single first party domain.

No new tests, site specific quirk.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::responseReceived):
* page/Quirks.cpp:
(WebCore::isPlaystationLoginElement):
(WebCore::Quirks::hasStorageAccessForAllLoginDomains):
(WebCore::Quirks::triggerOptionalStorageAccessQuirk const):
Adjust the existing quirks to handle the new format of a HashSet of
login domains, and add the new playstation.com case.

* page/Quirks.h:
* platform/network/NetworkStorageSession.cpp:
(WebCore::NetworkStorageSession::grantCrossPageStorageAccess):
(WebCore::NetworkStorageSession::hasStorageAccess const):
(WebCore::NetworkStorageSession::storageAccessQuirks):
(WebCore::NetworkStorageSession::loginDomainMatchesRequestingDomain):
(WebCore::NetworkStorageSession::loginDomainsForFirstParty):
(WebCore::NetworkStorageSession::findAdditionalLoginDomain):
Function to match up Sony login domains with one another at storage
endpoints and for prompting so we don't need to thread them through
all of the existing storage access code.

(WebCore::NetworkStorageSession::loginDomainForFirstParty): Renamed to be plural.
* platform/network/NetworkStorageSession.h:
Adjusted existing quirk code to handle a HashSet of login domains
instead of a single domain.

Source/WebKit:

Create a quirk to call the Storage Access API on behalf of Sony.

* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::buildList):
(WebKit::UIDelegate::UIClient::requestStorageAccessConfirm):
* UIProcess/Cocoa/WKStorageAccessAlert.mm:
(WebKit::presentStorageAccessAlert):
Prompt for multiple domains if site-specific quirks are enabled and
either Sony login domain is being requested.

* WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:
(WebKit::WebResourceLoadObserver::hasCrossPageStorageAccess const):
(WebKit::WebResourceLoadObserver::setDomainsWithCrossPageStorageAccess):
* WebProcess/WebCoreSupport/WebResourceLoadObserver.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::addDomainWithPageLevelStorageAccess):
Store both Sony login domains as having page level storage access if
quirks are enabled and the domain passed is one of the Sony login
domains. In this case we know that both login domains were prompted
for.

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

23 months ago[GPUProcess] Avoid doing an IPC per rendering quantum when using WebAudio
cdumez@apple.com [Wed, 16 Dec 2020 21:07:59 +0000 (21:07 +0000)]
[GPUProcess] Avoid doing an IPC per rendering quantum when using WebAudio
https://bugs.webkit.org/show_bug.cgi?id=219818

Reviewed by Geoff Garen.

Source/WebCore:

* platform/audio/AudioDestination.h:
Make sure AudioDestination always gets destroyed on the main thread.

* platform/audio/cocoa/CARingBuffer.cpp:
(WebCore::CARingBuffer::lastReadFrame const):
(WebCore::CARingBufferStorageVector::setLastReadFrame):
(WebCore::CARingBufferStorageVector::lastReadFrame const):
(WebCore::CARingBuffer::fetchIfHasEnoughData):
(WebCore::CARingBuffer::fetch):
* platform/audio/cocoa/CARingBuffer.h:
Add API to CARingBuffer to query the last frame that the reader attempted to
read. This is helpful to make sure the writer keeps up with the reader and
does not stray too far ahead.

Source/WebKit:

Previously, the GPUProcess was sending an IPC to the WebProcess to request to rendering
of each quantum, which was very inefficient and a big regression compared to when we
do not use a GPUProcess.

To address the issue, we now start a rendering timer on the WebProcess side when rendering
starts, so that the WebProcess renders each quantum as needed, without needing an IPC from
the GPUProcess. Whenever a quantum is rendered, the WebProcess adds it to the RingBuffer
it shares with the GPUProcess.

To make sure that the WebProcess' writer keeps up with the GPUProcess' reader and that it
does not stray too far ahead, the writer keeps track of the last frame that the reader
attempted to read. It uses this information to try and stay a few rendering quantums ahead
of the GPUProcess, to avoid missed frames.

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* GPUProcess/media/RemoteAudioDestinationManager.cpp:
(WebKit::RemoteAudioDestination::audioSamplesStorageChanged):
(WebKit::RemoteAudioDestination::RemoteAudioDestination):
(WebKit::RemoteAudioDestination::render):
* Platform/SharedMemory.h:
(WebKit::SharedMemory::protection const):
* Shared/Cocoa/SharedRingBufferStorage.cpp:
(WebKit::SharedRingBufferStorage::sharedFrameBounds const):
(WebKit::SharedRingBufferStorage::setCurrentFrameBounds):
(WebKit::SharedRingBufferStorage::setLastReadFrame):
(WebKit::SharedRingBufferStorage::lastReadFrame const):
* Shared/Cocoa/SharedRingBufferStorage.h:
* SourcesCocoa.txt:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:
(WebKit::RemoteAudioDestinationProxy::RemoteAudioDestinationProxy):
(WebKit::RemoteAudioDestinationProxy::startRenderingThread):
(WebKit::RemoteAudioDestinationProxy::stopRenderingThreadIfNecessary):
(WebKit::RemoteAudioDestinationProxy::connectToGPUProcess):
(WebKit::RemoteAudioDestinationProxy::~RemoteAudioDestinationProxy):
(WebKit::RemoteAudioDestinationProxy::start):
(WebKit::RemoteAudioDestinationProxy::startRendering):
(WebKit::RemoteAudioDestinationProxy::stop):
(WebKit::RemoteAudioDestinationProxy::stopRenderingIfNecessary):
(WebKit::RemoteAudioDestinationProxy::renderQuantum):
(WebKit::RemoteAudioDestinationProxy::storageChanged):
* WebProcess/GPU/media/RemoteAudioDestinationProxy.h:
(WebKit::RemoteAudioDestinationProxy::stopRenderingIfNecessary):
* WebProcess/GPU/media/RemoteAudioDestinationProxy.messages.in: Removed.

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

23 months ago[Debug][GStreamer] Crash in fast/mediastream/change-tracks-media-stream-being-played...
commit-queue@webkit.org [Wed, 16 Dec 2020 20:57:12 +0000 (20:57 +0000)]
[Debug][GStreamer] Crash in fast/mediastream/change-tracks-media-stream-being-played.html
https://bugs.webkit.org/show_bug.cgi?id=219437

Patch by Víctor Manuel Jáquez Leal <vjaquez@igalia.com> on 2020-12-16
Reviewed by Philippe Normand.

The crash was a product of a race condition where a new sample, either video or audio,
appeared after the track was already removed from the stream and the GStreamer's source was
already removed. The result was a segmentation fault when the sample observer is called,
since the observer is coupled with the GStreamer's source.

This fix consists of removing the observers as soon as the track is removed from the stream.

No new tests needed since it fix one.

* platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
(webkitMediaStreamSrcRemoveTrackObserver): New function.
(stopObservingTracks): Use new function.
(webkitMediaStreamSrcSetupSrc): Use track's type method rather than source's.

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

23 months agoREGRESSION [iOS] Flaky GPU Process crash under -[RTCVideoEncoderH264 destroyCompressi...
youenn@apple.com [Wed, 16 Dec 2020 20:52:08 +0000 (20:52 +0000)]
REGRESSION [iOS] Flaky GPU Process crash under -[RTCVideoEncoderH264 destroyCompressionSession]
https://bugs.webkit.org/show_bug.cgi?id=219899
<rdar://problem/72347652>

Reviewed by Alex Christensen.

We can no longer get the connection when needed as we are now operating in a background thread.
For that reason, capture the IPC connection in the lambda to make sure we have a valid IPC connection.
Remove LibWebRTCCodecsProxy when being closed instead of when being destroyed as well.

Covered by existing tests.

* GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:
(WebKit::LibWebRTCCodecsProxy::~LibWebRTCCodecsProxy):
(WebKit::LibWebRTCCodecsProxy::close):
(WebKit::LibWebRTCCodecsProxy::createH264Decoder):
(WebKit::LibWebRTCCodecsProxy::createH265Decoder):
(WebKit::LibWebRTCCodecsProxy::createVP9Decoder):
(WebKit::LibWebRTCCodecsProxy::createEncoder):

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

23 months agoUse python3 in Tools/Scripts/dump-class-layout
ysuzuki@apple.com [Wed, 16 Dec 2020 20:51:22 +0000 (20:51 +0000)]
Use python3 in Tools/Scripts/dump-class-layout
https://bugs.webkit.org/show_bug.cgi?id=219945

Reviewed by Simon Fraser.

Newer LLDB python module only contains python3 version. So Tools/Scripts/dump-class-layout does not work.
This patch makes Tools/Scripts/dump-class-layout working with python3.

* Scripts/dump-class-layout:
(webkit_build_dir): Deleted.
(main): Deleted.
(main.or): Deleted.
* lldb/lldb_dump_class_layout.py:
(ClassLayoutBase.dump):
(LLDBDebuggerInstance.__init__):
(LLDBDebuggerInstance._get_first_file_architecture):
(LLDBDebuggerInstance.layout_for_classname):

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

23 months agoREGRESSION (r270806): [iOS] imported/w3c/web-platform-tests/webaudio/the-audio-api...
cdumez@apple.com [Wed, 16 Dec 2020 20:42:28 +0000 (20:42 +0000)]
REGRESSION (r270806): [iOS] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-distance-clamping.html is frequently failing
https://bugs.webkit.org/show_bug.cgi?id=219897
<rdar://problem/72346130>

Reviewed by Alex Christensen.

Merge https://github.com/web-platform-tests/wpt/pull/26926 to address test flakiness.

* web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-distance-clamping.html:

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

23 months ago[GPU process] Update TestExpectations to skip Layout tests crashes under encodeSingle...
commit-queue@webkit.org [Wed, 16 Dec 2020 20:41:32 +0000 (20:41 +0000)]
[GPU process] Update TestExpectations to skip Layout tests crashes under encodeSingleObject()
https://bugs.webkit.org/show_bug.cgi?id=219955

Patch by Rini Patel <rini_patel@apple.com> on 2020-12-16
Reviewed by Tim Horton.

* gpu-process/TestExpectations:

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

23 months agoSuppress the image extraction interaction while editing text
wenson_hsieh@apple.com [Wed, 16 Dec 2020 20:39:47 +0000 (20:39 +0000)]
Suppress the image extraction interaction while editing text
https://bugs.webkit.org/show_bug.cgi?id=219952
<rdar://problem/72390053>

Reviewed by Devin Rousso.

See radar and WebKitAdditions for more details.

* UIProcess/ios/WKContentViewInteraction.h:
(WebKit::SuppressInteractionToken::SuppressInteractionToken):
(WebKit::SuppressInteractionToken::~SuppressInteractionToken):

Add a helper class to help facilitate the temporary removal of UIInteraction objects from a WKContentView.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setIsEditable:]):

Use the above helper class to temporarily remove the image extraction interaction while the user is editing
text (and is therefore depending on editable text interaction gestures). Note that we avoid unnecessarily
clearing out and resetting this member variable when changing focus between editable text fields.

(-[WKContentView _didStartProvisionalLoadForMainFrame]):

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

23 months agoREGRESSION (r270657) [AS Only] GGE: Netflix, YouTube, Amazon Prime, and Hulu fail...
bfulgham@apple.com [Wed, 16 Dec 2020 20:33:21 +0000 (20:33 +0000)]
REGRESSION (r270657) [AS Only] GGE: Netflix, YouTube, Amazon Prime, and Hulu fail to playback
https://bugs.webkit.org/show_bug.cgi?id=219954
<rdar://problem/72325887>

Reviewed by Per Arne Vollan.

Correct a syntax error in a sandbox rule added in r270657.

* WebProcess/com.apple.WebProcess.sb.in:

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

23 months ago[WinCairo] Enable USE_ANGLE
Hironori.Fujii@sony.com [Wed, 16 Dec 2020 20:04:41 +0000 (20:04 +0000)]
[WinCairo] Enable USE_ANGLE
https://bugs.webkit.org/show_bug.cgi?id=219421

Reviewed by Don Olmstead.

.:

* Source/cmake/OptionsWinCairo.cmake:

Source/ThirdParty/ANGLE:

* CMakeLists.txt: Added entry_points_egl_ext.h to libglesv2_entry_points_headers.

Source/WebCore:

Switch GraphicsContextGLOpenGL implementation from old one
(GraphicsContextGLOpenGLES.cpp) to new one
(GraphicsContextGLANGLE.cpp), which is using ANGLE's internal API
and verification code, for WinCairo port. I will enable WebGL2 for
WinCairo in a follow-up patch.

GL_TEXTURE_RECTANGLE_ANGLE is not available for ANGLE D3D backend.
Use GL_TEXTURE_2D instead.

Add a new class WebCore::ANGLEContext by copying
Nicosia::GCGLANGLELayer::ANGLEContext. It'd be better to merge
them after GTK and WPE will also switch.

* PlatformWin.cmake:
* platform/TextureMapper.cmake:
* platform/graphics/angle/GraphicsContextGLANGLE.cpp:
(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):
(WebCore::GraphicsContextGLOpenGL::compileShader):
* platform/graphics/opengl/GraphicsContextGLOpenGL.h:
* platform/graphics/texmap/ANGLEContext.cpp: Added.
(WebCore::ANGLEContext::errorString):
(WebCore::ANGLEContext::lastErrorString):
(WebCore::ANGLEContext::createContext):
(WebCore::ANGLEContext::ANGLEContext):
(WebCore::ANGLEContext::~ANGLEContext):
(WebCore::ANGLEContext::makeContextCurrent):
(WebCore::ANGLEContext::platformContext const):
* platform/graphics/texmap/ANGLEContext.h: Added.
* platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:
(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::isGLES2Compliant const):
(WebCore::GraphicsContextGLOpenGL::drawingBufferTextureTarget):
* platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:
(WebCore::TextureMapperGCGLPlatformLayer::TextureMapperGCGLPlatformLayer):
(WebCore::TextureMapperGCGLPlatformLayer::paintToTextureMapper):
* platform/graphics/texmap/TextureMapperGCGLPlatformLayer.h:

LayoutTests:

* platform/wincairo/TestExpectations:

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

23 months agoAX: Update list heuristics to include linked lists inside navigation containers
cfleizach@apple.com [Wed, 16 Dec 2020 18:23:34 +0000 (18:23 +0000)]
AX: Update list heuristics to include linked lists inside navigation containers
https://bugs.webkit.org/show_bug.cgi?id=193382
<rdar://problem/47233475>

Reviewed by Zalan Bujtas.

Source/WebCore:

If an unstyled list is inside a <nav> or a role=navigation, it should be marked
as an accessibility list.

Updated test: accessibility/list-detection2.html

* accessibility/AccessibilityList.cpp:
(WebCore::AccessibilityList::determineAccessibilityRole):

LayoutTests:

* accessibility/list-detection2-expected.txt:
* accessibility/list-detection2.html:

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

23 months agoCherry-pick usrsctp 355fb576b1a9dfef70fc0e158d66692662baaddc
youenn@apple.com [Wed, 16 Dec 2020 17:28:20 +0000 (17:28 +0000)]
Cherry-pick usrsctp 355fb576b1a9dfef70fc0e158d66692662baaddc
https://bugs.webkit.org/show_bug.cgi?id=219937

Reviewed by Alex Christensen.

* Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_input.c:
(sctp_process_cookie_existing):

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

23 months agoCherry-pick usrsctp 7dab23aa0d8db86fedd222a308067439b03fad0f
youenn@apple.com [Wed, 16 Dec 2020 17:27:49 +0000 (17:27 +0000)]
Cherry-pick usrsctp 7dab23aa0d8db86fedd222a308067439b03fad0f
https://bugs.webkit.org/show_bug.cgi?id=219936
<rdar://problem/72304588>

Reviewed by Alex Christensen.

* Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_input.c:
(sctp_process_cookie_existing):

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

23 months ago[webkitscmpy] Include remote directories when packaging
jbedard@apple.com [Wed, 16 Dec 2020 17:23:47 +0000 (17:23 +0000)]
[webkitscmpy] Include remote directories when packaging
https://bugs.webkit.org/show_bug.cgi?id=219927
<rdar://problem/72362529>

Reviewed by Stephanie Lewis.

* Scripts/libraries/webkitscmpy/setup.py: Include remote directories.
* Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Bump version.

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

23 months agoMake FrameView::m_customSizeForResizeEvent an Optional<IntSize>
simon.fraser@apple.com [Wed, 16 Dec 2020 16:16:35 +0000 (16:16 +0000)]
Make FrameView::m_customSizeForResizeEvent an Optional<IntSize>
https://bugs.webkit.org/show_bug.cgi?id=219931

Reviewed by Zalan Bujtas.

Replace bool + IntSize with an Optional<IntSize>.

* page/FrameView.cpp:
(WebCore::FrameView::sizeForResizeEvent const):
(WebCore::FrameView::setCustomSizeForResizeEvent):
* page/FrameView.h:

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

23 months ago[LFC][BFC] Non-quantitative values such as auto and min-content are not influenced...
zalan@apple.com [Wed, 16 Dec 2020 16:13:18 +0000 (16:13 +0000)]
[LFC][BFC] Non-quantitative values such as auto and min-content are not influenced by the box-sizing property
https://bugs.webkit.org/show_bug.cgi?id=219944

Reviewed by Antti Koivisto.
Source/WebCore:

See https://www.w3.org/TR/css-sizing-3/#box-sizing

Test: fast/layoutformattingcontext/max-content-and-box-sizing-simple.html

* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedWidth):

LayoutTests:

Need to fix it in RenderBox first to be able to geometry-test it (webkit.org/b/219687).

* fast/layoutformattingcontext/max-content-and-box-sizing-simple-expected.html: Added.
* fast/layoutformattingcontext/max-content-and-box-sizing-simple.html: Added.
* platform/mac-wk2/TestExpectations:

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

23 months ago[Mac] Disable the WebM format reader in configurations where the plug-in will fail...
aestes@apple.com [Wed, 16 Dec 2020 16:12:13 +0000 (16:12 +0000)]
[Mac] Disable the WebM format reader in configurations where the plug-in will fail to load
https://bugs.webkit.org/show_bug.cgi?id=219938

Reviewed by Eric Carlson.

The user default for loading an ad-hoc code-signed WebM format reader plug-in is not
respected in customer installs of macOS, leaving no known way to load the plug-in in an
engineering build running on a customer OS variant. Fixing this is tracked by
rdar://72320419, but for now we must disable the plug-in for this configuration.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::isFormatReaderAvailable):
(WebCore::MediaPlayerPrivateAVFoundationObjC::supportsTypeAndCodecs):

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

23 months agoCalls to setFixedLayoutSize() should not be inside ENABLE(TEXT_AUTOSIZING)
simon.fraser@apple.com [Wed, 16 Dec 2020 16:03:29 +0000 (16:03 +0000)]
Calls to setFixedLayoutSize() should not be inside ENABLE(TEXT_AUTOSIZING)
https://bugs.webkit.org/show_bug.cgi?id=219932

Reviewed by Wenson Hsieh.

We always want to call setFixedLayoutSize(), whether or not ENABLE(TEXT_AUTOSIZING) is defined.

For code simplicity, make resetTextAutosizing() an empty function when ENABLE(TEXT_AUTOSIZING)
is not defined.

* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::dynamicViewportSizeUpdate):
(WebKit::WebPage::resetTextAutosizing):
(WebKit::WebPage::viewportConfigurationChanged):

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

23 months agoUnreviewed, fix stale assertions
ysuzuki@apple.com [Wed, 16 Dec 2020 13:47:49 +0000 (13:47 +0000)]
Unreviewed, fix stale assertions
https://bugs.webkit.org/show_bug.cgi?id=219847

After r270764, HostFunctionPtrTag and CustomAccessorPtrTag are categorized as Native ones.
However, in non-JIT-caged environment, still they are used as JIT ones. Then, we are getting
stale assertions. Several other tags are showing similar things for non JIT environments etc.
Add `Options::useJITCage()` check since this caller/callee type is only valid in JIT Cage environment.

* assembler/MacroAssemblerARM64E.h:
(JSC::MacroAssemblerARM64E::call):
(JSC::MacroAssemblerARM64E::farJump):

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

23 months ago[macOS] Add sandbox parameter for message filter entitlement status
pvollan@apple.com [Wed, 16 Dec 2020 13:35:40 +0000 (13:35 +0000)]
[macOS] Add sandbox parameter for message filter entitlement status
https://bugs.webkit.org/show_bug.cgi?id=219852
<rdar://problem/72145560>

Reviewed by Brent Fulgham.

Add sandbox parameter to determine whether the WebContent process has message filter entitlement.
This parameter will be used in the sandbox to enable message filtering.

* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::initializeSandbox):
* WebProcess/com.apple.WebProcess.sb.in:

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

23 months agoRemove simpleUserAgentStyleSheet (to fix flaky fast/lists/001.html and fast/lists...
antti@apple.com [Wed, 16 Dec 2020 12:55:09 +0000 (12:55 +0000)]
Remove simpleUserAgentStyleSheet (to fix flaky fast/lists/001.html and fast/lists/001-vertical.html)
https://bugs.webkit.org/show_bug.cgi?id=218995
<rdar://problem/71452387>

Reviewed by Antoine Quint.

Source/WebCore:

The simpleUserAgentStyleSheet optimization allows WebKit to load a very simple version of the user agent
stylesheet as long as the document is very simple too (mostly just <div>/<span>). It was implemented
to support certain non-web use cases a long time ago when the cost of simply parsing the main stylesheet was
significant.

It can cause problems like seen here when it is not fully in-sync with the real stylesheet. The ways it may be out
of sync can be pretty obscure.

The optimization hasn't been useful for a while now. Let's just remove it instead of continuing fix problems caused by it.

* page/ProcessWarming.cpp:
(WebCore::ProcessWarming::prewarmGlobally):
* style/ElementRuleCollector.cpp:
(WebCore::Style::ElementRuleCollector::matchUARules):
* style/InspectorCSSOMWrappers.cpp:
(WebCore::Style::InspectorCSSOMWrappers::collectDocumentWrappers):
* style/StyleResolver.cpp:
(WebCore::Style::Resolver::Resolver):
* style/UserAgentStyle.cpp:
(WebCore::Style::UserAgentStyle::initDefaultStyleSheet):
(WebCore::Style::UserAgentStyle::ensureDefaultStyleSheetsForElement):
(WebCore::Style::elementCanUseSimpleDefaultStyle): Deleted.
(WebCore::Style::UserAgentStyle::initDefaultStyle): Deleted.
(WebCore::Style::UserAgentStyle::loadFullDefaultStyle): Deleted.
(WebCore::Style::UserAgentStyle::loadSimpleDefaultStyle): Deleted.
* style/UserAgentStyle.h:

LayoutTests:

* platform/mac-wk2/TestExpectations:

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

23 months agoRemove ILBC audio codec as WebRTC audio codec
youenn@apple.com [Wed, 16 Dec 2020 08:59:41 +0000 (08:59 +0000)]
Remove ILBC audio codec as WebRTC audio codec
https://bugs.webkit.org/show_bug.cgi?id=219912
<rdar://problem/72302868>

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

* Configurations/libwebrtc.xcconfig:
* Configurations/libwebrtcpcrtc.xcconfig:
Compile out ILBC audio codec.

LayoutTests:

* webrtc/audio-capabilities-expected.txt: Added.
* webrtc/audio-capabilities.html: Added.

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

23 months agoMake sure to correctly initialize the vpcC configuration in RTCVideoDecoderVTBVP9
youenn@apple.com [Wed, 16 Dec 2020 08:30:05 +0000 (08:30 +0000)]
Make sure to correctly initialize the vpcC configuration in RTCVideoDecoderVTBVP9
https://bugs.webkit.org/show_bug.cgi?id=219782

Reviewed by Eric Carlson.

We need to initialize the configuration record based on the frame header.
We do so for every key frame.

* Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderVTBVP9.mm:
(convertSubsamplingXYToChromaSubsampling):
(-[RTCVideoDecoderVTBVP9 startDecodeWithNumberOfCores:]):
(-[RTCVideoDecoderVTBVP9 decode:missingFrames:codecSpecificInfo:renderTimeMs:]):
(-[RTCVideoDecoderVTBVP9 decodeData:size:timeStamp:]):

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

23 months agoExpose SFrameTransform to DedicatedWorker
youenn@apple.com [Wed, 16 Dec 2020 08:28:09 +0000 (08:28 +0000)]
Expose SFrameTransform to DedicatedWorker
https://bugs.webkit.org/show_bug.cgi?id=219890

Reviewed by Eric Carlson.

Source/WebCore:

Test: http/wpt/webrtc/sframe-transform-in-worker.html

* Modules/mediastream/RTCRtpSFrameTransform.idl:

LayoutTests:

* http/wpt/webrtc/sframe-transform-in-worker-expected.txt: Added.
* http/wpt/webrtc/sframe-transform-in-worker.html: Added.
* http/wpt/webrtc/sframe-transform.js: Added.
(SFrameRTCRtpTransformer):
(SFrameRTCRtpTransformer.prototype.start):

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

23 months agoMake sure WebKit WebSocketChannel handle suspend/resume correctly
youenn@apple.com [Wed, 16 Dec 2020 08:27:01 +0000 (08:27 +0000)]
Make sure WebKit WebSocketChannel handle suspend/resume correctly
https://bugs.webkit.org/show_bug.cgi?id=219910

Reviewed by Alex Christensen.

Source/WebCore:

Covered by http/tests/websocket/tests/hybi/closed-when-entering-page-cache.html
and http/tests/websocket/tests/hybi/stop-on-resume-in-error-handler.html with NSURLSession WebSocket code path enabled.

* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::resume):
In case resume is called and there are some events to dispatch, start the timer
even if the channel is not null.

Source/WebKit:

* WebProcess/Network/WebSocketChannel.cpp:
(WebKit::WebSocketChannel::fail):
Make sure fail triggers close event if page resumes.

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

23 months agoRemove FrameLoader::cancelAndClear
commit-queue@webkit.org [Wed, 16 Dec 2020 07:33:38 +0000 (07:33 +0000)]
Remove FrameLoader::cancelAndClear
https://bugs.webkit.org/show_bug.cgi?id=219853

Patch by Rob Buis <rbuis@igalia.com> on 2020-12-15
Reviewed by Alex Christensen.

Since this functionality is only called at Frame destructor
time, we can move the code to that destructor.

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::cancelAndClear): Deleted.
* loader/FrameLoader.h:
* page/Frame.cpp:
(WebCore::Frame::~Frame):

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

23 months ago[CMake][WPE] Add LibWPE before WPEBackend-FDO for qtwpe_INCLUDE_DIRECTORIES
psaavedra@igalia.com [Wed, 16 Dec 2020 07:00:34 +0000 (07:00 +0000)]
[CMake][WPE] Add LibWPE before WPEBackend-FDO for qtwpe_INCLUDE_DIRECTORIES
https://bugs.webkit.org/show_bug.cgi?id=219920

Reviewed by Michael Catanzaro.

* PlatformWPE.cmake:

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

23 months agoUnreviewed, reverting r270829.
commit-queue@webkit.org [Wed, 16 Dec 2020 06:57:51 +0000 (06:57 +0000)]
Unreviewed, reverting r270829.
https://bugs.webkit.org/show_bug.cgi?id=219935

Introduced crash

Reverted changeset:

"[macOS] Add sandbox parameter for message filter entitlement
status"
https://bugs.webkit.org/show_bug.cgi?id=219852
https://trac.webkit.org/changeset/270829

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

23 months agoREGRESSION (r270839): ASSERT NOT REACHED in WebCore::Layout::InlineContentBreaker...
zalan@apple.com [Wed, 16 Dec 2020 04:59:45 +0000 (04:59 +0000)]
REGRESSION (r270839): ASSERT NOT REACHED in WebCore::Layout::InlineContentBreaker::processOverflowingContent
https://bugs.webkit.org/show_bug.cgi?id=219904
<rdar://problem/72350087>

Reviewed by Simon Fraser.

"Typo" in r270839.

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

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

23 months agodestinationFor should check for FTLJIT, not DFGJIT twice
sbarati@apple.com [Wed, 16 Dec 2020 02:32:22 +0000 (02:32 +0000)]
destinationFor should check for FTLJIT, not DFGJIT twice
https://bugs.webkit.org/show_bug.cgi?id=219929

Reviewed by Mark Lam.

The code was checking for DFGJIT twice instead of checking for FTLJIT.
This doesn't fix any actual bugs, since nobody passes in FTLJIT to this
function. But if we ever do in the future, it would have revealed this bug.

* bytecode/BytecodeOperandsForCheckpoint.h:
(JSC::destinationFor):

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

23 months ago[Mac] Numerous webgl tests continue to time out with the WebM format reader enabled
aestes@apple.com [Wed, 16 Dec 2020 02:02:02 +0000 (02:02 +0000)]
[Mac] Numerous webgl tests continue to time out with the WebM format reader enabled
https://bugs.webkit.org/show_bug.cgi?id=219928

Reviewed by Eric Carlson.

Source/WebKit:

Covered by existing tests.

* Shared/mac/MediaFormatReader/TrackReader.cpp:
(WebKit::MediaSampleByteRange::MediaSampleByteRange):
(WebKit::MediaSampleByteRange::trackID const):
(WebKit::TrackReader::addSample): Store MediaSampleByteRange's track ID as a uint64_t
instead of an AtomString that might've been created on another thread.

(WebKit::TrackReader::finalize): Ensure that m_sampleStorage really is destroyed on the
storage queue by explicitly settings its unique_ptr to nullptr in the lambda. Without
doing this, it's possible that the lambda will execute on the storage queue *before*
WorkQueue::dispatch returns, and since WorkQueue's BlockPtr is still holding a reference
to the block containing the lambda, it would not have been destroyed on the storage queue.

Tools:

* Scripts/webkitpy/port/mac.py:
(MacPort.logging_patterns_to_strip): Stripped unnecessary logging during VP9 decoding.

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

23 months ago[macOS] Adjust date input placeholder color based on specified text color
akeerthi@apple.com [Wed, 16 Dec 2020 01:05:20 +0000 (01:05 +0000)]
[macOS] Adjust date input placeholder color based on specified text color
https://bugs.webkit.org/show_bug.cgi?id=219875
<rdar://problem/72314705>

Reviewed by Darin Adler.

Source/WebCore:

Empty date inputs currently show the current date in dark gray text as
a placeholder.

The existing behavior results in an issue on Nike's membership registration
page, where their custom placeholder and the placeholder date are visible
at the same time. Nike uses "color: transparent" to hide the contents of
the date input and display their own placeholder. However, since the
placeholder date is always displayed in dark gray text, both placeholders
are visible.

To fix, the color of the placeholder should be adjusted based on the text
color specified by the site author. This will ensure that
"color: transparent" will hide the placeholder, and also ensures the
placeholder better matches the style of the rest of the input.

Test: fast/forms/date/date-editable-components/date-editable-components-placeholder-color.html

* html/shadow/DateTimeFieldElement.cpp:
(WebCore::DateTimeFieldElement::resolveCustomStyle):

Moved custom style resolution out of the derived classes and into the
base class to reduce code duplication. The min-width adjustment is
preserved by calling the pure virtual method adjustMinWidth. The
new color resolution for placeholder dates is performed by obtaining
the text and background colors through the shadow host (the
HTMLInputElement) and calling into RenderTheme for the adjustment
algorithm.

* html/shadow/DateTimeFieldElement.h:

Made setEmptyValue and setValueAsInteger pure virtual methods since
the base implementation is now empty.

Introduced adjustMinWidth as a pure virtual method to allow numeric
and symbolic field elements to set their minimum width. This replaces
the need to have the derived classes implement resolveCustomStyle.

* html/shadow/DateTimeNumericFieldElement.cpp:
(WebCore::DateTimeNumericFieldElement::adjustMinWidth const):
(WebCore::DateTimeNumericFieldElement::setEmptyValue):
(WebCore::DateTimeNumericFieldElement::setValueAsInteger):
* html/shadow/DateTimeNumericFieldElement.h:
* html/shadow/DateTimeSymbolicFieldElement.cpp:
(WebCore::DateTimeSymbolicFieldElement::adjustMinWidth const):
(WebCore::DateTimeSymbolicFieldElement::setEmptyValue):
(WebCore::DateTimeSymbolicFieldElement::setValueAsInteger):
* html/shadow/DateTimeSymbolicFieldElement.h:
* rendering/RenderTheme.cpp:
(WebCore::RenderTheme::datePlaceholderTextColor const):

Adjust the placeholder text color based on the text and background color
specified. The adjustment is performed by changing the lightness of the
specified text color. The lightness is increased for dark text on a light
background, and is decreased for light text on a dark background. The
chosen adjustment factor ensures that a dark gray color is obtained for
both white on black, and black on white.

* rendering/RenderTheme.h:

LayoutTests:

Added a test to verify that the color of the placeholder changes based
on the input's color property.

* fast/forms/date/date-editable-components/date-editable-components-placeholder-color-expected.html: Added.
* fast/forms/date/date-editable-components/date-editable-components-placeholder-color.html: Added.

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

23 months agoNon-enumerable property fails to shadow inherited enumerable property from for-in
shvaikalesh@gmail.com [Wed, 16 Dec 2020 00:33:34 +0000 (00:33 +0000)]
Non-enumerable property fails to shadow inherited enumerable property from for-in
https://bugs.webkit.org/show_bug.cgi?id=38970

Reviewed by Keith Miller.

JSTests:

* stress/arguments-bizarre-behaviour-disable-enumerability.js:
* stress/for-in-redefine-enumerable.js: Added.
* stress/for-in-shadow-non-enumerable.js: Added.
* test262/expectations.yaml: Mark 4 test cases as passing.

Source/JavaScriptCore:

While for/in was initially specified with notion of "shadowing", it wasn't clarified
until ES5 that [[Enumerable]] attributes are ignored when determining if a property
has already been processed. Recently, for/in spec was expanded [1] to pin down common
case enumeration as it's currently implemented by V8 and SpiderMonkey.

Since keeping track of DontEnum properties is a massive slowdown for uncached runs
(with any data structure used), this patch simply adds [[Enumerable]] check to
has_{indexed,structure,generic}_property bytecode ops and does renaming chores.

Common code is now shared between HasIndexedProperty (emitted for `0 in arr`) and
HasEnumerableIndexedProperty DFG nodes via passing different slow path ops rather
than having OpInfo with PropertySlot::InternalMethodType, which is a nice refactor.

While this change aligns common case for/in enumeration with the spec and other
engines, it also introduces a few observable discrepancies from V8 and SpiderMonkey,
which are permitted by the spec [2]:
a) properties that have been redefined as DontEnum within loop body are skipped,
   which matches the spec [3] and seems like expected behavior;
b) "shadowing" is broken if a DontEnum property of already visited object is
   added / deleted / redefined within loop body, which (pretty much) never happens.

This patch introduces a new invariant: all properties getOwn*PropertyNames() returns
in DontEnumPropertiesMode::Exclude should be reported as [[Enumerable]] by
getOwnPropertySlot(). JSCallbackObject and RuntimeArray are fixed to follow it.

for/in and Object.keys microbenchmarks are neutral. This change does not affect
JSPropertyNameEnumerator caching, nor fast paths of its bytecodes.

[1]: https://github.com/tc39/ecma262/pull/1791
[2]: https://tc39.es/ecma262/#sec-enumerate-object-properties (last paragraph)
[3]: https://tc39.es/ecma262/#sec-%foriniteratorprototype%.next (step 7.b.iii)

* API/JSCallbackObjectFunctions.h:
(JSC::JSCallbackObject<Parent>::getOwnPropertySlot):
* API/tests/testapi.c:
* API/tests/testapiScripts/testapi.js:
* bytecode/BytecodeList.rb:
* bytecode/BytecodeUseDef.cpp:
(JSC::computeUsesForBytecodeIndexImpl):
(JSC::computeDefsForBytecodeIndexImpl):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
* bytecode/Opcode.h:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitHasEnumerableIndexedProperty):
(JSC::BytecodeGenerator::emitHasEnumerableStructureProperty):
(JSC::BytecodeGenerator::emitHasEnumerableProperty):
(JSC::BytecodeGenerator::emitHasGenericProperty): Deleted.
(JSC::BytecodeGenerator::emitHasIndexedProperty): Deleted.
(JSC::BytecodeGenerator::emitHasStructureProperty): Deleted.
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/NodesCodegen.cpp:
(JSC::ForInNode::emitBytecode):
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::convertToHasIndexedProperty):
* dfg/DFGNode.h:
(JSC::DFG::Node::hasArrayMode):
(JSC::DFG::Node::hasInternalMethodType const): Deleted.
(JSC::DFG::Node::internalMethodType const): Deleted.
(JSC::DFG::Node::setInternalMethodType): Deleted.
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
(JSC::DFG::JSC_DEFINE_JIT_OPERATION):
* dfg/DFGOperations.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSSALoweringPhase.cpp:
(JSC::DFG::SSALoweringPhase::handleNode):
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileHasEnumerableProperty):
(JSC::DFG::SpeculativeJIT::compileHasEnumerableStructureProperty):
(JSC::DFG::SpeculativeJIT::compileHasIndexedProperty):
(JSC::DFG::SpeculativeJIT::compileHasGenericProperty): Deleted.
(JSC::DFG::SpeculativeJIT::compileHasStructureProperty): Deleted.
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileHasIndexedProperty):
(JSC::FTL::DFG::LowerDFGToB3::compileHasEnumerableProperty):
(JSC::FTL::DFG::LowerDFGToB3::compileHasEnumerableStructureProperty):
(JSC::FTL::DFG::LowerDFGToB3::compileHasGenericProperty): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::compileHasStructureProperty): Deleted.
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):
* jit/JIT.h:
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_has_enumerable_structure_property):
(JSC::JIT::emit_op_has_enumerable_indexed_property):
(JSC::JIT::emitSlow_op_has_enumerable_indexed_property):
(JSC::JIT::emit_op_has_structure_property): Deleted.
(JSC::JIT::emit_op_has_indexed_property): Deleted.
(JSC::JIT::emitSlow_op_has_indexed_property): Deleted.
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_has_enumerable_structure_property):
(JSC::JIT::emit_op_has_enumerable_indexed_property):
(JSC::JIT::emitSlow_op_has_enumerable_indexed_property):
(JSC::JIT::emit_op_has_structure_property): Deleted.
(JSC::JIT::emit_op_has_indexed_property): Deleted.
(JSC::JIT::emitSlow_op_has_indexed_property): Deleted.
* jit/JITOperations.cpp:
(JSC::JSC_DEFINE_JIT_OPERATION):
* jit/JITOperations.h:
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/CommonSlowPaths.cpp:
(JSC::JSC_DEFINE_COMMON_SLOW_PATH):
* runtime/CommonSlowPaths.h:
* runtime/JSObject.cpp:
(JSC::JSObject::hasProperty const):
(JSC::JSObject::hasEnumerableProperty const):
(JSC::JSObject::hasPropertyGeneric const): Deleted.
* runtime/JSObject.h:

Source/WebCore:

Report RuntimeArray indices as [[Enumerable]].

Test: platform/mac/fast/dom/wrapper-classes-objc.html

* bridge/runtime_array.cpp:
(JSC::RuntimeArray::getOwnPropertySlot):
(JSC::RuntimeArray::getOwnPropertySlotByIndex):

LayoutTests:

* platform/mac/fast/dom/wrapper-classes-objc-expected.txt:
* platform/mac/fast/dom/wrapper-classes-objc.html:

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

23 months agoREGRESSION: [macOS] http/tests/inspector/network/resource-response-service-worker...
achristensen@apple.com [Wed, 16 Dec 2020 00:06:21 +0000 (00:06 +0000)]
REGRESSION: [macOS] http/tests/inspector/network/resource-response-service-worker.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=219625

Ignore an internal inspector error like I did in r270137

* http/tests/inspector/network/resource-response-service-worker.html:
* platform/mac/TestExpectations:

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

23 months ago[Cocoa] Adopt -externalContentProtectionStatus
jer.noble@apple.com [Wed, 16 Dec 2020 00:01:59 +0000 (00:01 +0000)]
[Cocoa] Adopt -externalContentProtectionStatus
https://bugs.webkit.org/show_bug.cgi?id=219911

Reviewed by Eric Carlson.

Source/WebCore:

Adopt a new AVContentKeyRequest API which provides a "pending" status (in addition to usable/unusable).

* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::keyStatuses const):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::protectionStatusForDisplayID const):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::keyRequestHasInsufficientProtectionForDisplayID const): Deleted.

Source/WebCore/PAL:

* pal/spi/cocoa/AVFoundationSPI.h:

Source/WTF:

* wtf/PlatformHave.h:

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

23 months ago[webkitscmpy] Support remote GitHub repository
jbedard@apple.com [Tue, 15 Dec 2020 23:34:40 +0000 (23:34 +0000)]
[webkitscmpy] Support remote GitHub repository
https://bugs.webkit.org/show_bug.cgi?id=219602
<rdar://problem/72050026>

Reviewed by Stephanie Lewis.

Services often need to interact with the WebKit repository without actually downloading the
repository. In particular, it is useful to be able to retrieve commits and their identifiers.

* Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Bump version.
* Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:
(Git): Move GIT_SVN_REVISION regex to base class.
* Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/__init__.py: Add GitHub class.
* Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/git_hub.py: Added.
(GitHub): Mock request router for a limited subset of GitHub's API.
(GitHub.__init__):
(GitHub.commit): Return a commit object given a reference.
(GitHub._api_response):
(GitHub._list_refs_response):
(GitHub._commit_response):
(GitHub._compare_response):
(GitHub._branches_for_request):
(GitHub._parents_of_request):
(GitHub.request): Return a response object for the specified request.
* Scripts/libraries/webkitscmpy/webkitscmpy/remote/__init__.py: Add GitHub class.
* Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py: Added.
(GitHub): Repository object representing a GitHub remote.
(GitHub.is_webserver): True if the provided URL is a GitHub webserver.
(GitHub.__init__): Verify the provided URL and split it into it's composite parts.
(GitHub.is_git): Return True.
(GitHub.request): Make an API request, combining pagination into a single request.
(GitHub._count_for_ref): Scrape the GitHub UI to find the number of parent commits for a specified
branch or commit.
(GitHub._difference): Compute the number of commits a specified reference is ahead of another.
(GitHub._branches_for): Scrape the GitHub UI to determine what branches a commit is on.
(GitHub.default_branch): Query GitHub to determine the default branch for a specified commit.
(GitHub.branches): Return all branches for a repository.
(GitHub.tags): Return all tags for a repository.
(GitHub.commit): Return a commit object given a revision, branch, identifier or tag.
(GitHub.find): Use git to match branches and tags to a hash instead of trying to do it ourselves.
* Scripts/libraries/webkitscmpy/webkitscmpy/remote/scm.py:
(Scm.from_url): Add GitHub to the set of candidate remote repositories.
* Scripts/libraries/webkitscmpy/webkitscmpy/scm_base.py:
(ScmBase): Move GIT_SVN_REVISION regex to base class.
* Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:
(TestGitHub):
(TestGitHub.test_detection):
(TestGitHub.test_branches):
(TestGitHub.test_tags):
(TestGitHub.test_scm_type):
(TestGitHub.test_commit_revision):
(TestGitHub.test_commit_from_branch):
(TestGitHub.test_identifier):
(TestGitHub.test_non_cannonical_identifiers):
(TestGitHub.test_tag):
(TestGitHub.test_no_log):

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

23 months agoSwitch to using a linked list for the TDZ environment instead of a Vector
sbarati@apple.com [Tue, 15 Dec 2020 23:18:33 +0000 (23:18 +0000)]
Switch to using a linked list for the TDZ environment instead of a Vector
https://bugs.webkit.org/show_bug.cgi?id=219909
<rdar://71441753>

Reviewed by Tadeu Zagallo.

Before, we'd represent the TDZ stack in terms of a Vector. While the entries
in the Vector were reference counted, the spine of the Vector itself would
match the length of the TDZ scope stack. It turns out this spine itself can
use non-trivial amounts of memory. We are seeing about a 0.5% regression from
this inside RAMification. This change makes it so that we now use a tree-like
data structure for scope stack entries. The data structure is a tree with only
parent pointers. Any field that used to be a vector of entries is now a
pointer to a node in this tree. So any pointer into this tree will have a
linked-list window into the tree, where the linked-list represents the same
data as the previous vector-as-stack data structure.

Initial testing shows this might be up to a 0.5% progression on RAMification.

* builtins/BuiltinExecutables.cpp:
(JSC::BuiltinExecutables::createExecutable):
* bytecode/UnlinkedFunctionExecutable.cpp:
(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):
* bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::generate):
* parser/VariableEnvironment.h:
(JSC::TDZEnvironmentLink::TDZEnvironmentLink):
(JSC::TDZEnvironmentLink::create):
(JSC::TDZEnvironmentLink::contains const):
(JSC::TDZEnvironmentLink::parent):
* runtime/CachedTypes.cpp:
(JSC::CachedTDZEnvironmentLink::encode):
(JSC::CachedTDZEnvironmentLink::decode const):
* runtime/CodeCache.cpp:
(JSC::generateUnlinkedCodeBlockImpl):
(JSC::CodeCache::getUnlinkedGlobalFunctionExecutable):

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

23 months agoSuppress noise from JSTests/stress/lars-sab-workers.js
ysuzuki@apple.com [Tue, 15 Dec 2020 23:09:07 +0000 (23:09 +0000)]
Suppress noise from JSTests/stress/lars-sab-workers.js
https://bugs.webkit.org/show_bug.cgi?id=219922

Reviewed by Saam Barati.

Mark it as noisy tests.

* stress/lars-sab-workers.js:

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

23 months agoAdd webkit- prefix to SpeechRecognition
sihui_liu@apple.com [Tue, 15 Dec 2020 23:04:22 +0000 (23:04 +0000)]
Add webkit- prefix to SpeechRecognition
https://bugs.webkit.org/show_bug.cgi?id=219869

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Update test expectations as SpeechRecognition becomes not available.

* web-platform-tests/speech-api/SpeechRecognition-basics.https-expected.txt:
* web-platform-tests/speech-api/historical-expected.txt:
* web-platform-tests/speech-api/idlharness.window-expected.txt:

Source/WebCore:

* Modules/speech/SpeechRecognition.idl:
* bindings/js/WebCoreBuiltinNames.h:

Tools:

Replace SpeechRecognition with webkitSpeechRecognition in test.

* TestWebKitAPI/Tests/WebKitCocoa/speechrecognition-user-permission-persistence.html:

LayoutTests:

Replace SpeechRecognition with webkitSpeechRecognition in tests.

* fast/speechrecognition/ios/audio-capture-expected.txt:
* fast/speechrecognition/ios/audio-capture.html:
* fast/speechrecognition/ios/restart-recognition-after-stop-expected.txt:
* fast/speechrecognition/ios/restart-recognition-after-stop.html:
* fast/speechrecognition/ios/start-recognition-then-stop-expected.txt:
* fast/speechrecognition/ios/start-recognition-then-stop.html:
* fast/speechrecognition/permission-error-expected.txt:
* fast/speechrecognition/permission-error.html:
* fast/speechrecognition/resources/removed-iframe.html:
* fast/speechrecognition/start-recognition-then-stop-expected.txt:
* fast/speechrecognition/start-recognition-then-stop.html:
* fast/speechrecognition/start-recognition-twice-exception-expected.txt:
* fast/speechrecognition/start-recognition-twice-exception.html:
* fast/speechrecognition/start-second-recognition-expected.txt:
* fast/speechrecognition/start-second-recognition.html:

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

23 months ago[macOS, iOS] Add required mach syscall
pvollan@apple.com [Tue, 15 Dec 2020 22:58:16 +0000 (22:58 +0000)]
[macOS, iOS] Add required mach syscall
https://bugs.webkit.org/show_bug.cgi?id=219913
<rdar://problem/72347689>

Reviewed by Brent Fulgham.

Add required mach syscall on macOS and iOS.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
* WebProcess/com.apple.WebProcess.sb.in:

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

23 months agoUnreviewed, reverting r270860.
commit-queue@webkit.org [Tue, 15 Dec 2020 21:38:51 +0000 (21:38 +0000)]
Unreviewed, reverting r270860.
https://bugs.webkit.org/show_bug.cgi?id=219918

We workaround it differently, so this revert is not necessary

Reverted changeset:

"Unreviewed, reverting r269320, r269341, r269502, and
r269576."
https://bugs.webkit.org/show_bug.cgi?id=219915
https://trac.webkit.org/changeset/270860

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

23 months agoUnreviewed, reverting r269320, r269341, r269502, and r269576.
commit-queue@webkit.org [Tue, 15 Dec 2020 21:21:43 +0000 (21:21 +0000)]
Unreviewed, reverting r269320, r269341, r269502, and r269576.
https://bugs.webkit.org/show_bug.cgi?id=219915

ICU C++ internal API causes trouble

Reverted changesets:

"REGRESSION (r254038): Simple.com money transfer UI is very
laggy (multiple seconds per keypress)"
https://bugs.webkit.org/show_bug.cgi?id=218348
https://trac.webkit.org/changeset/269320

"[JSC] Obtain default timezone ID from cached icu::TimeZone"
https://bugs.webkit.org/show_bug.cgi?id=218531
https://trac.webkit.org/changeset/269341

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

"[JSC] Add TimeZone range cache over ICU TimeZone API"
https://bugs.webkit.org/show_bug.cgi?id=218681
https://trac.webkit.org/changeset/269576

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

23 months ago[Media in GPU Process][MSE] Enable media-source layout tests
peng.liu6@apple.com [Tue, 15 Dec 2020 20:31:44 +0000 (20:31 +0000)]
[Media in GPU Process][MSE] Enable media-source layout tests
https://bugs.webkit.org/show_bug.cgi?id=219906

Reviewed by Eric Carlson.

* gpu-process/TestExpectations:

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

23 months ago[webkitscmpy] Save contributors to json file
jbedard@apple.com [Tue, 15 Dec 2020 20:29:13 +0000 (20:29 +0000)]
[webkitscmpy] Save contributors to json file
https://bugs.webkit.org/show_bug.cgi?id=219908
<rdar://problem/72351153>

Reviewed by Dewei Zhu.

The motivation for this change is not to replace contributors.json (although that could
eventually be the case), instead, the motivation for this change is to pass contributors
to `git filter-branch` subprocesses.

* Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Increment version.
* Scripts/libraries/webkitscmpy/webkitscmpy/contributor.py:
(Contributor.Mapping):
(Contributor.Mapping.load): Load contributor mapping from a json file.
(Contributor.Mapping.save): Save contributor mapping to a json file.
(Contributor.Mapping.add):
* Scripts/libraries/webkitscmpy/webkitscmpy/test/contributor_unittest.py:
(TestContributor):
(TestContributor.test_saving):

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

23 months agoREGRESSION: [macOS] http/tests/inspector/network/resource-response-service-worker...
ryanhaddad@apple.com [Tue, 15 Dec 2020 20:15:01 +0000 (20:15 +0000)]
REGRESSION: [macOS] http/tests/inspector/network/resource-response-service-worker.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=219625

Unreviewed test gardening.

* platform/mac/TestExpectations: Mark test as flaky.

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

23 months ago[ Mac ] imported/w3c/web-platform-tests/server-timing/service_worker_idl.html is...
tsavell@apple.com [Tue, 15 Dec 2020 19:46:33 +0000 (19:46 +0000)]
[ Mac ] imported/w3c/web-platform-tests/server-timing/service_worker_idl.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=219907

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

23 months ago[WASM-References] Add support for memory.fill
commit-queue@webkit.org [Tue, 15 Dec 2020 19:15:33 +0000 (19:15 +0000)]
[WASM-References] Add support for memory.fill
https://bugs.webkit.org/show_bug.cgi?id=219848

Patch by Dmitry Bezhetskov <dbezhetskov@igalia.com> on 2020-12-15
Reviewed by Yusuke Suzuki.

JSTests:

Added spec tests and unreachable tests for memory.fill.

* wasm.yaml:
* wasm/references-spec-tests/memory_fill.wast.js: Added.
* wasm/references/memory_fill_shared.js: Added.
(async test):
* wasm/references/table_instructions_parse_unreachable.js:
(invalidMemoryFillUnreachable):
* wasm/wasm.json:

Source/JavaScriptCore:

Add support for memory.fill from ref-types spec.
memory.fill sets all bytes in a memory region to a given byte:
https://webassembly.github.io/reference-types/core/syntax/instructions.html#memory-instructions.

* bytecode/BytecodeList.rb:
* llint/WebAssembly.asm:
* wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::AirIRGenerator::addMemoryFill):
* wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::addMemoryFill):
* wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::parseMemoryFillImmediate):
(JSC::Wasm::FunctionParser<Context>::parseExpression):
(JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):
* wasm/WasmLLIntGenerator.cpp:
(JSC::Wasm::LLIntGenerator::addMemoryFill):
* wasm/WasmMemory.cpp:
(JSC::Wasm::Memory::fill):
(JSC::Wasm::Memory::doMemoryFill):
* wasm/WasmMemory.h:
* wasm/WasmOperations.cpp:
(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):
* wasm/WasmOperations.h:
* wasm/WasmSlowPaths.cpp:
(JSC::LLInt::WASM_SLOW_PATH_DECL):
* wasm/WasmSlowPaths.h:
* wasm/wasm.json:

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

23 months agoEnable SpeechRecognition by default
sihui_liu@apple.com [Tue, 15 Dec 2020 19:12:46 +0000 (19:12 +0000)]
Enable SpeechRecognition by default
https://bugs.webkit.org/show_bug.cgi?id=219798

Reviewed by Youenn Fablet.

* Scripts/Preferences/WebPreferencesExperimental.yaml:

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

23 months agoImage extraction interaction should remain active while scrolling
wenson_hsieh@apple.com [Tue, 15 Dec 2020 18:53:06 +0000 (18:53 +0000)]
Image extraction interaction should remain active while scrolling
https://bugs.webkit.org/show_bug.cgi?id=219895
<rdar://problem/72344814>

Reviewed by Devin Rousso.

Make our image extraction interaction behave more like the rest of the system by making it persist until
explicitly dismissed via tap gesture (or any other competing interaction, such as text interactions, drag
interactions and context menu interactions, as long as the interaction location is outside of the active image
extraction interaction).

We currently just dismiss any active image extraction upon starting a new touch, which prevents scrolling from
working as expected with image extraction. See radar for more details.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _webTouchEventsRecognized:]):
(-[WKContentView hasSelectablePositionAtPoint:]):
(-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
(-[WKContentView _singleTapIdentified:]):
(-[WKContentView _dragInteraction:prepareForSession:completion:]):
(-[WKContentView _contextMenuInteraction:configurationForMenuAtLocation:completion:]):

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

23 months agoCrashTracer: com.apple.WebKit.Networking at WebKit: WTF::Detail::CallableWrapper...
katherine_cheney@apple.com [Tue, 15 Dec 2020 18:27:57 +0000 (18:27 +0000)]
CrashTracer: com.apple.WebKit.Networking at WebKit: WTF::Detail::CallableWrapper<WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests()
https://bugs.webkit.org/show_bug.cgi?id=219860
<rdar://problem/72254207>

Reviewed by Alex Christensen.

Followup patch to add missing completion handlers. This also moves the
check for a null m_networkSession variable to the existing
PrivateClickMeasurementManager::featureEnabled() function for
simplicity.

* NetworkProcess/PrivateClickMeasurementManager.cpp:
(WebKit::PrivateClickMeasurementManager::storeUnattributed):
(WebKit::PrivateClickMeasurementManager::attribute):
(WebKit::PrivateClickMeasurementManager::clearSentAttributions):
(WebKit::PrivateClickMeasurementManager::updateTimerLastFired):
(WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests):
(WebKit::PrivateClickMeasurementManager::clear):
(WebKit::PrivateClickMeasurementManager::clearForRegistrableDomain):
(WebKit::PrivateClickMeasurementManager::clearExpired):
(WebKit::PrivateClickMeasurementManager::toString const):
(WebKit::PrivateClickMeasurementManager::markAllUnattributedAsExpiredForTesting):
(WebKit::PrivateClickMeasurementManager::featureEnabled const):
(WebKit::PrivateClickMeasurementManager::markAttributedPrivateClickMeasurementsAsExpiredForTesting):

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

23 months agoAdd batching to WebPreferences updates
simon.fraser@apple.com [Tue, 15 Dec 2020 18:16:50 +0000 (18:16 +0000)]
Add batching to WebPreferences updates
https://bugs.webkit.org/show_bug.cgi?id=219878

Reviewed by Sam Weinig.

WebPreferences::resetAllInternalDebugFeatures() and WebPreferences::enableAllExperimentalFeatures()
would trigger tens of calls to WebPageProxy::preferencesDidChange(). Fix by adding batching, and only
firing update() at the end of any prefs changed.

* Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
* Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:
* UIProcess/WebPreferences.cpp:
(WebKit::WebPreferences::update):
(WebKit::WebPreferences::startBatchingUpdates):
(WebKit::WebPreferences::endBatchingUpdates):
* UIProcess/WebPreferences.h:
(WebKit::WebPreferences::UpdateBatch::UpdateBatch):
(WebKit::WebPreferences::UpdateBatch::~UpdateBatch):

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

23 months agoREGRESSION (r259137): Clip-path rendering regression when element contains transforme...
simon.fraser@apple.com [Tue, 15 Dec 2020 18:16:25 +0000 (18:16 +0000)]
REGRESSION (r259137): Clip-path rendering regression when element contains transformed child
https://bugs.webkit.org/show_bug.cgi?id=219829
Source/WebCore:

<rdar://problem/66308088>

Reviewed by Said Abou-Hallawa.

When computing the geometry for clip-path when applied to a CSS box, we should take overflow:hidden
on the box into account. It's not entirely clear what the correct geometry is
(https://github.com/w3c/csswg-drafts/issues/5786) but this avoids stretched masks.

Test: css3/masking/clip-path-overflow-hidden-bounds.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::setupClipPath):

LayoutTests:

Reviewed by Said Abou-Hallawa.

* css3/masking/clip-path-overflow-hidden-bounds-expected.html: Added.
* css3/masking/clip-path-overflow-hidden-bounds.html: Added.

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

23 months agoToggling pointer-events on body does not re-enable scrolling on child
drousso@apple.com [Tue, 15 Dec 2020 18:00:55 +0000 (18:00 +0000)]
Toggling pointer-events on body does not re-enable scrolling on child
https://bugs.webkit.org/show_bug.cgi?id=218533
<rdar://problem/71009746>

Reviewed by Simon Fraser.

Source/WebCore:

* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::changeRequiresRecompositeLayer const):
Changes to the CSS `pointer-events` property should also also indicate that a recomposite is
required (`StyleDifference::RecompositeLayer`), resulting in `RenderElement::styleWillChange`
being called, which invalidates the event region since the value of the CSS `pointer-events`
property has changed.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::layerStyleChanged):
Don't limit `StyleDifference::RecompositeLayer` changes to only affect `RenderWidget`.

LayoutTests:

* fast/scrolling/ios/overflow-scroll-pointer-events.html: Added.
* fast/scrolling/ios/overflow-scroll-pointer-events-expected.txt: Added.

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

23 months ago[LFC][Integration] REGRESSION: Event handler region is wrong
zalan@apple.com [Tue, 15 Dec 2020 17:47:26 +0000 (17:47 +0000)]
[LFC][Integration] REGRESSION: Event handler region is wrong
https://bugs.webkit.org/show_bug.cgi?id=219515
<rdar://problem/71955706>

Reviewed by Antti Koivisto.

Source/WebCore:

Event regions need to include the paint offset the same way painting does.

Test: fast/scrolling/mac/event-region-is-leaking-out.html

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

LayoutTests:

* fast/scrolling/mac/event-region-is-leaking-out-expected.txt: Added.
* fast/scrolling/mac/event-region-is-leaking-out.html: Added.
progressions:
* tiled-drawing/scrolling/non-fast-region/wheel-handler-in-overflow-scroll-expected.txt:
* tiled-drawing/scrolling/non-fast-region/wheel-handler-region-basic-expected.txt:

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

23 months ago[webkitscmpy] Contributor emails with capitalizations should be searchable as lowercase
jbedard@apple.com [Tue, 15 Dec 2020 17:40:54 +0000 (17:40 +0000)]
[webkitscmpy] Contributor emails with capitalizations should be searchable as lowercase
https://bugs.webkit.org/show_bug.cgi?id=219892
<rdar://problem/72341870>

Reviewed by Stephanie Lewis.

* Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py:
* Scripts/libraries/webkitscmpy/webkitscmpy/contributor.py:
(Contributor.Mapping.create):
* Scripts/libraries/webkitscmpy/webkitscmpy/test/contributor_unittest.py:
(TestContributor):
(TestContributor.test_upper_case_email):

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

23 months agoresultIndex of SpeechRecognitionEvent should be the first index that has change
sihui_liu@apple.com [Tue, 15 Dec 2020 17:38:14 +0000 (17:38 +0000)]
resultIndex of SpeechRecognitionEvent should be the first index that has change
https://bugs.webkit.org/show_bug.cgi?id=219876

Reviewed by Youenn Fablet.

Source/WebCore:

Our current resultIndex is first index of non-final result, but it should be first index of changed result
(https://wicg.github.io/speech-api/#dom-speechrecognitionevent-resultindex), which includes result with state
change (non-final to final) but no content change.

Modified existing test: fast/speechrecognition/ios/start-recognition-then-stop.html

* Modules/speech/SpeechRecognition.cpp:
(WebCore::SpeechRecognition::didReceiveResult):

LayoutTests:

* fast/speechrecognition/ios/start-recognition-then-stop-expected.txt:
* fast/speechrecognition/ios/start-recognition-then-stop.html:

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

23 months agoREGRESSION(r268886): Page load time performance regression
noam@webkit.org [Tue, 15 Dec 2020 17:30:33 +0000 (17:30 +0000)]
REGRESSION(r268886): Page load time performance regression
https://bugs.webkit.org/show_bug.cgi?id=219677
<rdar://problem/71543823>

Reviewed by Darin Adler.

Optimize metadata fetching from images in ImageDecoderCG.
Instead of reading metadata separately for orientation and resolution,
use the partial metadata retrieved for orientation to figure out whether we need
extended metadata at all.

This will limit the expensive reading of extended metadata to images which might
have density size correction.

No new tests, this is an optimization covered by existing tests.

* platform/graphics/ImageDecoder.h:
(WebCore::ImageDecoder::frameDensityCorrectedSizeAtIndex const): Deleted.
* platform/graphics/ImageSource.cpp:
(WebCore::ImageSource::cacheMetadataAtIndex):
* platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.h:
* platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
(WebCore::ImageDecoderAVFObjC::frameMetadataAtIndex const):
(WebCore::ImageDecoderAVFObjC::frameOrientationAtIndex const): Deleted.
* platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:
(WebCore::ImageDecoderGStreamer::frameMetadataAtIndex const):
(WebCore::ImageDecoderGStreamer::frameOrientationAtIndex const): Deleted.
* platform/graphics/gstreamer/ImageDecoderGStreamer.h:
* platform/graphics/win/ImageDecoderDirect2D.cpp:
(WebCore::ImageDecoderDirect2D::frameOrientationAtIndex const): Deleted.
* platform/graphics/win/ImageDecoderDirect2D.h:
* platform/image-decoders/ScalableImageDecoder.h:
        Changed the signature to retrive metadata in one call

* platform/graphics/cg/ImageDecoderCG.cpp:
(WebCore::mayHaveDensityCorrectedSize):
(WebCore::densityCorrectedSizeFromProperties):
(WebCore::ImageDecoderCG::frameMetadataAtIndex const):
(WebCore::ImageDecoderCG::frameOrientationAtIndex const): Deleted.
(WebCore::ImageDecoderCG::frameDensityCorrectedSizeAtIndex const): Deleted.
* platform/graphics/cg/ImageDecoderCG.h:
        Figure out whether we need to read density based on partial metadata.

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

23 months agoFix alertMessageText regression from https://trac.webkit.org/changeset/269918
youenn@apple.com [Tue, 15 Dec 2020 17:27:16 +0000 (17:27 +0000)]
Fix alertMessageText regression from https://trac.webkit.org/changeset/269918
https://bugs.webkit.org/show_bug.cgi?id=219891

Reviewed by Eric Carlson.

alertMessageText was checking twice for audio while it should check once for audio and once for video.

* UIProcess/Cocoa/MediaPermissionUtilities.mm:
(WebKit::alertMessageText):

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

23 months ago"make clean" fails on EmptyDSTROOT target
commit-queue@webkit.org [Tue, 15 Dec 2020 17:12:31 +0000 (17:12 +0000)]
"make clean" fails on EmptyDSTROOT target
https://bugs.webkit.org/show_bug.cgi?id=219870
rdar://72309233

Patch by Ryan Hostetler <rhost@apple.com> on 2020-12-15
Reviewed by Alexey Proskuryakov.

make clean can't find PROJECT_NAME for EmptyDSTROOT.

* WebKit.xcodeproj/project.pbxproj:

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

23 months agoMake worker RTC insertable streams constructs controlled by webrtc insertable streams...
youenn@apple.com [Tue, 15 Dec 2020 16:45:34 +0000 (16:45 +0000)]
Make worker RTC insertable streams constructs controlled by webrtc insertable streams feature setting
https://bugs.webkit.org/show_bug.cgi?id=219252
<rdar://problem/71798249>

Reviewed by Eric Carlson.

Update binding generator to use the new ScriptExecutionContext::settingsValues getter.
Enable use of EnabledBySettings outside window context.
Make use of it in RTCRtpScriptTransformer.

Covered by existing tests and rebased binding tests.

* Modules/mediastream/RTCRtpScriptTransformer.idl:
* bindings/js/WebCoreBuiltinNames.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateRuntimeEnableConditionalString):
* bindings/scripts/test/JS/JSTestConditionalIncludes.cpp:
(WebCore::JSTestConditionalIncludesDOMConstructor::initializeProperties):
(WebCore::JSTestConditionalIncludesPrototype::finishCreation):
* bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp:
(WebCore::JSTestConditionallyReadWritePrototype::finishCreation):
* bindings/scripts/test/JS/JSTestDefaultToJSON.cpp:
(WebCore::JSTestDefaultToJSONPrototype::finishCreation):
(WebCore::jsTestDefaultToJSONPrototypeFunction_toJSONBody):
* bindings/scripts/test/JS/JSTestDefaultToJSONInherit.cpp:
(WebCore::jsTestDefaultToJSONInheritPrototypeFunction_toJSONBody):
* bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.cpp:
(WebCore::jsTestDefaultToJSONInheritFinalPrototypeFunction_toJSONBody):
* bindings/scripts/test/JS/JSTestDerivedDictionary.cpp:
(WebCore::convertDictionaryToJS):
* bindings/scripts/test/JS/JSTestDerivedDictionary2.cpp:
(WebCore::convertDictionaryToJS):
* bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
(WebCore::JSTestEnabledBySettingDOMConstructor::initializeProperties):
(WebCore::JSTestEnabledBySettingPrototype::finishCreation):
(WebCore::JSTestEnabledBySetting::finishCreation):
* bindings/scripts/test/JS/JSTestEnabledForContext.cpp:
(WebCore::JSTestEnabledForContext::finishCreation):
* bindings/scripts/test/JS/JSTestInheritedDictionary.cpp:
(WebCore::convertDictionaryToJS):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterfacePrototype::finishCreation):
* bindings/scripts/test/JS/JSTestStandaloneDictionary.cpp:
(WebCore::convertDictionaryToJS):

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

23 months ago[Mac] Numerous webgl tests time out with WebM format reader enabled
aestes@apple.com [Tue, 15 Dec 2020 16:40:41 +0000 (16:40 +0000)]
[Mac] Numerous webgl tests time out with WebM format reader enabled
https://bugs.webkit.org/show_bug.cgi?id=219887

Reviewed by Eric Carlson.

Source/WebCore:

Covered by existing tests.

* platform/graphics/TrackPrivateBase.cpp:
(WebCore::TrackPrivateBase::trackUID const):
* platform/graphics/TrackPrivateBase.h:
* platform/graphics/cocoa/AudioTrackPrivateWebM.cpp:
(WebCore::AudioTrackPrivateWebM::id const):
(WebCore::AudioTrackPrivateWebM::trackUID const):
* platform/graphics/cocoa/AudioTrackPrivateWebM.h:
* platform/graphics/cocoa/VideoTrackPrivateWebM.cpp:
(WebCore::VideoTrackPrivateWebM::id const):
(WebCore::VideoTrackPrivateWebM::trackUID const):
* platform/graphics/cocoa/VideoTrackPrivateWebM.h:

Added a way to get the track ID as an optional uint64_t.

* platform/graphics/cocoa/SourceBufferParserWebM.cpp:
(WebCore::callOnMainThreadCallback):
(WebCore::SourceBufferParserWebM::SourceBufferParserWebM):
(WebCore::SourceBufferParserWebM::appendData):
(WebCore::SourceBufferParserWebM::OnClusterBegin):
(WebCore::SourceBufferParserWebM::provideMediaData):
(WebCore::SourceBufferParserWebM::setCallOnClientThreadCallback):
* platform/graphics/cocoa/SourceBufferParserWebM.h:

Added a way for SourceBufferParserWebM clients to customize the thread on which callbacks
are invoked.

Source/WebKit:

When rendering a video frame to canvas, SampleCursor is invoked on the main thread in
order to find a sync frame to render. This triggered an ASSERT(!isMainThread()) in debug
builds, and possibly a deadlock if the cursor pointed to a sample that hadn't yet been
parsed (because SourceBufferParser calls the 'didProvideMediaData' callback on the main
thread).

Resolve this by having SourceBufferParser provide parsed samples on a background queue. To
avoid creating AtomStrings on this non-main queue, teach TrackReader to access the trackID
as a uint64_t instead.

* Shared/mac/MediaFormatReader/FormatReader.cpp:
(WebKit::FormatReader::startOnMainThread):
(WebKit::readerQueue):
(WebKit::FormatReader::parseByteSource):
(WebKit::FormatReader::didParseTracks):
(WebKit::FormatReader::didProvideMediaData):
(WebKit::FormatReader::finishParsing):
(WebKit::FormatReader::copyTrackArray):
* Shared/mac/MediaFormatReader/TrackReader.cpp:
(WebKit::MediaSampleByteRange::MediaSampleByteRange):
(WebKit::TrackReader::create):
(WebKit::TrackReader::storageQueue):
(WebKit::TrackReader::TrackReader):
(WebKit::TrackReader::addSample):
(WebKit::TrackReader::waitForSample const):
(WebKit::TrackReader::finishParsing):
(WebKit::TrackReader::finalize):
* Shared/mac/MediaFormatReader/TrackReader.h:

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

23 months ago[GPUProcess] Crash under AudioDestinationCocoa::setIsPlaying(bool)
cdumez@apple.com [Tue, 15 Dec 2020 16:36:04 +0000 (16:36 +0000)]
[GPUProcess] Crash under AudioDestinationCocoa::setIsPlaying(bool)
https://bugs.webkit.org/show_bug.cgi?id=219809
<rdar://problem/72298420>

Reviewed by Youenn Fablet.

Source/WebCore:

The issue is that when using the GPU process, AudioDestination::stop() & start()
are asynchronous due to IPC. Those functions take completion handlers and
the AudioDestination object makes sure to ref itself to keep itself alive during
async operations. However, AudioDestination::m_callback is a raw pointer to
the AudioDestinationNode, which may itself become dead if AudioDestination
extends its lifetime by ref'ing itself.

To address the issue, AudioDestinationNode now clears AudioDestination's node
to itself before nulling out its destination. Before AudioDestination::m_callback
is used from several threads, we need to add a lock too.

No new tests, already covered by layout tests currently crashing on
bots with GPU process enabled.

* Modules/webaudio/DefaultAudioDestinationNode.cpp:
(WebCore::DefaultAudioDestinationNode::uninitialize):
(WebCore::DefaultAudioDestinationNode::clearDestination):
(WebCore::DefaultAudioDestinationNode::createDestination):
(WebCore::DefaultAudioDestinationNode::recreateDestination):
(WebCore::DefaultAudioDestinationNode::enableInput):
(WebCore::DefaultAudioDestinationNode::setChannelCount):
* Modules/webaudio/DefaultAudioDestinationNode.h:
* platform/audio/AudioDestination.h:
(WebCore::AudioDestination::clearCallback):
(WebCore::AudioDestination::AudioDestination):
(WebCore::AudioDestination::callRenderCallback):
* platform/audio/cocoa/AudioDestinationCocoa.cpp:
(WebCore::AudioDestinationCocoa::AudioDestinationCocoa):
(WebCore::AudioDestinationCocoa::setIsPlaying):
(WebCore::AudioDestinationCocoa::renderOnRenderingThead):
* platform/audio/cocoa/AudioDestinationCocoa.h:
* platform/audio/gstreamer/AudioDestinationGStreamer.cpp:
(WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer):
* platform/audio/gstreamer/AudioDestinationGStreamer.h:

Source/WebKit:

* WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:
(WebKit::RemoteAudioDestinationProxy::RemoteAudioDestinationProxy):

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

23 months agoREGRESSION: apple.com sign-in page footer does not wrap, "Site Map" option renders...
zalan@apple.com [Tue, 15 Dec 2020 15:07:04 +0000 (15:07 +0000)]
REGRESSION: apple.com sign-in page footer does not wrap, "Site Map" option renders offscreen.
https://bugs.webkit.org/show_bug.cgi?id=219880
<rdar://problem/72128221>

Reviewed by Antti Koivisto.

Source/WebCore:

Do not check the inline-block's style for wrapping. It's the parent's style that drives the content wrapping.

E.g. <div style="white-space: nowrap">some text<div style="display: inline-block; white-space: pre-wrap"></div></div>.
While the inline-block has pre-wrap which allows wrapping, the content lives in a nowrap context.

Test: fast/inline/inline-block-no-wrap.html

* layout/inlineformatting/InlineContentBreaker.cpp:
(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):
(WebCore::Layout::lastContentRunIndex): Deleted.
(WebCore::Layout::InlineContentBreaker::isContentWrappingAllowed const): Deleted.
* layout/inlineformatting/InlineContentBreaker.h:

LayoutTests:

* fast/inline/inline-block-no-wrap-expected.html: Added.
* fast/inline/inline-block-no-wrap.html: Added.

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

23 months agoCSS Scroll Snap is not in effect when the user scrolls via the keyboard
mrobinson@webkit.org [Tue, 15 Dec 2020 14:34:27 +0000 (14:34 +0000)]
CSS Scroll Snap is not in effect when the user scrolls via the keyboard
https://bugs.webkit.org/show_bug.cgi?id=198566
<rdar://problem/51488088>

Reviewed by Simon Fraser.

Add support for scroll snap for keyboard scrolling

This change adds support for the concept of directional scroll snapping,
which will never snap to a snap point that is away from the original
scroll offset in the opposite direction of the scroll direction. This
allows escaping snap points.

Source/WebCore:

Tests: tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-with-keyboard-scaled.html
       tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-with-keyboard.html
       tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-with-keyboard-scaled.html
       tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-with-keyboard.html
       tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-horizontal-with-keyboard.html
       tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-vertical-with-keyboard.html
       tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-rtl-with-keyboard.html

* page/FrameView.cpp:
(WebCore::FrameView::pageScaleFactor const): Added.
* page/FrameView.h: Added scale factor getter.
* page/scrolling/ScrollSnapOffsetsInfo.cpp:
(WebCore::closestSnapOffset): Added a new optional argument that signals
directional snapping. This changes the behavior when choosing a snap offset
that is in the opposite direction as the scroll direction.
* page/scrolling/ScrollSnapOffsetsInfo.h:
* platform/ScrollAnimator.cpp:
(WebCore::ScrollAnimator::scroll):
* page/scrolling/ScrollSnapOffsetsInfo.h:
(WebCore::ScrollAnimator::scroll): No longer use the granularity argument.
(WebCore::ScrollAnimator::scrollWithoutAnimation): Remove the unused ScrollGranularity
argument and use the new positionFromStep helper.
(WebCore::ScrollAnimator::scrollWithDirectionalSnapping): Added.
(WebCore::ScrollAnimator::positionFromStep): Added this helper.
(WebCore::ScrollAnimator::handleWheelEvent): Remove the granularity argument.
(WebCore::ScrollAnimator::pageScaleFactor const): Added this implementation
of a ScrollControllerClient method.
* platform/ScrollAnimator.h: Update method declarations.
* platform/ScrollableArea.cpp:
(WebCore::ScrollableArea::scroll): Use the new argument to the scroll method.
* platform/cocoa/ScrollController.h: Added new method.
(WebCore::ScrollableArea::pageScaleFactor const):
* platform/cocoa/ScrollController.h:
* platform/cocoa/ScrollController.mm:
(WebCore::ScrollController::adjustScrollDestinationForDirectionalSnapping): Added.
* platform/mac/ScrollAnimatorMac.h:
* platform/mac/ScrollAnimatorMac.mm:
(WebCore::ScrollAnimatorMac::scroll): Use new positionFromStep helper.

LayoutTests:

* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-with-keyboard-expected.txt: Added.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-with-keyboard-scaled-expected.txt: Added.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-with-keyboard-scaled.html: Added.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-with-keyboard.html: Added.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-with-keyboard-expected.txt: Added.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-with-keyboard-scaled-expected.txt: Added.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-with-keyboard-scaled.html: Added.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-with-keyboard.html: Added.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-horizontal-with-keyboard-expected.txt: Added.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-horizontal-with-keyboard.html: Added.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-vertical-with-keyboard-expected.txt: Added.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-vertical-with-keyboard.html: Added.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-rtl-with-keyboard-expected.txt: Added.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-rtl-with-keyboard.html: Added.

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

23 months ago[Web Animations] Implied keyframes should not account for animations on siblings
graouts@webkit.org [Tue, 15 Dec 2020 14:14:20 +0000 (14:14 +0000)]
[Web Animations] Implied keyframes should not account for animations on siblings
https://bugs.webkit.org/show_bug.cgi?id=188050
<rdar://problem/71330806>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Record 212 new PASS results thanks to no longer using shared style from a sibling when animating
elements with implied keyframes.

* web-platform-tests/css/css-align/animation/column-gap-interpolation-expected.txt:
* web-platform-tests/css/css-align/animation/row-gap-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/background-color-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/background-image-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/background-position-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/background-position-x-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/background-position-y-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/background-size-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-color-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-radius-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-width-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/box-shadow-interpolation-expected.txt:
* web-platform-tests/css/css-box/animation/margin-interpolation-expected.txt:
* web-platform-tests/css/css-box/animation/padding-interpolation-expected.txt:
* web-platform-tests/css/css-color/animation/color-interpolation-expected.txt:
* web-platform-tests/css/css-color/animation/opacity-interpolation-expected.txt:
* web-platform-tests/css/css-flexbox/animation/flex-basis-interpolation-expected.txt:
* web-platform-tests/css/css-flexbox/animation/flex-grow-interpolation-expected.txt:
* web-platform-tests/css/css-flexbox/animation/flex-shrink-interpolation-expected.txt:
* web-platform-tests/css/css-flexbox/animation/order-interpolation-expected.txt:
* web-platform-tests/css/css-fonts/animations/font-size-interpolation-001-expected.txt:
* web-platform-tests/css/css-fonts/animations/font-stretch-interpolation-expected.txt:
* web-platform-tests/css/css-fonts/animations/font-variation-settings-interpolation-expected.txt:
* web-platform-tests/css/css-lists/animations/list-style-image-interpolation-expected.txt:
* web-platform-tests/css/css-multicol/animation/column-count-interpolation-expected.txt:
* web-platform-tests/css/css-multicol/animation/column-rule-color-interpolation-expected.txt:
* web-platform-tests/css/css-multicol/animation/column-width-interpolation-expected.txt:
* web-platform-tests/css/css-position/animations/bottom-interpolation-expected.txt:
* web-platform-tests/css/css-position/animations/left-interpolation-expected.txt:
* web-platform-tests/css/css-position/animations/right-interpolation-expected.txt:
* web-platform-tests/css/css-position/animations/top-interpolation-expected.txt:
* web-platform-tests/css/css-shapes/animation/shape-image-threshold-interpolation-expected.txt:
* web-platform-tests/css/css-shapes/animation/shape-margin-interpolation-expected.txt:
* web-platform-tests/css/css-shapes/animation/shape-outside-interpolation-expected.txt:
* web-platform-tests/css/css-sizing/animation/height-interpolation-expected.txt:
* web-platform-tests/css/css-sizing/animation/max-height-interpolation-expected.txt:
* web-platform-tests/css/css-sizing/animation/max-width-interpolation-expected.txt:
* web-platform-tests/css/css-sizing/animation/min-height-interpolation-expected.txt:
* web-platform-tests/css/css-sizing/animation/min-width-interpolation-expected.txt:
* web-platform-tests/css/css-sizing/animation/width-interpolation-expected.txt:
* web-platform-tests/css/css-text/animations/letter-spacing-interpolation-expected.txt:
* web-platform-tests/css/css-text/animations/text-indent-interpolation-expected.txt:
* web-platform-tests/css/css-text/animations/word-spacing-interpolation-expected.txt:
* web-platform-tests/css/css-transforms/animation/perspective-interpolation-expected.txt:
* web-platform-tests/css/css-transforms/animation/rotate-interpolation-expected.txt:
* web-platform-tests/css/css-transforms/animation/scale-interpolation-expected.txt:
* web-platform-tests/css/css-transforms/animation/transform-interpolation-006-expected.txt:
* web-platform-tests/css/css-transforms/animation/transform-origin-interpolation-expected.txt:
* web-platform-tests/css/css-transforms/animation/translate-interpolation-expected.txt:
* web-platform-tests/css/css-transitions/animations/text-shadow-interpolation-expected.txt:
* web-platform-tests/css/css-transitions/animations/z-index-interpolation-expected.txt:
* web-platform-tests/css/css-ui/animation/caret-color-interpolation-expected.txt:
* web-platform-tests/css/css-ui/animation/outline-color-interpolation-expected.txt:
* web-platform-tests/css/css-ui/animation/outline-offset-interpolation-expected.txt:
* web-platform-tests/css/css-ui/animation/outline-width-interpolation-expected.txt:

Source/WebCore:

Sibling nodes can share styles, but we need to opt out of this behavior for elements targeted by keyframe effects
that rely on implied keyframes as, otherwise, we end up using another element's style to resolve animations with
implied keyframes.

* animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::hasImplicitKeyframes const):
* animation/KeyframeEffect.h:
* animation/KeyframeEffectStack.cpp:
(WebCore::KeyframeEffectStack::hasEffectWithImplicitKeyframes const):
* animation/KeyframeEffectStack.h:
* style/StyleSharingResolver.cpp:
(WebCore::Style::SharingResolver::resolve):
* style/StyleSharingResolver.h:
* style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::styleForStyleable):
(WebCore::Style::TreeResolver::resolveElement):
(WebCore::Style::TreeResolver::styleForElement): Deleted.
* style/StyleTreeResolver.h:

LayoutTests:

Record new PASS results thanks to no longer using shared style from a sibling when animating
elements with implied keyframes.

* platform/ios/compositing/backing/animate-into-view-expected.txt
* platform/ios/compositing/backing/animate-into-view-with-descendant-expected.txt
* platform/ios/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-width-interpolation-expected.txt
* platform/mac-wk1/imported/w3c/web-platform-tests/css/css-color/animation/opacity-interpolation-expected.txt

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

23 months agoAdd logging for Accessibility::findMatchingObjects.
andresg_22@apple.com [Tue, 15 Dec 2020 13:44:48 +0000 (13:44 +0000)]
Add logging for Accessibility::findMatchingObjects.
https://bugs.webkit.org/show_bug.cgi?id=219883

Reviewed by Chris Fleizach.

No change in functionality, logging code.

- Overloaded << operator for AccessibilitySearchDirection, SearchKey and
SearchCriteria.
- Provided corresponding AXLogger::log overloads.

* accessibility/AXLogger.cpp:
(WebCore::AXLogger::log):
(WebCore::operator<<):
* accessibility/AXLogger.h:
* accessibility/AccessibilityObject.cpp:
(WebCore::Accessibility::appendChildrenToArray):
Moved to the Accessibility namespace.
(WebCore::Accessibility::findMatchingObjects): Added logging.
* accessibility/AccessibilityObjectInterface.h:

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

23 months ago[macOS] Add sandbox parameter for message filter entitlement status
pvollan@apple.com [Tue, 15 Dec 2020 12:53:35 +0000 (12:53 +0000)]
[macOS] Add sandbox parameter for message filter entitlement status
https://bugs.webkit.org/show_bug.cgi?id=219852
<rdar://problem/72145560>

Reviewed by Brent Fulgham.

Add sandbox parameter to determine whether the WebContent process has message filter entitlement.
This parameter will be used in the sandbox to enable message filtering.

* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::initializeSandbox):
* WebProcess/com.apple.WebProcess.sb.in:

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

23 months agogenerate-bundle: don't ignore --no-strip
commit-queue@webkit.org [Tue, 15 Dec 2020 11:31:00 +0000 (11:31 +0000)]
generate-bundle: don't ignore --no-strip
https://bugs.webkit.org/show_bug.cgi?id=219855

Patch by Angelos Oikonomopoulos <angelos@igalia.com> on 2020-12-15
Reviewed by Jonathan Bedard.

* Scripts/generate-bundle:

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

23 months ago[WASM-References] Add support for type annotated select
commit-queue@webkit.org [Tue, 15 Dec 2020 10:17:53 +0000 (10:17 +0000)]
[WASM-References] Add support for type annotated select
https://bugs.webkit.org/show_bug.cgi?id=219595

Patch by Dmitry Bezhetskov <dbezhetskov@igalia.com> on 2020-12-15
Reviewed by Yusuke Suzuki.
JSTests:

Added new harness for testing ref-types proposal because it has
different API with core/spec. However, a few files are actually the
same I decided to repeat them to have an independent copy.
Added ref-types spec's tests for the new type annotated select
instruction:
https://github.com/WebAssembly/reference-types/blob/master/test/core/select.wast.

* wasm.yaml:
* wasm/ref-spec-harness.js: Added.
(import.string_appeared_here.then):
(test):
(promise_test):
(let.assert_unreached):
(let.console.log):
* wasm/ref-spec-harness/async_index.js: Added.
(let.testNum):
(uniqueTest):
(assertThrows):
(externref):
(is_externref):
(is_funcref):
(eq_externref):
(eq_funcref):
(binary):
(module):
(assert_invalid):
(instance):
(exports):
(then.):
(reinitializeRegistry.get promise_test):
(reinitializeRegistry):
(catch):
(assert_exhaustion):
(get const):
* wasm/ref-spec-harness/sync_index.js: Added.
(let.testNum):
(assertThrows):
(_assert):
(ValueResult):
(ErrorResult):
(Result.prototype.isError):
(externref):
(is_externref):
(is_funcref):
(eq_externref):
(eq_funcref):
(reinitializeRegistry.let.handler.get return):
(binary):
(module):
* wasm/ref-spec-harness/wasm-constants.js: Added.
(hostref):
(bytes):
(bytesWithHeader):
(makeSig):
(makeSig_v_x):
(makeSig_v_xx):
(makeSig_r_v):
(makeSig_r_x):
(makeSig_r_xx):
(assertTraps):
(assertWasmThrows):
* wasm/ref-spec-harness/wasm-module-builder.js: Added.
(Binary.prototype.emit_u8):
(Binary.prototype.emit_u16):
(Binary.prototype.emit_u32):
(Binary.prototype.emit_u32v):
(Binary.prototype.emit_bytes):
(Binary.prototype.emit_string):
(Binary.prototype.emit_header):
(Binary.prototype.emit_section):
(Binary):
(WasmFunctionBuilder):
(WasmFunctionBuilder.prototype.exportAs):
(WasmFunctionBuilder.prototype.exportFunc):
(WasmFunctionBuilder.prototype.addBody):
(WasmFunctionBuilder.prototype.addLocals):
(WasmFunctionBuilder.prototype.end):
(WasmGlobalBuilder):
(WasmGlobalBuilder.prototype.exportAs):
(WasmModuleBuilder):
(WasmModuleBuilder.prototype.addStart):
(WasmModuleBuilder.prototype.addMemory):
(WasmModuleBuilder.prototype.addExplicitSection):
(WasmModuleBuilder.prototype.stringToBytes):
(WasmModuleBuilder.prototype.addCustomSection):
(WasmModuleBuilder.prototype.addType):
(WasmModuleBuilder.prototype.addGlobal):
(WasmModuleBuilder.prototype.addFunction):
(WasmModuleBuilder.prototype.addImport):
(WasmModuleBuilder.prototype.addImportedGlobal):
(WasmModuleBuilder.prototype.addImportedMemory):
(WasmModuleBuilder.prototype.addImportedTable):
(WasmModuleBuilder.prototype.addExport):
(WasmModuleBuilder.prototype.addExportOfKind):
(WasmModuleBuilder.prototype.addDataSegment):
(WasmModuleBuilder.prototype.exportMemoryAs):
(WasmModuleBuilder.prototype.addFunctionTableInit):
(WasmModuleBuilder.prototype.appendToTable):
(WasmModuleBuilder.prototype.setFunctionTableLength):
(WasmModuleBuilder.prototype.toArray):
(WasmModuleBuilder.prototype.toBuffer):
(WasmModuleBuilder.prototype.instantiate):
* wasm/ref-spec-harness/wast.js: Added.
(normalize):
(require.else._registry.name):
(require):
(add_hex_char):
(add_char):
(string_with):
(list_of_opt):
(break_bytes.f):
(break_bytes):
(f):
(decls):
(func_type):
(limits):
(global_type):
(testop):
(relop):
(unop):
(binop):
(cvtop):
(oper):
(mem_size):
(extension):
(memop):
(storeop):
(var):
(constop):
(instr.else.switch.case.0.f):
(instr.else.switch.case.1.f.1):
(instr.else.switch.case.2.f.2):
(instr):
(func_with_name):
(func):
(start):
(table):
(memory):
(segment):
(elems):
(data):
(typedef):
(import_kind):
(import):
(export_kind):
(export):
(var_opt):
(is_func_import):
(is_table_import):
(is_memory_import):
(is_global_import):
(f.1):
(f.2):
(f.3):
(module_with_var_opt):
(module_):
(literal):
(definition):
(access):
(action):
(script):
(_registry.string_appeared_here):
(init):
(make_matrix):
(copy):
(append):
(sub):
(fill):
(blit):
(iter):
(map):
(iteri):
(mapi):
(to_list):
(list_length):
(of_list):
(fold_left):
(fold_right):
(maxson):
(trickle):
(bubble):
(trickleup):
(sort):
(merge):
(isortto):
(sortto):
(stable_sort):
(import_type):
(export_type):
(dims.n):
(dims.d.i):
(dims):
(map_file):
(create):
(of_array):
(slice_left):
(slice_right):
(slice_left_1):
(slice_right_1):
(slice_left_2):
(slice_right_2):
(array1_of_genarray):
(array2_of_genarray):
(array3_of_genarray):
(reshape_1):
(reshape_2):
(reshape_3):
(reshape):
(__):
(contents):
(to_bytes):
(nth):
(length):
(clear):
(reset):
(resize):
(add_substring):
(add_subbytes):
(add_string):
(add_bytes):
(add_buffer):
(add_channel):
(output_buffer):
(closing):
(advance_to_closing):
(advance_to_non_alpha):
(find_ident):
(add_substitute):
(make):
(to_string):
(of_string):
(sub_string):
(extend):
(blit_string):
(concat):
(cat):
(is_space):
(trim):
(escaped):
(uppercase):
(lowercase):
(apply1):
(capitalize):
(uncapitalize):
(index_rec):
(index):
(index_from):
(rindex_rec):
(rindex):
(rindex_from):
(contains_from):
(contains):
(rcontains_from):
(caml_array_sub):
(len):
(caml_array_concat):
(caml_make_vect):
(caml_array_blit):
(get if):
(caml_set_oo_id):
(get_id):
(caml_int32_float_of_bits):
(caml_int32_bits_of_float):
(caml_classify_float):
(caml_modf_float):
(caml_ldexp_float):
(caml_frexp_float):
(caml_copysign_float):
(caml_expm1_float):
(caml_hypot_float):
(caml_log10_float):
(caml_failwith):
(parse_digit):
(int_of_string_base):
(parse_sign_and_base):
(caml_int_of_string.aux):
(caml_int_of_string):
(caml_int64_of_string.aux):
(caml_int64_of_string):
(int_of_base):
(parse_format):
(finish_formatting):
(caml_format_int):
(caml_int64_format):
(caml_format_float):
(float_of_string):
(div):
(mod_):
(caml_bswap16):
(caml_int32_bswap):
(imul):
(neg_signed):
(not):
(eq):
(neg):
(lsl_):
(lsr_):
(asr_):
(is_zero):
(mul):
(swap):
(xor):
(or_):
(and_):
(ge):
(lt):
(gt):
(le):
(to_float):
(of_float):
(div_mod):
(compare):
(of_int32):
(to_int32):
(to_hex.aux):
(to_hex):
(discard_sign):
(float_of_bits):
(bits_of_float.to_nat):
(bits_of_float):
(get64):
(erase_rel):
(concat_fmtty):
(concat_fmt):
(create_char_set):
(add_in_char_set):
(rev_char_set):
(is_in_char_set):
(prec_of_prec_opt):
(param_format_of_ignored_format):
(buffer_check_size):
(buffer_add_char):
(buffer_add_string):
(buffer_contents):
(char_of_iconv):
(char_of_fconv):
(char_of_counter):
(print_char):
(set while.set var):
(set while.set else):
(set var):
(set else):
(set print_char):
(set if):
(bprint_padty):
(bprint_ignored_flag):
(bprint_pad_opt):
(bprint_padding):
(bprint_precision):
(bprint_iconv_flag):
(bprint_int_fmt):
(bprint_altint_fmt):
(bprint_fconv_flag):
(bprint_float_fmt):
(string_of_formatting_lit):
(string_of_formatting_gen):
(bprint_char_literal):
(bprint_string_literal):
(bprint_fmtty):
(int_of_custom_arity):
(bprint_fmt):
(string_of_fmt):
(symm):
(fmtty_rel_det):
(trans):
(fmtty_of_formatting_gen):
(fmtty_of_fmt):
(fmtty_of_custom):
(fmtty_of_padding_fmtty):
(fmtty_of_precision_fmtty):
(type_padding):
(type_padprec):
(type_ignored_param_one):
(type_format_gen):
(type_ignored_format_substitution):
(type_format):
(recast):
(fix_padding):
(fix_int_precision):
(string_to_caml_string):
(format_of_iconv):
(format_of_aconv):
(format_of_fconv):
(convert_int):
(convert_int32):
(convert_nativeint):
(convert_int64):
(else.is_valid):
(convert_float):
(format_caml_char):
(string_of_fmtty):
(else.switch.):
(else.switch.k.prime):
(else.switch.else.):
(else.switch.else.k.prime.1):
(make_printf):
(make_from_fmtty):
(make_invalid_arg):
(make_string_padding):
(make_int_padding_precision):
(make_custom):
(output_acc):
(bufput_acc):
(strput_acc):
(failwith_message.k):
(failwith_message):
(open_box_of_string.else.invalid_box):
(open_box_of_string.else.parse_spaces):
(open_box_of_string.else.parse_lword):
(open_box_of_string.else.parse_int):
(open_box_of_string):
(make_padding_fmt_ebb):
(make_precision_fmt_ebb):
(make_padprec_fmt_ebb):
(invalid_format_message):
(invalid_format_without):
(expected_character):
(compute_int_conv):
(incompatible_flag):
(parse_positive):
(parse_conv):
(parse_after_precision):
(else.parse_literal):
(parse_after_padding):
(parse_literal):
(parse_after_at):
(add_literal):
(parse_spaces):
(parse_integer):
(compute_float_conv):
(search_subformat_end):
(check_no_0):
(opt_of_pad):
(get_prec_opt):
(else.switch.case.99.char_format):
(else.switch.scan_format):
(parse_conversion):
(set_flag):
(parse_flags):
(is_int_base):
(counter_of_char):
(add_range):
(fail_single_percent):
(parse_char_set_after_char):
(parse_char_set_content):
(parse_char_set_start):
(parse_char_set):
(check_open_box):
(parse_tag):
(fmt_ebb_of_string):
(format_of_string_fmtty):
(format_of_string_format):
(caret):
(caml_ml_open_descriptor_in):
(caml_ml_open_descriptor_out):
(caml_ml_flush):
(node_std_output):
(caml_ml_output_char):
(caml_ml_input):
(caml_ml_input_char):
(caml_ml_out_channels_list):
(fail):
(caml_lex_array):
(caml_lex_engine):
(caml_lex_run_mem):
(caml_lex_run_tag):
(caml_new_lex_engine):
(caml_obj_dup):
(caml_obj_truncate):
(caml_lazy_make_forward):
(caml_update_dummy):
(caml_int_compare):
(caml_compare):
(caml_equal):
(caml_notequal):
(caml_greaterequal):
(caml_lessequal):
(else.aux):
(caml_get_public_method):
(caml_parse_engine):
(caml_set_parser_trace):
(js_string_of_char):
(caml_string_get):
(caml_create_string):
(caml_string_compare):
(caml_fill_string):
(caml_blit_string):
(caml_blit_bytes):
(bytes_of_string):
(bytes_to_string):
(caml_string_of_char_array):
(caml_is_printable):
(caml_string_get16):
(caml_string_get32):
(repeat):
(chr):
(app):
(js):
(curry_1):
(_1):
(js1):
(__1):
(curry_2):
(_2):
(js2):
(__2):
(curry_3):
(_3):
(js3):
(__3):
(curry_4):
(_4):
(js4):
(__4):
(curry_5):
(_5):
(js5):
(__5):
(curry_6):
(_6):
(js6):
(__6):
(curry_7):
(_7):
(js7):
(__7):
(curry_8):
(_8):
(js8):
(__8):
(stream):
(eos):
(skip):
(read):
(peek):
(string_of_byte):
(position):
(region):
(error):
(guard):
(get 1):
(get expect):
(get illegal):
(at):
(u32):
(u64):
(get require):
(vuN):
(get var):
(vsN):
(vu32):
(vs32):
(vs64):
(f32):
(f64):
(len32):
(string):
(opt):
(vec):
(sized):
(value_type):
(elem_type):
(stack_type):
(table_type):
(memory_type):
(mutability.get if):
(mutability):
(instr.get if):
(instr_block):
(const):
(id):
(section):
(type_section):
(import_kind.get if):
(import_section):
(func_section):
(table_section):
(memory_section):
(global):
(global_section):
(export_kind.get if):
(export_section):
(start_section):
(local):
(code):
(code_section):
(table_segment):
(elem_section):
(memory_segment):
(data_section):
(partial_arg.1):
(custom):
(custom_section):
(iterate):
(decode):
(patch):
(encode.u8):
(encode.u16):
(encode.u32):
(encode.vu64):
(encode.vs64):
(encode.vu32):
(encode.len):
(encode.bool):
(encode.string):
(encode.vec):
(encode.gap32):
(encode.patch_gap32):
(encode.value_type):
(encode.stack_type):
(encode.func_type):
(encode.limits):
(encode.table_type):
(encode.memory_type):
(encode.global_type):
(encode.memop):
(encode):
(encode.instr):
(encode.const):
(encode.section):
(encode.type_section):
(encode.import):
(encode.import_section):
(encode.func):
(encode.func_section):
(encode.table):
(encode.table_section):
(encode.memory):
(encode.memory_section):
(encode.global):
(encode.global_section):
(encode.export_kind):
(encode.export):
(encode.export_section):
(encode.start_section):
(encode.combine):
(encode.compress):
(encode.local):
(encode.code):
(encode.code_section):
(encode.segment):
(encode.table_segment):
(encode.elem_section):
(encode.memory_segment):
(encode.module_):
(Make.warn):
(Make.error):
(Make):
(print_nan_significand_digits):
(Make.of_bits):
(Make.to_bits):
(Make.is_nan):
(Make.canonicalize_nan):
(Make.determine_binary_nan):
(Make.determine_unary_nan):
(Make.binary):
(Make.unary):
(Make.add):
(Make.sub):
(Make.mul):
(Make.div):
(Make.sqrt):
(Make.ceil):
(Make.floor):
(Make.trunc):
(Make.nearest):
(Make.min):
(Make.max):
(Make.abs):
(Make.neg):
(Make.copysign):
(Make.eq):
(Make.ne):
(Make.lt):
(Make.gt):
(Make.le):
(Make.ge):
(Make.of_signless_string):
(Make.of_string):
(Make.to_string):
(add_queue):
(peek_queue):
(take_queue):
(pp_enqueue):
(pp_clear_queue):
(pp_output_string):
(break_new_line):
(break_same_line):
(pp_force_break_line):
(switch.add_tab):
(else.switch.find):
(format_pp_token):
(advance_left):
(enqueue_advance):
(enqueue_string_as):
(set_size):
(scan_push):
(pp_open_box_gen):
(pp_close_box):
(pp_open_tag):
(pp_close_tag):
(pp_set_print_tags):
(pp_set_mark_tags):
(pp_get_print_tags):
(pp_get_mark_tags):
(pp_set_tags):
(pp_get_formatter_tag_functions):
(pp_set_formatter_tag_functions):
(pp_rinit):
(pp_flush_queue):
(pp_print_as_size):
(pp_print_string):
(pp_print_int):
(pp_print_float):
(pp_print_bool):
(pp_open_hbox):
(pp_open_vbox):
(pp_open_hvbox):
(pp_open_hovbox):
(pp_open_box):
(pp_print_newline):
(pp_print_flush):
(pp_force_newline):
(pp_print_if_newline):
(pp_print_break):
(pp_print_space):
(pp_print_cut):
(pp_open_tbox):
(pp_close_tbox):
(pp_print_tbreak):
(pp_print_tab):
(pp_set_tab):
(pp_print_list):
(flush):
(pp_print_text):
(pp_set_max_boxes):
(pp_get_max_boxes):
(pp_over_max_boxes):
(pp_get_ellipsis_text):
(pp_limit):
(pp_set_max_indent):
(pp_get_max_indent):
(pp_set_margin):
(pp_get_margin):
(pp_set_formatter_out_functions):
(pp_get_formatter_out_functions):
(pp_set_formatter_output_functions):
(pp_get_formatter_output_functions):
(pp_set_all_formatter_output_functions):
(pp_get_all_formatter_output_functions):
(display_newline):
(display_blanks):
(state.16):
(state.17):
(state.18):
(state.19):
(pp_set_formatter_out_channel):
(default_pp_mark_open_tag):
(default_pp_mark_close_tag):
(default_pp_print_open_tag):
(default_pp_print_close_tag):
(pp_make_formatter):
(ppf.18):
(ppf.19):
(make_formatter):
(formatter_of_out_channel):
(formatter_of_buffer):
(flush_str_formatter):
(flush_buf_formatter):
(open_hbox):
(open_vbox):
(open_hvbox):
(open_hovbox):
(open_box):
(close_box):
(open_tag):
(close_tag):
(print_as):
(print_string):
(print_int):
(print_float):
(print_bool):
(print_cut):
(print_space):
(force_newline):
(print_flush):
(print_newline):
(print_if_newline):
(open_tbox):
(close_tbox):
(print_tbreak):
(set_tab):
(print_tab):
(set_margin):
(get_margin):
(set_max_indent):
(get_max_indent):
(set_max_boxes):
(get_max_boxes):
(over_max_boxes):
(set_ellipsis_text):
(get_ellipsis_text):
(set_formatter_out_channel):
(set_formatter_out_functions):
(get_formatter_out_functions):
(set_formatter_output_functions):
(get_formatter_output_functions):
(set_all_formatter_output_functions):
(get_all_formatter_output_functions):
(set_formatter_tag_functions):
(get_formatter_tag_functions):
(set_print_tags):
(get_print_tags):
(set_mark_tags):
(get_mark_tags):
(set_tags):
(compute_tag):
(output_formatting_lit):
(kfprintf):
(ikfprintf):
(fprintf):
(ifprintf):
(printf):
(eprintf):
(k.prime):
(ksprintf):
(sprintf):
(asprintf.k.prime):
(asprintf):
(k):
(bprintf):
(succ):
(pred):
(abs):
(lognot):
(Make.cmp_u):
(Make.divrem_u):
(Make.div_s):
(Make.div_u):
(Make.rem_s):
(Make.rem_u):
(Make.shift):
(Make.shl):
(Make.shr_s):
(Make.shr_u):
(Make.clamp_rotate_count):
(Make.rotl):
(Make.rotr):
(Make.loop):
(Make.clz):
(Make.ctz):
(Make.popcnt):
(Make.eqz):
(Make.lt_u):
(Make.le_u):
(Make.gt_u):
(Make.ge_u):
(Make.of_int_u):
(Make.to_string_u):
(Make.require):
(Make.dec_digit):
(Make.hex_digit):
(Make.parse_int):
(Make.of_string_s):
(Make.of_string_u):
(convert_pos):
(error_nest):
(text):
(intop):
(floatop):
(numop):
(memsz):
(ext):
(token.else.switch):
(token.else.switch.):
(token):
(__ocaml_lex_comment_rec):
(engine):
(new_engine):
(from_function):
(from_channel):
(from_string):
(lexeme):
(sub_lexeme):
(sub_lexeme_opt):
(sub_lexeme_char):
(sub_lexeme_char_opt):
(lexeme_char):
(lexeme_start):
(lexeme_end):
(lexeme_start_p):
(lexeme_end_p):
(new_line):
(flush_input):
(take):
(drop):
(last):
(split_last):
(index_of):
(index_of_int32):
(dim):
(set 1):
(get 2):
(log2):
(is_power_of_two):
(loop):
(breakup):
(hd):
(tl):
(rev_append):
(rev):
(flatten):
(rev_map):
(map2):
(rev_map2):
(iter2):
(fold_left2):
(fold_right2):
(for_all):
(exists):
(for_all2):
(exists2):
(mem):
(memq):
(assoc):
(assq):
(mem_assoc):
(mem_assq):
(remove_assoc):
(remove_assq):
(find):
(find_all):
(partition):
(split):
(combine):
(chop):
(rev_sort):
(sort_uniq):
(Make.height):
(Make.create):
(Make.singleton):
(Make.bal):
(Make.is_empty):
(Make.find):
(Make.mem):
(Make.min_binding):
(Make.max_binding):
(Make.remove_min_binding):
(Make.remove):
(Make.iter):
(Make.map):
(Make.mapi):
(Make.fold):
(Make.for_all):
(Make.exists):
(Make.add_min_binding):
(Make.add_max_binding):
(Make.join):
(Make.concat):
(Make.concat_or_join):
(Make.split):
(Make.merge):
(Make.filter):
(Make.partition):
(Make.cons_enum):
(Make.compare):
(Make.equal):
(Make.cardinal):
(Make.bindings_aux):
(Make.bindings):
(double_field):
(set_double_field):
(marshal):
(unmarshal):
(extension_slot):
(extension_name):
(extension_id):
(i32_const):
(i64_const):
(f32_const):
(f64_const):
(block):
(br):
(br_if):
(br_table):
(if_):
(call):
(call_indirect):
(get_local):
(set_local):
(tee_local):
(get_global):
(set_global):
(i32_load):
(i64_load):
(f32_load):
(f64_load):
(i32_load8_s):
(i32_load8_u):
(i32_load16_s):
(i32_load16_u):
(i64_load8_s):
(i64_load8_u):
(i64_load16_s):
(i64_load16_u):
(i64_load32_s):
(i64_load32_u):
(i32_store):
(i64_store):
(f32_store):
(f64_store):
(i32_store8):
(i32_store16):
(i64_store8):
(i64_store16):
(i64_store32):
(parse):
(string_to):
(string_to_script):
(string_to_module):
(parse_error):
(position_to_pos):
(positions_to_region):
(ati):
(nat):
(nat32):
(empty_context):
(enter_func):
(type_):
(lookup):
(label):
(anon_type):
(bind):
(bind_func):
(bind_local):
(bind_global):
(bind_table):
(bind_memory):
(anon):
(anon_func):
(anon_locals):
(anon_global):
(anon_table):
(anon_memory):
(anon_label):
(explicit_sig):
(inline_type):
(yyact):
(script1):
(module1):
(grow_stacks):
(clear_parser):
(current_lookahead_fun):
(catch.else.current_lookahead_fun.0):
(yyparse):
(peek_val):
(symbol_start_pos):
(symbol_end_pos):
(rhs_start_pos):
(rhs_end_pos):
(symbol_start):
(symbol_end):
(rhs_start):
(rhs_end):
(is_current_lookahead):
(failwith):
(invalid_arg):
(min):
(max):
(lnot):
(char_of_int):
(string_of_bool):
(bool_of_string):
(string_of_int):
(valid_float_lexem):
(string_of_float):
(open_out_gen):
(open_out):
(open_out_bin):
(flush_all):
(output_bytes):
(output_string):
(output):
(output_substring):
(output_value):
(close_out):
(close_out_noerr):
(open_in_gen):
(open_in):
(open_in_bin):
(input):
(else.r):
(unsafe_really_input):
(really_input):
(really_input_string):
(input_line.build_result):
(input_line.n):
(input_line.scan):
(input_line):
(close_in_noerr):
(print_bytes):
(print_endline):
(prerr_char):
(prerr_string):
(prerr_bytes):
(prerr_int):
(prerr_float):
(prerr_endline):
(prerr_newline):
(read_line):
(read_int):
(read_float):
(string_of_format):
(at_exit.exit_function.0):
(at_exit):
(do_at_exit):
(exit):
(output_binary_int):
(seek_out):
(pos_out):
(out_channel_length):
(set_binary_mode_out):
(input_binary_int):
(input_value):
(seek_in):
(pos_in):
(in_channel_length):
(close_in):
(set_binary_mode_in):
(LargeFile_000):
(LargeFile_001):
(LargeFile_002):
(LargeFile_003):
(LargeFile_004):
(LargeFile_005):
(kbprintf):
(plus):
(pp):
(print):
(string_of_pos):
(string_of_region):
(escaped.needs_escape):
(set_signal):
(catch_break):
(size):
(string_of_value_type):
(string_of_value_types):
(string_of_elem_type):
(string_of_limits):
(string_of_table_type):
(string_of_global_type):
(string_of_stack_type):
(string_of_func_type):
(type_of):
(default_value):
(value_of_bool):
(string_of_values):
(to_value):
(of_value):
(g):
(binary):
(bytes):
* wasm/references-spec-tests/select.wast.js: Added.
* wasm/references/table_instructions_parse_unreachable.js:
(invalidAnnotatedSelectUnreachable):
* wasm/wasm.json:

Source/JavaScriptCore:

Add support for typed select instruction from ref-types proposal:
select t : [t t i32] -> [t].
The annotated select instruction takes a value type immediate to deduce result type of select expression.
This version of select will help us with subtyping in the future where we want to avoid computing lubs.
For more information see:
https://github.com/WebAssembly/reference-types/issues/125,
https://webassembly.github.io/reference-types/core/binary/instructions.html#parametric-instructions.

* wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::parseAnnotatedSelectImmediates):
(JSC::Wasm::FunctionParser<Context>::parseExpression):
(JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):
* wasm/wasm.json:

Tools:

Add support for testing ref-types.

* Scripts/run-jsc-stress-tests:

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

23 months ago[CMake][WPE] Remove unconditional WebCore dependency to WPEBackend-FDO
commit-queue@webkit.org [Tue, 15 Dec 2020 10:14:21 +0000 (10:14 +0000)]
[CMake][WPE] Remove unconditional WebCore dependency to WPEBackend-FDO
https://bugs.webkit.org/show_bug.cgi?id=219835

Patch by Philippe Normand <pnormand@igalia.com> on 2020-12-15
Reviewed by Yusuke Suzuki.

* PlatformWPE.cmake: The WPEBackend-FDO dependency should be enabled only when client-side
video or audio rendering is enabled.

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

23 months ago[SOUP] WebSockets: wrong data sent in some cases with libsoup < 2.68
commit-queue@webkit.org [Tue, 15 Dec 2020 09:15:17 +0000 (09:15 +0000)]
[SOUP] WebSockets: wrong data sent in some cases with libsoup < 2.68
https://bugs.webkit.org/show_bug.cgi?id=219850

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2020-12-15
Reviewed by Michael Catanzaro.

We are using soup_websocket_connection_send_text() when libsoup < 2.68, which expects a null terminated string,
but we are receiving a IPC::DataReference that needs to be converted to a null terminated string by taking into
account its size.

* NetworkProcess/soup/WebSocketTaskSoup.cpp:
(WebKit::WebSocketTask::sendString):

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

23 months ago[GLIB] Unreviewed test gardening. Gardened several flaky failures.
dpino@igalia.com [Tue, 15 Dec 2020 07:06:32 +0000 (07:06 +0000)]
[GLIB] Unreviewed test gardening. Gardened several flaky failures.

* platform/glib/TestExpectations:
* platform/glib/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-network-error.sub-expected.txt: Added.
* platform/gtk/TestExpectations:
* platform/wpe/TestExpectations:

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

23 months agoAX: implement prefers-contrast: more
cfleizach@apple.com [Tue, 15 Dec 2020 06:28:57 +0000 (06:28 +0000)]
AX: implement prefers-contrast: more
https://bugs.webkit.org/show_bug.cgi?id=215507
<rdar://problem/67077492>

Reviewed by Dean Jackson.

Source/WebCore:

Implement prefers-contrast as defined in
https://drafts.csswg.org/mediaqueries-5/#prefers-contrast

Tests: fast/media/mq-prefers-contrast-forced-value.html
       fast/media/mq-prefers-contrast-live-update-for-listener.html
       fast/media/mq-prefers-contrast-live-update.html
       fast/media/mq-prefers-contrast-matchMedia.html
       fast/media/mq-prefers-contrast.html

* css/CSSValueKeywords.in:
* css/MediaFeatureNames.h:
* css/MediaQueryEvaluator.cpp:
(WebCore::isAccessibilitySettingsDependent):
(WebCore::prefersContrastEvaluate):
* css/MediaQueryExpression.cpp:
(WebCore::featureWithValidIdent):
(WebCore::isFeatureValidWithoutValue):
* page/Settings.yaml:
* platform/Theme.cpp:
(WebCore::Theme::userPrefersContrast const):
* platform/Theme.h:
* platform/ios/ThemeIOS.h:
* platform/ios/ThemeIOS.mm:
(WebCore::ThemeIOS::userPrefersContrast const):
* platform/mac/ThemeMac.h:
* platform/mac/ThemeMac.mm:
(WebCore::ThemeMac::userPrefersContrast const):
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::forcedPrefersContrastAccessibilityValue const):
(WebCore::InternalSettings::setForcedPrefersContrastAccessibilityValue):
* testing/InternalSettings.h:
* testing/InternalSettings.idl:
* testing/Internals.cpp:
(WebCore::Internals::userPrefersContrast const):
* testing/Internals.h:
* testing/Internals.idl:
* testing/Internals.mm:
(WebCore::Internals::userPrefersContrast const):

Source/WebCore/PAL:

* pal/ios/UIKitSoftLink.h:

LayoutTests:

* TestExpectations:
* fast/media/mq-prefers-contrast-forced-value.html: Added.
* fast/media/mq-prefers-contrast-live-update-for-listener-expected.txt: Added.
* fast/media/mq-prefers-contrast-live-update-for-listener.html: Added.
* fast/media/mq-prefers-contrast-live-update.html: Added.
* fast/media/mq-prefers-contrast-matchMedia-expected.html: Added.
* fast/media/mq-prefers-contrast-matchMedia.html: Added.
* fast/media/mq-prefers-contrast.html: Added.
* platform/ios-simulator/fast/media/mq-prefers-contrast-expected.html: Added.
* platform/ios-simulator/fast/media/mq-prefers-contrast-forced-value-expected.html: Added.
* platform/ios-simulator/fast/media/mq-prefers-contrast-live-update-expected.html: Added.
* platform/ios-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations:
* platform/mac/fast/media/mq-prefers-contrast-expected.html: Added.
* platform/mac/fast/media/mq-prefers-contrast-forced-value-expected.html: Added.
* platform/mac/fast/media/mq-prefers-contrast-live-update-expected.html: Added.

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

23 months ago[GLIB] Unreviewed test gardening. Update baseline after r270801.
dpino@igalia.com [Tue, 15 Dec 2020 06:16:26 +0000 (06:16 +0000)]
[GLIB] Unreviewed test gardening. Update baseline after r270801.

* platform/glib/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-computed-value-expected.txt:

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

23 months ago[Media in GPU Process][MSE] VP9 stream playback is not smooth
peng.liu6@apple.com [Tue, 15 Dec 2020 03:08:39 +0000 (03:08 +0000)]
[Media in GPU Process][MSE] VP9 stream playback is not smooth
https://bugs.webkit.org/show_bug.cgi?id=219861

Reviewed by Eric Carlson.

Source/WebCore:

Change two methods of `MediaSourcePrivate` to virtual so that we can implement them
in `MediaSourcePrivateRemote` with IPC messages.

* platform/graphics/MediaSourcePrivate.h:
(WebCore::MediaSourcePrivate::setIsSeeking):
(WebCore::MediaSourcePrivate::setTimeFudgeFactor):
(WebCore::MediaSourcePrivate::timeFudgeFactor const):

Source/WebKit:

Add two new IPC messages in `RemoteMediaSourceProxy` to set `m_isSeeking` and
`m_timeFudgeFactor` of the `MediaSourcePrivate` running in the GPU process.

* GPUProcess/media/RemoteMediaSourceProxy.cpp:
(WebKit::RemoteMediaSourceProxy::setIsSeeking):
(WebKit::RemoteMediaSourceProxy::setTimeFudgeFactor):
* GPUProcess/media/RemoteMediaSourceProxy.h:
* GPUProcess/media/RemoteMediaSourceProxy.messages.in:
* WebProcess/GPU/media/MediaSourcePrivateRemote.cpp:
(WebKit::MediaSourcePrivateRemote::setIsSeeking):
(WebKit::MediaSourcePrivateRemote::setTimeFudgeFactor):
* WebProcess/GPU/media/MediaSourcePrivateRemote.h:

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

23 months agoGet more informatiton from assertion when uidna_openUTS46 fails
commit-queue@webkit.org [Tue, 15 Dec 2020 02:58:56 +0000 (02:58 +0000)]
Get more informatiton from assertion when uidna_openUTS46 fails
https://bugs.webkit.org/show_bug.cgi?id=219881

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-14
Reviewed by Alexey Proskuryakov.

<rdar://problem/66988046> shows that this fails sometimes.
Updating the assertion should let me know more information.

* wtf/URLParser.cpp:
(WTF::URLParser::internationalDomainNameTranscoder):

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

23 months ago[Mac] MediaFormatReader.bundle fails to load in WebKitTestRunner
aestes@apple.com [Tue, 15 Dec 2020 01:16:43 +0000 (01:16 +0000)]
[Mac] MediaFormatReader.bundle fails to load in WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=219879

Reviewed by Eric Carlson.

* WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
(WTR::InjectedBundle::platformInitialize): Tell CoreMedia to allow unsigned format reader
plug-ins when running in WebKitTestRunner. This resolves test timeouts under
LayoutTests/webgl/2.0.0/.

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

23 months agoREGRESSION (r270677-r270693): Catalina Perf tests failing
pvollan@apple.com [Tue, 15 Dec 2020 01:01:00 +0000 (01:01 +0000)]
REGRESSION (r270677-r270693): Catalina Perf tests failing
https://bugs.webkit.org/show_bug.cgi?id=219802
<rdar://problem/72236108>

Reviewed by Brent Fulgham.

Create extension for RootDomainUserClient also for Intel Macs, and move logging rules outside of
HAVE(SANDBOX_MESSAGE_FILTERING) section in sandbox.

* UIProcess/WebPageProxy.cpp:
(WebKit::mediaRelatedIOKitClasses):
* WebProcess/com.apple.WebProcess.sb.in:

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

23 months agoFix null dereference in WKURLCopyCFURL
commit-queue@webkit.org [Tue, 15 Dec 2020 01:00:22 +0000 (01:00 +0000)]
Fix null dereference in WKURLCopyCFURL
https://bugs.webkit.org/show_bug.cgi?id=219877
<rdar://problem/48921304>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-14
Reviewed by Geoffrey Garen.

We had an optimistic assertion and crash reports indicating that it is not always true.
When it's not, return null instead of crashing.

* Shared/API/c/cf/WKURLCF.mm:
(WKURLCopyCFURL):

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

23 months agoREGRESSION (r268604): fast/layoutformattingcontext/table-basic-row-vertical-align...
simon.fraser@apple.com [Tue, 15 Dec 2020 00:19:29 +0000 (00:19 +0000)]
REGRESSION (r268604): fast/layoutformattingcontext/table-basic-row-vertical-align-baseline.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=219369
<rdar://problem/69985187>

Reviewed by Zalan Bujtas.

During TestController::resetStateToConsistentValues() there are lots of calls to
WebPage::preferencesDidChange() via the async IPC, and for some of those calls both
layoutFormattingContextIntegrationEnabled and layoutFormattingContextEnabled are true. If
Display::view() does a paint at that time, then we hit assertions because these
two settings are incompatible with eachother.

Fix by bailing from display if layoutFormattingContextIntegrationEnabled() is set.

* display/DisplayView.cpp:
(WebCore::Display::View::prepareForDisplay):

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

23 months agoUnreviewed, reverting r270768.
cdumez@apple.com [Tue, 15 Dec 2020 00:14:11 +0000 (00:14 +0000)]
Unreviewed, reverting r270768.

Still crashes in debug in a different location

Reverted changeset:

"[GPUProcess] Crash under
AudioDestinationCocoa::setIsPlaying(bool)"
https://bugs.webkit.org/show_bug.cgi?id=219809
https://trac.webkit.org/changeset/270768

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

23 months ago[Media in GPU Process][MSE] Fix crashes in a debug build
peng.liu6@apple.com [Tue, 15 Dec 2020 00:12:40 +0000 (00:12 +0000)]
[Media in GPU Process][MSE] Fix crashes in a debug build
https://bugs.webkit.org/show_bug.cgi?id=219874

Reviewed by Eric Carlson.

Source/WebCore:

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::readyStateChanged):
(WebCore::SourceBuffer::audioTracks):
(WebCore::SourceBuffer::textTracks):
(WebCore::SourceBuffer::appendError):
(WebCore::SourceBuffer::trySignalAllSamplesEnqueued):
(WebCore::SourceBuffer::sourceBufferPrivateDurationChanged):
(WebCore::SourceBuffer::sourceBufferPrivateStreamEndedWithDecodeError):
Only use m_source when the pointer is valid.

* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::abort):
SourceBufferParser::invalidate() may crash if the parser is parsing data.

Source/WebKit:

We need to call the completion handler in error cases.

* GPUProcess/media/RemoteSourceBufferProxy.cpp:
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidReceiveInitializationSegment):
* WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:
(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateDidReceiveInitializationSegment):

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

23 months ago[GPUProcess] Bump QoS to UserInteractive for real-time audio rendering thread
cdumez@apple.com [Mon, 14 Dec 2020 23:44:32 +0000 (23:44 +0000)]
[GPUProcess] Bump QoS to UserInteractive for real-time audio rendering thread
https://bugs.webkit.org/show_bug.cgi?id=219873

Reviewed by Eric Carlson.

Source/WebCore:

Use Default QoS for offline audio rendering and UserInteractive for real-time audio
rendering. Previously, we were using always UserInitiated QoS for all audio threads,
which is lower than UserInteractive [1].

[1] https://developer.apple.com/library/archive/documentation/Performance/Conceptual/power_efficiency_guidelines_osx/PrioritizeWorkAtTheTaskLevel.html#//apple_ref/doc/uid/TP40013929-CH35-SW1

* Modules/webaudio/AudioWorkletMessagingProxy.cpp:
(WebCore::generateWorkletParameters):
* Modules/webaudio/AudioWorkletThread.cpp:
(WebCore::AudioWorkletThread::createThread):
* Modules/webaudio/OfflineAudioDestinationNode.cpp:
(WebCore::OfflineAudioDestinationNode::startRendering):
* worklets/WorkletParameters.h:
(WebCore::WorkletParameters::isolatedCopy const):

Source/WebKit:

* WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:
(WebKit::RemoteAudioDestinationProxy::RemoteAudioDestinationProxy):

Source/WTF:

Add QOS parameter to the Thread construct (similarly to WorkQueue) so that the caller can
specify which QoS to use for the thread. Previously, the code was using UserInteractive
QoS unconditionally, which may be too high is some cases and too low in others.

* wtf/Threading.cpp:
(WTF::Thread::create):
* wtf/Threading.h:
* wtf/WorkQueue.h:
* wtf/cocoa/WorkQueueCocoa.cpp:
(WTF::WorkQueue::platformInitialize):
(WTF::dispatchQOSClass): Deleted.
* wtf/posix/ThreadingPOSIX.cpp:
(WTF::Thread::dispatchQOSClass):
(WTF::Thread::establishHandle):
* wtf/win/ThreadingWin.cpp:
(WTF::Thread::establishHandle):

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

23 months ago[Media in GPU Process][MSE] WebM source buffer parser is not enabled
peng.liu6@apple.com [Mon, 14 Dec 2020 22:55:25 +0000 (22:55 +0000)]
[Media in GPU Process][MSE] WebM source buffer parser is not enabled
https://bugs.webkit.org/show_bug.cgi?id=219857

Reviewed by Eric Carlson.

Source/WebCore:

Function `isWebmParserAvailable()` always return false when `SourceBufferParserWebM`
runs in the GPU process because `RuntimeEnabledFeatures::sharedFeatures().webMParserEnabled()`
always returns false in the GPU process. Therefore, `MediaSourcePrivateAVFObjC` will not
enable the VP9 support when media in GPU process is enabled.

This patch moves the call of `RuntimeEnabledFeatures::sharedFeatures().webMParserEnabled()`
to `MediaSource`, which always runs in the web process and will get the correct value.

* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::createSourceBufferPrivate):
* platform/graphics/MediaSourcePrivate.h:
* platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:
(WebCore::MediaSourcePrivateAVFObjC::addSourceBuffer):
* platform/graphics/cocoa/SourceBufferParser.cpp:
(WebCore::SourceBufferParser::create):
* platform/graphics/cocoa/SourceBufferParser.h:
* platform/graphics/cocoa/SourceBufferParserWebM.cpp:
(WebCore::isWebmParserAvailable):
(WebCore::SourceBufferParserWebM::create):
Delete this function because it is not used.
* platform/graphics/cocoa/SourceBufferParserWebM.h:
* platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.cpp:
(WebCore::MediaSourcePrivateGStreamer::addSourceBuffer):
* platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h:
* platform/mock/mediasource/MockMediaSourcePrivate.cpp:
(WebCore::MockMediaSourcePrivate::addSourceBuffer):
* platform/mock/mediasource/MockMediaSourcePrivate.h:

Source/WebKit:

Share the value of `RuntimeEnabledFeatures::sharedFeatures().webMParserEnabled()`
with the GPU process (`RemoteMediaSourceProxy`) when `MediaPlayerPrivateRemote`
tries to load a media source.

* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::loadMediaSource):
* GPUProcess/media/RemoteMediaPlayerProxy.h:
* GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
* GPUProcess/media/RemoteMediaSourceProxy.cpp:
(WebKit::RemoteMediaSourceProxy::RemoteMediaSourceProxy):
(WebKit::RemoteMediaSourceProxy::addSourceBuffer):
* GPUProcess/media/RemoteMediaSourceProxy.h:
* Shared/mac/MediaFormatReader/FormatReader.cpp:
(WebKit::FormatReader::parseByteSource):
* WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::load):
* WebProcess/GPU/media/MediaSourcePrivateRemote.cpp:
(WebKit::MediaSourcePrivateRemote::addSourceBuffer):
* WebProcess/GPU/media/MediaSourcePrivateRemote.h:

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

23 months ago[GPUProcess] Crash in SharedRingBufferStorage::setStorage() under GuardMalloc
cdumez@apple.com [Mon, 14 Dec 2020 22:09:56 +0000 (22:09 +0000)]
[GPUProcess] Crash in SharedRingBufferStorage::setStorage() under GuardMalloc
https://bugs.webkit.org/show_bug.cgi?id=219867

Reviewed by Darin Adler.

SharedRingBufferStorage was holding a raw pointer to its client and we would sometimes
crash when dereferencing this client in SharedRingBufferStorage::setStorage() because
the client is not guaranteed to be alive.

To address the issue, I replace the SharedRingBufferStorage::Client with a lambda so
that the client can protect itself in the lambda if needed. In particular,
RemoteAudioSourceProviderProxy now protects itself in the lambda since the lifetime
of the CARingBuffer is not tied to the lifetime of RemoteAudioSourceProviderProxy.

* GPUProcess/media/RemoteAudioDestinationManager.cpp:
(WebKit::RemoteAudioDestination::RemoteAudioDestination):
* GPUProcess/media/RemoteAudioSourceProviderProxy.cpp:
(WebKit::RemoteAudioSourceProviderProxy::createRingBuffer):
* GPUProcess/media/RemoteAudioSourceProviderProxy.h:
* GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.cpp:
(WebKit::RemoteAudioMediaStreamTrackRenderer::RemoteAudioMediaStreamTrackRenderer):
* GPUProcess/webrtc/RemoteMediaRecorder.cpp:
(WebKit::RemoteMediaRecorder::RemoteMediaRecorder):
* Shared/Cocoa/SharedRingBufferStorage.cpp:
(WebKit::SharedRingBufferStorage::setStorage):
* Shared/Cocoa/SharedRingBufferStorage.h:
(WebKit::SharedRingBufferStorage::SharedRingBufferStorage):
(WebKit::SharedRingBufferStorage::invalidate):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::SourceProxy):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::storageChanged):
* UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp:
(WebKit::m_ringBuffer):
* WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:
(WebKit::RemoteAudioDestinationProxy::RemoteAudioDestinationProxy):
* WebProcess/GPU/media/RemoteAudioDestinationProxy.h:
* WebProcess/GPU/media/RemoteAudioSourceProviderManager.cpp:
(WebKit::RemoteAudioSourceProviderManager::RemoteAudio::RemoteAudio):
* WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.cpp:
(WebKit::AudioMediaStreamTrackRenderer::AudioMediaStreamTrackRenderer):
* WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.h:
* WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:
(WebKit::MediaRecorderPrivate::startRecording):
* WebProcess/GPU/webrtc/MediaRecorderPrivate.h:
* WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp:
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::Source::Source):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::Source::storageChanged):
* WebProcess/cocoa/RemoteCaptureSampleManager.cpp:
(WebKit::RemoteCaptureSampleManager::RemoteAudio::RemoteAudio):

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

23 months agoMake CachePolicy an enum class
commit-queue@webkit.org [Mon, 14 Dec 2020 21:33:30 +0000 (21:33 +0000)]
Make CachePolicy an enum class
https://bugs.webkit.org/show_bug.cgi?id=219856

Patch by Rob Buis <rbuis@igalia.com> on 2020-12-14
Reviewed by Alex Christensen.

Make CachePolicy an enum class.

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::subresourceCachePolicy const):
* loader/FrameLoader.h:
* loader/cache/CachePolicy.h:
(): Deleted.
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::load):
(WebCore::CachedResource::makeRevalidationDecision const):
* loader/cache/CachedResource.h:
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::determineRevalidationPolicy const):
(WebCore::CachedResourceLoader::cachePolicy const):
* loader/cache/CachedResourceLoader.h:

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

23 months agoCrashTracer: com.apple.WebKit.Networking at WebKit: WTF::Detail::CallableWrapper...
katherine_cheney@apple.com [Mon, 14 Dec 2020 20:58:48 +0000 (20:58 +0000)]
CrashTracer: com.apple.WebKit.Networking at WebKit: WTF::Detail::CallableWrapper<WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests()
https://bugs.webkit.org/show_bug.cgi?id=219860
<rdar://problem/72254207>

Reviewed by Alex Christensen.

No new tests, this should fix a crash.

m_networkSession is a weakPtr. We should check that the object it
references exists before trying to use it.

* NetworkProcess/PrivateClickMeasurementManager.cpp:
(WebKit::PrivateClickMeasurementManager::storeUnattributed):
(WebKit::PrivateClickMeasurementManager::attribute):
(WebKit::PrivateClickMeasurementManager::clearSentAttributions):
(WebKit::PrivateClickMeasurementManager::updateTimerLastFired):
(WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests):
(WebKit::PrivateClickMeasurementManager::clear):
(WebKit::PrivateClickMeasurementManager::clearForRegistrableDomain):
(WebKit::PrivateClickMeasurementManager::clearExpired):
(WebKit::PrivateClickMeasurementManager::toString const):
(WebKit::PrivateClickMeasurementManager::markAllUnattributedAsExpiredForTesting):
(WebKit::PrivateClickMeasurementManager::markAttributedPrivateClickMeasurementsAsExpiredForTesting):

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

23 months agoSimplify transform blending for simple cases
graouts@webkit.org [Mon, 14 Dec 2020 20:55:27 +0000 (20:55 +0000)]
Simplify transform blending for simple cases
https://bugs.webkit.org/show_bug.cgi?id=219863

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Rebaseline some WPT test outputs, resulting in round numbers for animated transform output, including a few new PASS results.

* web-platform-tests/css/css-transforms/animation/transform-interpolation-computed-value-expected.txt:
* web-platform-tests/css/css-transforms/animation/transform-matrix-composition-expected.txt:
* web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
* web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt:
* web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt:

Source/WebCore:

Optimize two simple cases for transform blending. First, use matrices as-is for the cases when we blend with
progress equal to 0 or 1. Then, when rotating around an angle that's an increment of 360º, simply return the
existing matrix.

* platform/graphics/transforms/TransformationMatrix.cpp:
(WebCore::TransformationMatrix::rotate):
(WebCore::TransformationMatrix::blend):

LayoutTests:

Rebaselining test output where -0 values are now +0.

* compositing/backing/animate-into-view-expected.txt:
* compositing/backing/animate-into-view-with-descendant-expected.txt:

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

23 months agoLayoutTests/webrtc/video-sframe.html is flaky on bots
youenn@apple.com [Mon, 14 Dec 2020 20:35:03 +0000 (20:35 +0000)]
LayoutTests/webrtc/video-sframe.html is flaky on bots
https://bugs.webkit.org/show_bug.cgi?id=219849

Reviewed by Alex Christensen.

* webrtc/video-sframe.html:
Receiver counter might increment very quickly in background thread before the sender counter is also incremented.
Add a wait loop for sender counter as well.

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

23 months agoAdopt symbol image API instead of SPI in WKPDFHUDView
timothy_horton@apple.com [Mon, 14 Dec 2020 20:24:54 +0000 (20:24 +0000)]
Adopt symbol image API instead of SPI in WKPDFHUDView
https://bugs.webkit.org/show_bug.cgi?id=219866

Reviewed by Wenson Hsieh.

Source/WebCore/PAL:

* pal/spi/mac/NSImageSPI.h:

Source/WebKit:

* UIProcess/PDF/WKPDFHUDView.mm:
(-[WKPDFHUDView _getImageForControlName:]):

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

23 months ago[GLIB] Missing header for std::once_flag in WebKitInitialize.cpp
psaavedra@igalia.com [Mon, 14 Dec 2020 20:18:13 +0000 (20:18 +0000)]
[GLIB] Missing header for std::once_flag in WebKitInitialize.cpp
https://bugs.webkit.org/show_bug.cgi?id=219865

Reviewed by Alex Christensen.

* UIProcess/API/glib/WebKitInitialize.cpp:

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

23 months agoGPU process sometimes hangs during MotionMark Focus when enabling GPU Process for DOM
wenson_hsieh@apple.com [Mon, 14 Dec 2020 19:55:28 +0000 (19:55 +0000)]
GPU process sometimes hangs during MotionMark Focus when enabling GPU Process for DOM
https://bugs.webkit.org/show_bug.cgi?id=219839
<rdar://problem/71562635>

Reviewed by Tim Horton.

Source/WebCore:

See Source/WebKit/ChangeLog for more details.

* platform/graphics/ImageBuffer.h:
(WebCore::ImageBuffer::prepareToAppendDisplayListItems):
(WebCore::ImageBuffer::clearDisplayList): Deleted.

Replace this method with `prepareToAppendDisplayListItems`.

* platform/graphics/displaylists/DisplayList.cpp:
(WebCore::DisplayList::DisplayList::prepareToAppend):
* platform/graphics/displaylists/DisplayList.h:
* platform/graphics/displaylists/DisplayListItemBuffer.cpp:
(WebCore::DisplayList::ItemBuffer::prepareToAppend):

Plumb `prepareToAppendDisplayListItems` through `DisplayList` and into the `DisplayList::ItemBuffer`, as
`prepareToAppend`. This method swaps the current writable buffer out for the new `ItemBufferHandle` provided by
the caller, and resets the written bytes counter.

* platform/graphics/displaylists/DisplayListItemBuffer.h:

Source/WebKit:

Fixes an indefinite hang in the GPU process that may occur as a result of this very specific corner case in
concurrent display list processing:

[1] Let p and q represent two item buffers, and let A and B represent two remote image buffers whose drawing
    contexts will be destinations for display list playback in the GPU process. Suppose p has k remaining bytes
    where k >= 32, and A's writable buffer is mapped to a region closest to the end of p. In practice, when this
    hang reproduces, k is a relatively small number (typically 32-40 bytes).

[2] Additionally, suppose that the GPU process is not reading from q (i.e. q's `unreadBytes()` count is 0), and
    that the GPU process has created a corresponding RemoteImageBuffer for A, but *not* a corresponding
    RemoteImageBuffer for B.

[3] We now append a MetaCommandChangeDestinationImageBuffer item to change destinations from A to B, such that
    p now has (k - 16) remaining bytes. In preparation for appending new items for B's display list, the logic
    in `RemoteRenderingBackendProxy::willAppendItem` clears B's writable buffer, with the intention that B will
    turn around and call out to the client layer for a new writable buffer again once it notices that it has no
    writable buffer.

[4] If we then immediately try to append an item to B that is larger than (k - 32) bytes,
    `RemoteRenderingBackendProxy::findReusableDisplayListHandle` will see that the most recently used item
    buffer p has insufficient space, and will instead return item buffer q. We end up appending the new item to
    item buffer q.

[5] In the GPU process, we finish processing all available item data in p. When we encounter the destination
    buffer change item, we set `m_pendingWakeupInfo` before going to sleep, due to the fact that the GPU process
    has not learned about image buffer B yet (see the last part of step [2]).

[6] Later, in the GPU process, when we create a RemoteImageBuffer for B, we see that we have a
    `m_pendingWakeupInfo` with destination image buffer B, so we resume display list processing. However, we're
    unable to resume where we stopped, since B's display list (in the web process) immediately appended to q
    instead of p, skipping MetaCommandChangeItemBuffer in the process. This manifests as an indefinite hang
    inside `RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists`, since we expect p to
    have a nonzero `unreadBytes()` count.

[7] Now that the GPU process is in a broken state, the web process follows shortly -- in the Focus subtest of
    MotionMark, this manifests as a web process crash soon after the GPU process begins to hang, because
    `RemoteImageBufferProxy::ensureBackendCreated()` times out and returns null, and we subsequently dereference
    null in `RemoteLayerBackingStore::encode()` after failing to ensure the image buffer backend.

To fix this, we target step [3]. Rather than clear B's writable buffer and expect it to append its new items to
p, we simply hand it p's item handle -- in this case, a handle with (k - 16) available bytes -- and set its
writable buffer before we try to append. In this scenario, doing this ensures that if we are about to append an
item that is larger than (k - 32) bytes, we will first leave a 16-byte MetaCommandChangeItemBuffer item inside p
before moving on to q. This eventually ensures that when the GPU process resumes display list processing after
creating a RemoteImageBuffer for B, it will see 16 unread bytes in p and then immediately continue reading data
from item buffer q.

Finally, note that in this scenario, p is always guaranteed to contain at least 16 available bytes after step
[3] (in other words, k >= 32). This is because all calls to append an item of size n bytes to an item buffer
check that there is a minimum (n + 16) bytes remaining (via logic in `ItemBuffer::swapWritableBufferIfNeeded`),
such that it is, by design, always possible to append a `MetaCommandChangeItemBuffer` item if necessary. As
such, it is safe to return the most recently used item buffer's handle in step [4].

* WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
(WebKit::RemoteImageBufferProxy::clearDisplayList):
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::willAppendItem):

Call into `prepareToAppendDisplayListItems` instead of `clearDisplayList` when switching destination image
buffers. See problem diagnosis above for more detail.

(WebKit::RemoteRenderingBackendProxy::mostRecentlyUsedDisplayListHandle):

Pull logic to retrieve the most recently used display list handle out into a separate helper method.

(WebKit::RemoteRenderingBackendProxy::findReusableDisplayListHandle):
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:

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

23 months ago[Flatpak SDK] Update GTK4 to 3.99.5
lmoura@igalia.com [Mon, 14 Dec 2020 19:48:07 +0000 (19:48 +0000)]
[Flatpak SDK] Update GTK4 to 3.99.5
https://bugs.webkit.org/show_bug.cgi?id=219781

Reviewed by Philippe Normand.

Looks like there was a mishap tagging the GTK RC, as the tag present
in their repo is 3.99.5.1 instead of 3.99.5.

* elements/sdk/glib.bst: Bump to 2.66 to reflect the bumped
requirement by GTK.
* elements/sdk/gtk.bst: Bump to 3.99.5.1

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

23 months agoMove some of the work from JSLock to VMEntryScope
tzagallo@apple.com [Mon, 14 Dec 2020 19:47:36 +0000 (19:47 +0000)]
Move some of the work from JSLock to VMEntryScope
https://bugs.webkit.org/show_bug.cgi?id=219830

Reviewed by Mark Lam.

Source/JavaScriptCore:

We move several things from JSLock to VMEntryScope that could only be observed after we entered the VM:
- WasmThreads: only used when tiering up wasm, so VMEntryScope would have executed
- registerThreadForMachExceptionHandling: The mach exception handlers are used for:
    - sigill crash analyzer: only relevant after we enter the vm
    - wasm fault signal handler: same, we must be executing wasm and therefore VMEntryScope will have executed.
    - VMTraps: only handles faults in JIT code
- firePrimitiveGigacageEnabledIfNecessary: Only watched by the JITs

This gives is a ~10% improvement on APIBench (score change from ~36.3 to ~39.9), but as it turns out the most expensive
call is adding the current thread to the heap as this requires acquiring two locks. We can't  move this to VMEntryScope
since it's possible to use the API and GC without ever entering the VM, which would result in the current thread's stack
not being scanned. Instead, we just remember the last thread that acquired the lock and skip the call if we're seeing the
same thread again. This greatly amortizes the cost and gives us another ~10%:

CURRENT_API:        Baseline   Change
----------------------------------------
RichardsMostlyC:      62ms      32ms
RichardsMostlyObjC:  303ms     264ms
RichardsMostlySwift: 296ms     261ms
RichardsSomeC:        76ms      49ms
RichardsSomeObjC:    156ms     150ms
RichardsSomeSwift:   200ms     197ms

UPCOMING_API:       Baseline   Change
----------------------------------------
RichardsMostlyC:      19ms      19ms
RichardsMostlyObjC:  282ms     260ms
RichardsMostlySwift: 282ms     264ms
RichardsSomeC:        79ms      46ms
RichardsSomeObjC:    156ms     149ms
RichardsSomeSwift:   195ms     195ms
----------------------------------------
Score:             36.2211   43.3368

* runtime/JSLock.cpp:
(JSC::JSLock::didAcquireLock):
(JSC::JSLock::willReleaseLock):
* runtime/JSLock.h:
* runtime/VMEntryScope.cpp:
(JSC::VMEntryScope::VMEntryScope):
(JSC::VMEntryScope::~VMEntryScope):

Source/WTF:

Add a unique ID to threads. This uid is used in JSLock to avoid unnecessary work when the
same thread that last acquired the lock is reacquiring it.

* wtf/Threading.cpp:
* wtf/Threading.h:
(WTF::Thread::uid const):
(WTF::Thread::Thread):

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

23 months agoWebProcessProxy::destroySpeechRecognitionServer should check if identifier exists...
sihui_liu@apple.com [Mon, 14 Dec 2020 19:39:53 +0000 (19:39 +0000)]
WebProcessProxy::destroySpeechRecognitionServer should check if identifier exists before removing MessageReceiver
https://bugs.webkit.org/show_bug.cgi?id=219815
<rdar://problem/71369164>

Reviewed by Youenn Fablet.

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::destroySpeechRecognitionServer):

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

23 months agoDrop duplicate call to makeUniqueRef() in RemoteAudioSourceProviderProxy::createRingB...
cdumez@apple.com [Mon, 14 Dec 2020 19:36:58 +0000 (19:36 +0000)]
Drop duplicate call to makeUniqueRef() in RemoteAudioSourceProviderProxy::createRingBuffer()
https://bugs.webkit.org/show_bug.cgi?id=219859

Reviewed by Youenn Fablet.

* GPUProcess/media/RemoteAudioSourceProviderProxy.cpp:
(WebKit::RemoteAudioSourceProviderProxy::createRingBuffer):

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

23 months agoMake sure WebProcessPool::setUseSeparateServiceWorkerProcess handles correctly destro...
youenn@apple.com [Mon, 14 Dec 2020 19:34:03 +0000 (19:34 +0000)]
Make sure WebProcessPool::setUseSeparateServiceWorkerProcess handles correctly destroyed process pools
https://bugs.webkit.org/show_bug.cgi?id=219773
<rdar://problem/71938320>

Reviewed by Alex Christensen.

Terminating a service worker process may destroy the web process pool.
Copy the vector of process pools before iterating over it to terminate service worker processes.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::setUseSeparateServiceWorkerProcess):

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

23 months agoRemove WKDownloadDelegate.didWriteData
commit-queue@webkit.org [Mon, 14 Dec 2020 19:27:33 +0000 (19:27 +0000)]
Remove WKDownloadDelegate.didWriteData
https://bugs.webkit.org/show_bug.cgi?id=219820

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-14
Reviewed by Sam Weinig.

Source/WebKit:

API review revealed it was redundant with WKDownload.progress, which has KVO-compliant totalUnitCount and completedUnitCount.

* UIProcess/API/Cocoa/WKDownload.mm:
(-[WKDownload progress]):
* UIProcess/API/Cocoa/WKDownloadDelegate.h:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
(-[DownloadObserver observeValueForKeyPath:ofObject:change:context:]):
(TestWebKitAPI::mutateFile):
* TestWebKitAPI/cocoa/TestDownloadDelegate.h:
* TestWebKitAPI/cocoa/TestDownloadDelegate.mm:
(-[TestDownloadDelegate download:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]): Deleted.

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

23 months agoFix rare crashes in Page::lockAllOverlayScrollbarsToHidden()
simon.fraser@apple.com [Mon, 14 Dec 2020 19:20:26 +0000 (19:20 +0000)]
Fix rare crashes in Page::lockAllOverlayScrollbarsToHidden()
https://bugs.webkit.org/show_bug.cgi?id=219862
<rdar://problem/28205511>

Reviewed by Wenson Hsieh.

Crash data suggest that lockAllOverlayScrollbarsToHidden() can be called on a null
Page*, so check it.

* dom/Document.cpp:
(WebCore::Document::suspend):
(WebCore::Document::resume):

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