WebKit-https.git
2 months agoMove more logic from AudioDestinationNode to its subclasses
cdumez@apple.com [Mon, 17 May 2021 16:53:37 +0000 (16:53 +0000)]
Move more logic from AudioDestinationNode to its subclasses
https://bugs.webkit.org/show_bug.cgi?id=225849

Reviewed by Sam Weinig.

Move more logic from AudioDestinationNode to its subclasses. In particular, AudioDestinationNode
contains a lot of things that are specific to real-time audio rendering and those should go to
DefaultAudioDestinationNode.

This allows us to move isPlayingAudioDidChange() from BaseAudioContext to AudioContext also.

* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::isPlayingAudioDidChange):
* Modules/webaudio/AudioContext.h:
* Modules/webaudio/AudioDestinationNode.cpp:
(WebCore::AudioDestinationNode::renderQuantum):
* Modules/webaudio/AudioDestinationNode.h:
* Modules/webaudio/BaseAudioContext.cpp:
* Modules/webaudio/BaseAudioContext.h:
* Modules/webaudio/DefaultAudioDestinationNode.cpp:
(WebCore::DefaultAudioDestinationNode::createDestination):
(WebCore::DefaultAudioDestinationNode::framesPerBuffer const):
(WebCore::DefaultAudioDestinationNode::render):
(WebCore::DefaultAudioDestinationNode::setIsSilent):
(WebCore::DefaultAudioDestinationNode::isPlayingDidChange):
(WebCore::DefaultAudioDestinationNode::updateIsEffectivelyPlayingAudio):
* Modules/webaudio/DefaultAudioDestinationNode.h:
* Modules/webaudio/OfflineAudioDestinationNode.cpp:
(WebCore::OfflineAudioDestinationNode::OfflineAudioDestinationNode):
(WebCore::OfflineAudioDestinationNode::startRendering):
(WebCore::OfflineAudioDestinationNode::renderOnAudioThread):
* Modules/webaudio/OfflineAudioDestinationNode.h:

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

2 months ago[GPUP] WebContent process should not pull audio session category from the GPU Process
peng.liu6@apple.com [Mon, 17 May 2021 16:31:39 +0000 (16:31 +0000)]
[GPUP] WebContent process should not pull audio session category from the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=225826

Reviewed by Darin Adler.

Source/WebCore:

Change AudioSession::Category to be an enum class.

* platform/audio/AudioSession.cpp:
(WebCore::AudioSession::categoryOverride const):
(WebCore::AudioSession::category const):
* platform/audio/AudioSession.h:
* platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(WebCore::MediaSessionManagerCocoa::updateSessionState):
* platform/audio/ios/AudioSessionIOS.mm:
(WebCore::AudioSessionPrivate::AudioSessionPrivate):
(WebCore::AudioSession::setCategory):
(WebCore::AudioSession::category const):
* platform/audio/mac/AudioSessionMac.mm:
(WebCore::AudioSession::setCategory):
* platform/audio/mac/SharedRoutingArbitrator.h:
* platform/audio/mac/SharedRoutingArbitrator.mm:
(WebCore::SharedRoutingArbitrator::beginRoutingArbitrationForToken):
* platform/mediastream/mac/BaseAudioSharedUnit.cpp:
(WebCore::BaseAudioSharedUnit::startUnit):
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::startProducingData):
* testing/Internals.cpp:
(WebCore::Internals::audioSessionCategory const):

Source/WebKit:

Remove `category` and `routeSharingPolicy` from `RemoteAudioSessionConfiguration`
because we should not pull these properties from the GPU process.

Remove IPC message `RemoteAudioSession::ConfigurationChanged` because it is not used.

* GPUProcess/mac/LocalAudioSessionRoutingArbitrator.h:
* GPUProcess/media/RemoteAudioSessionProxy.cpp:
(WebKit::RemoteAudioSessionProxy::configuration):
* GPUProcess/media/RemoteAudioSessionProxy.h:

* GPUProcess/media/RemoteAudioSessionProxyManager.cpp:
(WebKit::categoryCanMixWithOthers):
(WebKit::RemoteAudioSessionProxyManager::updateCategory):

* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

* UIProcess/Media/AudioSessionRoutingArbitratorProxy.h:

* WebProcess/GPU/media/RemoteAudioSession.cpp:
(WebKit::RemoteAudioSession::setCategory):
(WebKit::RemoteAudioSession::category const):
(WebKit::RemoteAudioSession::configurationChanged): Deleted.
* WebProcess/GPU/media/RemoteAudioSession.h:
* WebProcess/GPU/media/RemoteAudioSession.messages.in:

* WebProcess/GPU/media/RemoteAudioSessionConfiguration.h:
(WebKit::RemoteAudioSessionConfiguration::encode const):
(WebKit::RemoteAudioSessionConfiguration::decode):

* WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp:

Source/WebKitLegacy/mac:

* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences setAudioSessionCategoryOverride:]):

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

2 months ago[GLIB] Unreviewed test gardening. Several OffscreenCanvas tests are failing since...
dpino@igalia.com [Mon, 17 May 2021 15:30:57 +0000 (15:30 +0000)]
[GLIB] Unreviewed test gardening. Several OffscreenCanvas tests are failing since r277543.

* platform/glib/TestExpectations:

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

2 months ago[GLIB] Unreviewed test gardening. Skip tests requiring support for 'display-p3'.
dpino@igalia.com [Mon, 17 May 2021 15:18:23 +0000 (15:18 +0000)]
[GLIB] Unreviewed test gardening. Skip tests requiring support for 'display-p3'.

* platform/glib/TestExpectations:

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

2 months agowill-change: contain should create a containing block
commit-queue@webkit.org [Mon, 17 May 2021 13:32:26 +0000 (13:32 +0000)]
will-change: contain should create a containing block
https://bugs.webkit.org/show_bug.cgi?id=225442

Patch by Rob Buis <rbuis@igalia.com> on 2021-05-17
Reviewed by Antti Koivisto.

Source/WebCore:

Make will-change: contain cause the element to be a containing block for both
position: fixed and position: absolute cases as well as create a CSS stacking
context for the element.

Tests: imported/w3c/web-platform-tests/css/css-contain/contain-paint-stacking-context-001b.html
       imported/w3c/web-platform-tests/css/css-will-change/will-change-fixpos-cb-contain-1.html

* rendering/style/WillChangeData.cpp:
(WebCore::WillChangeData::createsContainingBlockForOutOfFlowPositioned const):
(WebCore::WillChangeData::propertyCreatesStackingContext):
* style/StyleBuilderCustom.h:
(WebCore::Style::BuilderCustom::applyValueWillChange):

LayoutTests:

Tests contain-paint-stacking-context-001b.html (testing
that will-change: contain creates a containing block) and
contain-paint-stacking-context-001b.html (which tests that
will-change: contain creates a CSS stacking context) now
pass, so no longer mark them as image failures.

* TestExpectations:

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

2 months agowill-change: position should not create a containing block for position: fixed elements
ntim@apple.com [Mon, 17 May 2021 10:09:03 +0000 (10:09 +0000)]
will-change: position should not create a containing block for position: fixed elements
https://bugs.webkit.org/show_bug.cgi?id=225443

Reviewed by Antti Koivisto.

This partially undoes r276627 which made will-change: position create a CB for all out-of-flow elements:

- Removed CSSPropertyPosition from createsContainingBlockForOutOfFlowPositioned() to not create a containing block
for position: fixed; children.
- Added createsContainingBlockForAbsolutelyPositioned() with CSSPropertyPosition to still create a containing block
for position: absolute; children.

Enabled WPT (which covers both cases): css/css-will-change/will-change-fixpos-cb-position-1.html

Source/WebCore:

* rendering/RenderElement.h:
(WebCore::RenderElement::canContainAbsolutelyPositionedObjects const):
* rendering/style/WillChangeData.cpp:
(WebCore::WillChangeData::createsContainingBlockForAbsolutelyPositioned const):
(WebCore::WillChangeData::createsContainingBlockForOutOfFlowPositioned const):
* rendering/style/WillChangeData.h:

LayoutTests:

* TestExpectations:

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

2 months agoREGRESSION(r277560): conditional attribute typos in IDLs for OffscreenCanvas, Offscre...
commit-queue@webkit.org [Mon, 17 May 2021 08:56:17 +0000 (08:56 +0000)]
REGRESSION(r277560): conditional attribute typos in IDLs for OffscreenCanvas, OffscreenCanvasRenderingContext2D
https://bugs.webkit.org/show_bug.cgi?id=225858

Unreviewed. Tweaking the for-worker conditional attribute values for the
OffscreenCanvas and OffscreenCanvasRenderingContext2D interfaces after
the r277560 refactoring. The mismatch in the conditional values left the
two interfaces outside any worker global space.

Patch by Zan Dobersek <zdobersek@igalia.com> on 2021-05-17

* html/OffscreenCanvas.idl:
* html/canvas/OffscreenCanvasRenderingContext2D.idl:

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

2 months agoMake MathML WPTs wait for all font loads
heycam@apple.com [Mon, 17 May 2021 05:22:27 +0000 (05:22 +0000)]
Make MathML WPTs wait for all font loads
https://bugs.webkit.org/show_bug.cgi?id=225728

Reviewed by Darin Adler.

With current interop issues around font loading, there's no guarantee
that waiting on the document.fonts.ready promise in the load event will
catch font loads initiated by content. Since these tests are not
explicitly testing font loading behavior, change to wait explicitly for
all fonts to load.

LayoutTests/imported/w3c:

* web-platform-tests/mathml/presentation-markup/fractions/frac-1-expected.txt:
* web-platform-tests/mathml/presentation-markup/fractions/frac-1.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-bar-001.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-bar-002.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002-expected.txt:
* web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-1.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-2.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-3-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-3-expected.txt.
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-3.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-gap-001-expected.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-gap-001.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-gap-002-expected.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-gap-002.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-gap-003-expected.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-gap-003.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-gap-004-expected.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-gap-004.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-gap-005-expected.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-gap-005.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-gap-006-expected.html:
* web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-gap-006.html:
* web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-stretchy-expected.txt:
* web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-stretchy.html:
* web-platform-tests/mathml/presentation-markup/mrow/no-spacing-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/no-spacing-expected.txt.
* web-platform-tests/mathml/presentation-markup/mrow/no-spacing.html:
* web-platform-tests/mathml/presentation-markup/mrow/spacing-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/spacing-expected.txt.
* web-platform-tests/mathml/presentation-markup/mrow/spacing.html:
* web-platform-tests/mathml/presentation-markup/operators/mo-axis-height-1.html:
* web-platform-tests/mathml/presentation-markup/operators/mo-font-relative-lengths-001-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-font-relative-lengths-001-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/mo-font-relative-lengths-001.html:
* web-platform-tests/mathml/presentation-markup/operators/mo-minsize-maxsize-001-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-minsize-maxsize-001-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/mo-minsize-maxsize-001.html:
* web-platform-tests/mathml/presentation-markup/operators/mo-stretch-properties-dynamic-001-expected.txt: Renamed from LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-stretch-properties-dynamic-001-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/mo-stretch-properties-dynamic-001.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-001-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-001-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-001.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-002-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-002-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-002.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-003-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-003-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-004-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-004-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-004.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-005-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-005-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-005.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-006-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-006-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-006.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-001-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-001-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-001.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-002-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-002-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-002.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-003-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-003-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-003.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-004-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-004-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-004.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-005-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-005-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-005.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-006-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-006-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-006.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-001-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-001-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-001.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-002-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-002-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-002.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-003-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-003-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-003.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-004-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-004-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-004.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-005-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-005-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-005.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-006-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-006-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-006.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-001-expected.txt: Renamed from LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-001-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-001.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-002-expected.txt: Renamed from LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-002-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-002.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-003-expected.txt: Renamed from LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-003-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-003.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-004-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-004-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-004.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-005-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-005-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-005.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-006-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-006-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-006.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-001-expected.txt: Renamed from LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-001-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-001.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-002-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-002-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-002.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-003-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-003-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-003.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-004-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-004-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-004.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-005-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-005-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-005.html:
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-006-expected.txt: Renamed from LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-006-expected.txt.
* web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-006.html:
* web-platform-tests/mathml/presentation-markup/radicals/dynamic-radical-paint-invalidation-001.html:
* web-platform-tests/mathml/presentation-markup/radicals/root-parameters-1.html:
* web-platform-tests/mathml/presentation-markup/radicals/root-parameters-2-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/radicals/root-parameters-2-expected.txt.
* web-platform-tests/mathml/presentation-markup/radicals/root-parameters-2.html:
* web-platform-tests/mathml/presentation-markup/scripts/cramped-001-expected.txt:
* web-platform-tests/mathml/presentation-markup/scripts/cramped-001.html:
* web-platform-tests/mathml/presentation-markup/scripts/empty-underover-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/empty-underover-expected.txt.
* web-platform-tests/mathml/presentation-markup/scripts/empty-underover.html:
* web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-1.html:
* web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-2-expected.txt:
* web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-2.html:
* web-platform-tests/mathml/presentation-markup/scripts/underover-1.html:
* web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-1.html:
* web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-2.html:
* web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3-expected.txt:
* web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3.html:
* web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.tentative-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.tentative-expected.txt.
* web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.tentative.html:
* web-platform-tests/mathml/presentation-markup/tables/table-axis-height.html:
* web-platform-tests/mathml/relations/css-styling/color-005.html:
* web-platform-tests/mathml/relations/css-styling/displaystyle-013.html:
* web-platform-tests/mathml/relations/css-styling/displaystyle-014.html:
* web-platform-tests/mathml/relations/css-styling/displaystyle-1.html:
* web-platform-tests/mathml/relations/css-styling/displaystyle-2.html:
* web-platform-tests/mathml/relations/css-styling/displaystyle-3.html:
* web-platform-tests/mathml/relations/css-styling/lengths-2.html:
* web-platform-tests/mathml/relations/css-styling/visibility-005.html:
* web-platform-tests/mathml/support/fonts.js: Added.
(loadAllFonts):

LayoutTests:

Many of these tests were flaky due to this, and so we now no longer
need platform specific expectations.

* TestExpectations:
* platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/fractions/frac-1-expected.txt: Removed.
* platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002-expected.txt: Removed.
* platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-stretch-properties-dynamic-001-expected.txt: Removed.
* platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-002-expected.txt: Removed.
* platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-003-expected.txt: Removed.
* platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-001-expected.txt: Removed.
* platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-006-expected.txt: Removed.
* platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/cramped-001-expected.txt: Removed.
* platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-2-expected.txt: Removed.
* platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3-expected.txt: Removed.
* platform/gtk/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-001-expected.txt: Removed.
* platform/gtk/imported/w3c/web-platform-tests/mathml/relations/css-styling/lengths-2-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/fractions/frac-1-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-3-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/no-spacing-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/spacing-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-font-relative-lengths-001-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-minsize-maxsize-001-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-001-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-002-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-003-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-004-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-005-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-006-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-001-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-002-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-003-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-004-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-005-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-006-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-001-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-002-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-003-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-004-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-005-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-006-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-004-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-005-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-006-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-002-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-003-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-004-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-005-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/radicals/root-parameters-2-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/cramped-001-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/empty-underover-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-2-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3-expected.txt: Removed.
* platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.tentative-expected.txt: Removed.
* platform/mac-catalina/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt: Removed.
* platform/mac-catalina/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/fractions/frac-1-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-3-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-stretchy-expected.txt: Added.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/no-spacing-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/spacing-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-font-relative-lengths-001-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-minsize-maxsize-001-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-001-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-002-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-003-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-004-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-005-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-006-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-001-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-002-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-003-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-004-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-005-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-006-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-001-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-002-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-003-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-004-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-005-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-006-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-004-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-005-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-006-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-002-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-003-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-004-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-005-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/radicals/root-parameters-2-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/empty-underover-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-2-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3-expected.txt: Removed.
* platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.tentative-expected.txt: Removed.
* platform/mac-wk2/TestExpectations:
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/fractions/frac-1-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-3-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/no-spacing-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/spacing-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-font-relative-lengths-001-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-minsize-maxsize-001-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-stretch-properties-dynamic-001-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-001-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-002-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-003-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-004-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-005-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-largeop-006-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-001-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-002-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-003-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-004-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-005-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-movablelimits-006-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-001-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-002-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-003-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-004-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-005-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-spacing-006-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-001-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-002-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-003-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-004-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-005-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-006-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-001-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-002-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-003-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-004-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-005-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-006-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/radicals/root-parameters-2-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/empty-underover-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-2-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3-expected.txt: Removed.
* platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.tentative-expected.txt: Removed.
* platform/mac/TestExpectations:
* platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-001-expected.txt: Removed.

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

2 months agoImplement baseline op_enter, op_ret, op_check_traps, op_throw using JIT thunks.
mark.lam@apple.com [Mon, 17 May 2021 04:20:52 +0000 (04:20 +0000)]
Implement baseline op_enter, op_ret, op_check_traps, op_throw using JIT thunks.
https://bugs.webkit.org/show_bug.cgi?id=225846

Reviewed by Filip Pizlo.

op_enter, op_ret, op_check_traps are 3 of the most common opcodes.  Throwing in
op_throw because it's easy.

In this patch, the following changes were also made:

1. Renamed copyCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer() to
   copyLLIntBaselineCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer().

   It is only used by the baseline JIT.  Changed it to always operate on
   RegisterAtOffsetList::llintBaselineCalleeSaveRegisters().  This removes the
   dependency on a current codeBlock being compiled, and allows us to use it
   for a JIT thunk.

2. Added JIT::emitNakedNearJump() to make it easy to emit direct jumps to JIT thunks.

   Currently, it is only used by op_ret and op_throw.

3. Changed some thunks to use emitNonPatchableExceptionCheck() instead
   emitExceptionCheck() to make it explicit that these are not intended to be
   patchable.

With this patch, --dumpLinkBufferStats shows the following changes in emitted
JIT code size (using a single run of the CLI version of JetStream2 on AS Mac)
comparing to current tip of tree:

                Base                     New                      Diff

   BaselineJIT: 77429400 (73.842430 MB)  72407904 (69.053558 MB)  0.94x (reduction)
           DFG: 36160880 (34.485703 MB)  36622176 (34.925629 MB)  1.01x
         Thunk: 23159024 (22.086166 MB)  23295448 (22.216270 MB)  1.01x
   InlineCache: 22068348 (21.046017 MB)  22157236 (21.130787 MB)  1.00x
           FTL: 6004736 (5.726562 MB)    6030536 (5.751167 MB)    1.00x
          Wasm: 2429204 (2.316669 MB)    2300872 (2.194283 MB)    0.95x (probably noise)
       YarrJIT: 1522488 (1.451958 MB)    1522616 (1.452080 MB)    1.00x
        CSSJIT: 0                        0
 Uncategorized: 0                        0

Cumulative diff since the start of this effort to put more code in JIT thunks:

                Base                     New                      Diff

   BaselineJIT: 89089964 (84.962811 MB)  72407904 (69.053558 MB)  0.81x (reduction)
           DFG: 39117360 (37.305222 MB)  36622176 (34.925629 MB)  0.94x (reduction)
         Thunk: 23230968 (22.154778 MB)  23295448 (22.216270 MB)  1.00x
   InlineCache: 22027416 (21.006981 MB)  22157236 (21.130787 MB)  1.01x
           FTL: 6575772 (6.271145 MB)    6030536 (5.751167 MB)    0.92x (reduction)
          Wasm: 2302724 (2.196049 MB)    2300872 (2.194283 MB)    1.00x
       YarrJIT: 1538956 (1.467663 MB)    1522616 (1.452080 MB)    0.99x
        CSSJIT: 0                        0
 Uncategorized: 0                        0

* assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::sub64):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitRestoreCalleeSavesFor):
(JSC::AssemblyHelpers::copyLLIntBaselineCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer):
(JSC::AssemblyHelpers::copyCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer): Deleted.
* jit/JIT.cpp:
(JSC::JIT::emitEnterOptimizationCheck):
(JSC::JIT::link):
* jit/JIT.h:
(JSC::NearJumpRecord::NearJumpRecord):
* jit/JITInlines.h:
(JSC::JIT::emitNakedNearJump):
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_ret):
(JSC::JIT::op_ret_handlerGenerator):
(JSC::JIT::emit_op_throw):
(JSC::JIT::op_throw_handlerGenerator):
(JSC::JIT::emit_op_enter):
(JSC::JIT::op_enter_handlerGenerator):
(JSC::JIT::emitSlow_op_loop_hint):
(JSC::JIT::emitSlow_op_check_traps):
(JSC::JIT::op_check_traps_handlerGenerator):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::slow_op_get_from_scopeGenerator):
(JSC::JIT::slow_op_put_to_scopeGenerator):
* jit/JITThunks.cpp:
(JSC::JITThunks::preinitializeExtraCTIThunks):
* jit/SlowPathCall.cpp:
(JSC::JITSlowPathCall::generateThunk):

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

2 months agoSupport serializing ImageData object colorSpace property in SerializedScriptValue
weinig@apple.com [Sun, 16 May 2021 22:00:30 +0000 (22:00 +0000)]
Support serializing ImageData object colorSpace property in SerializedScriptValue
https://bugs.webkit.org/show_bug.cgi?id=225854

Reviewed by Chris Dumez.

Source/WebCore:

Test: storage/indexeddb/structured-clone-image-data-display-p3.html

Update SerializedScriptValue schema to version 8 and add serialization
of the colorSpace property.

* bindings/js/SerializedScriptValue.cpp:
(WebCore::PredefinedColorSpaceTag):
Add copy of the PredefinedColorSpace values that are guaranteed to
stay consistent forever.

(WebCore::CloneSerializer::dumpIfTerminal):
Add encoding of the colorSpace when serializing ImageData.

(WebCore::CloneSerializer::write):
(WebCore::CloneDeserializer::read):
Add coders for PredefinedColorSpaceTag.

(WebCore::CloneDeserializer::getJSValue):
Replace multiple overloads with one perfect forwarding overload which does
what we want and works with r-values.

(WebCore::CloneDeserializer::readImageBitmap):
Use auto in two places.

(WebCore::CloneDeserializer::readTerminal):
Add decoding of the colorSpace when deserializing ImageData. For prior versions,
the colorSpace defaults to sRGB, which was the only color space supported.

LayoutTests:

Updates existing tests for new serialization version (version 8) and support
for serializing color space in ImageData.

To avoid multiple result files due to lack of support for display-p3, testing
that the display-p3 color space is serialized correctly was put into its own
test that is skipped on non-supporting platforms.

* platform/glib/TestExpectations:
* platform/win/TestExpectations:
Skip structured-clone-image-data-display-p3.html on platforms that don't support
display-p3 color spaces.

* fast/storage/serialized-script-value.html:
Bump version to version 8.

* storage/indexeddb/resources/structured-clone.js:
* storage/indexeddb/structured-clone-expected.txt:
Add tests for ImageData colorSpace round tripping.

* storage/indexeddb/structured-clone-image-data-display-p3-expected.txt: Added.
* storage/indexeddb/structured-clone-image-data-display-p3.html: Added.
Add test for ImageData display-p3 colorSpace round tripping as its own test
to allow targetted skipping by non-supporting platforms.

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

2 months agoMediaSessionCoordinator survives page reload/navigation
jer.noble@apple.com [Sun, 16 May 2021 20:32:30 +0000 (20:32 +0000)]
MediaSessionCoordinator survives page reload/navigation
https://bugs.webkit.org/show_bug.cgi?id=225822

Reviewed by Eric Carlson.

Source/WebCore:

Because the MediaSessionCoordinator is created and owned by Page, it will survive
a reload (as Page is not re-created), and the same MediaSessionCoordinator object
will be added to MediaSession when the new Navigator is created.

Rather than have Page own the coordinator itself, it can instead own the
MediaSessionCoordinatorPrivate used to create the coordinator. When the MediaSession
is created, it will query the Page to ask for a MediaSessionCoordinatorPrivate to
use to create the coordinator, guaranteeing a new object is created.

The session itself should be left when the document is put into Back/Forward
Cache, or closed when the document is stopped entirely.

A few drive-by fixes:

The direction of coordinatorStateChanged() is now reversed; it flows down from the
UIProcess to update the state of the MediaSessionCoordinator. This allows the coordinator
to react when it's private implementation changes state.

Add a new upward notification when the trackIdentifier in MediaMetadata changes.

* Modules/mediasession/MediaSession.cpp:
(WebCore::MediaSession::MediaSession):
(WebCore::MediaSession::suspend):
(WebCore::MediaSession::stop):
(WebCore::MediaSession::createCoordinator):
(WebCore::MediaSession::setCoordinator): Deleted.
* Modules/mediasession/MediaSession.h:
* Modules/mediasession/MediaSessionCoordinator.cpp:
(WebCore::MediaSessionCoordinator::join):
(WebCore::MediaSessionCoordinator::leave):
(WebCore::MediaSessionCoordinator::close):
(WebCore::MediaSessionCoordinator::metadataChanged):
(WebCore::MediaSessionCoordinator::positionStateChanged):
(WebCore::MediaSessionCoordinator::playbackStateChanged):
(WebCore::MediaSessionCoordinator::readyStateChanged):
(WebCore::MediaSessionCoordinator::seekSessionToTime):
(WebCore::MediaSessionCoordinator::pauseSession):
(WebCore::MediaSessionCoordinator::coordinatorStateChanged):
* Modules/mediasession/MediaSessionCoordinator.h:
* Modules/mediasession/MediaSessionCoordinatorPrivate.h:
(WebCore::MediaSessionCoordinatorClient::coordinatorStateChanged):
* page/Page.cpp:
(WebCore::Page::setMediaSessionCoordinator):
(WebCore::Page::invalidateMediaSessionCoordinator):
* page/Page.h:
(WebCore::Page::mediaSessionCoordinator):
* testing/Internals.cpp:
(WebCore::Internals::registerMockMediaSessionCoordinator):
* testing/Internals.h:
* testing/MockMediaSessionCoordinator.cpp:
(WebCore::MockMediaSessionCoordinator::trackIdentifierChanged):
(WebCore::MockMediaSessionCoordinator::coordinatorStateChanged): Deleted.
* testing/MockMediaSessionCoordinator.h:

Source/WebKit:

Update the classes affected by virtual function changes in MediaSessionCoordinator. Update
the creation mechanism inside WebPage/Proxy.

* UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
* UIProcess/API/Cocoa/WKWebViewTesting.mm:
(-[WKWebView _createMediaSessionCoordinatorForTesting:completionHandler:]):
* UIProcess/Media/MediaSessionCoordinatorProxyPrivate.h:
* UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp:
(WebKit::RemoteMediaSessionCoordinatorProxy::trackIdentifierChanged):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatorStateChanged):
* UIProcess/Media/RemoteMediaSessionCoordinatorProxy.h:
* UIProcess/Media/RemoteMediaSessionCoordinatorProxy.messages.in:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::createMediaSessionCoordinator):
* WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp:
(WebKit::RemoteMediaSessionCoordinator::trackIdentifierChanged):
(WebKit::RemoteMediaSessionCoordinator::coordinatorStateChanged):
* WebProcess/MediaSession/RemoteMediaSessionCoordinator.h:
* WebProcess/MediaSession/RemoteMediaSessionCoordinator.messages.in:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::createMediaSessionCoordinator):
(WebKit::WebPage::invalidateMediaSessionCoordinator):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

Tools:

* TestWebKitAPI/Tests/WebKit/MediaSessionCoordinatorTest.mm:
(-[_WKMockMediaSessionCoordinator trackIdentifierChanged:]):

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

2 months agoIsoAlignedMemoryAllocator should use BitVector
keith_miller@apple.com [Sun, 16 May 2021 17:46:33 +0000 (17:46 +0000)]
IsoAlignedMemoryAllocator should use BitVector
https://bugs.webkit.org/show_bug.cgi?id=225852

Reviewed by Mark Lam.

Right now IsoAlignedMemoryAllocator uses FastBitVector, which does
not have inline storage for small sizes. However, it's not
uncommon for IsoAlignedMemoryAllocator to be holding onto only a
few blocks. Those blocks may exist for a long time, which some
data indicates causes IsoAlignedMemoryAllocator's FastBitVector to
pin a full physical page for one 8 byte allocation. Since
accessing the commited blocks list is not a particularly hot
operation, we should just use a BitVector instead.

This seems to be perf neutral on benchmarks.

* heap/IsoAlignedMemoryAllocator.cpp:
(JSC::IsoAlignedMemoryAllocator::~IsoAlignedMemoryAllocator):
(JSC::IsoAlignedMemoryAllocator::tryAllocateAlignedMemory):
(JSC::IsoAlignedMemoryAllocator::freeAlignedMemory):
* heap/IsoAlignedMemoryAllocator.h:

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

2 months agoModernize / Optimize SQLiteStatement creation and preparation
cdumez@apple.com [Sun, 16 May 2021 17:18:30 +0000 (17:18 +0000)]
Modernize / Optimize SQLiteStatement creation and preparation
https://bugs.webkit.org/show_bug.cgi?id=225791

Reviewed by Sam Weinig.

Source/WebCore:

Modernize / Optimize SQLiteStatement creation and preparation:
- The SQLiteStatement constructor is now private so that we never have a
  SQLiteStatement that has not been "prepared". Only the SQLiteDatabase
  can now construct SQLiteStatement objects. We already needed to pass
  a SQLiteDatabase reference when constructing the SQLiteStatement anyway.
- The construct AND prepare a SQLiteStatement, we now call
  SQLiteDatabase::prepareStatement() to get a stack object or
  SQLiteDatabase::prepareHeapStatement() to get a heap one. These functions
  return an Expected<> type so they will either return a "prepared"
  SQLiteStatement or an unexpected SQLite error code.
- The prepare*Statement() functions now avoid String allocations in most
  cases thanks to overloads taking in the query as an ASCIILiteral.
- Drop finalize() function on SQLiteStatement so SQLiteStatement objects
  are always valid. It simplifies the implementation of SQLiteStatement
  member functions. The SQLiteStatement destructor "finalizes" the statement
  so users can simply destroy the SQLiteStatement if they need the object
  to be finalize at a certain point (e.g. before closing a database).
- Drop the prepare() & prepareAndStep() SQLiteStatement member functions now
  that SQLiteStatement are always prepared.
- Stop storing the SQL query as a String data member in SQLiteStatement class.
  This is no longer needed now that they is no separe prepare step after the
  construction. This makes the SQLiteStatement a bit smaller.

* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::createOrMigrateRecordsTableIfNecessary):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidBlobTables):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsTable):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsRecordIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::createAndPopulateInitialDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidObjectStoreInfoTable):
(WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexInfoTableForIDUpdate):
(WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexRecordsTableForIDUpdate):
(WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::databaseNameAndVersionFromFile):
(WebCore::IDBServer::SQLiteIDBBackingStore::beginTransaction):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteBackingStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::cachedStatement):
* Modules/indexeddb/server/SQLiteIDBCursor.cpp:
(WebCore::IDBServer::SQLiteIDBCursor::createSQLiteStatement):
(WebCore::IDBServer::SQLiteIDBCursor::resetAndRebindPreIndexStatementIfNecessary):
(WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord):
* Modules/webdatabase/Database.cpp:
(WebCore::setTextValueInDatabase):
(WebCore::retrieveTextResultFromDatabase):
(WebCore::Database::performGetTableNames):
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::hasEntryForOriginNoLock):
(WebCore::DatabaseTracker::hasEntryForDatabase):
(WebCore::DatabaseTracker::fullPathForDatabaseNoLock):
(WebCore::DatabaseTracker::origins):
(WebCore::DatabaseTracker::databaseNamesNoLock):
(WebCore::DatabaseTracker::detailsForNameAndOrigin):
(WebCore::DatabaseTracker::setDatabaseDetails):
(WebCore::DatabaseTracker::quotaNoLock):
(WebCore::DatabaseTracker::setQuota):
(WebCore::DatabaseTracker::addDatabase):
(WebCore::DatabaseTracker::deleteOrigin):
(WebCore::DatabaseTracker::deleteDatabase):
(WebCore::DatabaseTracker::removeDeletedOpenedDatabases):
(WebCore::DatabaseTracker::deleteDatabaseFileIfEmpty):
* Modules/webdatabase/SQLStatement.cpp:
(WebCore::SQLStatement::execute):
* loader/appcache/ApplicationCacheStorage.cpp:
(WebCore::ApplicationCacheStorage::loadCacheGroup):
(WebCore::ApplicationCacheStorage::loadManifestHostHashes):
(WebCore::ApplicationCacheStorage::cacheGroupForURL):
(WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL):
(WebCore::ApplicationCacheStorage::calculateQuotaForOrigin):
(WebCore::ApplicationCacheStorage::calculateUsageForOrigin):
(WebCore::ApplicationCacheStorage::calculateRemainingSizeForOriginExcludingCache):
(WebCore::ApplicationCacheStorage::storeUpdatedQuotaForOrigin):
(WebCore::ApplicationCacheStorage::verifySchemaVersion):
(WebCore::ApplicationCacheStorage::executeStatement):
(WebCore::ApplicationCacheStorage::store):
(WebCore::ApplicationCacheStorage::storeUpdatedType):
(WebCore::ApplicationCacheStorage::ensureOriginRecord):
(WebCore::ApplicationCacheStorage::storeNewestCache):
(WebCore::ApplicationCacheStorage::loadCache):
(WebCore::ApplicationCacheStorage::remove):
(WebCore::ApplicationCacheStorage::manifestURLs):
(WebCore::ApplicationCacheStorage::deleteCacheGroupRecord):
(WebCore::ApplicationCacheStorage::checkForDeletedResources):
(WebCore::ApplicationCacheStorage::flatFileAreaSize):
* platform/network/curl/CookieJarDB.cpp:
(WebCore::CookieJarDB::verifySchemaVersion):
(WebCore::CookieJarDB::checkDatabaseValidity):
(WebCore::CookieJarDB::searchCookies):
(WebCore::CookieJarDB::getAllCookies):
(WebCore::CookieJarDB::allDomains):
(WebCore::CookieJarDB::createPrepareStatement):
(WebCore::CookieJarDB::executeSql):
* platform/sql/SQLiteDatabase.cpp:
(WebCore::SQLiteDatabase::open):
(WebCore::SQLiteDatabase::useWALJournalMode):
(WebCore::SQLiteDatabase::maximumSize):
(WebCore::SQLiteDatabase::setMaximumSize):
(WebCore::SQLiteDatabase::pageSize):
(WebCore::SQLiteDatabase::freeSpaceSize):
(WebCore::SQLiteDatabase::totalSize):
(WebCore::SQLiteDatabase::executeCommand):
(WebCore::SQLiteDatabase::returnsAtLeastOneResult):
(WebCore::SQLiteDatabase::tableExists):
(WebCore::SQLiteDatabase::clearAllTables):
(WebCore::SQLiteDatabase::turnOnIncrementalAutoVacuum):
(WebCore::constructAndPrepareStatement):
(WebCore::SQLiteDatabase::prepareStatement):
(WebCore::SQLiteDatabase::prepareHeapStatement):
* platform/sql/SQLiteDatabase.h:
* platform/sql/SQLiteStatement.cpp:
(WebCore::SQLiteStatement::SQLiteStatement):
(WebCore::SQLiteStatement::~SQLiteStatement):
(WebCore::SQLiteStatement::step):
(WebCore::SQLiteStatement::reset):
(WebCore::SQLiteStatement::executeCommand):
(WebCore::SQLiteStatement::returnsAtLeastOneResult):
(WebCore::SQLiteStatement::bindBlob):
(WebCore::SQLiteStatement::bindText):
(WebCore::SQLiteStatement::bindInt):
(WebCore::SQLiteStatement::bindInt64):
(WebCore::SQLiteStatement::bindDouble):
(WebCore::SQLiteStatement::bindNull):
(WebCore::SQLiteStatement::bindParameterCount const):
(WebCore::SQLiteStatement::columnCount):
(WebCore::SQLiteStatement::isColumnNull):
(WebCore::SQLiteStatement::isColumnDeclaredAsBlob):
(WebCore::SQLiteStatement::getColumnName):
(WebCore::SQLiteStatement::getColumnValue):
(WebCore::SQLiteStatement::getColumnText):
(WebCore::SQLiteStatement::getColumnDouble):
(WebCore::SQLiteStatement::getColumnInt):
(WebCore::SQLiteStatement::getColumnInt64):
(WebCore::SQLiteStatement::getColumnBlobAsString):
(WebCore::SQLiteStatement::getColumnBlobAsVector):
(WebCore::SQLiteStatement::returnTextResults):
(WebCore::SQLiteStatement::returnIntResults):
(WebCore::SQLiteStatement::returnInt64Results):
(WebCore::SQLiteStatement::returnDoubleResults):
* platform/sql/SQLiteStatement.h:
* platform/win/SearchPopupMenuDB.cpp:
(WebCore::SearchPopupMenuDB::checkDatabaseValidity):
(WebCore::SearchPopupMenuDB::verifySchemaVersion):
(WebCore::SearchPopupMenuDB::executeSimpleSql):
(WebCore::SearchPopupMenuDB::createPreparedStatement):
* workers/service/server/RegistrationDatabase.cpp:
(WebCore::RegistrationDatabase::ensureValidRecordsTable):
(WebCore::RegistrationDatabase::doPushChanges):
(WebCore::RegistrationDatabase::importRecords):

Source/WebKit:

Update code base now that the SQLiteDatabase & SQLiteStatement API has changed.
Also use more ASCIILiterals.

* NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
(WebKit::ResourceLoadStatisticsDatabaseStore::openITPDatabase):
(WebKit::ResourceLoadStatisticsDatabaseStore::checkForMissingTablesInSchema):
(WebKit::ResourceLoadStatisticsDatabaseStore::enableForeignKeys):
(WebKit::ResourceLoadStatisticsDatabaseStore::currentTableAndIndexQueries):
(WebKit::ResourceLoadStatisticsDatabaseStore::missingUniqueIndices):
(WebKit::ResourceLoadStatisticsDatabaseStore::migrateDataToNewTablesIfNecessary):
(WebKit::ResourceLoadStatisticsDatabaseStore::columnsForTable):
(WebKit::ResourceLoadStatisticsDatabaseStore::addMissingColumnsToTable):
(WebKit::ResourceLoadStatisticsDatabaseStore::renameColumnInTable):
(WebKit::ResourceLoadStatisticsDatabaseStore::openAndUpdateSchemaIfNecessary):
(WebKit::ResourceLoadStatisticsDatabaseStore::scopedStatement const):
(WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationshipList):
(WebKit::ResourceLoadStatisticsDatabaseStore::aggregatedThirdPartyData const):
(WebKit::ResourceLoadStatisticsDatabaseStore::incrementRecordsDeletedCountForDomains):
(WebKit::ResourceLoadStatisticsDatabaseStore::recursivelyFindNonPrevalentDomainsThatRedirectedToThisDomain):
(WebKit::ResourceLoadStatisticsDatabaseStore::markAsPrevalentIfHasRedirectedToPrevalent):
(WebKit::ResourceLoadStatisticsDatabaseStore::findNotVeryPrevalentResources):
(WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess):
(WebKit::ResourceLoadStatisticsDatabaseStore::grandfatherDataForDomains):
(WebKit::ResourceLoadStatisticsDatabaseStore::clearTopFrameUniqueRedirectsToSinceSameSiteStrictEnforcement):
(WebKit::ResourceLoadStatisticsDatabaseStore::clearUserInteraction):
(WebKit::ResourceLoadStatisticsDatabaseStore::setDomainsAsPrevalent):
(WebKit::ResourceLoadStatisticsDatabaseStore::cookieAccess):
(WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt):
(WebKit::ResourceLoadStatisticsDatabaseStore::domainsToBlockAndDeleteCookiesFor const):
(WebKit::ResourceLoadStatisticsDatabaseStore::domainsToBlockButKeepCookiesFor const):
(WebKit::ResourceLoadStatisticsDatabaseStore::domainsWithUserInteractionAsFirstParty const):
(WebKit::ResourceLoadStatisticsDatabaseStore::domainsWithStorageAccess const):
(WebKit::ResourceLoadStatisticsDatabaseStore::domains const):
(WebKit::ResourceLoadStatisticsDatabaseStore::clearGrandfathering):
(WebKit::ResourceLoadStatisticsDatabaseStore::pruneStatisticsIfNeeded):
(WebKit::ResourceLoadStatisticsDatabaseStore::isCorrectSubStatisticsCount):
(WebKit::ResourceLoadStatisticsDatabaseStore::appendSubStatisticList const):
(WebKit::ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters):
(WebKit::ResourceLoadStatisticsDatabaseStore::includeTodayAsOperatingDateIfNecessary):
(WebKit::ResourceLoadStatisticsDatabaseStore::insertExpiredStatisticForTesting):
(WebKit::ResourceLoadStatisticsDatabaseStore::insertPrivateClickMeasurement):
(WebKit::ResourceLoadStatisticsDatabaseStore::privateClickMeasurementToString):
(WebKit::ResourceLoadStatisticsDatabaseStore::clearSentAttribution):
(WebKit::ResourceLoadStatisticsDatabaseStore::markAttributedPrivateClickMeasurementsAsExpiredForTesting):
* NetworkProcess/WebStorage/LocalStorageDatabase.cpp:
(WebKit::LocalStorageDatabase::migrateItemTableIfNeeded):
(WebKit::LocalStorageDatabase::databaseIsEmpty const):
(WebKit::LocalStorageDatabase::scopedStatement const):
* NetworkProcess/WebStorage/LocalStorageDatabase.h:
* UIProcess/API/glib/IconDatabase.cpp:
(WebKit::IconDatabase::IconDatabase):
(WebKit::IconDatabase::populatePageURLToIconURLMap):
(WebKit::IconDatabase::pruneTimerFired):
(WebKit::IconDatabase::iconIDForIconURL):
(WebKit::IconDatabase::setIconIDForPageURL):
(WebKit::IconDatabase::iconData):
(WebKit::IconDatabase::addIcon):
(WebKit::IconDatabase::updateIconTimestamp):
(WebKit::IconDatabase::deleteIcon):

Source/WebKitLegacy:

Update code base now that the SQLiteDatabase & SQLiteStatement API has changed.
Also use more ASCIILiterals.

* Storage/StorageAreaSync.cpp:
(WebKit::StorageAreaSync::migrateItemTableIfNeeded):
(WebKit::StorageAreaSync::performImport):
(WebKit::StorageAreaSync::sync):
(WebKit::StorageAreaSync::deleteEmptyDatabase):
* Storage/StorageTracker.cpp:
(WebKit::StorageTracker::syncImportOriginIdentifiers):
(WebKit::StorageTracker::syncSetOriginDetails):
(WebKit::StorageTracker::syncDeleteAllOrigins):
(WebKit::StorageTracker::syncDeleteOrigin):
(WebKit::StorageTracker::databasePathForOrigin):

Source/WTF:

Allow constructing a UniqueRef<> from a C++ reference. std::unique_ptr<>() can be constructed
using a raw pointer and we can construct a UniqueRef<> from a std::unique_ptr<>() so I see
no reason not to allow that.

The reason I needed this is that I want to prevent call sites from allocating SQLiteStatement
without going through the SQLiteDatabase. As a result, I made the SQLiteStatement constructor
private and marked SQLiteDatabase as a friend class. SQLiteDatabase has to heap-allocate
a SQLiteStatement via new and then construct a UniqueRef<> for it. SQLiteDatabase cannot use
makeUniqueRef() because the SQLiteStatement constructor is private. I also cannot mark
makeUniqueRef() as a friend function of SQLiteStatement or anybody could heap allocate a
SQLiteStatement via makeUniqueRef (not just the SQLiteDatabase).

* wtf/UniqueRef.h:
(WTF::UniqueRef::UniqueRef):

Tools:

Update code base now that the SQLiteDatabase & SQLiteStatement API has changed.
Also use more ASCIILiterals.

* TestWebKitAPI/Tests/WebCore/cocoa/DatabaseTrackerTest.mm:
(TestWebKitAPI::addToDatabasesTable):

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

2 months ago[LFC] Cleanup FormattingContext class
zalan@apple.com [Sun, 16 May 2021 15:57:35 +0000 (15:57 +0000)]
[LFC] Cleanup FormattingContext class
https://bugs.webkit.org/show_bug.cgi?id=225744

Reviewed by Antti Koivisto.

This final patch makes the FormattingContext interface uncluttered.

* WebCore.xcodeproj/project.pbxproj:
* layout/FormattingState.h:
(WebCore::Layout::FormattingState::setIntrinsicWidthConstraints):
(WebCore::Layout::FormattingState::intrinsicWidthConstraints const):
(WebCore::Layout::FormattingState::setIntrinsicWidthConstraintsForBox):
(WebCore::Layout::FormattingState::intrinsicWidthConstraintsForBox const):
* layout/LayoutContext.cpp:
(WebCore::Layout::LayoutContext::layoutFormattingContextSubtree):
* layout/LayoutUnits.h:
(WebCore::Layout::IntrinsicWidthConstraints::expand):
(WebCore::Layout::IntrinsicWidthConstraints::operator+=):
(WebCore::Layout::IntrinsicWidthConstraints::operator-=):
* layout/formattingContexts/FormattingContext.cpp:
* layout/formattingContexts/FormattingContext.h:
(WebCore::Layout::FormattingContext::root const):
(WebCore::Layout::FormattingContext::formattingState const):
(WebCore::Layout::FormattingContext::isBlockFormattingContext const):
(WebCore::Layout::FormattingContext::isInlineFormattingContext const):
(WebCore::Layout::FormattingContext::isTableFormattingContext const):
(WebCore::Layout::FormattingContext::isTableWrapperBlockFormattingContext const):
(WebCore::Layout::FormattingContext::isFlexFormattingContext const):
(WebCore::Layout::FormattingContext::IntrinsicWidthConstraints::expand): Deleted.
(WebCore::Layout::FormattingContext::IntrinsicWidthConstraints::operator+=): Deleted.
(WebCore::Layout::FormattingContext::IntrinsicWidthConstraints::operator-=): Deleted.
* layout/formattingContexts/FormattingGeometry.cpp:
(WebCore::Layout::FormattingGeometry::computedWidthValue):
(WebCore::Layout::FormattingGeometry::shrinkToFitWidth):
(WebCore::Layout::FormattingGeometry::constrainByMinMaxWidth const):
(WebCore::Layout::FormattingGeometry::constraintsForOutOfFlowContent):
(WebCore::Layout::FormattingGeometry::constraintsForInFlowContent const):
* layout/formattingContexts/FormattingGeometry.h:
* layout/formattingContexts/block/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computedIntrinsicWidthConstraints):
* layout/formattingContexts/block/BlockFormattingGeometry.cpp:
(WebCore::Layout::BlockFormattingGeometry::intrinsicWidthConstraints):
* layout/formattingContexts/block/BlockFormattingGeometry.h:
* layout/formattingContexts/block/BlockMarginCollapse.cpp:
* layout/formattingContexts/flex/FlexFormattingContext.cpp:
(WebCore::Layout::FlexFormattingContext::computedIntrinsicWidthConstraints):
* layout/formattingContexts/flex/FlexFormattingGeometry.cpp:
(WebCore::Layout::FlexFormattingGeometry::intrinsicWidthConstraints):
* layout/formattingContexts/flex/FlexFormattingGeometry.h:
* layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
* layout/formattingContexts/table/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::TableFormattingContext::computedPreferredWidthForColumns):
* layout/formattingContexts/table/TableFormattingGeometry.cpp:
(WebCore::Layout::TableFormattingGeometry::intrinsicWidthConstraintsForCell):
* layout/formattingContexts/table/TableFormattingGeometry.h:
* layout/formattingContexts/table/TableGrid.h:
(WebCore::Layout::TableGrid::setWidthConstraints):
(WebCore::Layout::TableGrid::widthConstraints const):
(WebCore::Layout::TableGrid::Slot::widthConstraints const):
(WebCore::Layout::TableGrid::Slot::setWidthConstraints):

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

2 months agoAdd support for creating/accessing/setting non-sRGB ImageData via canvas
weinig@apple.com [Sun, 16 May 2021 15:21:34 +0000 (15:21 +0000)]
Add support for creating/accessing/setting non-sRGB ImageData via canvas
https://bugs.webkit.org/show_bug.cgi?id=225841

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

* web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.to.p3-expected.txt:
Update result to passing.

Source/WebCore:

Test: fast/canvas/canvas-color-space-display-p3-ImageData.html

Add support for accessing non-sRGB (only DisplayP3 for now due
to the specification, but the support is general) pixel data in
HTML canvas.

Updates ImageData constructors and CanvasImageData operations to
take optional ImageDataSettings dictionaries, which contain an
optional color space (otherwise defaulting back to sRGB).

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/ImageDataSettings.h: Added.
* html/ImageDataSettings.idl: Added.
Add new ImageDataSettings.idl and related files.

* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readImageBitmap):
Fixes FIXME and uses PixelBuffer directly rather than allocating
an unnecessary ImageData. This was done now since the relevent
ImageData constructor has gone away.

* html/ImageData.cpp:
(WebCore::computeDataSize):
(WebCore::ImageData::computeColorSpace):
(WebCore::ImageData::create):
(WebCore::ImageData::createUninitialized):
(WebCore::ImageData::ImageData):
(WebCore::ImageData::pixelBuffer const):
(WebCore::ImageData::dataSize): Deleted.
(WebCore::ImageData::deepClone const): Deleted.
* html/ImageData.h:
(WebCore::ImageData::size const):
(WebCore::ImageData::width const):
(WebCore::ImageData::height const):
(WebCore::ImageData::data const):
(WebCore::ImageData::colorSpace const):
(WebCore::ImageData::pixelBuffer const): Deleted.

- Reworked ImageData to no longer store a PixelBuffer, which has
  extraneous information in it, but rather to store just what it
  needs IntSize, Ref<JSC::Uint8ClampedArray>, and now PredefinedColorSpace.
- Updates create functions for new optional ImageDataSettings.
- Adds createUninitialized which follows spec language for ImageData creation
  and is used by CanvasRenderingContext2D to create ImageData objects of with
  the right color spaces, allowing for fallback to the canvas' own color space
  when no ImageDataSettings color space is provided. It is uninitialized and
  therefore requires the client to initialize the data to allow for support for
  no alpha support in the future, which requires a non-zero initialization pattern.

* html/ImageData.idl:
Add optional ImageDataSettings parameters and the new colorSpace attribute.

* html/canvas/CanvasImageData.idl:
Add optional ImageDataSettings parameters.

* html/canvas/CanvasRenderingContext2DBase.h:
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::initializeEmptyImageData):
Add helper to initialize the ImageData buffer. Right now it always calls
zeroFill(), but in the future it will need to do more.

(WebCore::CanvasRenderingContext2DBase::createImageData const):
Update to account for this function being able to throw an exception (when
out of memory) and use the new createUninitialized/initializeEmptyImageData
to create a correctly color spaced ImageData.

(WebCore::CanvasRenderingContext2DBase::createImageData const):
Update for new optional ImageDataSettings and use the new createUninitialized
initializeEmptyImageData to create a correctly color spaced ImageData.

(WebCore::CanvasRenderingContext2DBase::getImageData const):
Moves parameter checks to the begining to match the spec, and uses new
createUninitialized/initializeEmptyImageData to create a correctly color
spaced ImageData. Also, use the ImageData's color space when getting
the pixel buffer to actually return the right data!

* html/canvas/PredefinedColorSpace.cpp:
(WebCore::toPredefinedColorSpace):
* html/canvas/PredefinedColorSpace.h:
Add conversion function from DestinationColorSpace to PredefinedColorSpace.
Since DestinationColorSpace is a superset of PredefinedColorSpace, this can
fail, so this conversion returns an Optional.

* inspector/InspectorCanvas.cpp:
* inspector/InspectorCanvasCallTracer.cpp:
* inspector/InspectorCanvasCallTracer.h:
Stub out inspector support for ImageDataSettings.

* platform/graphics/ImageBufferBackend.cpp:
(WebCore::ImageBufferBackend::getPixelBuffer const):
Use the ImageBuffer's actual color space as the source color space
rather than hard coding sRGB. This allows the color space conversion
to take place. Also remove some unnecessary temporary variables.

(WebCore::ImageBufferBackend::putPixelBuffer):
Use the ImageBuffer's actual color space as the destination color space
rather than hard coding sRGB. This allows the color space conversion
to take place. Also remove some unnecessary temporary variables.

* platform/graphics/PixelBuffer.cpp:
(WebCore::PixelBuffer::tryCreate):
(WebCore::PixelBuffer::PixelBuffer):
* platform/graphics/PixelBuffer.h:
(WebCore::PixelBuffer::takeData):
Add a few helpers to allow creationg to/from PixelBuffer
a bit easier.

* platform/graphics/PixelBufferConversion.cpp:
(WebCore::convertImagePixelsAccelerated):
Fix incorrect assertion. We want to assert that there is no error, not that
there is one.

* platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::convertImageBufferToColorSpace):
(WebCore::FilterEffect::copyUnmultipliedResult):
(WebCore::FilterEffect::copyPremultipliedResult):
(WebCore::FilterEffect::createUnmultipliedImageResult):
(WebCore::FilterEffect::createPremultipliedImageResult):
Stop hard coding SRGB for PixelBuffer color spaces and use the appropriate
color space for the task. We still do color space conversion through ImageBuffer
so we should come back and simplify code here to not always require that.

* testing/Internals.cpp:
(WebCore::Internals::videoSampleAvailable):
(WebCore::Internals::loadArtworkImage):
Update to specify a color space to maintain existing behavior.

Source/WebKitLegacy/win:

Add support for tests enabling the CanvasColorSpaceEnabled preference.

* WebPreferences.cpp:
(WebPreferences::canvasColorSpaceEnabled):
* WebPreferences.h:
* WebView.cpp:
(WebView::notifyPreferencesChanged):

LayoutTests:

* TestExpectations:
Remove wide-gamut-canvas now that they should pass.

* fast/canvas/canvas-color-space-display-p3-ImageData-expected.txt: Added.
* fast/canvas/canvas-color-space-display-p3-ImageData.html: Added.
Add new test exercising getImageData and putImageData with non-sRGB canvases
and non-sRGB ImageData.

* fast/canvas/canvas-imageData-expected.txt:
Update results for updated error messages, which are a bit worse due additional
ambiguity in signatures.

* platform/glib/TestExpectations:
Mark new test as failing on glib due to lack of display-p3 support.

* platform/win/TestExpectations:
Mark new test as failing on Windows due to lack of display-p3 support.
Unskip CanvasRenderingContext2DSettings-colorSpace-enabled.html which
should now pass due to adding manual preferences support in WebKitLegacy/win.

* storage/indexeddb/modern/objectstore-autoincrement-types-expected.txt:
Update results due to new attribute in ImageData that is auto printed.

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

2 months ago[LFC] Cleanup margin collapsing class
zalan@apple.com [Sun, 16 May 2021 15:00:51 +0000 (15:00 +0000)]
[LFC] Cleanup margin collapsing class
https://bugs.webkit.org/show_bug.cgi?id=225745

Reviewed by Antti Koivisto.

BlockMarginCollapse needs LayoutState and BlockFormattingState only.

* layout/MarginTypes.h:
* layout/formattingContexts/FormattingGeometry.cpp:
(WebCore::Layout::FormattingGeometry::constraintsForInFlowContent const):
(WebCore::Layout::FormattingGeometry::constraintsForInFlowContent): Deleted.
* layout/formattingContexts/FormattingGeometry.h:
* layout/formattingContexts/block/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForBoxAndAncestors):
(WebCore::Layout::BlockFormattingContext::geometry const):
(WebCore::Layout::BlockFormattingContext::marginCollapse const):
* layout/formattingContexts/block/BlockFormattingGeometry.cpp:
(WebCore::Layout::BlockFormattingGeometry::inFlowNonReplacedContentHeightAndMargin):
* layout/formattingContexts/block/BlockFormattingQuirks.cpp:
(WebCore::Layout::BlockFormattingQuirks::stretchedInFlowHeightIfApplicable const):
* layout/formattingContexts/block/BlockFormattingQuirks.h:
* layout/formattingContexts/block/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockMarginCollapse::BlockMarginCollapse):
(WebCore::Layout::BlockMarginCollapse::hasClearance const):
(WebCore::Layout::BlockMarginCollapse::marginBeforeCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockMarginCollapse::marginAfterCollapsesWithParentMarginAfter const):
(WebCore::Layout::BlockMarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter const):
(WebCore::Layout::BlockMarginCollapse::positiveNegativeValues const):
(WebCore::Layout::BlockMarginCollapse::positiveNegativeMarginBefore const):
* layout/formattingContexts/block/BlockMarginCollapse.h:
(WebCore::Layout::BlockMarginCollapse::inQuirksMode const):
(WebCore::Layout::BlockMarginCollapse::layoutState const):
(WebCore::Layout::BlockMarginCollapse::formattingState const):
(WebCore::Layout::BlockMarginCollapse::layoutState): Deleted.
(WebCore::Layout::BlockMarginCollapse::formattingContext const): Deleted.
* layout/formattingContexts/block/PrecomputedBlockMarginCollapse.cpp:
(WebCore::Layout::BlockMarginCollapse::precomputedPositiveNegativeValues const):
(WebCore::Layout::BlockMarginCollapse::precomputedPositiveNegativeMarginBefore const):
(WebCore::Layout::BlockMarginCollapse::precomputedMarginBefore):

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

2 months ago[LFC] Cleanup FormattingQuirk classes
zalan@apple.com [Sun, 16 May 2021 13:50:51 +0000 (13:50 +0000)]
[LFC] Cleanup FormattingQuirk classes
https://bugs.webkit.org/show_bug.cgi?id=225746

Reviewed by Antti Koivisto.

Quirk functions should only be called when not in standards mode.

* layout/formattingContexts/FormattingQuirks.cpp:
(WebCore::Layout::FormattingQuirks::heightValueOfNearestContainingBlockWithFixedHeight const):
(WebCore::Layout::FormattingQuirks::heightValueOfNearestContainingBlockWithFixedHeight): Deleted.
* layout/formattingContexts/FormattingQuirks.h:
(WebCore::Layout::FormattingQuirks::layoutState const):
(WebCore::Layout::FormattingQuirks::layoutState): Deleted.
* layout/formattingContexts/block/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::quirks const): Deleted.
* layout/formattingContexts/block/BlockFormattingContext.h:
* layout/formattingContexts/block/BlockFormattingGeometry.cpp:
(WebCore::Layout::BlockFormattingGeometry::inFlowContentHeightAndMargin):
* layout/formattingContexts/block/BlockFormattingQuirks.cpp:
(WebCore::Layout::BlockFormattingQuirks::BlockFormattingQuirks):
(WebCore::Layout::needsStretching):
(WebCore::Layout::BlockFormattingQuirks::stretchedInFlowHeightIfApplicable const):
(WebCore::Layout::BlockFormattingQuirks::shouldIgnoreCollapsedQuirkMargin):
(WebCore::Layout::BlockFormattingQuirks::shouldCollapseMarginBeforeWithParentMarginBefore):
(WebCore::Layout::BlockFormattingQuirks::shouldCollapseMarginAfterWithParentMarginAfter):
(WebCore::Layout::BlockFormattingQuirks::needsStretching const): Deleted.
(WebCore::Layout::BlockFormattingQuirks::stretchedInFlowHeight): Deleted.
(WebCore::Layout::BlockFormattingQuirks::shouldIgnoreCollapsedQuirkMargin const): Deleted.
(WebCore::Layout::BlockFormattingQuirks::shouldCollapseMarginBeforeWithParentMarginBefore const): Deleted.
(WebCore::Layout::BlockFormattingQuirks::shouldCollapseMarginAfterWithParentMarginAfter const): Deleted.
* layout/formattingContexts/block/BlockFormattingQuirks.h:
(WebCore::Layout::BlockFormattingQuirks::formattingContext const): Deleted.
* layout/formattingContexts/block/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockMarginCollapse::marginBeforeCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockMarginCollapse::marginAfterCollapsesWithParentMarginAfter const):
(WebCore::Layout::BlockMarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter const):
(WebCore::Layout::BlockMarginCollapse::positiveNegativeMarginBefore const):
(WebCore::Layout::BlockMarginCollapse::quirks const): Deleted.
* layout/formattingContexts/block/BlockMarginCollapse.h:
* layout/formattingContexts/block/PrecomputedBlockMarginCollapse.cpp:
(WebCore::Layout::BlockMarginCollapse::precomputedPositiveNegativeMarginBefore const):
* layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingContext.cpp:
(WebCore::Layout::TableWrapperBlockFormattingContext::computeHeightAndMarginForTableBox):
(WebCore::Layout::TableWrapperBlockFormattingContext::quirks const): Deleted.
* layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingContext.h:
* layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingQuirks.cpp:
(WebCore::Layout::TableWrapperQuirks::TableWrapperQuirks):
(WebCore::Layout::TableWrapperQuirks::overriddenTableHeight const):
* layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingQuirks.h:
* layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::quirks const): Deleted.
* layout/formattingContexts/inline/InlineFormattingContext.h:
* layout/formattingContexts/inline/InlineFormattingGeometry.cpp:
(WebCore::Layout::InlineFormattingGeometry::inlineLevelBoxAffectsLineBox const):
* layout/formattingContexts/inline/InlineFormattingGeometry.h:
* layout/formattingContexts/inline/InlineFormattingQuirks.cpp:
(WebCore::Layout::InlineFormattingQuirks::initialLineHeight const):
(WebCore::Layout::InlineFormattingQuirks::inlineLevelBoxAffectsLineBox const):
* layout/formattingContexts/inline/InlineFormattingQuirks.h:
(WebCore::Layout::InlineFormattingQuirks::formattingContext const): Deleted.
* layout/formattingContexts/table/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::quirks const): Deleted.
* layout/formattingContexts/table/TableFormattingContext.h:
* layout/formattingContexts/table/TableFormattingGeometry.cpp:
(WebCore::Layout::TableFormattingGeometry::cellHeigh const):
* layout/formattingContexts/table/TableFormattingQuirks.cpp:
(WebCore::Layout::TableFormattingQuirks::TableFormattingQuirks):
(WebCore::Layout::TableFormattingQuirks::shouldIgnoreChildContentVerticalMargin):
(WebCore::Layout::TableFormattingQuirks::shouldIgnoreChildContentVerticalMargin const): Deleted.
* layout/formattingContexts/table/TableFormattingQuirks.h:
(WebCore::Layout::TableFormattingQuirks::formattingContext const): Deleted.
* layout/integration/LayoutIntegrationInlineContentBuilder.cpp:
(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayNonRootInlineBoxes const):

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

2 months agoMake will-change: transform-style create a containing block
ntim@apple.com [Sun, 16 May 2021 08:30:49 +0000 (08:30 +0000)]
Make will-change: transform-style create a containing block
https://bugs.webkit.org/show_bug.cgi?id=225441

Reviewed by Simon Fraser.

Marked relevant WPT as pass.

Source/WebCore:

* rendering/style/WillChangeData.cpp:
(WebCore::WillChangeData::createsContainingBlockForOutOfFlowPositioned const):

LayoutTests:

* TestExpectations:

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

2 months agoDFGVarargsForwardingPhase shouldn't consult Flush
sbarati@apple.com [Sun, 16 May 2021 07:30:39 +0000 (07:30 +0000)]
DFGVarargsForwardingPhase shouldn't consult Flush
https://bugs.webkit.org/show_bug.cgi?id=225824

Reviewed by Filip Pizlo and Yusuke Suzuki.

JSTests:

* microbenchmarks/tail-call-forward-arguments-arguments-elimination.js: Added.

Source/JavaScriptCore:

In the Varargs Forwarding Phase, we were treating Flush as if it
were any other form of node that interferes with an argument
via clobbering a stack location.

This isn't how Flush works though. It doesn't have execution
semantics at the node's graph location. Instead, Flush means that
any variable it's linked to in CPS should be flushed to the stack
between it and the Flush.

The semantics of arguments is that they're already flushed to the
stack, and they've always been. Seeing a Flush node doesn't prevent
arguments elimination, we already know the arguments are on the stack,
and all we're searching for is if there is an interference operation
that says it'll clobber that stack slot. Flush isn't an interference operation.

This is a 0.5% Speedometer progression.

* dfg/DFGVarargsForwardingPhase.cpp:

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

2 months agoDelete WebSQL code from WebKit2
rniwa@webkit.org [Sun, 16 May 2021 06:36:30 +0000 (06:36 +0000)]
Delete WebSQL code from WebKit2
https://bugs.webkit.org/show_bug.cgi?id=225739

Reviewed by Sihui Liu.

Source/WebCore:

* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setWebSQLEnabled): Replaced setWebSQLDisabled.

Source/WebKit:

Deleted WebSQL code. We keep some code for website data store since it's possible
for user's device to still have WebSQL data, and we should be able to delete them.

* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::monitoredDataTypes):
* Shared/WebProcessDataStoreParameters.h:
(WebKit::WebProcessDataStoreParameters::encode const):
(WebKit::WebProcessDataStoreParameters::decode):
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetWebSQLDisabled):
(WKPreferencesGetWebSQLDisabled):
* UIProcess/API/C/WKPreferencesRef.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::webProcessDataStoreParameters):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::setWebsiteDataStoreParameters):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformSetWebsiteDataStoreParameters):

Source/WebKitLegacy/mac:

* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Source/WebKitLegacy/win:

* WebView.cpp:
(WebView::notifyPreferencesChanged):

Source/WTF:

Deleted the experimental feature to disable WebSQL since we've been shipping this,
and made the flag to selectively enable WebSQL in WebKit1 an internal debug setting
since nobody should be enabling this now.

* Scripts/Preferences/WebPreferencesExperimental.yaml:
* Scripts/Preferences/WebPreferencesInternal.yaml:

Tools:

* MiniBrowser/playstation/WebContext.cpp:
(WebContext::WebContext):
* TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
(runWebsiteDataStoreCustomPaths):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::configureWebsiteDataStoreTemporaryDirectories):

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

2 months ago[LFC] Make redundant public helpers private in FormattingContext
zalan@apple.com [Sun, 16 May 2021 04:07:46 +0000 (04:07 +0000)]
[LFC] Make redundant public helpers private in FormattingContext
https://bugs.webkit.org/show_bug.cgi?id=225747

Reviewed by Antti Koivisto.

* layout/formattingContexts/FormattingContext.h:
* layout/formattingContexts/FormattingGeometry.cpp:
(WebCore::Layout::FormattingGeometry::computedHeightValue const):
* layout/formattingContexts/FormattingQuirks.cpp:
(WebCore::Layout::FormattingQuirks::heightValueOfNearestContainingBlockWithFixedHeight):

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

2 months ago[GPU Process] Ensure RemoteRenderingBackendProxy is restored to its original state...
said@apple.com [Sun, 16 May 2021 04:06:27 +0000 (04:06 +0000)]
[GPU Process] Ensure RemoteRenderingBackendProxy is restored to its original state when GPUP connection is closed
https://bugs.webkit.org/show_bug.cgi?id=225781
<rdar://76678163>

Reviewed by Darin Adler.

GPUProcess may exit in different scenarios: a crash, under memory pressure
or when it is not being used; see r276148. In all cases, the state of
RemoteRenderingBackendProxy has to be restored to its original state when
it was created. gpuProcessConnectionDidClose() is supposed to do that.
But some members are not cleared in this function.

* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::gpuProcessConnectionDidClose):
Make sure the resource cache and the getImageData memory and semaphore
are cleared.

(WebKit::RemoteRenderingBackendProxy::createRemoteImageBuffer):
Add this helper method to be called when a RemoteImageBufferProxy is first
created or when its backend is cleared.

(WebKit::RemoteRenderingBackendProxy::createImageBuffer):
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
* WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:
(WebKit::RemoteResourceCacheProxy::remoteResourceCacheWasDestroyed):
Add this new function to restore RemoteResourceCacheProxy to its original
state.

* WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
(WebKit::RemoteResourceCacheProxy::imageBuffers const): Deleted.

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

2 months ago[LFC] Make redundant public helpers private in TableFormattingContext
zalan@apple.com [Sun, 16 May 2021 03:32:16 +0000 (03:32 +0000)]
[LFC] Make redundant public helpers private in TableFormattingContext
https://bugs.webkit.org/show_bug.cgi?id=225748

Reviewed by Antti Koivisto.

* layout/formattingContexts/table/TableFormattingContext.h:
* layout/formattingContexts/table/TableFormattingGeometry.cpp:
(WebCore::Layout::TableFormattingGeometry::cellHeigh const):
* layout/formattingContexts/table/TableFormattingQuirks.h:
(WebCore::Layout::TableFormattingQuirks::formattingContext const):
(WebCore::Layout::TableFormattingQuirks::geometry const): Deleted.

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

2 months agoAllow conditionally enabling OffscreenCanvas only for non-worker contexts
weinig@apple.com [Sun, 16 May 2021 03:14:57 +0000 (03:14 +0000)]
Allow conditionally enabling OffscreenCanvas only for non-worker contexts
https://bugs.webkit.org/show_bug.cgi?id=225845

Reviewed by Darin Adler.

.:

* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsWPE.cmake:
* Source/cmake/WebKitFeatures.cmake:
Match current behavior of ENABLE_OFFSCREEN_CANVAS for ENABLE_OFFSCREEN_CANVAS_IN_WORKERS.

Source/WebCore:

Enable both compile time and runtime conditional enablement of just the
non-worker OffscreenCanvas code path.

To make this work a new IDL extended attribute was needed, ConditionalForWorker=FOO,
which allows specifying an additional macro to check for whether the constructor
should be exposed on workers. Ideally this would be generic for any context type,
but at the moment, the limited syntax of extended attributes makes that hard. If
generalization is needed (or a similar syntax is needed for something else) this can
be revisited.

To support runtime conditional exposure, the existing EnabledForContext, which calls
a static function on the implementation class passing the ScriptExecutationContext
is used. If conditional per context type ever becomes a common thing, we should add
another extended attribute (and add syntax to support like above) that allows specifying
both the context type and the setting name.

Other than that, uses of ENABLE_OFFSCREEN_CANVAS that guarded worker specific functionality
were replaced by ENABLE_OFFSCREEN_CANVAS_IN_WORKERS.

* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::serialize):
(WebCore::CloneSerializer::CloneSerializer):
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneDeserializer::deserialize):
(WebCore::CloneDeserializer::CloneDeserializer):
(WebCore::CloneDeserializer::readTerminal):
(WebCore::SerializedScriptValue::SerializedScriptValue):
(WebCore::SerializedScriptValue::computeMemoryCost const):
(WebCore::SerializedScriptValue::create):
(WebCore::SerializedScriptValue::deserialize):
* bindings/js/SerializedScriptValue.h:
(WebCore::SerializedScriptValue::SerializedScriptValue):
* bindings/scripts/IDLAttributes.json:
* bindings/scripts/preprocess-idls.pl:
(GenerateConstructorAttributes):
* html/HTMLCanvasElement.idl:
* html/OffscreenCanvas.cpp:
(WebCore::OffscreenCanvas::enabledForContext):
* html/OffscreenCanvas.h:
* html/OffscreenCanvas.idl:
* html/canvas/OffscreenCanvasRenderingContext2D.cpp:
(WebCore::OffscreenCanvasRenderingContext2D::enabledForContext):
* html/canvas/OffscreenCanvasRenderingContext2D.h:
* html/canvas/OffscreenCanvasRenderingContext2D.idl:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setOffscreenCanvasInWorkersEnabled):
(WebCore::RuntimeEnabledFeatures::offscreenCanvasInWorkersEnabled const):
* workers/DedicatedWorkerGlobalScope.h:
* workers/DedicatedWorkerGlobalScope.idl:
* workers/WorkerAnimationController.cpp:
* workers/WorkerAnimationController.h:

Source/WTF:

* Scripts/Preferences/WebPreferencesInternal.yaml:
Add new OffscreenCanvasInWorkersEnabled preference.

* wtf/PlatformEnable.h:
Add new ENABLE_OFFSCREEN_CANVAS_IN_WORKERS macro.

Tools:

* Scripts/webkitperl/FeatureList.pm:
* WebKitTestRunner/TestOptions.cpp:
(WTR::TestOptions::defaults):
Match current behavior of ENABLE_OFFSCREEN_CANVAS and OffscreenCanvasEnabled
for ENABLE_OFFSCREEN_CANVAS_IN_WORKERS and OffscreenCanvasInWorkersEnabled.

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

2 months ago[LFC] Make redundant public helpers private in InlineFormattingContext
zalan@apple.com [Sun, 16 May 2021 03:04:37 +0000 (03:04 +0000)]
[LFC] Make redundant public helpers private in InlineFormattingContext
https://bugs.webkit.org/show_bug.cgi?id=225749

Reviewed by Antti Koivisto.

* layout/formattingContexts/inline/InlineFormattingContext.h:
* layout/formattingContexts/inline/InlineFormattingGeometry.cpp:
(WebCore::Layout::LineBoxBuilder::computeLineBoxHeightAndAlignInlineLevelBoxesVertically):
* layout/formattingContexts/inline/InlineLineBuilder.cpp:
(WebCore::Layout::isAtSoftWrapOpportunity):
* layout/integration/LayoutIntegrationInlineContentBuilder.cpp:
(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayNonRootInlineBoxes const):

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

2 months ago[LFC] Make redundant public helpers private in BlockFormattingContext
zalan@apple.com [Sun, 16 May 2021 02:35:53 +0000 (02:35 +0000)]
[LFC] Make redundant public helpers private in BlockFormattingContext
https://bugs.webkit.org/show_bug.cgi?id=225750

Reviewed by Antti Koivisto.

* layout/formattingContexts/block/BlockFormattingContext.h:
* layout/formattingContexts/block/BlockFormattingGeometry.cpp:
(WebCore::Layout::BlockFormattingGeometry::inFlowNonReplacedContentHeightAndMargin):
(WebCore::Layout::BlockFormattingGeometry::inFlowContentHeightAndMargin):
* layout/formattingContexts/block/BlockFormattingQuirks.cpp:
(WebCore::Layout::BlockFormattingQuirks::stretchedInFlowHeight):
* layout/formattingContexts/block/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockMarginCollapse::quirks const):
(WebCore::Layout::BlockMarginCollapse::marginBeforeCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockMarginCollapse::marginAfterCollapsesWithParentMarginAfter const):
(WebCore::Layout::BlockMarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter const):
(WebCore::Layout::BlockMarginCollapse::positiveNegativeMarginBefore const):
* layout/formattingContexts/block/BlockMarginCollapse.h:
* layout/formattingContexts/block/PrecomputedBlockMarginCollapse.cpp:
(WebCore::Layout::BlockMarginCollapse::precomputedPositiveNegativeValues const):
(WebCore::Layout::BlockMarginCollapse::precomputedPositiveNegativeMarginBefore const):
* layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingQuirks.cpp:
(WebCore::Layout::TableWrapperQuirks::overriddenTableHeight const):

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

2 months ago[LFC] Make FormattingGeometry c'tors public
zalan@apple.com [Sun, 16 May 2021 02:18:27 +0000 (02:18 +0000)]
[LFC] Make FormattingGeometry c'tors public
https://bugs.webkit.org/show_bug.cgi?id=225751

Reviewed by Antti Koivisto.

Remove unnecessary class friending.

* layout/formattingContexts/FormattingGeometry.h:
* layout/formattingContexts/block/BlockFormattingGeometry.h:
* layout/formattingContexts/inline/InlineFormattingGeometry.h:
* layout/formattingContexts/inline/InlineFormattingQuirks.h:
* layout/formattingContexts/table/TableFormattingGeometry.h:

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

2 months ago[LFC] Move base formatting geometry to its own class
zalan@apple.com [Sun, 16 May 2021 01:56:55 +0000 (01:56 +0000)]
[LFC] Move base formatting geometry to its own class
https://bugs.webkit.org/show_bug.cgi?id=225752

Reviewed by Antti Koivisto.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/formattingContexts/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::geometry const):
* layout/formattingContexts/FormattingContext.h:
(WebCore::Layout::FormattingContext::Geometry::layoutState const): Deleted.
(WebCore::Layout::FormattingContext::Geometry::layoutState): Deleted.
(WebCore::Layout::FormattingContext::Geometry::formattingContext const): Deleted.
(WebCore::Layout::FormattingContext::geometry const): Deleted.
(WebCore::Layout::FormattingContext::Geometry::Geometry): Deleted.
* layout/formattingContexts/FormattingContextGeometry.cpp: Removed.
* layout/formattingContexts/block/BlockFormattingGeometry.cpp:
(WebCore::Layout::BlockFormattingGeometry::BlockFormattingGeometry):
(WebCore::Layout::BlockFormattingGeometry::inFlowNonReplacedContentHeightAndMargin):
(WebCore::Layout::BlockFormattingGeometry::inFlowNonReplacedContentWidthAndMargin):
* layout/formattingContexts/block/BlockFormattingGeometry.h:
(WebCore::Layout::BlockFormattingGeometry::formattingContext const):
* layout/formattingContexts/flex/FlexFormattingGeometry.cpp:
(WebCore::Layout::FlexFormattingGeometry::FlexFormattingGeometry):
* layout/formattingContexts/flex/FlexFormattingGeometry.h:
(WebCore::Layout::FlexFormattingGeometry::formattingContext const):
* layout/formattingContexts/inline/InlineFormattingGeometry.cpp:
(WebCore::Layout::InlineFormattingGeometry::InlineFormattingGeometry):
(WebCore::Layout::InlineFormattingGeometry::inlineBlockContentWidthAndMargin):
* layout/formattingContexts/inline/InlineFormattingGeometry.h:
(WebCore::Layout::InlineFormattingGeometry::formattingContext const):
* layout/formattingContexts/table/TableFormattingGeometry.cpp:
(WebCore::Layout::TableFormattingGeometry::TableFormattingGeometry):
* layout/formattingContexts/table/TableFormattingGeometry.h:
(WebCore::Layout::TableFormattingGeometry::formattingContext const):
* layout/formattingContexts/table/TableFormattingQuirks.h:
(WebCore::Layout::TableFormattingQuirks::geometry const):

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

2 months agoRemove _WKWebsitePolicies
commit-queue@webkit.org [Sun, 16 May 2021 01:50:34 +0000 (01:50 +0000)]
Remove _WKWebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=224293

Patch by Alex Christensen <achristensen@webkit.org> on 2021-05-15
Reviewed by Darin Adler.

Source/WebKit:

Its last use was removed in rdar://problem/58064847 and we've released a Safari version since then.
It was replaced by WKWebpagePreferences

* SourcesCocoa.txt:
* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _updateWebsitePolicies:]): Deleted.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/WKWebpagePreferences.mm:
* UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.mm: Removed.
* UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h: Removed.
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* UIProcess/Cocoa/WebProcessProxyCocoa.mm:
(WebKit::WebProcessProxy::sendAudioComponentRegistrations):
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::draggingExited):
(WebKit::WebViewImpl::performDragOperation):
(WebKit::WebViewImpl::setPromisedDataForImage):
* WebKit.xcodeproj/project.pbxproj:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
(-[CustomUserAgentDelegate _webView:decidePolicyForNavigationAction:preferences:userInfo:decisionHandler:]):
(-[CustomJavaScriptUserAgentDelegate webView:decidePolicyForNavigationAction:preferences:decisionHandler:]):
(-[CustomNavigatorPlatformDelegate webView:decidePolicyForNavigationAction:preferences:decisionHandler:]):
(-[PopUpPoliciesDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[PopUpPoliciesDelegate webView:decidePolicyForNavigationAction:preferences:decisionHandler:]):
(-[CustomUserAgentDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]): Deleted.
(-[CustomJavaScriptUserAgentDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]): Deleted.
(-[CustomNavigatorPlatformDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]): Deleted.
(-[PopUpPoliciesDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted.

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

2 months ago[LFC] Move table formatting geometry to its own class
zalan@apple.com [Sun, 16 May 2021 01:21:21 +0000 (01:21 +0000)]
[LFC] Move table formatting geometry to its own class
https://bugs.webkit.org/show_bug.cgi?id=225753

Reviewed by Antti Koivisto.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/formattingContexts/table/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::geometry const):
* layout/formattingContexts/table/TableFormattingContext.h:
(WebCore::Layout::TableFormattingContext::Geometry::Geometry): Deleted.
* layout/formattingContexts/table/TableFormattingContextGeometry.cpp: Removed.

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

2 months agoClean up BaseAudioContext now that legacy/prefixed WebAudio is gone
cdumez@apple.com [Sun, 16 May 2021 01:05:18 +0000 (01:05 +0000)]
Clean up BaseAudioContext now that legacy/prefixed WebAudio is gone
https://bugs.webkit.org/show_bug.cgi?id=225843

Reviewed by Darin Adler.

The BaseAudioContext class hierarchy used to be a bit complicated when
we supposed legacy WebAudio because OfflineAudioContext would subclass
BaseAudioContext directly, while WebKitOfflineAudioContext would
subclass BaseAudioContext via AudioContext. The class hierarchy is now
a lot simpler, BaseAudioContext is the base class and it has exactly
2 subclasses: OfflineAudioContext and AudioContext (for real-time
rendering). Now that the legacy WebAudio code is gone, this patch
cleans up BaseAudioContext and moves as much code as possible to its
subclasses (OfflineAudioContext & AudioContext).

* Modules/webaudio/AudioBuffer.cpp:
(WebCore::AudioBuffer::create):
* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::setBuffer):
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::create):
(WebCore::AudioContext::AudioContext):
(WebCore::AudioContext::uninitialize):
(WebCore::AudioContext::lazyInitialize):
(WebCore::AudioContext::activeDOMObjectName const):
* Modules/webaudio/AudioContext.h:
(isType):
* Modules/webaudio/AudioContextState.h:
* Modules/webaudio/AudioNode.cpp:
(WebCore::AudioNode::setChannelCount):
* Modules/webaudio/AudioNodeOutput.cpp:
(WebCore::AudioNodeOutput::AudioNodeOutput):
(WebCore::AudioNodeOutput::setNumberOfChannels):
* Modules/webaudio/AudioWorkletNode.cpp:
(WebCore::AudioWorkletNode::create):
* Modules/webaudio/BaseAudioContext.cpp:
(WebCore::generateContextID):
(WebCore::BaseAudioContext::BaseAudioContext):
(WebCore::BaseAudioContext::lazyInitialize):
(WebCore::BaseAudioContext::uninitialize):
(WebCore::BaseAudioContext::stop):
(WebCore::BaseAudioContext::createScriptProcessor):
(WebCore::BaseAudioContext::derefFinishedSourceNodes):
(WebCore::BaseAudioContext::lockInternal):
(WebCore::BaseAudioContext::tryLock):
(WebCore::BaseAudioContext::unlock):
(WebCore::BaseAudioContext::handlePostRenderTasks):
(WebCore::BaseAudioContext::deleteMarkedNodes):
(WebCore::BaseAudioContext::updateAutomaticPullNodes):
(WebCore::BaseAudioContext::postTask):
(WebCore::BaseAudioContext::workletIsReady):
* Modules/webaudio/BaseAudioContext.h:
(WebCore::BaseAudioContext::isInitialized const):
(WebCore::BaseAudioContext::currentSampleFrame const):
(WebCore::BaseAudioContext::currentTime const):
(WebCore::BaseAudioContext::sampleRate const):
(WebCore::BaseAudioContext::listener):
(WebCore::BaseAudioContext::incrementConnectionCount):
(WebCore::BaseAudioContext::isAudioThread const):
(WebCore::BaseAudioContext::isAudioThreadFinished const):
(WebCore::BaseAudioContext::isGraphOwner const):
* Modules/webaudio/ChannelMergerNode.cpp:
(WebCore::ChannelMergerNode::create):
* Modules/webaudio/ChannelSplitterNode.cpp:
(WebCore::ChannelSplitterNode::create):
* Modules/webaudio/DefaultAudioDestinationNode.cpp:
(WebCore::DefaultAudioDestinationNode::DefaultAudioDestinationNode):
(WebCore::DefaultAudioDestinationNode::context):
(WebCore::DefaultAudioDestinationNode::context const):
* Modules/webaudio/DefaultAudioDestinationNode.h:
* Modules/webaudio/MediaElementAudioSourceNode.cpp:
(WebCore::MediaElementAudioSourceNode::setFormat):
* Modules/webaudio/MediaStreamAudioSourceNode.cpp:
(WebCore::MediaStreamAudioSourceNode::setFormat):
* Modules/webaudio/OfflineAudioContext.cpp:
(WebCore::OfflineAudioContext::OfflineAudioContext):
(WebCore::OfflineAudioContext::create):
(WebCore::OfflineAudioContext::uninitialize):
(WebCore::OfflineAudioContext::activeDOMObjectName const):
(WebCore::OfflineAudioContext::startRendering):
(WebCore::OfflineAudioContext::suspendRendering):
(WebCore::OfflineAudioContext::resumeRendering):
(WebCore::OfflineAudioContext::didSuspendRendering):
(WebCore::OfflineAudioContext::finishedRendering):
(WebCore::OfflineAudioContext::settleRenderingPromise):
(WebCore::OfflineAudioContext::dispatchEvent):
* Modules/webaudio/OfflineAudioContext.h:
(isType):
* Modules/webaudio/OfflineAudioContext.idl:
* Modules/webaudio/OfflineAudioDestinationNode.cpp:
(WebCore::OfflineAudioDestinationNode::OfflineAudioDestinationNode):
(WebCore::OfflineAudioDestinationNode::context):
(WebCore::OfflineAudioDestinationNode::context const):
* Modules/webaudio/OfflineAudioDestinationNode.h:
* Modules/webaudio/ScriptProcessorNode.cpp:
(WebCore::ScriptProcessorNode::ScriptProcessorNode):

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

2 months ago[LFC] Move inline formatting geometry to its own class
zalan@apple.com [Sat, 15 May 2021 23:55:58 +0000 (23:55 +0000)]
[LFC] Move inline formatting geometry to its own class
https://bugs.webkit.org/show_bug.cgi?id=225754

Reviewed by Antti Koivisto.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::geometry const):
* layout/formattingContexts/inline/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::Geometry::Geometry): Deleted.
* layout/formattingContexts/inline/InlineFormattingContextGeometry.cpp: Removed.

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

2 months agoCeilingOnPageSize too low for Loongson CPUs
berto@igalia.com [Sat, 15 May 2021 23:54:52 +0000 (23:54 +0000)]
CeilingOnPageSize too low for Loongson CPUs
https://bugs.webkit.org/show_bug.cgi?id=221198
<rdar://problem/74089683>

Reviewed by Michael Catanzaro.

Increase the page size to 16KB in MIPS64.

* wtf/PageBlock.h:

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

2 months ago[LFC] Move flex formatting geometry to its own class
zalan@apple.com [Sat, 15 May 2021 23:03:02 +0000 (23:03 +0000)]
[LFC] Move flex formatting geometry to its own class
https://bugs.webkit.org/show_bug.cgi?id=225755

Reviewed by Antti Koivisto.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/formattingContexts/flex/FlexFormattingContext.cpp:
(WebCore::Layout::FlexFormattingContext::geometry const):
* layout/formattingContexts/flex/FlexFormattingContext.h:
(WebCore::Layout::FlexFormattingContext::Geometry::Geometry): Deleted.
* layout/formattingContexts/flex/FlexFormattingContextGeometry.cpp: Removed.

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

2 months ago[LFC] Move block formatting geometry to its own class
zalan@apple.com [Sat, 15 May 2021 22:30:39 +0000 (22:30 +0000)]
[LFC] Move block formatting geometry to its own class
https://bugs.webkit.org/show_bug.cgi?id=225756

Reviewed by Antti Koivisto.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/formattingContexts/block/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::geometry const):
* layout/formattingContexts/block/BlockFormattingContext.h:
(WebCore::Layout::BlockFormattingContext::Geometry::formattingContext const): Deleted.
(WebCore::Layout::BlockFormattingContext::geometry const): Deleted.
(WebCore::Layout::BlockFormattingContext::Geometry::Geometry): Deleted.
* layout/formattingContexts/block/BlockFormattingContextGeometry.cpp: Removed.
* layout/formattingContexts/block/BlockFormattingQuirks.cpp:
(WebCore::Layout::BlockFormattingQuirks::stretchedInFlowHeight):
* layout/formattingContexts/block/BlockFormattingQuirks.h:
(WebCore::Layout::BlockFormattingQuirks::formattingContext const):
(WebCore::Layout::BlockFormattingQuirks::geometry const): Deleted.
* layout/formattingContexts/block/PrecomputedBlockMarginCollapse.cpp:
* layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingContext.cpp:
* layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingQuirks.cpp:
(WebCore::Layout::TableWrapperQuirks::overriddenTableHeight const):

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

2 months ago[LFC] Move base formatting quirks to its own class
zalan@apple.com [Sat, 15 May 2021 21:11:40 +0000 (21:11 +0000)]
[LFC] Move base formatting quirks to its own class
https://bugs.webkit.org/show_bug.cgi?id=225757

Reviewed by Antti Koivisto.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/formattingContexts/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::quirks const):
* layout/formattingContexts/FormattingContext.h:
(WebCore::Layout::FormattingContext::formattingState):
(WebCore::Layout::FormattingContext::Quirks::layoutState const): Deleted.
(WebCore::Layout::FormattingContext::Quirks::layoutState): Deleted.
(WebCore::Layout::FormattingContext::Quirks::formattingContext const): Deleted.
(WebCore::Layout::FormattingContext::quirks const): Deleted.
(WebCore::Layout::FormattingContext::Quirks::Quirks): Deleted.
* layout/formattingContexts/FormattingContextQuirks.cpp: Removed.
* layout/formattingContexts/block/BlockFormattingQuirks.cpp:
(WebCore::Layout::BlockFormattingQuirks::BlockFormattingQuirks):
* layout/formattingContexts/block/BlockFormattingQuirks.h:
(WebCore::Layout::BlockFormattingQuirks::formattingContext const):
* layout/formattingContexts/inline/InlineFormattingQuirks.cpp:
(WebCore::Layout::InlineFormattingQuirks::InlineFormattingQuirks):
* layout/formattingContexts/inline/InlineFormattingQuirks.h:
(WebCore::Layout::InlineFormattingQuirks::formattingContext const):
* layout/formattingContexts/table/TableFormattingQuirks.cpp:
(WebCore::Layout::TableFormattingQuirks::TableFormattingQuirks):
* layout/formattingContexts/table/TableFormattingQuirks.h:
(WebCore::Layout::TableFormattingQuirks::formattingContext const):

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

2 months agoImplement CanvasRenderingContext2D.createConicGradient
said@apple.com [Sat, 15 May 2021 20:46:56 +0000 (20:46 +0000)]
Implement CanvasRenderingContext2D.createConicGradient
https://bugs.webkit.org/show_bug.cgi?id=225539

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

* web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic-expected.txt:

Source/WebCore:

Proposal document:
    https://github.com/fserb/canvas2D/blob/master/spec/conic-gradient.md

MDN documentation:
    https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/createConicGradient

Tests: fast/canvas/canvas-conic-gradient-angle.html
       fast/canvas/canvas-conic-gradient-center.html
       fast/canvas/conicGradient-infinite-values.html

* html/canvas/CanvasFillStrokeStyles.idl:
* html/canvas/CanvasGradient.cpp:
(WebCore::CanvasGradient::CanvasGradient):
(WebCore::m_canvas):
(WebCore::CanvasGradient::create):
* html/canvas/CanvasGradient.h:
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::createConicGradient):
* html/canvas/CanvasRenderingContext2DBase.h:

Source/WebInspectorUI:

* UserInterface/Models/NativeFunctionParameters.js:
* UserInterface/Models/Recording.js:
(WI.Recording.prototype.async swizzle):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._classNameForAction):

LayoutTests:

* fast/canvas/canvas-conic-gradient-angle-expected.html: Added.
* fast/canvas/canvas-conic-gradient-angle.html: Added.
* fast/canvas/canvas-conic-gradient-center-expected.html: Added.
* fast/canvas/canvas-conic-gradient-center.html: Added.
* fast/canvas/conicGradient-infinite-values-expected.txt: Added.
* fast/canvas/conicGradient-infinite-values.html: Added.
* inspector/canvas/recording-html-2d-expected.txt:
* inspector/canvas/recording-html-2d.html:
* platform/win/TestExpectations:

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

2 months ago[LFC] Move table formatting quirks to its own class
zalan@apple.com [Sat, 15 May 2021 20:22:37 +0000 (20:22 +0000)]
[LFC] Move table formatting quirks to its own class
https://bugs.webkit.org/show_bug.cgi?id=225758

Reviewed by Antti Koivisto.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/formattingContexts/table/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::quirks const):
* layout/formattingContexts/table/TableFormattingContext.h:
(WebCore::Layout::TableFormattingContext::Quirks::Quirks): Deleted.
* layout/formattingContexts/table/TableFormattingContextQuirks.cpp: Removed.

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

2 months ago[LFC] Move inline formatting quirks to its own class
zalan@apple.com [Sat, 15 May 2021 19:50:54 +0000 (19:50 +0000)]
[LFC] Move inline formatting quirks to its own class
https://bugs.webkit.org/show_bug.cgi?id=225759

Reviewed by Antti Koivisto.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::quirks const):
* layout/formattingContexts/inline/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::Quirks::Quirks): Deleted.
* layout/formattingContexts/inline/InlineFormattingContextQuirks.cpp: Removed.
* layout/integration/LayoutIntegrationInlineContentBuilder.cpp:

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

2 months ago[LFC] Move table wrapper quirks to its own class
zalan@apple.com [Sat, 15 May 2021 18:27:43 +0000 (18:27 +0000)]
[LFC] Move table wrapper quirks to its own class
https://bugs.webkit.org/show_bug.cgi?id=225760

Reviewed by Antti Koivisto.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingContext.cpp:
(WebCore::Layout::TableWrapperBlockFormattingContext::quirks const):
* layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingContext.h:
(WebCore::Layout::TableWrapperBlockFormattingContext::Quirks::Quirks): Deleted.
* layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingContextQuirks.cpp: Removed.

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

2 months agoMove CanvasRenderingContext2DSettings down to CanvasRenderingContext2DBase so it...
weinig@apple.com [Sat, 15 May 2021 17:51:24 +0000 (17:51 +0000)]
Move CanvasRenderingContext2DSettings down to CanvasRenderingContext2DBase so it can be used there (and to support OffscreenCanvas)
https://bugs.webkit.org/show_bug.cgi?id=225836

Reviewed by Simon Fraser.

In subsequent changes, it will be useful to have CanvasRenderingContext2DSettings accessible
in CanvasRenderingContext2DBase for implementing color space support in ImageData.

While doing this, I noticed it was trivial to add support for passing the settings
to OffscreenCanvasRenderingContext2D, so I add that as well.

* html/OffscreenCanvas.cpp:
(WebCore::OffscreenCanvas::getContext):
* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::CanvasRenderingContext2D):
(WebCore::CanvasRenderingContext2D::pixelFormat const): Deleted.
(WebCore::CanvasRenderingContext2D::colorSpace const): Deleted.
* html/canvas/CanvasRenderingContext2D.h:
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::CanvasRenderingContext2DBase):
(WebCore::CanvasRenderingContext2DBase::pixelFormat const):
(WebCore::CanvasRenderingContext2DBase::colorSpace const):
* html/canvas/CanvasRenderingContext2DBase.h:
(WebCore::CanvasRenderingContext2DBase::getContextAttributes const):
* html/canvas/OffscreenCanvasRenderingContext2D.cpp:
(WebCore::OffscreenCanvasRenderingContext2D::OffscreenCanvasRenderingContext2D):
* html/canvas/OffscreenCanvasRenderingContext2D.h:
* html/canvas/PaintRenderingContext2D.cpp:
(WebCore::PaintRenderingContext2D::PaintRenderingContext2D):

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

2 months ago[LFC] Move block formatting quirks to its own class
zalan@apple.com [Sat, 15 May 2021 17:50:07 +0000 (17:50 +0000)]
[LFC] Move block formatting quirks to its own class
https://bugs.webkit.org/show_bug.cgi?id=225761

Reviewed by Antti Koivisto.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/formattingContexts/FormattingContext.h:
(WebCore::Layout::FormattingContext::Quirks::layoutState const):
(WebCore::Layout::FormattingContext::Quirks::layoutState):
(WebCore::Layout::FormattingContext::Quirks::formattingContext const):
(WebCore::Layout::FormattingContext::quirks const):
* layout/formattingContexts/block/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::quirks const):
* layout/formattingContexts/block/BlockFormattingContext.h:
(WebCore::Layout::BlockFormattingContext::Quirks::formattingContext const): Deleted.
(WebCore::Layout::BlockFormattingContext::Quirks::geometry const): Deleted.
(WebCore::Layout::BlockFormattingContext::quirks const): Deleted.
(WebCore::Layout::BlockFormattingContext::Quirks::Quirks): Deleted.
* layout/formattingContexts/block/BlockFormattingContextQuirks.cpp: Removed.
* layout/formattingContexts/block/BlockMarginCollapse.cpp:
* layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingContext.h:
(WebCore::Layout::TableWrapperBlockFormattingContext::Quirks::Quirks):

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

2 months agoTurn callGetter() / callSetter() into instance methods
shvaikalesh@gmail.com [Sat, 15 May 2021 16:59:57 +0000 (16:59 +0000)]
Turn callGetter() / callSetter() into instance methods
https://bugs.webkit.org/show_bug.cgi?id=225831

Reviewed by Ross Kirsling.

JSTests:

* microbenchmarks/put-slow-no-cache-setter.js: Added.

Source/JavaScriptCore:

1. Turn callGetter() / callSetter() into instance methods to simplify their signatures.
2. Rename `base` parameter to `thisValue`, avoiding similarity with slotBase().
3. Accept `bool shouldThrow` in callSetter() since ECMAMode is cumbersome to construct.
4. Replace isSetterNull(), which does LIKELY(inherits), with direct JSType check.
5. Introduce getCallData(VM&, JSCell*) overload to avoid extra checks / casts.
6. Move isValidCallee() to JSCell and handle primitives gracefully.

No behavior change. Advances provided callSetter() microbenchmark by 2%.

* runtime/GetterSetter.cpp:
(JSC::GetterSetter::callGetter):
(JSC::GetterSetter::callSetter):
(JSC::callGetter): Deleted.
(JSC::callSetter): Deleted.
* runtime/GetterSetter.h:
* runtime/JSCJSValue.cpp:
(JSC::JSValue::isValidCallee): Deleted.
* runtime/JSCJSValue.h:
* runtime/JSCell.cpp:
(JSC::JSCell::isValidCallee const):
* runtime/JSCell.h:
* runtime/JSObject.cpp:
(JSC::JSObject::putInlineSlow):
* runtime/JSObjectInlines.h:
(JSC::getCallData):
(JSC::getConstructData):
* runtime/PropertySlot.cpp:
(JSC::PropertySlot::functionGetter const):
* runtime/SparseArrayValueMap.cpp:
(JSC::SparseArrayEntry::put):

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

2 months ago[LFC] Move BlockMarginCollapse to its own class
zalan@apple.com [Sat, 15 May 2021 16:21:39 +0000 (16:21 +0000)]
[LFC] Move BlockMarginCollapse to its own class
https://bugs.webkit.org/show_bug.cgi?id=225762

Reviewed by Antti Koivisto.

* WebCore.xcodeproj/project.pbxproj:
* layout/formattingContexts/FormattingContext.h:
(WebCore::Layout::FormattingContext::formattingState const):
* layout/formattingContexts/block/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::updateMarginAfterForPreviousSibling):
(WebCore::Layout::BlockFormattingContext::marginCollapse const):
* layout/formattingContexts/block/BlockFormattingContext.h:
(WebCore::Layout::BlockFormattingContext::formattingState const):
(WebCore::Layout::BlockFormattingContext::Quirks::formattingContext const):
(WebCore::Layout::BlockFormattingContext::Quirks::geometry const):
(WebCore::Layout::BlockFormattingContext::quirks const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::layoutState): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::layoutState const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::formattingContext const): Deleted.
(WebCore::Layout::BlockFormattingContext::marginCollapse const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::MarginCollapse): Deleted.
* layout/formattingContexts/block/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockMarginCollapse::BlockMarginCollapse):
(WebCore::Layout::BlockMarginCollapse::hasClearance const):
(WebCore::Layout::BlockMarginCollapse::marginBeforeCollapsesWithParentMarginAfter const):
(WebCore::Layout::BlockMarginCollapse::marginBeforeCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockMarginCollapse::marginBeforeCollapsesWithPreviousSiblingMarginAfter const):
(WebCore::Layout::BlockMarginCollapse::marginBeforeCollapsesWithFirstInFlowChildMarginBefore const):
(WebCore::Layout::BlockMarginCollapse::marginAfterCollapsesWithSiblingMarginBeforeWithClearance const):
(WebCore::Layout::BlockMarginCollapse::marginAfterCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockMarginCollapse::marginAfterCollapsesWithParentMarginAfter const):
(WebCore::Layout::BlockMarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter const):
(WebCore::Layout::BlockMarginCollapse::marginAfterCollapsesWithNextSiblingMarginBefore const):
(WebCore::Layout::BlockMarginCollapse::marginsCollapseThrough const):
(WebCore::Layout::BlockMarginCollapse::computedPositiveAndNegativeMargin const):
(WebCore::Layout::BlockMarginCollapse::marginValue const):
(WebCore::Layout::BlockMarginCollapse::positiveNegativeValues const):
(WebCore::Layout::BlockMarginCollapse::positiveNegativeMarginBefore const):
(WebCore::Layout::BlockMarginCollapse::positiveNegativeMarginAfter const):
(WebCore::Layout::BlockMarginCollapse::marginBeforeIgnoringCollapsingThrough):
(WebCore::Layout::BlockMarginCollapse::collapsedVerticalValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::hasClearance const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginAfter const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginBefore const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithPreviousSiblingMarginAfter const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithFirstInFlowChildMarginBefore const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithSiblingMarginBeforeWithClearance const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginBefore const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginAfter const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithNextSiblingMarginBefore const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::computedPositiveAndNegativeMargin const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginValue const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginAfter const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeIgnoringCollapsingThrough): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedVerticalValues): Deleted.
* layout/formattingContexts/block/PrecomputedBlockMarginCollapse.cpp:
(WebCore::Layout::BlockMarginCollapse::precomputedPositiveNegativeValues const):
(WebCore::Layout::BlockMarginCollapse::precomputedPositiveNegativeMarginBefore const):
(WebCore::Layout::BlockMarginCollapse::precomputedMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::precomputedPositiveNegativeValues const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::precomputedPositiveNegativeMarginBefore const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::precomputedMarginBefore): Deleted.
* layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingContext.cpp:
(WebCore::Layout::TableWrapperBlockFormattingContext::computeHeightAndMarginForTableBox):

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

2 months ago[GTK] REGRESSION: Kinetic scrolling on touchpad doesn't work with async scrolling off
commit-queue@webkit.org [Sat, 15 May 2021 14:26:42 +0000 (14:26 +0000)]
[GTK] REGRESSION: Kinetic scrolling on touchpad doesn't work with async scrolling off
https://bugs.webkit.org/show_bug.cgi?id=224182

Patch by Alexander Mikhaylenko <alexm@gnome.org> on 2021-05-15
Reviewed by Michael Catanzaro.

Don't clear the scroll history every time we scroll, that defeats the whole point of having
the scroll history.

* platform/generic/ScrollAnimatorGeneric.cpp:
(WebCore::ScrollAnimatorGeneric::scrollToPositionWithoutAnimation):

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

2 months agoDon't allow :visited link style in subtrees that use mix-blend-mode
antti@apple.com [Sat, 15 May 2021 12:47:21 +0000 (12:47 +0000)]
Don't allow :visited link style in subtrees that use mix-blend-mode
https://bugs.webkit.org/show_bug.cgi?id=225446
rdar://65686091

Reviewed by Darin Adler.
Source/WebCore:

Test: fast/css/visited-link-mix-blend-mode.html

* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::visitedDependentColor const):

Return unvisited style in substrees that use mix-blend-mode.

* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::setBlendMode):
(WebCore::RenderStyle::isInSubtreeWithBlendMode const):

Add an inherited fake property for tracking this.

* rendering/style/StyleRareInheritedData.cpp:
(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator== const):
* rendering/style/StyleRareInheritedData.h:

LayoutTests:

* fast/css/visited-link-mix-blend-mode-expected.html: Added.
* fast/css/visited-link-mix-blend-mode.html: Added.

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

2 months agoreport-non-inclusive-language should skip node_modules directory
aakash_jain@apple.com [Sat, 15 May 2021 11:00:45 +0000 (11:00 +0000)]
report-non-inclusive-language should skip node_modules directory
https://bugs.webkit.org/show_bug.cgi?id=225827

Reviewed by Darin Adler.

* Scripts/report-non-inclusive-language: Skip node_modules directory as it contains external code.

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

2 months agoReplace PlatformCAAnimationRemote::KeyframeValue with Variant
commit-queue@webkit.org [Sat, 15 May 2021 07:40:46 +0000 (07:40 +0000)]
Replace PlatformCAAnimationRemote::KeyframeValue with Variant
https://bugs.webkit.org/show_bug.cgi?id=225474

Patch by Ian Gilbert <iang@apple.com> on 2021-05-15
Reviewed by Ryosuke Niwa.

KeyframeValue was effectively a Variant. Replaced the existing class with a WTF::Variant.

No test as this does not change code behavior.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<RefPtr<WebCore::FilterOperation>>::encode):
(IPC::ArgumentCoder<RefPtr<WebCore::FilterOperation>>::decode):
* Shared/WebCoreArgumentCoders.h:
* WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.h:
* WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
(WebKit::animationValueFromKeyframeValue):
(WebKit::operator<<):
(WebKit::PlatformCAAnimationRemote::KeyframeValue::encode const): Deleted.
(WebKit::PlatformCAAnimationRemote::KeyframeValue::decode): Deleted.

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

2 months agoDrop FileSystem::fileMetadata() / fileMetadataFollowingSymlinks()
cdumez@apple.com [Sat, 15 May 2021 05:46:43 +0000 (05:46 +0000)]
Drop FileSystem::fileMetadata() / fileMetadataFollowingSymlinks()
https://bugs.webkit.org/show_bug.cgi?id=225820

Reviewed by Darin Adler.

Source/JavaScriptCore:

Update our code base because of the FileSystem API changes.

* API/JSScript.mm:
(validateBytecodeCachePath):

Source/WebCore:

Update our code base because of the FileSystem API changes.

* Modules/entriesapi/DOMFileSystem.cpp:
(WebCore::listDirectoryWithMetadata):
(WebCore::toFileSystemEntries):
(WebCore::fileTypeIgnoringHiddenFiles):
(WebCore::validatePathIsExpectedType):
(WebCore::DOMFileSystem::getParent):
(WebCore::DOMFileSystem::getEntry):
(WebCore::DOMFileSystem::getFile):
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::attachmentForFilePath):
* fileapi/File.cpp:
(WebCore::File::isDirectory const):
* html/DirectoryFileListCreator.cpp:
(WebCore::appendDirectoryFiles):
(WebCore::gatherFileInformation):
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::setStorageDirectory):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::ensureAssetCacheExistsForPath):
* platform/network/BlobDataFileReference.cpp:
(WebCore::BlobDataFileReference::startTrackingModifications):
* platform/network/BlobRegistryImpl.cpp:
* platform/network/FormData.cpp:
(WebCore::FormData::prepareForUpload):
* platform/network/mac/BlobDataFileReferenceMac.mm:
(WebCore::BlobDataFileReference::generateReplacementFile):

Source/WebKit:

Update our code base because of the FileSystem API changes.

* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::getDirectorySize):
(WebKit::CacheStorage::Engine::getDirectories):
(WebKit::CacheStorage::Engine::clearAllCachesFromDisk):
* NetworkProcess/cache/NetworkCacheFileSystem.cpp:
(WebKit::NetworkCache::traverseDirectory):
* Shared/mac/AuxiliaryProcessMac.mm:
(WebKit::ensureSandboxCacheDirectory):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::isInternalInstall):

Source/WTF:

Drop FileSystem::fileMetadata() / fileMetadataFollowingSymlinks(). Those don't match very closely the
std::filesystem API we use internally and they are not very efficient because we gather several attributes
of a file but the callers are usually only interested in one thing (e.g. file type or file size).

Callers interested in the file size, can call the pre-existing FileSystem::fileSize(). For call sites
wanting to check if it is a hidden file, I introduced a new FileSystem::isHiddenFile() API. For call sites
interested in the file type, I replaced FileSystem::isDirectory() / FileSystem::isDirectoryFollowingSymlinks()
with more generic FileSystem::fileType() / FileSystem::fileTypeFollowingSymlinks().

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/FileMetadata.h: Removed.
* wtf/FileSystem.cpp:
(WTF::FileSystemImpl::isHiddenFile):
(WTF::FileSystemImpl::fileTypePotentiallyFollowingSymLinks):
(WTF::FileSystemImpl::fileType):
(WTF::FileSystemImpl::fileTypeFollowingSymlinks):
* wtf/FileSystem.h:
* wtf/glib/FileSystemGlib.cpp:
* wtf/posix/FileSystemPOSIX.cpp:
* wtf/win/FileSystemWin.cpp:

Tools:

Update the FileSystem API tests accordingly.

* TestWebKitAPI/Tests/WTF/FileSystem.cpp:
(TestWebKitAPI::TEST_F):

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

2 months agoJavascript can't access a SameSite=Strict cookie after page is loaded after a redirec...
wilander@apple.com [Sat, 15 May 2021 05:26:41 +0000 (05:26 +0000)]
Javascript can't access a SameSite=Strict cookie after page is loaded after a redirect from a third party site
https://bugs.webkit.org/show_bug.cgi?id=208049
<rdar://problem/59701889>

Reviewed by Chris Dumez.

The HTTP WG has decided that SameSite=strict cookies should be returned in document.cookie
even in cases where they are not sent in the HTTP request for the page. Chromium and Gecko
now work according to those rules and the spec is being updated.

See:
- https://github.com/httpwg/http-extensions/issues/769
- https://github.com/httpwg/http-extensions/pull/1428/files.

Source/WebCore:

Here's an excerpt from the spec change:
    'If a user agent does return cookies for a given call to a "non-HTTP" API with
    an associated Document, then the user agent MUST compute the cookie-string
    following the algorithm defined in {{retrieval-algorithm}}, indicating that the
    retrieval is from a "non-HTTP" API. The retrieval-uri is the associated
    Document's cookie URL {{COOKIE-URL}}, and the retrieval is same-site if the
    Document's "site for cookies" is same-site with the top-level origin as defined
    in {{document-requests}}.'

Existing layout tests changed and rebased.

* loader/CookieJar.cpp:
(WebCore::CookieJar::sameSiteInfo):
    Now takes a IsCookieAccessForDOM parameter and forwards it to SameSiteInfo::create().
(WebCore::CookieJar::cookies const):
    Now sends IsCookieAccessForDOM::Yes to CookieJar::sameSiteInfo().
(WebCore::CookieJar::setCookies):
    Now sends IsCookieAccessForDOM::Yes to CookieJar::sameSiteInfo().
* loader/CookieJar.h:
* platform/network/SameSiteInfo.cpp:
(WebCore::SameSiteInfo::create):
    Now takes a IsForDOMCookieAccess parameter and if it's IsForDOMCookieAccess::Yes and
    the site is top site, sets isSameSite.
* platform/network/SameSiteInfo.h:
    Now has an enum IsForDOMCookieAccess.

Source/WebKit:

Here's an excerpt from the spec change:
    'If a user agent does return cookies for a given call to a "non-HTTP" API with
    an associated Document, then the user agent MUST compute the cookie-string
    following the algorithm defined in {{retrieval-algorithm}}, indicating that the
    retrieval is from a "non-HTTP" API. The retrieval-uri is the associated
    Document's cookie URL {{COOKIE-URL}}, and the retrieval is same-site if the
    Document's "site for cookies" is same-site with the top-level origin as defined
    in {{document-requests}}.'

Existing layout tests changed and rebased.

* WebProcess/WebPage/WebCookieJar.cpp:
(WebKit::WebCookieJar::cookies const):
    Now sends WebCore::IsCookieAccessForDOM::Yes to WebCore::CookieJar::sameSiteInfo().
(WebKit::WebCookieJar::setCookies):
    Now sends WebCore::IsCookieAccessForDOM::Yes to WebCore::CookieJar::sameSiteInfo().

LayoutTests:

Tests changed and rebased accordingly.

* http/tests/cookies/same-site/fetch-after-top-level-cross-origin-redirect-expected.txt:
* http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page-expected.txt:
* http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-expected.txt:
* http/tests/cookies/same-site/popup-cross-site-post.html:
* http/tests/cookies/same-site/popup-cross-site.html:
* http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect.html:
* http/tests/cookies/same-site/resources/fetch-after-top-level-cross-origin-redirect.py:
* http/tests/cookies/same-site/resources/fetch-after-top-level-navigation-from-cross-origin-page.py:
* http/tests/cookies/same-site/resources/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.py:
* http/tests/cookies/same-site/user-load-cross-site-redirect-expected.txt:
* http/tests/cookies/same-site/user-load-cross-site-redirect.py:

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

2 months ago[WebKitTestRunner] Forward WebContent termination reason
jbedard@apple.com [Sat, 15 May 2021 05:02:06 +0000 (05:02 +0000)]
[WebKitTestRunner] Forward WebContent termination reason
https://bugs.webkit.org/show_bug.cgi?id=225818
<rdar://problem/78027164>

Reviewed by Chris Dumez.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::createOtherPage): Use didTerminate callback instead of didCrash callback.
(WTR::TestController::createWebViewWithOptions): Ditto.
(WTR::TestController::webProcessDidTerminate):
(WTR::TestController::processDidCrash): Renamed webProcessDidTerminate.
* WebKitTestRunner/TestController.h: Replace processDidCrash with webProcessDidTerminate.
* WebKitTestRunner/win/TestControllerWin.cpp:
(WTR::TestController::platformRunUntil):

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

2 months agoProvide custom SetInlineFillGradient copy ctor
commit-queue@webkit.org [Sat, 15 May 2021 04:59:10 +0000 (04:59 +0000)]
Provide custom SetInlineFillGradient copy ctor
https://bugs.webkit.org/show_bug.cgi?id=225688

Patch by Rob Buis <rbuis@igalia.com> on 2021-05-14
Reviewed by Wenson Hsieh.

Provide custom SetInlineFillGradient copy ctor
to deal with invalid SetInlineFillGradient source.

* platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::SetInlineFillGradient::SetInlineFillGradient):
* platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::SetInlineFillGradient::isValid const):

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

2 months ago[run-webkit-tests] Handle missing simulator state plist
jbedard@apple.com [Sat, 15 May 2021 04:58:16 +0000 (04:58 +0000)]
[run-webkit-tests] Handle missing simulator state plist
https://bugs.webkit.org/show_bug.cgi?id=225833
<rdar://problem/78036930>

Rubber-stamped by Aakash Jain.

* Scripts/webkitpy/xcode/simulated_device.py:
(SimulatedDevice.state): If no device plist is found, assume the device is shut down.
* Scripts/webkitpy/xcode/simulated_device_unittest.py:

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

2 months agoDrop legacy / prefixed WebAudio implementation
cdumez@apple.com [Sat, 15 May 2021 04:18:38 +0000 (04:18 +0000)]
Drop legacy / prefixed WebAudio implementation
https://bugs.webkit.org/show_bug.cgi?id=225832

Reviewed by Darin Adler.

Source/WebCore:

Drop legacy / prefixed WebAudio implementation now that it is no longer
present in shipping and we have received any reports of issues.

This drops all the legacy code but she should be able to clean up the
code further in follow-ups. In particular, I believe some code can
now be moved from BaseAudioContext to OfflineAudioContext.

* CMakeLists.txt:
* DerivedSources.make:
* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::~AudioBufferSourceNode):
(WebCore::AudioBufferSourceNode::totalPitchRate):
* Modules/webaudio/AudioBufferSourceNode.h:
* Modules/webaudio/AudioBufferSourceNode.idl:
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::create):
(WebCore::AudioContext::AudioContext):
* Modules/webaudio/AudioContext.h:
* Modules/webaudio/AudioListener.h:
* Modules/webaudio/AudioListener.idl:
* Modules/webaudio/AudioNode.cpp:
* Modules/webaudio/AudioNode.h:
* Modules/webaudio/AudioNode.idl:
* Modules/webaudio/AudioParam.h:
* Modules/webaudio/BaseAudioContext.cpp:
(WebCore::BaseAudioContext::BaseAudioContext):
* Modules/webaudio/BaseAudioContext.h:
(WebCore::BaseAudioContext::isOfflineContext const):
(WebCore::BaseAudioContext::BaseAudioContext):
* Modules/webaudio/DynamicsCompressorNode.cpp:
* Modules/webaudio/DynamicsCompressorNode.h:
* Modules/webaudio/OfflineAudioContext.cpp:
(WebCore::OfflineAudioContext::OfflineAudioContext):
* Modules/webaudio/OscillatorNode.h:
* Modules/webaudio/OscillatorNode.idl:
* Modules/webaudio/WebKitAudioBufferSourceNode.h: Removed.
* Modules/webaudio/WebKitAudioBufferSourceNode.idl: Removed.
* Modules/webaudio/WebKitAudioContext.cpp: Removed.
* Modules/webaudio/WebKitAudioContext.h: Removed.
* Modules/webaudio/WebKitAudioContext.idl: Removed.
* Modules/webaudio/WebKitAudioListener.h: Removed.
* Modules/webaudio/WebKitAudioListener.idl: Removed.
* Modules/webaudio/WebKitAudioPannerNode.cpp: Removed.
* Modules/webaudio/WebKitAudioPannerNode.h: Removed.
* Modules/webaudio/WebKitAudioPannerNode.idl: Removed.
* Modules/webaudio/WebKitDynamicsCompressorNode.h: Removed.
* Modules/webaudio/WebKitDynamicsCompressorNode.idl: Removed.
* Modules/webaudio/WebKitOfflineAudioContext.cpp: Removed.
* Modules/webaudio/WebKitOfflineAudioContext.h: Removed.
* Modules/webaudio/WebKitOfflineAudioContext.idl: Removed.
* Modules/webaudio/WebKitOscillatorNode.h: Removed.
* Modules/webaudio/WebKitOscillatorNode.idl: Removed.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* testing/Internals.cpp:
(WebCore::Internals::setAudioContextRestrictions):
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKitLegacy/win:

Stop explicitly disabled with prefixed WebAudio implementation given that
it no longer exists.

* WebView.cpp:
(WebView::notifyPreferencesChanged):

Source/WTF:

Drop preference for prefixed WebAudio, which was disabled everywhere.

* Scripts/Preferences/WebPreferencesInternal.yaml:

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

2 months agoCustomPaintImage being in platform/graphics is a layering violation
weinig@apple.com [Sat, 15 May 2021 03:34:17 +0000 (03:34 +0000)]
CustomPaintImage being in platform/graphics is a layering violation
https://bugs.webkit.org/show_bug.cgi?id=225356

Reviewed by Darin Adler.

It is layering violation for a file in platform/ to reference classes
like RenderElement or PaintWorkletGlobalScope. This fixes this by moving
CustomPaintImage out of platform/graphics to html/, next to the existing
CustomPaintCanvas class.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/CustomPaintImage.cpp: Copied from Source/WebCore/platform/graphics/CustomPaintImage.cpp.
* html/CustomPaintImage.h: Copied from Source/WebCore/platform/graphics/CustomPaintImage.h.
* platform/graphics/CustomPaintImage.cpp: Removed.
* platform/graphics/CustomPaintImage.h: Removed.

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

2 months agoREGRESSION (r269824): Random tile corruption when scrolling/zooming in macCatalyst
timothy_horton@apple.com [Sat, 15 May 2021 03:15:41 +0000 (03:15 +0000)]
REGRESSION (r269824): Random tile corruption when scrolling/zooming in macCatalyst
https://bugs.webkit.org/show_bug.cgi?id=225837
<rdar://problem/75053997>

Reviewed by Simon Fraser.

* Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):
Mark the newly front buffer non-volatile before painting into it.
This was lost in r269824. Oddly, this caused less trouble than
one might expect, except on some particular hardware.

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

2 months agooutput element doesn't react properly to node tree mutations
darin@apple.com [Sat, 15 May 2021 02:05:22 +0000 (02:05 +0000)]
output element doesn't react properly to node tree mutations
https://bugs.webkit.org/show_bug.cgi?id=196532

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

* web-platform-tests/custom-elements/builtin-coverage-expected.txt:
Updated since HTMLOptionElement now has a constructor. Still not passing, but closer to correct.

* web-platform-tests/custom-elements/form-associated/form-reset-callback-expected.txt:
Updated due to changes in HTMLOptionElement, but still not passing.

* web-platform-tests/html/semantics/forms/the-output-element/mutations.window-expected.txt:
Updated to reflect passing test.

* web-platform-tests/html/semantics/forms/the-output-element/mutations.window.js:
Updated to a newer version of the upstream version of this. Decided to just update this one file
rather than importing the latest version across more tests at this time.

Source/WebCore:

* dom/ContainerNode.cpp:
(WebCore::ContainerNode::replaceAll): Refactored most of the functions
replaceAllChildren and replaceAllChildrenWithNewText into this new one,
and named it based on the name of the operation in the HTML specification.
The function is incomplete, but preserves existing behavior.
(WebCore::ContainerNode::stringReplaceAll): Refactored the rest of the
replaceAllChildrenWithNewText function and renamed to the name from the
HTML specification.
* dom/ContainerNode.h: Updated for the above changes.

* dom/Node.cpp:
(WebCore::Node::setTextContent): Updated for name change above.
* dom/Range.cpp:
(WebCore::Range::surroundContents): Ditto.
* editing/ios/EditorIOS.mm:
(WebCore::Editor::setTextAsChildOfElement): Ditto.
* html/HTMLElement.cpp:
(WebCore::HTMLElement::setInnerText): Ditto.

* html/HTMLOutputElement.cpp:
(WebCore::HTMLOutputElement::HTMLOutputElement): Moved data member
initialization into the class definition.
(WebCore::HTMLOutputElement::create): Added an overload that takes just
a document, for use when invoked from as a constructor.
(WebCore::HTMLOutputElement::parseAttribute): Tightened the logic for the
for attribute. I decided it's better to call through to the base class, even
though we often don't do that for attributes that don't expect the base
class to pay attention to.
(WebCore::HTMLOutputElement::childrenChanged): Deleted. No need for this in
the improved HTML specification version of this element's algorithms.
(WebCore::HTMLOutputElement::reset): Updated based on the HTML specification,
using the default value algorithm rather than the default value mode flag we
were using before.
(WebCore::HTMLOutputElement::setValue): Updated based on the HTML specification,
always setting the default value override based on the current default value,
and using stringReplaceAll. There's no need for the old setTextContentInternal,
since that was all due to the need to avoid infinite recursion in childrenChanged.
(WebCore::HTMLOutputElement::defaultValue const): Updated based on the HTML
specification, deriving the default value from the default value override and
the descendant text content.
(WebCore::HTMLOutputElement::setDefaultValue): Updated based on the HTML
specification, doing a string replace all with the value if the default
value override is null, and updating the default value override otherwise.
(WebCore::HTMLOutputElement::htmlFor): Updated to rename m_tokens to m_forTokens.
(WebCore::HTMLOutputElement::setTextContentInternal): Deleted.

* html/HTMLOutputElement.h: Moved DOMTokenList to be a forward declaration
instead of an include. Adde a constructor that takes only a document to be used
from JavaScript. Made the canContainRangeEndPoint override be private like the
other overrides. Removed the childrenChange override and the
setTextContentInternal function. Removed m_isDefaultValueMode,
m_isSetTextContentInProgress, and m_defaultValue. Added m_defaultValueOverride.
Renamed m_tokens to m_forTokens.

* html/HTMLOutputElement.idl: Updated to match the HTML specification. This
involved adding a constructor, adding SameObject for the htmlFor attribute,
making the form attribute nullable, and removing [LegacyNullToEmptyString]
from the defaultValue and value attributes.

LayoutTests:

* TestExpectations: Removed an expectation for a directory that no longer exists.
* platform/mac-wk2/TestExpectations: Removed an expectation for a test that no longer exists.
* platform/mac/TestExpectations: Removed an expectation for a directory that no longer exists.

* platform/gtk/imported/w3c/web-platform-tests/custom-elements/builtin-coverage-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/custom-elements/builtin-coverage-expected.txt:
* platform/mac-wk2/imported/w3c/web-platform-tests/custom-elements/builtin-coverage-expected.txt:
Updated since HTMLOptionElement now has a constructor. Still not passing, but closer to correct.

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

2 months agoFix iOS 14.5 embedded build
jbedard@apple.com [Sat, 15 May 2021 01:50:00 +0000 (01:50 +0000)]
Fix iOS 14.5 embedded build
https://bugs.webkit.org/show_bug.cgi?id=225835
<rdar://problem/78039315>

Reviewed by Dewei Zhu.

Source/WebKit:

No new tests, build fix.

* WebProcess/cocoa/WebProcessCocoa.mm: Import mach.h.

Tools:

* Scripts/configure-xcode-for-embedded-development: Add mach.h, mach_error.h and task.h.

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

2 months agoSource/WebCore:
weinig@apple.com [Sat, 15 May 2021 00:59:56 +0000 (00:59 +0000)]
Source/WebCore:
Use PixelBufferFormat to specify ImageBuffer::getPixelData destination format allowing for more control over data conversion
https://bugs.webkit.org/show_bug.cgi?id=225813

Reviewed by Darin Adler.

The reprevious signature of ImageBuffer::getPixelBuffer:

    ImageBuffer::getPixelBuffer(AlphaPremultiplication, const IntRect&);

only allowed specifying the type of alpha premultiplication wanted, and hard coded
a pixel format of RGBA8 and color space of SRGB. To support accurate and efficient
access to pixel buffers with different pixel formats and color spaces we need to be
able to tell getPixelBuffer what we want up front, so that if the ImageBuffer already
has a DisplayP3 buffer, and we want DisplayP3 pixels, we don't first convert to SRGB
and then convert back to DisplayP3 (which would be slow and lose any out of gamut
data). The new signature allows us to specify the entire format triple:

    ImageBuffer::getPixelBuffer(const PixelBufferFormat&, const IntRect&);

Additionally, ImageBuffer::putPixelBuffer() no longer needs to provide the source
AlphaPremultiplication either, as the PixelBuffer itself also contains that information.

Now that we are passing color space information, we need to support color space conversion,
so PixelBufferConversion was updated to support color space conversion on CG platforms
using vImageConvert_AnyToAny. This is not currently excersised, but will be in a subsequent
change where canvas ImageData gains a color space setting, at which point it can be tested.

We also don't currently support color space conversion on non-CG platforms. This won't
be a problem in the short term, as only CG platforms support DisplayP3, the only other
color space that can be specified currently, but as cleanup, we should add support for
color space conversion using the ColorConversion and ColorTransferFunction infrastructure
for other ports, moving the existing support for SRGB to/from LinearSRGB conversions from
ImageBufferCairoBackend and ImageBufferCairoImageSurfaceBackend.

* html/ImageBitmap.cpp:
(WebCore::ImageBitmap::createPromise):
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::getImageData const):
(WebCore::CanvasRenderingContext2DBase::putImageData):
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::screenshot):
* platform/graphics/ConcreteImageBuffer.h:
(WebCore::ConcreteImageBuffer::putPixelBuffer):
* platform/graphics/ImageBuffer.h:
(WebCore::ImageBuffer::putPixelBuffer):
* platform/graphics/ImageBufferBackend.cpp:
(WebCore::ImageBufferBackend::convertToLuminanceMask):
(WebCore::ImageBufferBackend::getPixelBuffer const):
(WebCore::ImageBufferBackend::putPixelBuffer):
* platform/graphics/ImageBufferBackend.h:
* platform/graphics/PixelBufferConversion.cpp:
(WebCore::makeVImageCGImageFormat):
(WebCore::makeVImageBuffer):
(WebCore::convertImagePixelsAccelerated):
(WebCore::convertImagePixels):
* platform/graphics/ShadowBlur.cpp:
(WebCore::ShadowBlur::blurShadowBuffer):
* platform/graphics/cairo/ImageBufferCairoSurfaceBackend.cpp:
(WebCore::ImageBufferCairoSurfaceBackend::getPixelBuffer const):
(WebCore::ImageBufferCairoSurfaceBackend::putPixelBuffer):
* platform/graphics/cairo/ImageBufferCairoSurfaceBackend.h:
* platform/graphics/cg/ImageBufferCGBackend.cpp:
(WebCore::ImageBufferCGBackend::toCFData const):
* platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:
(WebCore::ImageBufferCGBitmapBackend::getPixelBuffer const):
(WebCore::ImageBufferCGBitmapBackend::putPixelBuffer):
* platform/graphics/cg/ImageBufferCGBitmapBackend.h:
* platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:
(WebCore::ImageBufferIOSurfaceBackend::getPixelBuffer const):
(WebCore::ImageBufferIOSurfaceBackend::putPixelBuffer):
* platform/graphics/cg/ImageBufferIOSurfaceBackend.h:
* platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::PutPixelBuffer::PutPixelBuffer):
(WebCore::DisplayList::PutPixelBuffer::swap):
(WebCore::DisplayList::operator<<):
* platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::GetPixelBuffer::GetPixelBuffer):
(WebCore::DisplayList::GetPixelBuffer::outputFormat const):
(WebCore::DisplayList::PutPixelBuffer::encode const):
(WebCore::DisplayList::PutPixelBuffer::decode):
(WebCore::DisplayList::PutPixelBuffer::inputFormat const): Deleted.
* platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::getPixelBuffer):
(WebCore::DisplayList::Recorder::putPixelBuffer):
* platform/graphics/displaylists/DisplayListRecorder.h:
* platform/graphics/filters/FEColorMatrix.cpp:
(WebCore::FEColorMatrix::platformApplySoftware):
* platform/graphics/filters/FEDropShadow.cpp:
(WebCore::FEDropShadow::platformApplySoftware):
* platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::imageBufferResult):
(WebCore::FilterEffect::convertPixelBufferToColorSpace):
(WebCore::FilterEffect::convertImageBufferToColorSpace):
(WebCore::FilterEffect::copyConvertedPixelBufferToDestination):
(WebCore::FilterEffect::copyUnmultipliedResult):
(WebCore::FilterEffect::copyPremultipliedResult):
* platform/graphics/filters/FilterEffect.h:
* platform/graphics/win/ImageBufferDirect2DBackend.cpp:
(WebCore::ImageBufferDirect2DBackend::getPixelBuffer const):
(WebCore::ImageBufferDirect2DBackend::putPixelBuffer):
* platform/graphics/win/ImageBufferDirect2DBackend.h:
* rendering/shapes/Shape.cpp:
(WebCore::Shape::createRasterShape):

Source/WebKit:
Use PixelBufferFormat to specify ImageBuffer::getPixelBuffer destination format allowing for more control over data conversion
https://bugs.webkit.org/show_bug.cgi?id=225813

Reviewed by Darin Adler.

Update calls/implementations of getPixelBuffer/putPixelBuffer to adjust
to new signature.

* GPUProcess/graphics/RemoteImageBuffer.h:
* Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.cpp:
(WebKit::CGDisplayListImageBufferBackend::getPixelBuffer const):
(WebKit::CGDisplayListImageBufferBackend::putPixelBuffer):
* Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.h:
* WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:
(WebKit::ImageBufferShareableBitmapBackend::getPixelBuffer const):
(WebKit::ImageBufferShareableBitmapBackend::putPixelBuffer):
* WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:
* WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
(WebKit::RemoteImageBufferProxy::putPixelBuffer):
* WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:
(WebKit::ImageBufferShareableIOSurfaceBackend::getPixelBuffer const):
(WebKit::ImageBufferShareableIOSurfaceBackend::putPixelBuffer):
* WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.h:

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

2 months agoREGRESSION (r277221): 2 test262 tests failing
ross.kirsling@sony.com [Sat, 15 May 2021 00:47:33 +0000 (00:47 +0000)]
REGRESSION (r277221): 2 test262 tests failing
https://bugs.webkit.org/show_bug.cgi?id=225819

Reviewed by Alexey Shvayka.

Undo the other part of r277221's code consolidation --
I'd forgotten that this exists to enforce a evaluation order on AggregateError's arguments.

* runtime/AggregateError.cpp:
(JSC::createAggregateError):

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

2 months agoSampled Page Top Color: move logic out of `Document`
drousso@apple.com [Sat, 15 May 2021 00:29:19 +0000 (00:29 +0000)]
Sampled Page Top Color: move logic out of `Document`
https://bugs.webkit.org/show_bug.cgi?id=225480
<rdar://problem/77984539>

Reviewed by Tim Horton.

Source/WebCore:

Having `determineSampledPageTopColor` be called in `enqueuePaintTimingEntryIfNeeded` as what
is basically a side effect is not great. The only reason it was there in the first place was
to take advantage of the logic that decided "is this the first contentful paint", but that
logic can be replicated elsewhere. Since the sampled page top color deals more with the page
as a whole instead of an individual `Document` (which includes subframes), it makes more
sense to have this logic be on a utility `PageColorSampler` that's used in `Page` instead.

Test: SampledPageTopColor.MainDocumentChange

* page/PageColorSampler.h: Added.
* page/PageColorSampler.cpp: Added.
(WebCore::isValidSampleLocation):
(WebCore::sampleColor):
(WebCore::colorDifference):
(WebCore::averageColor):
(WebCore::PageColorSampler::sampleTop):
* page/Page.h:
* page/Page.cpp:
(WebCore::Page::doAfterUpdateRendering):
(WebCore::Page::sampledPageTopColor const):
(WebCore::Page::didChangeMainDocument):

* dom/Document.h:
(WebCore::Document::sampledPageTopColor const): Deleted.
* dom/Document.cpp:
(WebCore::Document::enqueuePaintTimingEntryIfNeeded):
(WebCore::isValidPageSampleLocation): Deleted.
(WebCore::samplePageColor): Deleted.
(WebCore::colorDifference): Deleted.
(WebCore::averageColor): Deleted.
(WebCore::Document::determineSampledPageTopColor): Deleted.

* page/FrameView.h:
* page/FrameView.cpp:
(WebCore::FrameView::hasContentfulDescendants const): Added.
(WebCore::FrameView::hasContenfulDescendants const): Deleted.
Drive-by: Fix incorrect spelling.
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/SampledPageTopColor.mm:
(TEST.SampledPageTopColor.MainDocumentChange): Added.

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

2 months agoPort WTF::FileSystem::realPath() to std::filesystem
cdumez@apple.com [Sat, 15 May 2021 00:26:58 +0000 (00:26 +0000)]
Port WTF::FileSystem::realPath() to std::filesystem
https://bugs.webkit.org/show_bug.cgi?id=225828

Reviewed by Darin Adler.

Source/WTF:

Port WTF::FileSystem::realPath() to std::filesystem (in particular std::filesystem::canonical())
so that we no longer need platform-specific code.

* wtf/FileSystem.cpp:
(WTF::FileSystemImpl::realPath):
* wtf/posix/FileSystemPOSIX.cpp:
* wtf/win/FileSystemWin.cpp:

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WTF/FileSystem.cpp:
(TestWebKitAPI::TEST_F):

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

2 months ago[GPUP] a media element with a data url and "crossorigin='anonymous'" doesn't load
eric.carlson@apple.com [Sat, 15 May 2021 00:00:25 +0000 (00:00 +0000)]
[GPUP] a media element with a data url and "crossorigin='anonymous'" doesn't load
https://bugs.webkit.org/show_bug.cgi?id=225786
<rdar://77625185>

Reviewed by Jer Noble.

Source/WebCore:

Test: media/data-url-cross-origin.html

* loader/MediaResourceLoader.cpp:
(WebCore::MediaResourceLoader::requestResource): Set loader options `sameOriginDataURLFlag`
to `SameOriginDataURLFlag::Set` so data: urls are treated as same origin.

LayoutTests:

* media/data-url-cross-origin-expected.txt: Added.
* media/data-url-cross-origin.html: Added.
* media/media-file.js:
(findDataURL):
* media/sources-fallback-codecs.html:

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

2 months agoREGRESSION: [ Mac WK2 ] fast/mediastream/audio-track-enabled.html is flaky failing
peng.liu6@apple.com [Fri, 14 May 2021 23:46:10 +0000 (23:46 +0000)]
REGRESSION: [ Mac WK2 ] fast/mediastream/audio-track-enabled.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=221985

Reviewed by Eric Carlson.

Source/WebCore:

When `MediaSessionManagerCocoa::updateSessionState()` goes through all sessions, it
counts all WebAudio sessions regardless their states, and it may set the shared audio
session's category to be `AudioSession::AmbientSound` if the count of WebAudio sessions
is not zero.

However, when we close a page with WebAudio, we should not count the WebAudio session
here because the corresponding AudioContext is suspended and will be destroyed soon.
Without this patch, the shared audio session's category might be `AudioSession::AmbientSound`
after we close the WebAudio page.

* Modules/webaudio/AudioContext.h:

LayoutTests:

* platform/mac-wk2/TestExpectations:

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

2 months agoWeb Inspector: `_WKInspector` leaks `WebInspectorUIProxy`
pangle@apple.com [Fri, 14 May 2021 23:34:45 +0000 (23:34 +0000)]
Web Inspector: `_WKInspector` leaks `WebInspectorUIProxy`
https://bugs.webkit.org/show_bug.cgi?id=225815

Reviewed by Tim Horton.

Add a missing call in `_WKInspector`'s destructor to destruct the `WebInspectorUIProxy` in API object storage.

* UIProcess/API/Cocoa/_WKInspector.mm:
(-[_WKInspector dealloc]):

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

2 months ago[showRenderTree] Do not integral floor the overflow values
zalan@apple.com [Fri, 14 May 2021 23:20:16 +0000 (23:20 +0000)]
[showRenderTree] Do not integral floor the overflow values
https://bugs.webkit.org/show_bug.cgi?id=225825

Reviewed by Simon Fraser.

Integral flooring may hide fractional values caused by rounding bugs.

* rendering/RenderObject.cpp:
(WebCore::RenderObject::outputRenderObject const):

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

2 months agoDrop "get" prefix from WTF::FileSystem's getFileModificationTime() / getFileCreationT...
cdumez@apple.com [Fri, 14 May 2021 23:12:12 +0000 (23:12 +0000)]
Drop "get" prefix from WTF::FileSystem's getFileModificationTime() / getFileCreationTime()
https://bugs.webkit.org/show_bug.cgi?id=225812

Reviewed by Darin Adler.

Source/WebCore:

Update code base due to WTF API change.

* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::removeAllDatabasesForFullOriginPath):
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::deleteDatabasesModifiedSince):
* fileapi/File.cpp:
(WebCore::File::lastModified const):
* page/Page.cpp:
(WebCore::Page::userStyleSheet const):
* platform/FileStream.cpp:
(WebCore::FileStream::getSize):
* platform/network/FormData.cpp:
(WebCore::FormDataElement::EncodedFileData::fileModificationTimeMatchesExpectation const):
* platform/network/curl/CurlCacheEntry.cpp:
(WebCore::CurlCacheEntry::parseResponseHeaders):
* platform/sql/SQLiteFileSystem.cpp:
(WebCore::SQLiteFileSystem::databaseCreationTime):
(WebCore::SQLiteFileSystem::databaseModificationTime):

Source/WebKit:

Update code base due to WTF API change.

* NetworkProcess/cache/NetworkCacheFileSystem.cpp:
(WebKit::NetworkCache::fileTimes):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::removeMediaKeys):
* WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
(WebKit::removeAllMediaKeyStorageForOriginPath):

Source/WebKitLegacy/win:

Update code base due to WTF API change.

* Plugins/PluginDatabase.cpp:
(WebCore::PluginDatabase::refresh):

Source/WTF:

We avoid the "get" prefix in WebKit.

* wtf/FileSystem.cpp:
(WTF::FileSystemImpl::fileModificationTime):
* wtf/FileSystem.h:
* wtf/glib/FileSystemGlib.cpp:
(WTF::FileSystemImpl::fileCreationTime):
* wtf/posix/FileSystemPOSIX.cpp:
(WTF::FileSystemImpl::fileCreationTime):
* wtf/win/FileSystemWin.cpp:
(WTF::FileSystemImpl::fileCreationTimeFromFindData):
(WTF::FileSystemImpl::fileModificationTimeFromFindData):
(WTF::FileSystemImpl::fileCreationTime):

Tools:

Update code base due to WTF API change.

* TestWebKitAPI/Tests/WTF/FileSystem.cpp:
(TestWebKitAPI::runGetFileModificationTimeTest):
(TestWebKitAPI::TEST_F):

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

2 months agoRename FileSystem::getVolumeFreeSpace() to FileSystem::volumeFreeSpace()
cdumez@apple.com [Fri, 14 May 2021 23:08:03 +0000 (23:08 +0000)]
Rename FileSystem::getVolumeFreeSpace() to FileSystem::volumeFreeSpace()
https://bugs.webkit.org/show_bug.cgi?id=225811

Reviewed by Darin Adler.

Source/WebKit:

Update code base due to API change.

* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::computeCapacity):

Source/WTF:

Rename FileSystem::getVolumeFreeSpace() to FileSystem::volumeFreeSpace() given that we
avoid the "get" prefix in WebKit. Also modernize the function by returning an
Optional<uint64_t> instead of using an out-parameter.

* wtf/FileSystem.cpp:
(WTF::FileSystemImpl::volumeFreeSpace):
* wtf/FileSystem.h:

Tools:

Update code base due to API change.

* TestWebKitAPI/Tests/WTF/FileSystem.cpp:
(TestWebKitAPI::TEST_F):

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

2 months ago[LFC] Add enclosing line top/bottom to showInlineTreeAndRuns
zalan@apple.com [Fri, 14 May 2021 22:32:03 +0000 (22:32 +0000)]
[LFC] Add enclosing line top/bottom to showInlineTreeAndRuns
https://bugs.webkit.org/show_bug.cgi?id=225821

Reviewed by Simon Fraser.

* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::showInlineTreeAndRuns):
* page/FrameViewLayoutContext.cpp:
(WebCore::FrameViewLayoutContext::layout):

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

2 months agoAdd ScriptDisallowedScope to MediaPlayerPrivateAVFoundation
rniwa@webkit.org [Fri, 14 May 2021 22:27:45 +0000 (22:27 +0000)]
Add ScriptDisallowedScope to MediaPlayerPrivateAVFoundation
https://bugs.webkit.org/show_bug.cgi?id=225797

Reviewed by Eric Carlson.

Deployed ScriptDisallowedScope to a bunch of functions in MediaPlayerPrivateAVFoundation.

* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::updateStates):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
(-[WebCoreAVFMovieObserver legibleOutput:didOutputAttributedStrings:nativeSampleBuffers:forItemTime:]):
(-[WebCoreAVFMovieObserver metadataOutput:didOutputTimedMetadataGroups:fromPlayerItemTrack:]):
(-[WebCoreAVFLoaderDelegate resourceLoader:didCancelLoadingRequest:]):

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

2 months ago[ iOS14-Simulator ] wk2imported/w3c/web-platform-tests/css/css-will-change/will-chang...
jenner@apple.com [Fri, 14 May 2021 22:26:31 +0000 (22:26 +0000)]
[ iOS14-Simulator ] wk2imported/w3c/web-platform-tests/css/css-will-change/will-change-transform-huge-offset-scrolled.html is a flaky ImageOnlyFailure
Nhttps://bugs.webkit.org/show_bug.cgi?id=225830

Unreviewed test gardening.

Setting expectation to Pass ImageOnlyFailure due to causing an EWS slowdown.

* platform/ios-simulator-wk2/TestExpectations:

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

2 months agoReplace -[WKContentView _hasPendingImageExtraction] with a monotonically increasing ID
wenson_hsieh@apple.com [Fri, 14 May 2021 22:23:10 +0000 (22:23 +0000)]
Replace -[WKContentView _hasPendingImageExtraction] with a monotonically increasing ID
https://bugs.webkit.org/show_bug.cgi?id=225823
rdar://77519437

Reviewed by Tim Horton.

Refactor some image extraction code by turning this boolean flag into a monotonically increasing
`ObjectIdentifier` instead; see the bug for more details.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _doAfterPendingImageExtraction:]):
(-[WKContentView _invokeAllActionsToPerformAfterPendingImageExtraction:]):

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

2 months agoTestWebKitAPI.Fullscreen.WKViewDelegate is timing out
jya@apple.com [Fri, 14 May 2021 22:18:06 +0000 (22:18 +0000)]
TestWebKitAPI.Fullscreen.WKViewDelegate is timing out
https://bugs.webkit.org/show_bug.cgi?id=223282
rdar://75495585

Reviewed by Jer Noble.

* TestWebKitAPI/Tests/WebKitCocoa/FullscreenDelegate.mm:
(TestWebKitAPI::TEST): Use WkView/NSWindow directly instead of using a
PlatformWebView. A PlatformWebView uses an OffscreenWindow which is a
NSWindow placed with a -10000 offset. This configuration appears to fail
to go into full screen in automation.

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

2 months agoBad media session artwork URL results in blue "broken image" icon being shown in...
jya@apple.com [Fri, 14 May 2021 22:02:15 +0000 (22:02 +0000)]
Bad media session artwork URL results in blue "broken image" icon being shown in Now Playing
https://bugs.webkit.org/show_bug.cgi?id=225799
rdar://77990886

Reviewed by Eric Carlson.

Source/WebCore:

By default, when the image's URL doesn't point to an image the CachedImage
will return a default image consistent of a blue interrogation mark.
We need to explicitely check that an error occurred. The naming used in the
method didn't make this need obvious.

* Modules/mediasession/MediaMetadata.cpp:
(WebCore::ArtworkImageLoader::notifyFinished): Check for a status error.
* testing/Internals.cpp:
(WebCore::Internals::loadArtworkImage): Fix spelling

LayoutTests:

* fast/mediasession/metadata/artworkdownload-expected.txt:
* fast/mediasession/metadata/artworkdownload.html: Add test case.

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

2 months agoREGRESSION(r277313): [ Debug ] 2 TestWebKitAPI.IPCTestingAPI (API-Tests) are constant...
weinig@apple.com [Fri, 14 May 2021 21:35:29 +0000 (21:35 +0000)]
REGRESSION(r277313): [ Debug ] 2 TestWebKitAPI.IPCTestingAPI (API-Tests) are constant timeouts
https://bugs.webkit.org/show_bug.cgi?id=225816
<rdar://problem/78025515>

Reviewed by Ryosuke Niwa.

* TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:
Update test for rename from ImageData to PixelBuffer.

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

2 months agoPromote `-[WKWebView _pageExtendedBackgroundColor]` SPI to `-[WKWebView underPageBack...
drousso@apple.com [Fri, 14 May 2021 21:34:46 +0000 (21:34 +0000)]
Promote `-[WKWebView _pageExtendedBackgroundColor]` SPI to `-[WKWebView underPageBackgroundColor]` API
https://bugs.webkit.org/show_bug.cgi?id=225615
<rdar://problem/76568094>

Reviewed by Wenson Hsieh.

Source/WebCore:

`underPageBackgroundColor` is a `null_resettable` property that will return (in order of validity)
 - the most recent non-null value provided
 - the CSS `background-color` of the `<body>` and/or `<html>` (this is the current value of `_pageExtendedBackgroundColor`)
 - the underlying platform view's background color
Modifications to this property will not have any effect until control is returned to the runloop.

Tests: WKWebViewUnderPageBackgroundColor.OnLoad
       WKWebViewUnderPageBackgroundColor.SingleSolidColor
       WKWebViewUnderPageBackgroundColor.SingleBlendedColor
       WKWebViewUnderPageBackgroundColor.MultipleSolidColors
       WKWebViewUnderPageBackgroundColor.MultipleBlendedColors
       WKWebViewUnderPageBackgroundColor.KVO
       WKWebViewUnderPageBackgroundColor.MatchesScrollView

* page/Page.h:
(WebCore::Page::underPageBackgroundColorOverride const): Added.
* page/Page.cpp:
(WebCore::Page::setUnderPageBackgroundColorOverride): Added.
Hold the client-overriden value for `underPageBackgroundColor` so that it can be used when
drawing the overscroll layer.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateLayerForOverhangAreasBackgroundColor):
Remove the experimental settings `UseSampledPageTopColorForScrollAreaBackgroundColor` and
`UseThemeColorForScrollAreaBackgroundColor` now that clients can override the default
overscroll area background color using `-[WKWebView setUnderPageBackgroundColor:]`.

* dom/Document.cpp:
(WebCore::Document::themeColorChanged):
It's no longer necessary to force the overscroll area to redraw since that'll be handled by
a client calling `-[WKWebView setUnderPageBackgroundColor:]` (possibly in response to a
`-[WKWebView themeColor]` KVO notification).

Source/WebKit:

`underPageBackgroundColor` is a `null_resettable` property that will return (in order of validity)
 - the most recent non-null value provided
 - the CSS `background-color` of the `<body>` and/or `<html>` (this is the current value of `_pageExtendedBackgroundColor`)
 - the underlying platform view's background color
Modifications to this property will not have any effect until control is returned to the runloop.

* UIProcess/API/Cocoa/WKWebView.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView underPageBackgroundColor]): Added.
(-[WKWebView setUnderPageBackgroundColor:]): Added.
(+[WKWebView automaticallyNotifiesObserversOfUnderPageBackgroundColor]): Added.

* UIProcess/API/ios/WKWebViewIOS.mm:
(baseScrollViewBackgroundColor):
(scrollViewBackgroundColor):
Remove the experimental settings `UseSampledPageTopColorForScrollAreaBackgroundColor` and
`UseThemeColorForScrollAreaBackgroundColor` now that clients can override the default
overscroll area background color using `-[WKWebView setUnderPageBackgroundColor:]`.

* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::underPageBackgroundColor const): Added.
(WebKit::WebPageProxy::setUnderPageBackgroundColorOverride): Added.
(WebKit::WebPageProxy::pageExtendedBackgroundColorDidChange):
(WebKit::WebPageProxy::platformUnderPageBackgroundColor const): Added.
(WebKit::WebPageProxy::scrollAreaBackgroundColor const): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::platformUnderPageBackgroundColor const): Added.
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::platformUnderPageBackgroundColor const): Added.
Store the client-overriden value for `underPageBackgroundColor` and manage state changes.

* UIProcess/PageClient.h:
(WebKit::PageClient::underPageBackgroundColorWillChange): Added.
(WebKit::PageClient::underPageBackgroundColorDidChange): Added.
* UIProcess/Cocoa/PageClientImplCocoa.h:
* UIProcess/Cocoa/PageClientImplCocoa.mm:
(WebKit::PageClientImplCocoa::underPageBackgroundColorWillChange): Added.
(WebKit::PageClientImplCocoa::underPageBackgroundColorDidChange): Added.
Add ObjC KVO support for `-[WKWebView underPageBackgroundColor]`.

* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::contentViewBackgroundColor): Added.
Provide a way to get the `backgroundColor` of the `WKContentView`. This is needed on iOS
because `scrollViewBackgroundColor` (now `WebPageProxy::platformUnderPageBackgroundColor`)
would use this value before falling back to the underlying platform view's background color.

* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setUnderPageBackgroundColorOverride): Added.
Pass the client-overriden value for `underPageBackgroundColor` to the WebProcess so that it
can be used when drawing the overscroll layer.

* UIProcess/ViewSnapshotStore.cpp:
(WebKit::ViewSnapshotStore::recordSnapshot):
Go back to using the `pageExtendedBackgroundColor` (before r273083).

Source/WTF:

`underPageBackgroundColor` is a `null_resettable` property that will return (in order of validity)
 - the most recent non-null value provided
 - the CSS `background-color` of the `<body>` and/or `<html>` (this is the current value of `_pageExtendedBackgroundColor`)
 - the underlying platform view's background color
Modifications to this property will not have any effect until control is returned to the runloop.

* Scripts/Preferences/WebPreferencesInternal.yaml:
Remove the experimental settings `UseSampledPageTopColorForScrollAreaBackgroundColor`and
`UseThemeColorForScrollAreaBackgroundColor` now that clients can override the default
overscroll area background color using `-[WKWebView setUnderPageBackgroundColor:]`.

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WKWebViewUnderPageBackgroundColor.mm: Renamed from PageExtendedBackgroundColor.mm.
(defaultBackgroundColor): Added.
(TEST.WKWebViewUnderPageBackgroundColor.OnLoad):
(TEST.WKWebViewUnderPageBackgroundColor.SingleSolidColor): Added.
(TEST.WKWebViewUnderPageBackgroundColor.SingleBlendedColor): Added.
(TEST.WKWebViewUnderPageBackgroundColor.MultipleSolidColors): Added.
(TEST.WKWebViewUnderPageBackgroundColor.MultipleBlendedColors): Added.
(-[WKWebViewUnderPageBackgroundColorObserver initWithWebView:]): Added.
(-[WKWebViewUnderPageBackgroundColorObserver observeValueForKeyPath:ofObject:change:context:]): Added.
(TEST.WKWebViewUnderPageBackgroundColor.KVO):
(TEST.WKWebViewUnderPageBackgroundColor.MatchesScrollView): Added.
(TEST.WKWebViewUnderPageBackgroundColor.MultipleStyles): Deleted.
(-[WKWebViewPageExtendedBackgroundColorObserver initWithWebView:]): Deleted.
(-[WKWebViewPageExtendedBackgroundColorObserver observeValueForKeyPath:ofObject:change:context:]): Deleted.

* TestWebKitAPI/Tests/WebKitCocoa/SampledPageTopColor.mm:
(createWebViewWithSampledPageTopColorMaxDifference):
(TEST.SampledPageTopColor.ExperimentalUseSampledPageTopColorForScrollAreaBackgroundColor): Deleted.
* TestWebKitAPI/Tests/WebKitCocoa/WKWebViewThemeColor.mm:
(createWebView): Deleted.
(TEST.WKWebView.ExperimentalUseThemeColorForScrollAreaBackgroundColor): Deleted.
Remove the experimental settings `UseSampledPageTopColorForScrollAreaBackgroundColor` and
`UseThemeColorForScrollAreaBackgroundColor` now that clients can override the default
overscroll area background color using `-[WKWebView setUnderPageBackgroundColor:]`.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:

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

2 months agoFix a build after r277493
achristensen@apple.com [Fri, 14 May 2021 21:26:59 +0000 (21:26 +0000)]
Fix a build after r277493

* editing/cocoa/AttributedString.h:
I removed an unneeded NSDictionary declaration that was being used here.

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

2 months ago[WPE] Bot exiting early with crashes in new window layout tests inside wl_proxy_marsh...
lmoura@igalia.com [Fri, 14 May 2021 20:33:24 +0000 (20:33 +0000)]
[WPE] Bot exiting early with crashes in new window layout tests inside wl_proxy_marshal_constructor
https://bugs.webkit.org/show_bug.cgi?id=225555

Unreviewed test gardening.

Basically revert the changes from r277223 as the SDK was updated with
a new wpebackend-fdo in r277436.

* platform/wpe/TestExpectations:

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

2 months ago[iOS] contextmenu hints can be clipped by the WKWebView
drousso@apple.com [Fri, 14 May 2021 18:56:34 +0000 (18:56 +0000)]
[iOS] contextmenu hints can be clipped by the WKWebView
https://bugs.webkit.org/show_bug.cgi?id=224204
<rdar://problem/77089174>

Reviewed by Wenson Hsieh.

Source/WebKit:

r275562 tried to fix this by moving the interaction previews to a separate `UIWindow`, but
this had the unfortunate consequence of placing those previews on top of everything in the
current `UIWindow` (e.g. above the share sheet). As such, WebKit can't use a `UIWindow` for
this as the `WKWebView` has no idea what the view hierarchy above it looks like.

Test: ContextMenu.HintPreviewContainer

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
Add new SPI `-[WKUIDelegate _contextMenuHintPreviewContainerViewForWebView:]` that's used as
the container for the `UIPreviewTarget` created for the contextmenu hint preview.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView cleanUpInteraction]):
(-[WKContentView cleanUpInteractionPreviewContainers]): Added.
(-[WKContentView _didCommitLoadForMainFrame]):
(-[WKContentView _createPreviewContainerWithLayerName:]):
(-[WKContentView containerForDropPreviews]):
(-[WKContentView _removeContainerForDropPreviews]): Added.
(-[WKContentView containerForDragPreviews]):
(-[WKContentView _removeContainerForDragPreviews]): Added.
(-[WKContentView containerForContextMenuHintPreviews]):
(-[WKContentView _removeContainerForContextMenuHintPreviews]): Added.
(-[WKContentView cleanUpDragSourceSessionState]):
(-[WKContentView _removeContextMenuViewIfPossible]):
(-[WKContentView dropInteraction:concludeDrop:]):
(-[WKContentView _hideTargetedPreviewContainerViews]): Deleted.
Clean up and centralize logic around creating and removing interaction preview containers.

* UIProcess/ios/WKContentView.mm:
(-[WKContentView didMoveToWindow]):
If the `WKWebView` is removed from it's parent, make sure to remove the contextmenu hint
preview as well as it could be outside the view hierarchy of the `WKWebView` from the SPI.

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/ContextMenus.mm:
(-[TestContextMenuHintPreviewContainerUIDelegate webView:contextMenuWillPresentForElement:]): Added.
(-[TestContextMenuHintPreviewContainerUIDelegate _contextMenuHintPreviewContainerViewForWebView:]): Added.
(TEST.ContextMenu.HintPreviewContainer): Added.

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

2 months agoImplement Baseline JIT property access slow paths using JIT thunks.
mark.lam@apple.com [Fri, 14 May 2021 18:34:33 +0000 (18:34 +0000)]
Implement Baseline JIT property access slow paths using JIT thunks.
https://bugs.webkit.org/show_bug.cgi?id=225771

Reviewed by Yusuke Suzuki and Saam Barati.

This patch applies the following strategy to Baseline JIT property access slow paths:

1. If the slow path operation call is not patchable, emit a near call to a JIT
   thunk to do the entire operation call.

2. If the slow path operation call is patachable, emit a near call to a prepare
   call JIT thunk before the patchable operation call, and a near call to an exception
   check JIT thunk after.

This strategy reduces the amount of instructions emitted for all the slow paths.
Performance is expected to be neutral or slightly improved due to the reduced
compile times and better cache locality.

With this patch, --dumpLinkBufferStats shows the following changes in emitted
JIT code size (using a single run of the CLI version of JetStream2 on AS Mac)
comparing to current tip of tree:

                Base                     New                      Diff

   BaselineJIT: 84624776 (80.704475 MB)  77429400 (73.842430 MB)  0.91x (reduction)
           DFG: 36415264 (34.728302 MB)  36160880 (34.485703 MB)  0.99x
         Thunk: 23130336 (22.058807 MB)  23159024 (22.086166 MB)  1.00x
   InlineCache: 21969728 (20.951965 MB)  22068348 (21.046017 MB)  1.00x
           FTL: 6097336 (5.814873 MB)    6004736 (5.726562 MB)    0.98x
          Wasm: 2301956 (2.195316 MB)    2429204 (2.316669 MB)    1.06x (probably noise)
       YarrJIT: 1522488 (1.451958 MB)    1522488 (1.451958 MB)    1.00x
        CSSJIT: 0
 Uncategorized: 0

Comparing to tip of tree at the start of this effort to move put slow paths in
JIT thunks:

                Base                     New                      Diff

   BaselineJIT: 89089964 (84.962811 MB)  77429400 (73.842430 MB)  0.87x (reduction)
           DFG: 39117360 (37.305222 MB)  36160880 (34.485703 MB)  0.92x (reduction)
         Thunk: 23230968 (22.154778 MB)  23159024 (22.086166 MB)  1.00x
   InlineCache: 22027416 (21.006981 MB)  22068348 (21.046017 MB)  1.00x
           FTL: 6575772 (6.271145 MB)    6004736 (5.726562 MB)    0.91x (reduction)
          Wasm: 2302724 (2.196049 MB)    2429204 (2.316669 MB)    1.05x (probably noise)
       YarrJIT: 1538956 (1.467663 MB)    1522488 (1.451958 MB)    0.99x
        CSSJIT: 0                        0
 Uncategorized: 0                        0

This patch has passed the JSC tests on AS Mac, and also a subset of the JSC tests
(as a smoke test) on x86_64.

* bytecode/CodeBlock.h:
(JSC::CodeBlock::offsetOfGlobalObject):
* jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::callExceptionFuzz):
(JSC::AssemblyHelpers::emitExceptionCheck):
(JSC::AssemblyHelpers::emitNonPatchableExceptionCheck):
* jit/JIT.h:
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emitSlow_op_get_by_val):
(JSC::JIT::slow_op_get_by_val_prepareCallGenerator):
(JSC::JIT::emitSlow_op_get_private_name):
(JSC::JIT::slow_op_get_private_name_prepareCallGenerator):
(JSC::JIT::emitSlow_op_set_private_brand):
(JSC::JIT::emitSlow_op_check_private_brand):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::slow_op_put_by_val_prepareCallGenerator):
(JSC::JIT::emitSlow_op_put_private_name):
(JSC::JIT::slow_op_put_private_name_prepareCallGenerator):
(JSC::JIT::emitSlow_op_del_by_id):
(JSC::JIT::slow_op_del_by_id_prepareCallGenerator):
(JSC::JIT::emitSlow_op_del_by_val):
(JSC::JIT::slow_op_del_by_val_prepareCallGenerator):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::slow_op_get_by_id_prepareCallGenerator):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::slow_op_get_by_id_with_this_prepareCallGenerator):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::slow_op_put_by_id_prepareCallGenerator):
(JSC::JIT::emitSlow_op_in_by_id):
(JSC::JIT::emitSlow_op_get_from_scope):
(JSC::JIT::slow_op_get_from_scopeGenerator):
(JSC::JIT::emitSlow_op_put_to_scope):
(JSC::JIT::slow_op_put_to_scopeGenerator):
* jit/JITThunks.cpp:
(JSC::JITThunks::preinitializeExtraCTIThunks):
* jit/SlowPathCall.cpp:
(JSC::JITSlowPathCall::call):
* jit/ThunkGenerators.cpp:
(JSC::checkExceptionGenerator):
* jit/ThunkGenerators.h:

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

2 months agoIntroduce FileSystem::updateFileModificationTime()
cdumez@apple.com [Fri, 14 May 2021 18:26:20 +0000 (18:26 +0000)]
Introduce FileSystem::updateFileModificationTime()
https://bugs.webkit.org/show_bug.cgi?id=225810

Reviewed by Darin Adler.

Source/WebKit:

Call the new FileSystem::updateFileModificationTime() API to modify the
file modification time instead of having low-level platform-specific
file system code at the WebKit2 layer.

* NetworkProcess/cache/NetworkCacheFileSystem.cpp:
(WebKit::NetworkCache::updateFileModificationTimeIfNeeded):

Source/WTF:

Introduce FileSystem::updateFileModificationTime() to update the modification time of a
file. The implementation is cross-platform and relies on std::filesystem. It allows us
to replace platform-specific code that we had at the WebKit2 layer.

* wtf/FileSystem.cpp:
(WTF::FileSystemImpl::updateFileModificationTime):
* wtf/FileSystem.h:

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WTF/FileSystem.cpp:
(TestWebKitAPI::TEST_F):

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

2 months agoDrop unused FileSystem::homeDirectoryPath()
cdumez@apple.com [Fri, 14 May 2021 17:54:23 +0000 (17:54 +0000)]
Drop unused FileSystem::homeDirectoryPath()
https://bugs.webkit.org/show_bug.cgi?id=225808

Reviewed by Anders Carlsson.

Source/WebKitLegacy/win:

Fix Window-specific code that was calling FileSystem::homeDirectoryPath(),
which would always return the empty string on Windows. Call
FileSystem::roamingUserSpecificStorageDirectory() since it returns the
%AppData% folder and this is what the code actually wants.

* Plugins/PluginDatabase.cpp:
(WebCore::PluginDatabase::defaultPluginDirectories):
(WebCore::PluginDatabase::isPreferredPluginDirectory):

Source/WTF:

Only Windows-specific code was calling FileSystem::homeDirectoryPath() but the Windows implementation
for this was always returning the empty string.

* wtf/FileSystem.h:
* wtf/cocoa/FileSystemCocoa.mm:
(WTF::FileSystemImpl::homeDirectoryPath): Deleted.
* wtf/glib/FileSystemGlib.cpp:
(WTF::FileSystemImpl::homeDirectoryPath): Deleted.
* wtf/win/FileSystemWin.cpp:
(WTF::FileSystemImpl::homeDirectoryPath): Deleted.

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

2 months agoWrong static position for out-of-flow positioned element with different writing-mode...
commit-queue@webkit.org [Fri, 14 May 2021 17:28:32 +0000 (17:28 +0000)]
Wrong static position for out-of-flow positioned element with different writing-mode than its containing block
https://bugs.webkit.org/show_bug.cgi?id=189513

Patch by Ziran Sun <zsun@igalia.com> on 2021-05-14
Reviewed by Sergio Villar Senin.

LayoutTests/imported/w3c:

Updated the following WPT tests that are now passing.

* web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-001-expected.txt:
* web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-002-expected.txt:
* web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-003-expected.txt:
* web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-004-expected.txt:
* web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-005-expected.txt:
* web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-007-expected.txt:
* web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-010-expected.txt:

Source/WebCore:

The static distance computations (computeBlockStaticDistance & computeInlineStaticDistance) in RenderBox have
not been patched for mixed writing modes. This CL adds support for the case that child is orthogonal to its
container block when container block's text direction is LTR. It aims at fixing failures in
orthogonal-positioned-grid-descendants*.html tests. It is noted that this CL only covers specific case when child's
writing mode is vlr and parent is horizontal tb rather than all cases of mixed writing modes in the static distance
computations.

* rendering/RenderBox.cpp:
(WebCore::computeInlineStaticDistance):
(WebCore::computeBlockStaticDistance):

LayoutTests:

* TestExpectations: updating 22 css-writing-modes tests that are passing.

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

2 months ago[run-api-tests] Use Python 3 (Part 2)
jbedard@apple.com [Fri, 14 May 2021 17:15:47 +0000 (17:15 +0000)]
[run-api-tests] Use Python 3 (Part 2)
https://bugs.webkit.org/show_bug.cgi?id=225427
<rdar://problem/77584713>

Reviewed by Aakash Jain.

* Scripts/run-api-tests: Change she-bang to Python 3.

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

2 months agoResource Timing: secureConnectionStart == 0 when a connection is re-used
achristensen@apple.com [Fri, 14 May 2021 16:56:47 +0000 (16:56 +0000)]
Resource Timing: secureConnectionStart == 0 when a connection is re-used
https://bugs.webkit.org/show_bug.cgi?id=225733

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/resource-timing/resource_connection_reuse_mixed_content-expected.txt:

Source/WebCore:

Covered by a newly-passing web platform test, which was already passed by Chrome and Firefox.

* page/PerformanceResourceTiming.cpp:
(WebCore::PerformanceResourceTiming::secureConnectionStart const):
* platform/network/NetworkLoadMetrics.h:
I use a sentinel value to distinguish no secure connection from a reused secure connection.
* platform/network/ResourceHandle.h:
* platform/network/cocoa/NetworkLoadMetrics.mm:
(WebCore::packageTimingData):
(WebCore::copyTimingData):
Introduce a way to get timing data from CFNetwork using a more modern API.
(WebCore::timingValue): Deleted.
* platform/network/cocoa/WebCoreNSURLSession.mm:
(-[WebCoreNSURLSessionDataTask _timingData]):
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::getConnectionTimingData): Deleted.
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):

Source/WebKit:

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):

LayoutTests:

* TestExpectations:

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

2 months agoRename FileSystem::getFileSize() to FileSystem::fileSize()
cdumez@apple.com [Fri, 14 May 2021 16:10:38 +0000 (16:10 +0000)]
Rename FileSystem::getFileSize() to FileSystem::fileSize()
https://bugs.webkit.org/show_bug.cgi?id=225798

Reviewed by Alex Christensen.

Source/JavaScriptCore:

Update code path to due to the API change.

* inspector/remote/socket/RemoteInspectorSocket.cpp:
(Inspector::RemoteInspector::backendCommands const):
* jsc.cpp:

Source/WebCore:

Update code path to due to the API change.

* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForDirectory):
* Modules/webdatabase/DatabaseDetails.h:
(WebCore::DatabaseDetails::DatabaseDetails):
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::hasAdequateQuotaForOrigin):
(WebCore::DatabaseTracker::canEstablishDatabase):
(WebCore::DatabaseTracker::retryCanEstablishDatabase):
(WebCore::DatabaseTracker::maximumSize):
(WebCore::DatabaseTracker::detailsForNameAndOrigin):
(WebCore::DatabaseTracker::setDatabaseDetails):
(WebCore::DatabaseTracker::usage):
(WebCore::DatabaseTracker::quotaNoLock):
(WebCore::DatabaseTracker::quota):
(WebCore::DatabaseTracker::setQuota):
(WebCore::isZeroByteFile):
* Modules/webdatabase/DatabaseTracker.h:
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::attachmentForFilePath):
* loader/appcache/ApplicationCacheStorage.cpp:
(WebCore::ApplicationCacheStorage::spaceNeeded):
(WebCore::ApplicationCacheStorage::loadCache):
(WebCore::ApplicationCacheStorage::flatFileAreaSize):
* platform/FileStream.cpp:
(WebCore::FileStream::getSize):
* platform/network/FormData.cpp:
(WebCore::FormDataElement::lengthInBytes const):
* platform/network/curl/CurlCacheEntry.cpp:
(WebCore::CurlCacheEntry::loadFileToBuffer):
* platform/network/curl/CurlCacheManager.cpp:
(WebCore::CurlCacheManager::loadIndex):
* platform/sql/SQLiteFileSystem.cpp:
(WebCore::SQLiteFileSystem::databaseFileSize):
* platform/sql/SQLiteFileSystem.h:
* rendering/RenderThemeWin.cpp:
(WebCore::RenderThemeWin::stringWithContentsOfFile):
* workers/service/server/SWScriptStorage.cpp:
(WebCore::shouldUseFileMapping):
(WebCore::SWScriptStorage::retrieve):

Source/WebKit:

Update code path to due to the API change.

* NetworkProcess/WebStorage/LocalStorageDatabase.cpp:
(WebKit::LocalStorageDatabase::setItem):
* NetworkProcess/WebStorage/LocalStorageDatabase.h:
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::getDirectorySize):
(WebKit::CacheStorage::Engine::readSizeFile):
* NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
(WebKit::NetworkCache::BlobStorage::synchronize):
* NetworkProcess/cache/NetworkCacheData.cpp:
(WebKit::NetworkCache::mapFile):
* NetworkProcess/cache/NetworkCacheIOChannelCurl.cpp:
(WebKit::NetworkCache::IOChannel::read):
* Shared/PersistencyUtils.cpp:
(WebKit::createForFile):
* UIProcess/DeviceIdHashSaltStorage.cpp:
(WebKit::DeviceIdHashSaltStorage::loadStorageFromDisk):

Source/WebKitLegacy:

Update code path to due to the API change.

* Storage/StorageTracker.cpp:
(WebKit::StorageTracker::diskUsageForOrigin):
* Storage/StorageTracker.h:

Source/WTF:

Rename FileSystem::getFileSize() to FileSystem::fileSize() as we usually avoid the "get"
prefix in WebKit. It is also more consistent with the std::filesystem::file_size() the
implementation relies on.

Also have it return an Optional<uint64_t> instead of taking a long long out-parameter, as
this is more modern.

* wtf/FileSystem.cpp:
(WTF::FileSystemImpl::fileSize):
* wtf/FileSystem.h:
* wtf/glib/FileSystemGlib.cpp:
(WTF::FileSystemImpl::fileSize):
* wtf/posix/FileSystemPOSIX.cpp:
(WTF::FileSystemImpl::fileSize):
* wtf/win/FileSystemWin.cpp:
(WTF::FileSystemImpl::getFileSizeFromByHandleFileInformationStructure):
(WTF::FileSystemImpl::fileSize):
(WTF::FileSystemImpl::MappedFileData::mapFileHandle):

Tools:

Update code path to due to the API change.

* TestWebKitAPI/Tests/WTF/FileSystem.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WebCore/cocoa/DatabaseTrackerTest.mm:
(TestWebKitAPI::TEST):

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

2 months agoRename FileSystem::pathGetFileName() to FileSystem::pathFileName()
cdumez@apple.com [Fri, 14 May 2021 16:01:00 +0000 (16:01 +0000)]
Rename FileSystem::pathGetFileName() to FileSystem::pathFileName()
https://bugs.webkit.org/show_bug.cgi?id=225806

Reviewed by Alex Christensen.

Rename FileSystem::pathGetFileName() to FileSystem::pathFileName(), as we avoid "get" prefixes in WebKit.

Source/WebCore:

* Modules/entriesapi/FileSystemEntry.cpp:
(WebCore::FileSystemEntry::FileSystemEntry):
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::removeDeletedOpenedDatabases):
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::attachmentForFilePath):
* fileapi/File.cpp:
(WebCore::File::computeNameAndContentType):
* fileapi/FileCocoa.mm:
(WebCore::File::computeNameAndContentTypeForReplacedFile):
* html/DirectoryFileListCreator.cpp:
(WebCore::gatherFileInformation):
* loader/appcache/ApplicationCacheStorage.cpp:
(WebCore::ApplicationCacheStorage::store):
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::setStorageDirectory):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::purgeOldDownloadFiles):

Source/WebKit:

* NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::origins const):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):

Source/WebKitLegacy/win:

* Plugins/PluginDatabase.cpp:
(WebCore::PluginDatabase::fileExistsAndIsNotDisabled const):
* Plugins/PluginPackage.cpp:
(WebCore::PluginPackage::PluginPackage):
* WebDownloadCurl.cpp:
(WebDownload::didReceiveResponse):

Source/WTF:

* wtf/FileSystem.cpp:
(WTF::FileSystemImpl::pathFileName):
(WTF::FileSystemImpl::pathGetFileName): Deleted.
* wtf/FileSystem.h:

Tools:

* TestWebKitAPI/Tests/WTF/FileSystem.cpp:
(TestWebKitAPI::TEST_F):

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

2 months ago[webkitpy] Remove unused imports
jbedard@apple.com [Fri, 14 May 2021 15:54:10 +0000 (15:54 +0000)]
[webkitpy] Remove unused imports
https://bugs.webkit.org/show_bug.cgi?id=225776
<rdar://problem/77982408>

Reviewed by Dewei Zhu.

* Scripts/webkitpy/benchmark_runner/benchmark_json_merge.py:
* Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py:
* Scripts/webkitpy/browserperfdash/browserperfdash_runner.py:
* Scripts/webkitpy/common/config/ports.py:
* Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py:
* Scripts/webkitpy/common/net/layouttestresults_unittest.py:
* Scripts/webkitpy/common/net/networktransaction_unittest.py:
* Scripts/webkitpy/common/system/zipfileset_unittest.py:
* Scripts/webkitpy/common/test_expectations_unittest.py:
* Scripts/webkitpy/inspector/main.py:
* Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py:
* Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
* Scripts/webkitpy/layout_tests/controllers/manager.py:
* Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
* Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
* Scripts/webkitpy/layout_tests/models/test_expectations.py:
* Scripts/webkitpy/layout_tests/models/test_run_results.py:
* Scripts/webkitpy/layout_tests/servers/websocket_server.py:
* Scripts/webkitpy/layout_tests/views/printing.py:
* Scripts/webkitpy/minibrowser/run_webkit_app.py:
* Scripts/webkitpy/performance_tests/perftest.py:
* Scripts/webkitpy/port/base.py:
* Scripts/webkitpy/port/builders.py:
* Scripts/webkitpy/port/config_unittest.py:
* Scripts/webkitpy/results/upload_unittest.py:
* Scripts/webkitpy/style/checkers/test_expectations.py:
* Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
* Scripts/webkitpy/style/checkers/text_unittest.py:
* Scripts/webkitpy/style/filereader_unittest.py:
* Scripts/webkitpy/style/optparser.py:
* Scripts/webkitpy/test/printer.py:
* Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
* Scripts/webkitpy/tool/bot/retrylogic_unittest.py:
* Scripts/webkitpy/tool/commands/queuestest.py:
* Scripts/webkitpy/tool/commands/rebaselineserver.py:
* Scripts/webkitpy/tool/commands/setupgitclone.py:
* Scripts/webkitpy/tool/commands/suggestnominations.py:
* Scripts/webkitpy/tool/commands/upload.py:
* Scripts/webkitpy/tool/main.py:
* Scripts/webkitpy/tool/mocktool.py:
* Scripts/webkitpy/tool/multicommandtool_unittest.py:
* Scripts/webkitpy/tool/servers/gardeningserver.py:
* Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
* Scripts/webkitpy/tool/servers/reflectionhandler.py:
* Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
* Scripts/webkitpy/tool/steps/wptchangeexport.py:
* Scripts/webkitpy/w3c/wpt_runner.py:
* Scripts/webkitpy/webdriver_tests/pytest_runner.py:
* Scripts/webkitpy/webdriver_tests/webdriver_selenium_executor.py:
* Scripts/webkitpy/webdriver_tests/webdriver_test_result.py:
* Scripts/webkitpy/webdriver_tests/webdriver_test_runner_selenium.py:
* Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:

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

2 months agotest-lldb-webkit failing with import of lldb
jbedard@apple.com [Fri, 14 May 2021 15:51:07 +0000 (15:51 +0000)]
test-lldb-webkit failing with import of lldb
https://bugs.webkit.org/show_bug.cgi?id=225792
<rdar://problem/77993980>

Reviewed by Dewei Zhu.

* CISupport/build-webkit-org/steps.py:
(RunLLDBWebKitTests): Invoke test-lldb-webkit with Python 3.
* CISupport/build-webkit-org/steps_unittest.py:
* Scripts/test-lldb-webkit: Change shebang to Python 3.

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

2 months ago[MacOS] imported/w3c/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https...
amir_mark@apple.com [Fri, 14 May 2021 14:36:00 +0000 (14:36 +0000)]
[MacOS] imported/w3c/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=225804

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

2 months agoUnreviewed. Update OptionsGTK.cmake and NEWS for 2.33.1 release
carlosgc@webkit.org [Fri, 14 May 2021 10:25:16 +0000 (10:25 +0000)]
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.33.1 release

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

* gtk/NEWS: Add release notes for 2.33.1.

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

2 months agoUnreviewed. [GTK] Fix make distcheck
carlosgc@webkit.org [Fri, 14 May 2021 10:22:29 +0000 (10:22 +0000)]
Unreviewed. [GTK] Fix make distcheck

.:

Use WEBKITGTK_API_DOC_VERSION instead of WEBKITGTK_API_VERSION or the documentation install rules.

* Source/PlatformGTK.cmake:

Tools:

Update library version now that we build with soup3 by default.

* Scripts/make-dist:
(Distcheck.check_symbols):
(ensure_version_if_possible):

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

2 months agoCheck for null element in paintSearchFieldResultsButton
commit-queue@webkit.org [Fri, 14 May 2021 06:42:35 +0000 (06:42 +0000)]
Check for null element in paintSearchFieldResultsButton
https://bugs.webkit.org/show_bug.cgi?id=225232

Patch by Rob Buis <rbuis@igalia.com> on 2021-05-13
Reviewed by Ryosuke Niwa.

Source/WebCore:

Check for null element in paintSearchFieldResultsButton.

Test: fast/css/searchfield-results-button-crash.html

* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::paintSearchFieldResultsButton):

LayoutTests:

Add test for this.

* fast/css/searchfield-results-button-crash-expected.txt: Added.
* fast/css/searchfield-results-button-crash.html: Added.

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

2 months agoMisc GCC warning cleanup
commit-queue@webkit.org [Fri, 14 May 2021 05:53:12 +0000 (05:53 +0000)]
Misc GCC warning cleanup
https://bugs.webkit.org/show_bug.cgi?id=225777

Patch by Michael Catanzaro <mcatanzaro@gnome.org> on 2021-05-13
Reviewed by Carlos Garcia Campos.

Source/WebCore:

* bindings/js/JSAudioNodeCustom.cpp:
(WebCore::toJSNewlyCreated): Add missing RELEASE_ASSERT_NOT_REACHED().
* svg/SVGToOTFFontConversion.cpp:
(WebCore::SVGToOTFFontConverter::SVGToOTFFontConverter): Remove redundant condition.

Source/WebDriver:

Remove unused variable.

* glib/WebDriverServiceGLib.cpp:
(WebDriver::parseVersion):

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

2 months ago[GTK] Wrong smooth animation sometimes with non-async scrolling
carlosgc@webkit.org [Fri, 14 May 2021 05:52:46 +0000 (05:52 +0000)]
[GTK] Wrong smooth animation sometimes with non-async scrolling
https://bugs.webkit.org/show_bug.cgi?id=225764

Reviewed by Adrian Perez de Castro.

This is happening because sometimes when the scrollbars are added to the scroll view, the contents size hasn't
been updated yet, so that values saved by ScrollAnimationSmooth::updateVisibleLengths() are 0x0. After that the
updateVisibleLengths() is not called again when the contents size is updated, so scroll happens with the wrong
visible lengths. This doesn't happen with async scrolling because updateVisibleLengths()  is called every time
layers are repositioned. For non-async scrolling it should be enough to update visible lengths when he contents
size changes.

* platform/ScrollAnimator.cpp:
(WebCore::ScrollAnimator::contentsResized const):
* platform/ScrollAnimator.h:
(WebCore::ScrollAnimator::ScrollAnimator::contentsResized const):

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

2 months ago[Modern Media Controls] REGRESSION(r268308) AirPlay briefly disappears and then reapp...
drousso@apple.com [Fri, 14 May 2021 04:44:10 +0000 (04:44 +0000)]
[Modern Media Controls] REGRESSION(r268308) AirPlay briefly disappears and then reappears when hovering over controls
https://bugs.webkit.org/show_bug.cgi?id=225780
<rdar://problem/77984683>

Reviewed by Eric Carlson.

r268308 adjusted `AVRoutePickerViewTargetPicker::isAvailable`, which is used to control
whether `AVRoutePickerViewTargetPicker` (which uses the `AVRouteDetectorMultipleRoutesDetectedDidChange`
notification and actually stops listening for it in `stopMonitoringPlaybackTargets`) or
`AVOutputDeviceMenuControllerTargetPicker` (which uses ObjC KVO and doesn't actually do
anything in `stopMonitoringPlaybackTargets` when the last JS `"webkitplaybacktargetavailabilitychanged"`
event listener is removed, meaning that WebKit never senda a new value to the WebProcess) is
used. When using `AVRoutePickerViewTargetPicker`, WebKit calls `-[AVRouteDetector setRouteDetectionEnabled:]`
whenever the first JS `"webkitplaybacktargetavailabilitychanged"` event listener is added
(with the argument `YES`) and the last JS `"webkitplaybacktargetavailabilitychanged"` event
listener is removed (with the argument `NO`). In the latter scenario (which is the case with
builtin media controls), `-[AVRouteDetector setRouteDetectionEnabled:]` will dispatch a
`AVRouteDetectorMultipleRoutesDetectedDidChange` notification and mark itself as not having
multiple routes (`-[AVRouteDetector multipleRoutesDetected]`). This work is done in the
UIProcess and the result is sent to the WebProcess, meaning that even though there are no
more JS event listeners WebKit still updates the cached state of whether multiple routes
exist. This means that the next time a JS event listener is added, WebKit will ask the
UIProcess to update (which will re-enable route detection, which will dispatch a `AVRouteDetectorMultipleRoutesDetectedDidChange`
notification) but then immediately dispatch a JS `"webkitplaybacktargetavailabilitychanged"`
event using the cached state. Once the request from the UIProcess comes back, WebKit will
then dispatch *another* JS "webkitplaybacktargetavailabilitychanged" event with the new
non-cached value.

* platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.h:
* platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.mm:
(WebCore::AVRoutePickerViewTargetPicker::startingMonitoringPlaybackTargets):
(WebCore::AVRoutePickerViewTargetPicker::stopMonitoringPlaybackTargets):
(WebCore::AVRoutePickerViewTargetPicker::availableDevicesDidChange):
Add a flag that ignores the next `AVRouteDetectorMultipleRoutesDetectedDidChange`
notification since it's guaranteed to be `false` after `setRouteDetectionEnabled:NO`.

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

2 months agoFollow-up fix for: Remove StringBuilder::appendNumber
darin@apple.com [Fri, 14 May 2021 04:39:57 +0000 (04:39 +0000)]
Follow-up fix for: Remove StringBuilder::appendNumber
https://bugs.webkit.org/show_bug.cgi?id=225732
rdar://78000283

* heap/HeapSnapshotBuilder.cpp:
(JSC::HeapSnapshotBuilder::json): Removed a stray single quote mark that
meant we produced a JSON file that could not be parsed.

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

2 months ago[Cocoa] Plumb data detector results through some platform objects
wenson_hsieh@apple.com [Fri, 14 May 2021 04:06:37 +0000 (04:06 +0000)]
[Cocoa] Plumb data detector results through some platform objects
https://bugs.webkit.org/show_bug.cgi?id=225775
Work towards rdar://75504956

Reviewed by Tim Horton and Devin Rousso.

Source/WebCore:

Introduce a new struct to hold data detection results, and add it to the existing results object when
`ENABLE(DATA_DETECTION)` is defined.

No change in behavior.

* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* editing/cocoa/DataDetection.mm:
(WebCore::DataDetection::canBePresentedByDataDetectors):
(WebCore::DataDetection::canPresentDataDetectorsUIForElement):
(WebCore::resultIsURL):
(WebCore::constructURLStringForResult):
(WebCore::buildQuery):
(WebCore::DataDetection::detectContentInRange):

Add a `PAL` namespace to each of these DataDetectorsCore softlinking call sites, since the soft link header now
exists in PAL.

* platform/ImageExtractionResult.h:
(WebCore::ImageExtractionDataDetectorInfo::ImageExtractionDataDetectorInfo):
(WebCore::ImageExtractionResult::isEmpty const):
(WebCore::ImageExtractionResult::encode const):
(WebCore::ImageExtractionResult::decode):
* platform/cocoa/DataDetectorsCoreSoftLink.h: Removed.
* platform/cocoa/DataDetectorsCoreSoftLink.mm: Removed.

Additionally, move `DataDetectorsCoreSoftLink.{h|mm}` out of `WebCore/platform` and into PAL as softlinking
headers, so that they can be imported in WebKit as well as WebCore.

Source/WebCore/PAL:

Move `DataDetectorsCoreSoftLink.{h|mm}` into PAL, so that it can be used in WebKit as well.

* PAL.xcodeproj/project.pbxproj:
* pal/PlatformMac.cmake:

Add the header and source file to the CMake build.

* pal/cocoa/DataDetectorsCoreSoftLink.h: Added.
* pal/cocoa/DataDetectorsCoreSoftLink.mm: Added.
* pal/spi/cocoa/DataDetectorsCoreSPI.h:

Explicitly import Foundation headers here, so that the forward declarations don't cause compilation failures in
non-internal SDKs.

Source/WebKit:

Add IPC encoding and decoding support for the new struct.

* Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<ImageExtractionDataDetectorInfo>::encodePlatformData):
(IPC::ArgumentCoder<ImageExtractionDataDetectorInfo>::decodePlatformData):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<ImageExtractionDataDetectorInfo>::encode):
(IPC::ArgumentCoder<ImageExtractionDataDetectorInfo>::decode):
* Shared/WebCoreArgumentCoders.h:

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

2 months ago[GTK] Skip WebXR tests after r277468
lmoura@igalia.com [Fri, 14 May 2021 03:30:39 +0000 (03:30 +0000)]
[GTK] Skip WebXR tests after r277468

Unreviewed test gardening.

WebXR is not yet enabled in GTK.

* platform/gtk/TestExpectations:

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

2 months ago[REGRESSION: r271876] Web Inspector: [Cocoa] Remote inspection crashes when using...
pangle@apple.com [Fri, 14 May 2021 02:13:53 +0000 (02:13 +0000)]
[REGRESSION: r271876] Web Inspector: [Cocoa] Remote inspection crashes when using WEB_THREAD
https://bugs.webkit.org/show_bug.cgi?id=225794

Reviewed by Devin Rousso.

For WEB_THREAD, move `callback` in `dispatchAsyncOnTarget` to `block` scope to ensure it is available for the
lifetime of the block.

* inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:
(Inspector::RemoteConnectionToTarget::dispatchAsyncOnTarget):

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