Timeline



May 15, 2021:

11:36 PM Changeset in webkit [277564] by rniwa@webkit.org
  • 22 edits in trunk

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

9:07 PM Changeset in webkit [277563] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

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

9:06 PM Changeset in webkit [277562] by Said Abou-Hallawa
  • 5 edits in trunk/Source/WebKit

[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.

8:32 PM Changeset in webkit [277561] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[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.

8:14 PM Changeset in webkit [277560] by weinig@apple.com
  • 27 edits in trunk

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.

8:04 PM Changeset in webkit [277559] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

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

7:35 PM Changeset in webkit [277558] by Alan Bujtas
  • 8 edits in trunk/Source/WebCore

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

7:18 PM Changeset in webkit [277557] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[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:
6:56 PM Changeset in webkit [277556] by Alan Bujtas
  • 14 edits
    1 move
    1 add in trunk/Source/WebCore

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

6:50 PM Changeset in webkit [277555] by commit-queue@webkit.org
  • 13 edits
    3 deletes in trunk

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.

6:21 PM Changeset in webkit [277554] by Alan Bujtas
  • 5 edits
    1 move
    1 add in trunk/Source/WebCore

[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.
6:05 PM Changeset in webkit [277553] by Chris Dumez
  • 23 edits in trunk/Source/WebCore

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

4:55 PM Changeset in webkit [277552] by Alan Bujtas
  • 5 edits
    1 move
    1 add in trunk/Source/WebCore

[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.
4:54 PM Changeset in webkit [277551] by berto@igalia.com
  • 2 edits in trunk/Source/WTF

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:
4:03 PM Changeset in webkit [277550] by Alan Bujtas
  • 5 edits
    1 move
    1 add in trunk/Source/WebCore

[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.
3:47 PM WebKitGTK/2.32.x edited by Michael Catanzaro
(diff)
3:30 PM Changeset in webkit [277549] by Alan Bujtas
  • 10 edits
    1 move
    1 add in trunk/Source/WebCore

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

2:11 PM Changeset in webkit [277548] by Alan Bujtas
  • 11 edits
    1 copy
    1 move in trunk/Source/WebCore

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

1:46 PM Changeset in webkit [277547] by Said Abou-Hallawa
  • 16 edits
    6 adds in trunk

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:
1:22 PM Changeset in webkit [277546] by Alan Bujtas
  • 5 edits
    1 copy
    1 move in trunk/Source/WebCore

[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.
12:50 PM Changeset in webkit [277545] by Alan Bujtas
  • 6 edits
    1 move
    1 add in trunk/Source/WebCore

[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:
11:27 AM Changeset in webkit [277544] by Alan Bujtas
  • 5 edits
    1 copy
    1 move in trunk/Source/WebCore

[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.
10:51 AM Changeset in webkit [277543] by weinig@apple.com
  • 9 edits in trunk/Source/WebCore

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

10:50 AM Changeset in webkit [277542] by Alan Bujtas
  • 8 edits
    1 move
    1 add in trunk/Source/WebCore

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

9:59 AM Changeset in webkit [277541] by Alexey Shvayka
  • 12 edits
    1 add in trunk

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

9:21 AM Changeset in webkit [277540] by Alan Bujtas
  • 8 edits
    1 add in trunk/Source/WebCore

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

7:26 AM Changeset in webkit [277539] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[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 <Alexander Mikhaylenko> 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):

5:47 AM Changeset in webkit [277538] by Antti Koivisto
  • 7 edits
    2 adds in trunk

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.
4:00 AM Changeset in webkit [277537] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

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.
12:40 AM Changeset in webkit [277536] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebKit

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.

May 14, 2021:

10:46 PM Changeset in webkit [277535] by Chris Dumez
  • 28 edits
    1 delete in trunk

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

10:26 PM Changeset in webkit [277534] by wilander@apple.com
  • 19 edits in trunk

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:

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:
10:02 PM Changeset in webkit [277533] by Jonathan Bedard
  • 4 edits in trunk/Tools

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

9:59 PM Changeset in webkit [277532] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

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

9:58 PM Changeset in webkit [277531] by Jonathan Bedard
  • 3 edits in trunk/Tools

[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:
9:18 PM Changeset in webkit [277530] by Chris Dumez
  • 32 edits
    17 deletes in trunk/Source

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:
8:34 PM Changeset in webkit [277529] by weinig@apple.com
  • 3 edits
    2 moves in trunk/Source/WebCore

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.
8:15 PM Changeset in webkit [277528] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

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.

7:05 PM Changeset in webkit [277527] by Darin Adler
  • 22 edits in trunk

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.

6:50 PM Changeset in webkit [277526] by Jonathan Bedard
  • 4 edits in trunk

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.
5:59 PM Changeset in webkit [277525] by weinig@apple.com
  • 38 edits in trunk/Source

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:
5:47 PM Changeset in webkit [277524] by Ross Kirsling
  • 2 edits in trunk/Source/JavaScriptCore

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

5:29 PM Changeset in webkit [277523] by Devin Rousso
  • 12 edits
    2 adds in trunk

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.

5:26 PM Changeset in webkit [277522] by Chris Dumez
  • 6 edits in trunk

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

5:18 PM Changeset in webkit [277521] by Alan Coon
  • 8 edits in branches/safari-612.1.12-branch/Source

Versioning.

WebKit-7612.1.12.9

5:00 PM Changeset in webkit [277520] by eric.carlson@apple.com
  • 5 edits
    2 adds in trunk

[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:
4:46 PM Changeset in webkit [277519] by Peng Liu
  • 4 edits in trunk

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:
4:34 PM Changeset in webkit [277518] by Patrick Angle
  • 2 edits in trunk/Source/WebKit

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

4:30 PM Changeset in webkit [277517] by Alan Coon
  • 1 copy in tags/Safari-612.1.12.8

Tag Safari-612.1.12.8.

4:20 PM Changeset in webkit [277516] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

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

4:12 PM Changeset in webkit [277515] by Chris Dumez
  • 23 edits in trunk

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

4:08 PM Changeset in webkit [277514] by Chris Dumez
  • 7 edits in trunk

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

3:32 PM Changeset in webkit [277513] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

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

3:27 PM Changeset in webkit [277512] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebCore

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

3:26 PM Changeset in webkit [277511] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ 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:
3:23 PM Changeset in webkit [277510] by Wenson Hsieh
  • 3 edits in trunk/Source/WebKit

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

3:23 PM Changeset in webkit [277509] by Russell Epstein
  • 1 copy in tags/Safari-612.1.15

Tag Safari-612.1.15.

3:18 PM Changeset in webkit [277508] by Jean-Yves Avenard
  • 2 edits in trunk/Tools

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.

3:02 PM Changeset in webkit [277507] by Jean-Yves Avenard
  • 6 edits in trunk

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.
2:35 PM Changeset in webkit [277506] by weinig@apple.com
  • 2 edits in trunk/Tools

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.

2:34 PM Changeset in webkit [277505] by Devin Rousso
  • 29 edits
    1 add
    1 delete in trunk

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 UseSampledPageTopColorForScrollAreaBackgroundColorand
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:
2:26 PM Changeset in webkit [277504] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix a build after r277493

  • editing/cocoa/AttributedString.h:

I removed an unneeded NSDictionary declaration that was being used here.

1:33 PM Changeset in webkit [277503] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[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:
1:18 PM Changeset in webkit [277502] by Russell Epstein
  • 8 edits in branches/safari-612.1.12-branch/Source

Versioning.

WebKit-7612.1.12.8

11:56 AM Changeset in webkit [277501] by Devin Rousso
  • 7 edits in trunk

[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.

11:34 AM Changeset in webkit [277500] by mark.lam@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

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.
  1. 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:
11:26 AM Changeset in webkit [277499] by Chris Dumez
  • 7 edits in trunk

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

10:54 AM Changeset in webkit [277498] by Chris Dumez
  • 7 edits in trunk/Source

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.

10:28 AM Changeset in webkit [277497] by commit-queue@webkit.org
  • 15 edits in trunk

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 <Ziran Sun> 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:

10:15 AM Changeset in webkit [277496] by Jonathan Bedard
  • 2 edits in trunk/Tools

[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.
10:15 AM Changeset in webkit [277495] by Alan Coon
  • 1 copy in tags/Safari-612.1.14.3

Tag Safari-612.1.14.3.

10:00 AM Changeset in webkit [277494] by Alan Coon
  • 8 edits in branches/safari-612.1.14-branch/Source

Versioning.

WebKit-7612.1.14.3

9:56 AM Changeset in webkit [277493] by achristensen@apple.com
  • 14 edits in trunk

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:

9:10 AM Changeset in webkit [277492] by Chris Dumez
  • 39 edits in trunk

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

9:01 AM Changeset in webkit [277491] by Chris Dumez
  • 22 edits in trunk

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

8:54 AM Changeset in webkit [277490] by Jonathan Bedard
  • 57 edits in trunk/Tools

[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:
8:51 AM Changeset in webkit [277489] by Jonathan Bedard
  • 4 edits in trunk/Tools

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.
7:36 AM Changeset in webkit [277488] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[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:
3:26 AM Changeset in webkit [277487] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.33.1

WebKitGTK 2.33.1

3:25 AM Changeset in webkit [277486] by Carlos Garcia Campos
  • 4 edits in trunk

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.
3:22 AM Changeset in webkit [277485] by Carlos Garcia Campos
  • 4 edits in trunk

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

May 13, 2021:

11:42 PM Changeset in webkit [277484] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

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.
10:53 PM Changeset in webkit [277483] by commit-queue@webkit.org
  • 5 edits in trunk/Source

Misc GCC warning cleanup
https://bugs.webkit.org/show_bug.cgi?id=225777

Patch by Michael Catanzaro <Michael Catanzaro> 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):

10:52 PM Changeset in webkit [277482] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

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

9:44 PM Changeset in webkit [277481] by Devin Rousso
  • 3 edits in trunk/Source/WebCore

[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.

9:39 PM Changeset in webkit [277480] by Darin Adler
  • 2 edits in trunk/Source/JavaScriptCore

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.

9:06 PM Changeset in webkit [277479] by Wenson Hsieh
  • 13 edits
    2 adds
    2 deletes in trunk/Source

[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:
8:30 PM Changeset in webkit [277478] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GTK] Skip WebXR tests after r277468

Unreviewed test gardening.

WebXR is not yet enabled in GTK.

  • platform/gtk/TestExpectations:
7:13 PM Changeset in webkit [277477] by Patrick Angle
  • 2 edits in trunk/Source/JavaScriptCore

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

7:06 PM Changeset in webkit [277476] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

report-non-inclusive-language should skip symlinks
https://bugs.webkit.org/show_bug.cgi?id=225789

Reviewed by Darin Adler.

  • Scripts/report-non-inclusive-language: Skip symlinks since most likely the linked file would be checked

directly by the script while iterating the directory structure and would result in it being counted twice.
Also the script fails with an error if there is a symlink pointing to a non-existing file.

7:03 PM Changeset in webkit [277475] by ggaren@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

m_calleeSaveRegisters should not be a pointer to a pointer
https://bugs.webkit.org/show_bug.cgi?id=225787

Reviewed by Keith Miller.

Ben found this through memory stress testing.

RegisterAtOffsetList is effectively just a pointer. unique_ptr<RegisterAtOffsetList>
is a pointer to a pointer. RegisterAtOffsetList is long-lived, so it
creates heap page fragmentation.

Worth 3MB on Ben's test.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::setCalleeSaveRegisters):
(JSC::CodeBlock::calleeSaveRegisters const): Use a fence before setting
m_hasCalleeSaveRegisters to ensure that all writes have completed before
the struct becomes visible.

  • bytecode/CodeBlock.h: Use RegisterAtOffsetList directly instead of

unique_ptr<RegisterAtOffsetList> to avoid a long-lived lonely 8 byte
allocation.

  • ftl/FTLCompile.cpp:

(JSC::FTL::compile): Updated for type change.

6:48 PM Changeset in webkit [277474] by Russell Epstein
  • 1 edit in branches/safari-612.1.15-branch/Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h

Unreviewed build fix. rdar://problem/77992162

6:30 PM Changeset in webkit [277473] by Russell Epstein
  • 1 copy in tags/Safari-612.1.14.2

Tag Safari-612.1.14.2.

6:19 PM Changeset in webkit [277472] by Russell Epstein
  • 1 edit in branches/safari-612.1.14-branch/Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h

Unreviewed build fix. rdar://problem/77990505

6:14 PM Changeset in webkit [277471] by Russell Epstein
  • 8 edits in branches/safari-612.1.14-branch/Source

Versioning.

WebKit-7612.1.14.2

6:02 PM Changeset in webkit [277470] by Russell Epstein
  • 35 edits in branches/safari-612.1.12-branch/Source

Cherry-pick r277453. rdar://problem/77996171

Add textIndicator bounce for AppHighlights on scroll.
https://bugs.webkit.org/show_bug.cgi?id=225727

Reviewed by Tim Horton.

  • Modules/highlight/AppHighlightStorage.cpp: (WebCore::AppHighlightStorage::attemptToRestoreHighlightAndScroll):
  • loader/EmptyClients.cpp: (WebCore::EmptyChromeClient::setTextIndicator const):
  • loader/EmptyClients.h:
  • page/ChromeClient.h:
  • page/TextIndicator.h:
  • page/cocoa/WebTextIndicatorLayer.h:
  • page/cocoa/WebTextIndicatorLayer.mm: (-[WebTextIndicatorLayer initWithFrame:textIndicator:margin:offset:]): (createBounceAnimation): (-[WebTextIndicatorLayer _animationDuration]):
  • page/mac/TextIndicatorWindow.h:
  • page/mac/TextIndicatorWindow.mm: (WebCore::TextIndicatorWindow::~TextIndicatorWindow): (WebCore::TextIndicatorWindow::clearTextIndicator): (WebCore::TextIndicatorWindow::setTextIndicator):

Use factored out textIndicator code to add a bounce to an appHighlight
when it is scrolled to.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm: (-[WKWindowVisibilityObserver _dictionaryLookupPopoverWillClose:]): (WebKit::WebViewImpl::setTextIndicator): (WebKit::WebViewImpl::clearTextIndicatorWithAnimation): (WebKit::WebViewImpl::dismissContentRelativeChildWindowsWithAnimationFromViewOnly): (WebKit::WebViewImpl::dismissContentRelativeChildWindowsFromViewOnly):
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setTextIndicator): (WebKit::WebPageProxy::clearTextIndicator):
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::setTextIndicator): (WebKit::PageClientImpl::clearTextIndicator): (WebKit::PageClientImpl::setTextIndicatorAnimationProgress):
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView setUpTextIndicator:]): (-[WKContentView clearTextIndicator:]): (-[WKContentView setTextIndicatorAnimationProgress:]): (-[WKContentView teardownTextIndicatorLayer]): (-[WKContentView startFadeOut]):
  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm: (WebKit::PageClientImpl::setTextIndicator): (WebKit::PageClientImpl::clearTextIndicator): (WebKit::PageClientImpl::didPerformDictionaryLookup):
  • UIProcess/mac/WKImmediateActionController.mm: (-[WKImmediateActionController _animationControllerForText]):
  • WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::setTextIndicator const):
  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/FindController.cpp: (WebKit::FindController::updateFindIndicator):
  • WebCoreSupport/WebChromeClient.h:

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

6:02 PM Changeset in webkit [277469] by Russell Epstein
  • 6 edits
    2 copies in branches/safari-612.1.12-branch

Cherry-pick r277330. rdar://problem/77996680

Factor out find bounce layer
https://bugs.webkit.org/show_bug.cgi?id=225557

Reviewed by Tim Horton.

Factor out the text indicator bounce layer in preparation of making this
compatable with iOS.

No behavior change.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/mac/TextIndicatorWindow.h:
  • page/mac/TextIndicatorWindow.mm: (WebCore::TextIndicatorWindow::setAnimationProgress): (WebCore::TextIndicatorWindow::clearTextIndicator): (WebCore::TextIndicatorWindow::setTextIndicator): (WebCore::TextIndicatorWindow::closeWindow): (WebCore::TextIndicatorWindow::startFadeOut): (indicatorWantsBounce): Deleted. (indicatorWantsContentCrossfade): Deleted. (indicatorWantsFadeIn): Deleted. (indicatorWantsManualAnimation): Deleted. (-[WebTextIndicatorView initWithFrame:textIndicator:margin:offset:]): Deleted. (createBounceAnimation): Deleted. (createContentCrossfadeAnimation): Deleted. (createShadowFadeAnimation): Deleted. (createFadeInAnimation): Deleted. (-[WebTextIndicatorView _animationDuration]): Deleted. (-[WebTextIndicatorView hasCompletedAnimation]): Deleted. (-[WebTextIndicatorView present]): Deleted. (-[WebTextIndicatorView hideWithCompletionHandler:]): Deleted. (-[WebTextIndicatorView setAnimationProgress:]): Deleted. (-[WebTextIndicatorView isFlipped]): Deleted.

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

5:35 PM Changeset in webkit [277468] by dino@apple.com
  • 18 edits
    13 adds
    3 deletes in trunk

[WebXR] Allow WebXR to be tested on PLATFORM(COCOA)
https://bugs.webkit.org/show_bug.cgi?id=225578
<rdar://problem/77707283>

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

New expected results.

  • web-platform-tests/webxr/exclusive_requestFrame_nolayer.https-expected.txt: Added.
  • web-platform-tests/webxr/render_state_vertical_fov_inline.https-expected.txt: Added.
  • web-platform-tests/webxr/webxr-supported-by-feature-policy-expected.txt: Added.
  • web-platform-tests/webxr/webxr_availability.http.sub-expected.txt: Added.
  • web-platform-tests/webxr/webxr_feature_policy.https-expected.txt: Added.
  • web-platform-tests/webxr/xrFrame_lifetime.https-expected.txt: Added.
  • web-platform-tests/webxr/xrPose_transform_sameObject.https-expected.txt: Added.
  • web-platform-tests/webxr/xrReferenceSpace_originOffsetBounded.https-expected.txt: Added.
  • web-platform-tests/webxr/xrSession_input_events_end.https-expected.txt: Added.
  • web-platform-tests/webxr/xrSession_visibilityState.https-expected.txt: Added.
  • web-platform-tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https-expected.txt: Added.
  • web-platform-tests/webxr/xrWebGLLayer_framebuffer_scale.https-expected.txt: Added.
  • web-platform-tests/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https-expected.txt: Added.

Source/WebKit:

Remove checking for a WebXR feature flag.

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultWebXREnabled):

Source/WTF:

Compile-time enabled on all Cocoa platforms.

  • wtf/PlatformEnableCocoa.h:

LayoutTests:

Remove the skip rule for the WebXR directory, and add more
specific expected results.

4:39 PM Changeset in webkit [277467] by Alan Coon
  • 1 copy in tags/Safari-612.1.12.7

Tag Safari-612.1.12.7.

4:35 PM Changeset in webkit [277466] by Alan Coon
  • 5 edits in branches/safari-612.1.12-branch/Source

Cherry-pick r277464. rdar://problem/77993046

Work around WebCore failing to build due to NDEBUG getting undefined in release
https://bugs.webkit.org/show_bug.cgi?id=225782
<rdar://problem/77982432>

Reviewed by Simon Fraser.

Source/WebCore/PAL:

  • pal/spi/cg/CoreGraphicsSPI.h:
  • pal/spi/ios/GraphicsServicesSPI.h: Apply a temporary workaround to preserve NDEBUG through these includes. There are a few ways to get to CoreGraphicsPrivate.h, so we fix all of them.

Source/WebKit:

  • Platform/spi/ios/UIKitSPI.h: Apply a temporary workaround to preserve NDEBUG through these includes. There are a few ways to get to CoreGraphicsPrivate.h, so we fix all of them.

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

4:31 PM Changeset in webkit [277465] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Style fixes in steps.py
https://bugs.webkit.org/show_bug.cgi?id=225784

Reviewed by Dewei Zhu.

  • CISupport/ews-build/steps.py:

(CheckOutSource.init):
(ShowIdentifier.hideStepIf):
(BugzillaMixin.get_bugzilla_api_key):
(RunJavaScriptCoreTests.commandComplete):
(AnalyzeJSCTestsResults.send_email_for_pre_existing_failure):
(AnalyzeLayoutTestsResults._report_flaky_tests):
(DownloadBuiltProduct):
(AnalyzeAPITestsResults.analyzeResults.getAPITestFailures):
(AnalyzeAPITestsResults.send_email_for_pre_existing_failure):

4:27 PM Changeset in webkit [277464] by timothy_horton@apple.com
  • 5 edits in trunk/Source

Work around WebCore failing to build due to NDEBUG getting undefined in release
https://bugs.webkit.org/show_bug.cgi?id=225782
<rdar://problem/77982432>

Reviewed by Simon Fraser.

Source/WebCore/PAL:

  • pal/spi/cg/CoreGraphicsSPI.h:
  • pal/spi/ios/GraphicsServicesSPI.h:

Apply a temporary workaround to preserve NDEBUG through these includes.
There are a few ways to get to CoreGraphicsPrivate.h, so we fix all of them.

Source/WebKit:

  • Platform/spi/ios/UIKitSPI.h:

Apply a temporary workaround to preserve NDEBUG through these includes.
There are a few ways to get to CoreGraphicsPrivate.h, so we fix all of them.

4:20 PM Changeset in webkit [277463] by Devin Rousso
  • 3 edits in trunk/Source/WebCore

[iOS] REGRESSION(r271216) pointerevents/ios/pointer-events-no-mousedown-when-prevent-default-called-on-pointerdown.html is consistently failing
https://bugs.webkit.org/show_bug.cgi?id=225734
<rdar://problem/77070765>

Reviewed by Tim Horton.

r271216 made it so that touchWithIdentifierWasRemoved is eagerly called when dispatching
"pointerup" for a touch event. This is problematic because (compatibility) mouse events
are dispatched after both pointer and touch events, meaning that if the CapturingData for
the touch event is removed, there's no way of knowing if the pointer event preventDefault.

Instead of fully removing the CapturingData entirely, change its state such that it's
marked as CapturingData::State::Finished and check for that instead.

  • page/PointerCaptureController.h:
  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::hasCancelledPointerEventForIdentifier const):
(WebCore::PointerCaptureController::dispatchEventForTouchAtIndex):
(WebCore::PointerCaptureController::pointerEventForMouseEvent):
(WebCore::PointerCaptureController::cancelPointer):

4:19 PM Changeset in webkit [277462] by Cameron McCormack
  • 3 edits
    2 adds in trunk

Ensure scrollable transformed elements that are themselves within scrollable elements don't ignore border-radius
https://bugs.webkit.org/show_bug.cgi?id=216978
<rdar://69660229>

Reviewed by Darin Adler.

Source/WebCore:

We use ShouldRespectOverflowClip to prevent clips from ancestors
from being used when we paint a scrollable layer (when
PaintLayerFlag::PaintingOverflowContents is set). We only look
at the ShouldRespectOverflowClip value when we're painting a layer
we're considering to be a clip rect root layer, and we unconditionally
apply ancestor clips for layers that aren't clip rect roots.

A non-root layer with a transform is handled by applying the transform
and painting the layer as a root layer (since we don't want to handle
computing the effect of ancestor clip rects past the transform). When
the transformed layer also has a border-radius, we incorrectly skip
marking its clip rect as being affected by radius, since we currently
do this at the same time as applying ancestor clip rects.

This patch splits out the setAffectedByRadius call so that it happens
even for transformed non-root layers.

Test: fast/layers/overflow-scroll-transform-border-radius.html

  • rendering/RenderLayer.cpp:

(WebCore::ClipRects::setOverflowClipRectAffectedByRadius):
(WebCore::RenderLayer::calculateClipRects const):

LayoutTests:

  • fast/layers/overflow-scroll-transform-border-radius-expected.html: Added.
  • fast/layers/overflow-scroll-transform-border-radius.html: Added.
4:16 PM Changeset in webkit [277461] by Russell Epstein
  • 4 edits in branches/safari-612.1.15-branch/Source

Apply patch. rdar://problem/77992162

4:16 PM Changeset in webkit [277460] by Chris Dumez
  • 2 edits in trunk/Tools

Tweak ServiceWorkers.SuspendServiceWorkerProcessBasedOnClientProcesses to find out source of timeout
https://bugs.webkit.org/show_bug.cgi?id=225770

Reviewed by Alexey Proskuryakov.

Wait for conditions with our own timeout so that the test fails with useful errors instead
of just a generic timeout. This just help us find out where in the test things go wrong.

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
4:11 PM Changeset in webkit [277459] by Devin Rousso
  • 2 edits in trunk/Source/WebCore

[macOS] experimental "Use theme color for scroll area background" isn't working
https://bugs.webkit.org/show_bug.cgi?id=225726
<rdar://problem/77933000>

Reviewed by Tim Horton.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateLayerForOverhangAreasBackgroundColor):
(WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
Fix last remaining m_layerForOverhangAreas->setBackgroundColor to use the helper function
RenderLayerCompositor::updateLayerForOverhangAreasBackgroundColor instead so that all
paths that update the overscroll area color check the experimental settings too.

4:03 PM Changeset in webkit [277458] by Russell Epstein
  • 1 copy in branches/safari-612.1.15-branch

New branch.

3:50 PM Changeset in webkit [277457] by Alan Coon
  • 1 copy in tags/Safari-612.1.14.1

Tag Safari-612.1.14.1.

3:49 PM Changeset in webkit [277456] by Alan Coon
  • 4 edits in branches/safari-612.1.14-branch/Source

Apply patch. rdar://problem/77990505

3:44 PM Changeset in webkit [277455] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[BigSur] media/video-played-ranges-1.html is flaky failure
https://bugs.webkit.org/show_bug.cgi?id=223645

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:39 PM Changeset in webkit [277454] by Alan Coon
  • 8 edits in branches/safari-612.1.14-branch/Source

Versioning.

WebKit-7612.1.14.1

2:57 PM Changeset in webkit [277453] by timothy_horton@apple.com
  • 35 edits in trunk/Source

Add textIndicator bounce for AppHighlights on scroll.
https://bugs.webkit.org/show_bug.cgi?id=225727

Reviewed by Tim Horton.

  • Modules/highlight/AppHighlightStorage.cpp:

(WebCore::AppHighlightStorage::attemptToRestoreHighlightAndScroll):

  • loader/EmptyClients.cpp:

(WebCore::EmptyChromeClient::setTextIndicator const):

  • loader/EmptyClients.h:
  • page/ChromeClient.h:
  • page/TextIndicator.h:
  • page/cocoa/WebTextIndicatorLayer.h:
  • page/cocoa/WebTextIndicatorLayer.mm:

(-[WebTextIndicatorLayer initWithFrame:textIndicator:margin:offset:]):
(createBounceAnimation):
(-[WebTextIndicatorLayer _animationDuration]):

  • page/mac/TextIndicatorWindow.h:
  • page/mac/TextIndicatorWindow.mm:

(WebCore::TextIndicatorWindow::~TextIndicatorWindow):
(WebCore::TextIndicatorWindow::clearTextIndicator):
(WebCore::TextIndicatorWindow::setTextIndicator):

Use factored out textIndicator code to add a bounce to an appHighlight
when it is scrolled to.

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

(-[WKWindowVisibilityObserver _dictionaryLookupPopoverWillClose:]):
(WebKit::WebViewImpl::setTextIndicator):
(WebKit::WebViewImpl::clearTextIndicatorWithAnimation):
(WebKit::WebViewImpl::dismissContentRelativeChildWindowsWithAnimationFromViewOnly):
(WebKit::WebViewImpl::dismissContentRelativeChildWindowsFromViewOnly):

  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setTextIndicator):
(WebKit::WebPageProxy::clearTextIndicator):

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::setTextIndicator):
(WebKit::PageClientImpl::clearTextIndicator):
(WebKit::PageClientImpl::setTextIndicatorAnimationProgress):

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

(-[WKContentView setUpTextIndicator:]):
(-[WKContentView clearTextIndicator:]):
(-[WKContentView setTextIndicatorAnimationProgress:]):
(-[WKContentView teardownTextIndicatorLayer]):
(-[WKContentView startFadeOut]):

  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::setTextIndicator):
(WebKit::PageClientImpl::clearTextIndicator):
(WebKit::PageClientImpl::didPerformDictionaryLookup):

  • UIProcess/mac/WKImmediateActionController.mm:

(-[WKImmediateActionController _animationControllerForText]):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::setTextIndicator const):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/FindController.cpp:

(WebKit::FindController::updateFindIndicator):

  • WebCoreSupport/WebChromeClient.h:
2:53 PM Changeset in webkit [277452] by Aditya Keerthi
  • 5 edits
    2 adds in trunk

REGRESSION (r276945): [iOS] Focus rings are too large
https://bugs.webkit.org/show_bug.cgi?id=225778
<rdar://problem/77858341>

Reviewed by Tim Horton.

Source/WebCore:

r276945 updated scaling logic to ensure that the scale of the base CTM
matches the device scale factor. The change itself makes our base CTM
more correct, but exposed a longstanding bug with our focus ring
implementation.

Focus rings are drawn using CoreGraphics, using CGFocusRingStyle. On
macOS, the style is initialized using NSInitializeCGFocusRingStyleForTime.
However, on iOS, we initialize the style ourselves, using UIKit constants.
Currently, the focus ring's style's radius is set to
+[UIFocusRingStyle cornerRadius], a constant of 8. This is the longstanding
issue. CGFocusRingStyle's radius is not a corner radius, but is the
width of the focus ring. In UIKit, this width is represented by
+[UIFocusRingStyle borderThickness], a constant of 3. WebKit has always
intended to match this width, as evidenced by the default outline-width
of 3px in the UA style sheet.

Considering the large disparity between the existing and expected radius
value, it may be surprising that this mistake has gone unnoticed since
2019, when focus rings were first introduced on iOS. This is where r276945
comes into play. Prior to r276945, the scale of the base CTM did not match
the device scale factor. This meant that CG scaled down the constant of 8
to 4 CSS pixels (1 (base CTM) / 2 (device scale factor)). After r276945,
the two scales are equal and the focus ring is drawn as 8 CSS pixels, much
larger than the expected 3px.

Test: fast/forms/ios/focus-ring-size.html

  • platform/graphics/cocoa/GraphicsContextCocoa.mm:

(WebCore::drawFocusRingAtTime):

To fix, use the correct SPI to get the focus ring width,
+[UIFocusRingStyle borderThickness]. This ensures that focus rings have
the right width, following r276945.

The change also fixes focus ring repaint issues that arose from the
fact that the outline-width was 3px, but the painted width was 4px.

Source/WebCore/PAL:

  • pal/spi/ios/UIKitSPI.h:

LayoutTests:

Added a regression test to verify the size of the focus ring on iOS.
The test works by drawing an overlay on top of an input element, that
is just large enough to obscure the focus ring. If the focus ring is
too large, the ring will not obscured, leading to a mismatch failure.

  • fast/forms/ios/focus-ring-size-expected.html: Added.
  • fast/forms/ios/focus-ring-size.html: Added.
2:28 PM Changeset in webkit [277451] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Add unit test using WKHTTPCookieStoreObserver and cookies received from HTTP
https://bugs.webkit.org/show_bug.cgi?id=225773

Patch by Alex Christensen <achristensen@webkit.org> on 2021-05-13
Reviewed by Chris Dumez.

We only had tests that added cookies through the API, not through the network.
I thought it was broken but it isn't. Still worth adding the test.

  • TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:

(deleteAllCookies):
(TEST):

1:54 PM Changeset in webkit [277450] by weinig@apple.com
  • 24 edits
    4 copies in trunk/Source

Split pixel buffer format data out into a new PixelBufferFormat struct
https://bugs.webkit.org/show_bug.cgi?id=225707

Reviewed by Darin Adler.

Source/WebCore:

Splits out PixelBufferFormat into a new struct and adopts it by PixelBufferConversionView,
ConstPixelBufferConversionView and PixelBuffer. This also means that PixelBuffer now
tracks the alpha format of the underlying buffer which will come in handy.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Add new files.

  • platform/graphics/AlphaPremultiplication.cpp: Added.

(WebCore::operator<<):
Add AlphaPremultiplication.cpp and move TextStream support
here from GraphicsTypes.cpp.

  • platform/graphics/GraphicsTypes.cpp:

Move AlphaPremultiplication TextStream to the more appropriate
AlphaPremultiplication.cpp.

  • html/ImageData.cpp:

(WebCore::ImageData::create):

  • html/ImageData.h:

(WebCore::ImageData::colorSpace const): Deleted.
(WebCore::ImageData::format const): Deleted.

  • platform/graphics/ImageBufferBackend.cpp:

(WebCore::ImageBufferBackend::toBGRAData const):
(WebCore::ImageBufferBackend::getPixelBuffer const):
(WebCore::ImageBufferBackend::putPixelBuffer):

  • platform/graphics/ImageBufferBackend.h:
  • platform/graphics/PixelBuffer.cpp:

(WebCore::PixelBuffer::computeBufferSize):
(WebCore::PixelBuffer::tryCreateForDecoding):
(WebCore::PixelBuffer::tryCreate):
(WebCore::PixelBuffer::PixelBuffer):
(WebCore::PixelBuffer::deepClone const):
(WebCore::operator<<):

  • platform/graphics/PixelBuffer.h:

(WebCore::PixelBuffer::format const):
(WebCore::PixelBuffer::encode const):
(WebCore::PixelBuffer::decode):
(WebCore::PixelBuffer::colorSpace const): Deleted.

  • platform/graphics/PixelBufferConversion.cpp:

(WebCore::convertImagePixelsAccelerated):
(WebCore::convertImagePixels):

  • platform/graphics/PixelBufferConversion.h:
  • platform/graphics/PixelBufferFormat.cpp: Added.

(WebCore::operator<<):

  • platform/graphics/PixelBufferFormat.h: Added.

(WebCore::PixelBufferFormat::encode const):
(WebCore::PixelBufferFormat::decode):

  • platform/graphics/PixelFormat.cpp: Added.

(WebCore::operator<<):

  • platform/graphics/PixelFormat.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::readPixelsForPaintResults):

  • platform/graphics/cg/GraphicsContextGLCG.cpp:

(WebCore::GraphicsContextGLOpenGL::paintToCanvas):

  • platform/graphics/cg/ImageBufferCGBackend.cpp:

(WebCore::ImageBufferCGBackend::toCFData const):

  • platform/graphics/cg/ImageBufferUtilitiesCG.cpp:

(WebCore::cfData):

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::copyUnmultipliedResult):
(WebCore::FilterEffect::copyPremultipliedResult):
(WebCore::FilterEffect::createUnmultipliedImageResult):
(WebCore::FilterEffect::createPremultipliedImageResult):
Adopt PixelBufferFormat.

Source/WebKit:

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

Adopt PixelBufferFormat.

1:47 PM Changeset in webkit [277449] by Chris Dumez
  • 31 edits in trunk

Rename FileSystem::directoryName() to FileSystem::parentPath()
https://bugs.webkit.org/show_bug.cgi?id=225768

Reviewed by Darin Adler.

Rename FileSystem::directoryName() to FileSystem::parentPath() for clarity and
consistency with std::filesystem::parent_path() which is used internally.

Source/JavaScriptCore:

  • API/JSScript.mm:

(validateBytecodeCachePath):

Source/WebCore:

  • Modules/entriesapi/DOMFileSystem.cpp:

(WebCore::DOMFileSystem::DOMFileSystem):

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::writeDataToUniqueFileInDirectory):
(WebCore::ApplicationCacheStorage::checkForDeletedResources):

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

(WebCore::CDMSessionAVContentKeySession::contentKeySession):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::purgeOldDownloadFiles):

  • platform/network/curl/CookieJarDB.cpp:

(WebCore::CookieJarDB::openDatabase):

  • platform/sql/SQLiteFileSystem.cpp:

(WebCore::SQLiteFileSystem::ensureDatabaseFileExists):

  • platform/win/SearchPopupMenuDB.cpp:

(WebCore::SearchPopupMenuDB::openDatabase):

  • workers/service/server/SWScriptStorage.cpp:

(WebCore::SWScriptStorage::store):

Source/WebKit:

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::openITPDatabase):

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::writeFile):

  • Shared/glib/ProcessExecutablePathGLib.cpp:

(WebKit::getExecutablePath):

  • UIProcess/API/glib/IconDatabase.cpp:

(WebKit::IconDatabase::IconDatabase):

  • UIProcess/API/glib/WebKitWebsiteDataManager.cpp:

(webkit_website_data_manager_get_disk_cache_directory):

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::bubblewrapSpawn):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::platformSetNetworkParameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):

Source/WebKitLegacy:

  • Storage/StorageTracker.cpp:

(WebKit::ensureDatabaseFileExists):

Source/WebKitLegacy/win:

  • Plugins/PluginDatabase.cpp:

(WebCore::PluginDatabase::loadPersistentMetadataCache):

Source/WTF:

  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::readOrMakeSalt):
(WTF::FileSystemImpl::parentPath):
(WTF::FileSystemImpl::directoryName): Deleted.

  • wtf/FileSystem.h:

Tools:

  • DumpRenderTree/win/DumpRenderTree.cpp:

(findFontFallback):

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::TEST_F):

  • TestWebKitAPI/win/PlatformUtilitiesWin.cpp:

(TestWebKitAPI::Util::moduleDirectory):

1:08 PM Changeset in webkit [277448] by Chris Dumez
  • 20 edits in trunk

Rename FileSystem::fileIsDirectory(path, followSymlinks) to isDirectory(path) / isDirectoryFollowingSymlinks(path)
https://bugs.webkit.org/show_bug.cgi?id=225772

Reviewed by Darin Adler.

Source/JavaScriptCore:

Update code base due to API naming change.

  • API/JSScript.mm:

(validateBytecodeCachePath):

Source/WebCore:

Update code base due to API naming change.

  • Modules/entriesapi/DOMFileSystem.cpp:

(WebCore::listDirectoryWithMetadata):

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::attachmentForFilePath):

  • fileapi/File.cpp:

(WebCore::File::isDirectory const):

  • html/DirectoryFileListCreator.cpp:

(WebCore::gatherFileInformation):

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

(WebCore::CDMInstanceFairPlayStreamingAVFObjC::setStorageDirectory):

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

(WebCore::ensureAssetCacheExistsForPath):

  • platform/network/FormData.cpp:

(WebCore::FormData::prepareForUpload):

Source/WebKit:

Update code base due to API naming change.

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::getDirectorySize):
(WebKit::CacheStorage::Engine::getDirectories):
(WebKit::CacheStorage::Engine::clearAllCachesFromDisk):

  • NetworkProcess/cache/NetworkCacheFileSystem.cpp:

(WebKit::NetworkCache::traverseDirectory):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::isInternalInstall):

Source/WTF:

I don't think the "file" prefix is useful here so I am renaming the function to
isDirectory(). Also, instead of using an enum parameter to decide whether or
not to follow symlink, I am adding a separate function called
isDirectoryFollowingSymlinks(). This is consistent with the
fileMetadata() / fileMetadataFollowingSymlinks() pattern, which Darin said he
preferred.

  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::isDirectory):
(WTF::FileSystemImpl::isDirectoryFollowingSymlinks):
(WTF::FileSystemImpl::fileIsDirectory): Deleted.

  • wtf/FileSystem.h:

Tools:

Update code base due to API naming change.

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::TEST_F):

12:45 PM Changeset in webkit [277447] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Process suspension may be delayed by up to 5 seconds after there is no longer any database activity
https://bugs.webkit.org/show_bug.cgi?id=225774

Reviewed by Geoffrey Garen.

Use a 1 second HysteresisActivity in WebSQLiteDatabaseTracker instead of a 5 seconds one.
I frequently see our processes' suspension getting delayed by 5 seconds when homing out of
MobileSafari due to database activity. This change should help with that.

  • Shared/WebSQLiteDatabaseTracker.cpp:

(WebKit::WebSQLiteDatabaseTracker::WebSQLiteDatabaseTracker):

12:43 PM Changeset in webkit [277446] by Chris Dumez
  • 7 edits in trunk

Introduce FileSystem::hardLinkCount()
https://bugs.webkit.org/show_bug.cgi?id=225767

Reviewed by Darin Adler.

Source/WebKit:

Leverage the FileSystem API instead of having platform-specific code.

  • NetworkProcess/cache/NetworkCacheBlobStorage.cpp:

(WebKit::NetworkCache::BlobStorage::synchronize):
(WebKit::NetworkCache::BlobStorage::shareCount):

Source/WTF:

Introduce FileSystem::hardLinkCount() to replace our platform-specific implementation
in NetworkCacheBlobStorage.

  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::hardLinkCount):

  • wtf/FileSystem.h:

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::TEST_F):

12:38 PM Changeset in webkit [277445] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[MacOS Wk1] media/video-playback-quality.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=223770

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
12:23 PM Changeset in webkit [277444] by Jonathan Bedard
  • 4 edits in trunk/Tools

[run-api-tests] Use Python 3 (Part 1)
https://bugs.webkit.org/show_bug.cgi?id=225427
<rdar://problem/77584713>

Reviewed by Aakash Jain.

  • CISupport/build-webkit-org/steps.py:

(RunAPITests): Use Python3 to invoke run-api-tests.

  • CISupport/ews-build/steps.py:

(RunAPITests): Use Python3 to invoke run-api-tests.

  • CISupport/ews-build/steps_unittest.py:
11:48 AM Changeset in webkit [277443] by Robert Jenner
  • 3 edits in trunk/LayoutTests

[ BigSur iOS14 ] http/tests/xmlhttprequest/redirect-cross-origin-tripmine.html (layout-test) is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225668

Unreviewed test gardening.

Marking as slow to see if timeouts stop occurring.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
11:23 AM Changeset in webkit [277442] by jer.noble@apple.com
  • 4 edits in trunk

[ macOS Wk2 ] media/media-fragments/TC0051.html is flakey crashing
https://bugs.webkit.org/show_bug.cgi?id=222277
<rdar://problem/74600790>

Reviewed by Eric Carlson.

Source/WebCore:

In r274734, a workaround was added to detect a bug in the Photos.framework that would cause
an exception to be thrown if the URL provided to AVURLAsset had a malformed fragment identifier.
However, in an effort to reduce the runtime cost of this check, it was only done once, the first
time an AVURLAsset is created. This failed to account for the Photos.framework being dynamically
loaded and changing the behavior of AVURLAsset after the check had been performed.

Instead, fall back to a much simpler check: wrap the creation of the AVURLAsset in a @try/@catch
block, and if an exception was thrown, re-attempt to create the AVURLAsset with a manually
conformed URL.

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

(WebCore::conformFragmentIdentifierForURL):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):
(WebCore::hasBrokenFragmentSupport): Deleted.

LayoutTests:

  • platform/mac-wk2/TestExpectations:
11:16 AM Changeset in webkit [277441] by Robert Jenner
  • 3 edits in trunk/LayoutTests

[ Catalina+ wk2 ] http/tests/webAPIStatistics/screen-functions-accessed-data-collection.html (layout-test) is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225667

Unreviewed test gardening.

Accidentally broke a test when I applied it for all of mac instead of just for mac wk2. I have updated the slow expectation for just mac wk2.

  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
10:36 AM Changeset in webkit [277440] by Jonathan Bedard
  • 4 edits in trunk/Tools

Few webkitpy unit-tests fails in non-PST timezones
https://bugs.webkit.org/show_bug.cgi?id=225741

Reviewed by Aakash Jain.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py:
  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/svn.py: Ditto.

(Svn.request): Serve SVN content from California time (like our SVN server)

10:35 AM Changeset in webkit [277439] by weinig@apple.com
  • 2 edits in trunk/Source/WebKit

CGDisplayList debug configuration fails to build
https://bugs.webkit.org/show_bug.cgi?id=225729

Reviewed by Darin Adler.

  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:

(WebKit::nameForBackingStoreType):
Add missing case for RemoteLayerBackingStore::Type::CGDisplayList.

10:03 AM Changeset in webkit [277438] by aboya@igalia.com
  • 6 edits in trunk/Source

[WTF] Add holdLock() overload for WTF::DataMutex
https://bugs.webkit.org/show_bug.cgi?id=225652

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

All instantiations of DataMutex::LockedWrapper have been replaced by
holdLock(), for equivalent but more concise code.

This patch introduces no behavior changes.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcConstructed):
(webKitWebSrcGetProperty):
(webKitWebSrcSetContext):
(webKitWebSrcCreate):
(webKitWebSrcMakeRequest):
(webKitWebSrcStop):
(webKitWebSrcGetSize):
(webKitWebSrcIsSeekable):
(webKitWebSrcDoSeek):
(webKitWebSrcQuery):
(webKitWebSrcUnLock):
(webKitWebSrcUnLockStop):
(webKitWebSrcSetMediaPlayer):
(webKitSrcPassedCORSAccessCheck):
(CachedResourceStreamingClient::responseReceived):
(CachedResourceStreamingClient::dataReceived):
(CachedResourceStreamingClient::accessControlCheckFailed):
(CachedResourceStreamingClient::loadFailed):
(CachedResourceStreamingClient::loadFinished):
(webKitSrcWouldTaintOrigin):

  • platform/graphics/gstreamer/mse/MediaSourceTrackGStreamer.cpp:

(WebCore::MediaSourceTrackGStreamer::isReadyForMoreSamples):
(WebCore::MediaSourceTrackGStreamer::notifyWhenReadyForMoreSamples):
(WebCore::MediaSourceTrackGStreamer::enqueueObject):
(WebCore::MediaSourceTrackGStreamer::clearQueue):

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:

(webKitMediaSrcActivateMode):
(webKitMediaSrcPadLinked):
(webKitMediaSrcLoop):
(webKitMediaSrcStreamFlush):

Source/WTF:

This patch adds a holdLock() overload for WTF::DataMutex as syntactic
sugar to simplify usage in a similar way to what holdLock() already
does for WTF::Locker.

  • wtf/DataMutex.h:

(WTF::holdLock):

9:18 AM Changeset in webkit [277437] by Darin Adler
  • 58 edits in trunk

Remove StringBuilder::appendNumber
https://bugs.webkit.org/show_bug.cgi?id=225732

Reviewed by Sam Weinig.

Source/JavaScriptCore:

  • API/JSContextRef.cpp:

(BacktraceFunctor::operator() const): Use append instead of appendNumber.

  • API/tests/PingPongStackOverflowTest.cpp:

(PingPongStackOverflowObject_hasInstance): Ditto.

  • heap/HeapSnapshotBuilder.cpp:

(JSC::HeapSnapshotBuilder::json): Ditto.

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::Frame::toString const): Use makeString instead of StringBuilder.

  • runtime/ConsoleClient.cpp:

(JSC::appendURLAndPosition): Ditto.
(JSC::ConsoleClient::printConsoleMessageWithArguments): Use append instead of appendNumber.

  • runtime/JSONObject.cpp:

(JSC::Stringifier::appendStringifiedValue): Ditto.

  • runtime/Options.cpp:

(JSC::OptionReader::Option::dump const): Ditto.

  • runtime/StackFrame.cpp:

(JSC::StackFrame::toString const): Use makeString instead of StringBuilder.

Source/WebCore:

  • Modules/indexeddb/server/IndexValueStore.cpp:

(WebCore::IDBServer::IndexValueStore::loggingString const):
Use append instead of appendNumber.

  • Modules/websockets/WebSocketHandshake.cpp:

(WebCore::hostName): Use makeString instead of StringBuilder.

  • contentextensions/CombinedURLFilters.cpp:

(WebCore::ContentExtensions::prefixTreeVertexToString):
Use append instead of appendNumber.

  • contentextensions/Term.h:

(WebCore::ContentExtensions::Term::toString const): Ditto.

  • css/CSSFontFeatureValue.cpp:

(WebCore::CSSFontFeatureValue::customCSSText const): Ditto.

  • css/CSSTimingFunctionValue.cpp:

(WebCore::CSSStepsTimingFunctionValue::customCSSText const): Ditto.

  • dom/Document.cpp:

(WebCore::Document::downgradeReferrerToRegistrableDomain): Use
makeString instead of StringBuilder.

  • editing/MarkupAccumulator.cpp:

(WebCore::MarkupAccumulator::generateUniquePrefix): Ditto.

  • editing/cocoa/DataDetection.mm:

(WebCore::dataDetectorStringForPath): Use append instead of appendNumber.

  • html/HTMLAnchorElement.cpp:

(WebCore::appendServerMapMousePosition): Ditto.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createContext2d): Use makeString
instead of StringBuilder.
(WebCore::HTMLCanvasElement::createImageBuffer const): Ditto.

  • loader/ResourceLoadStatistics.cpp:

(WebCore::ResourceLoadStatistics::toString const): Use append instead
of appendNumber.

  • loader/SubresourceIntegrity.cpp:

(WebCore::integrityMismatchDescription): Use makeString instead of
StringBuilder.

  • page/IntersectionObserver.cpp:

(WebCore::IntersectionObserver::rootMargin const): Use append instead
of appendNumber.

  • page/SecurityOriginData.cpp:

(WebCore::SecurityOriginData::databaseIdentifier const): Use makeString
instead of StringBuilder.

  • platform/Decimal.cpp:

(WebCore::Decimal::toString const): Use append instead of appendNumber.

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::animationNameForTransition): Use makeString
instead of StringBuilder.

  • platform/graphics/ca/TileController.cpp:

(WebCore::TileController::createTileLayer): Ditto.

  • platform/graphics/ca/win/PlatformCALayerWin.cpp:

(printTransform): Use single append instead of a run of them.
(printLayer): Ditto, and use append instead of apppendNumber.
(PlatformCALayerWin::layerTreeAsString const): Ditto.

  • platform/mediarecorder/MediaRecorderPrivateMock.cpp:

(WebCore::MediaRecorderPrivateMock::generateMockCounterString):
Use append instead of appendNumber.

  • platform/network/ProxyServer.cpp:

(WebCore::appendProxyServerString): Ditto.

  • rendering/RenderTreeAsText.cpp:

(WebCore::nodePosition): Ditto.

  • svg/SVGPathUtilities.cpp:

(WebCore::buildStringFromPath): Ditto.

  • testing/Internals.cpp:

(WebCore::Internals::parserMetaData): Use makeString instead of
StringBuilder.
(WebCore::appendOffsets): Use append instead of appendNumber.

  • testing/MockPageOverlayClient.cpp:

(WebCore::MockPageOverlayClient::drawRect): Use makeString instead
of StringBuilder.
(WebCore::MockPageOverlayClient::mouseEvent): Ditto.

  • xml/XMLErrors.cpp:

(WebCore::XMLErrors::appendErrorMessage): Use append instead of
appendNumber.

Source/WebDriver:

  • SessionHost.cpp:

(WebDriver::SessionHost::sendCommandToBackend): Use append instead
of appendNumber.

  • socket/HTTPServerSocket.cpp:

(WebDriver::HTTPRequestHandler::packHTTPMessage const): Ditto.

Source/WebKit:

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::buildList): Use append instead of appendNumber.
(WebKit::ResourceLoadStatisticsDatabaseStore::findNotVeryPrevalentResources): Ditto.
(WebKit::ResourceLoadStatisticsDatabaseStore::resourceToString const): Ditto.
(WebKit::ResourceLoadStatisticsDatabaseStore::attributionToString): Ditto.
(WebKit::ResourceLoadStatisticsDatabaseStore::privateClickMeasurementToString): Ditto.

  • Shared/WebMemorySampler.cpp:

(WebKit::WebMemorySampler::appendCurrentMemoryUsageToFile): Ditto.

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewRunJavaScriptCallback): Ditto.

  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::loggingString): Ditto.

  • WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:

(PageResourceLoadClient::didReceiveResponseForResource): Use makeString instead
of StringBuilder.

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::buildHTTPHeaders): Use append instead of appendNumber.

Source/WebKitLegacy/win:

  • WebKitStatistics.cpp:

(WebKitStatistics::comClassNameCounts): Use append instead of
appendNumber.

Source/WTF:

We originally added StringBuilder::appendNumber to resolve the ambiguity
between UChar and uint16_t, but that problem was solved long ago and it
is safe to use StringBuilder::append, including the variadic form, on all
types of numbers and we'll get the same results we did with appendNumber.

  • wtf/JSONValues.cpp:

(WTF::JSONImpl::Value::writeJSON const): Use append instead of appendNumber.

  • wtf/text/StringBuilder.cpp:

(WTF::StringBuilder::appendNumber): Deleted.

  • wtf/text/StringBuilder.h: Removed appendNumber.
  • wtf/text/TextStream.cpp:

(WTF::TextStream::operator<<): Use append instead of appendNumber.

Tools:

  • TestWebKitAPI/Tests/WTF/StringBuilder.cpp:

Test append with a number instead of appendNumber.

  • TestWebKitAPI/Tests/WebKitGLib/TestAutomationSession.cpp:

Use append instead of appendNumber.

  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::dumpResponseDescriptionSuitableForTestResult): Use append instead
of appendNumber.
(WTR::dumpFrameScrollPosition): Ditto.
(WTR::InjectedBundlePage::didFinishDocumentLoadForFrame): Use makeString
instead of StringBuilder.
(WTR::InjectedBundlePage::shouldCacheResponse): Ditto.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

(WTR::attributesOfElement): Use append instead of appendNumber.
(WTR::AccessibilityUIElement::attributedStringForRange): Ditto.
(WTR::stringAtOffset): Ditto.

9:01 AM Changeset in webkit [277436] by Lauro Moura
  • 2 edits in trunk/Tools/buildstream

[Flatpak SDK] Update WPEBackend-fdo to 1.8.4
https://bugs.webkit.org/show_bug.cgi?id=225735

Reviewed by Adrian Perez de Castro.

  • elements/sdk/wpebackend-fdo.bst:
8:00 AM Changeset in webkit [277435] by Alan Bujtas
  • 3 edits
    4 adds in trunk

[css-flexbox] Flex item construction may affect sibling flex item height computation
https://bugs.webkit.org/show_bug.cgi?id=225489

Reviewed by Sergio Villar Senin.

Source/WebCore:

Flex item construction triggers layout both on the flex item and on its descendants (see constructFlexItem).
During this layout a percent height descendant may indirectly set an incorrect value on the flex container's
m_hasDefiniteHeight (this is due to the odd way we choose to resolve percent height values on the ancestor chain,
see setOverridingContainingBlockContentLogicalHeight(WTF::nullopt)).
Now this incorrect m_hasDefiniteHeight value (Indefinite) causes the next sibling's (also) percent height
resolve fail as it tells the flex item that the flex container can't help with resolving the percent height value.
As the result we end up with an incorrect, 0px height value for this sibling.
e.g.
<div style="height: 100px; display: flex; flex-direction: column;">

<div id=flexItemA style="height: 50px;"><div style="height: 100%;"></div></div>
<div id=flexItemB style="height: 50%;"></div>

</div>
By the time we get to the construction of flexItemB, the RenderFlexibleBox's (flex container) m_hasDefiniteHeight
is already (and incorrectly) set to Indefinite as the result of us trying to resolve flexItemA's descendant height percentage.
This Indefinite value makes the flexItemB's height resolution fail as we believe that the flex container has indefinite height
e.g "height: auto", while it is clearly resolvable (50% of 100px).
Now if we flip the order and flexItemB comes first, the test case passes fine.
It is very unfortunate that some descendant height resolving process can trigger a state change on the ancestor RenderFlexibleBox, but
fixing it would certainly require some substantial architectural change.
In this patch, we just reset the m_hasDefiniteHeight flag inside the loop to ensure that each flex item
starts with a fresh height percent resolve state.

Test: fast/flexbox/flex-column-with-percent-height-descendants.html

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::layoutFlexItems):

LayoutTests:

  • fast/flexbox/flex-column-with-percent-height-descendants-expected.html: Added.
  • fast/flexbox/flex-column-with-percent-height-descendants.html: Added.
7:30 AM Changeset in webkit [277434] by Chris Fleizach
  • 5 edits
    2 adds in trunk

AX: Crash at WebCore::Document::updateLayout
https://bugs.webkit.org/show_bug.cgi?id=225677

Reviewed by Alan Bujtas.

Source/WebCore:

Handling notifications while during layout is risky because we can call back into an update method.
We have handled many other cases like this by deferring the notification, as we do here.
Special note: this test can't be made to crash because actual crash requires the accessibility
runtime to be initialized and posting real notifications to the system. But, we can verify that the
notification is still sent correctly under conditions that could lead to a crash.

Test: accessibility/mac/menu-selection-notification-crash.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::deferMenuListValueChange):
(WebCore::AXObjectCache::performDeferredCacheUpdate):

  • accessibility/AXObjectCache.h:
  • accessibility/AccessibilityMenuList.cpp:

(WebCore::AccessibilityMenuList::didUpdateActiveOption):

LayoutTests:

  • accessibility/mac/menu-selection-notification-crash-expected.txt: Added.
  • accessibility/mac/menu-selection-notification-crash.html: Added.
7:12 AM Changeset in webkit [277433] by Peng Liu
  • 5 edits in trunk/Source/WebKit

Subtitles in Safari fail to appear after switching language
https://bugs.webkit.org/show_bug.cgi?id=225738

Reviewed by Jer Noble.

TextTrackPrivateRemote::setMode() calls InbandTextTrackPrivate::setMode(), but
it does not set the value of TextTrackPrivateRemote::mode properly. Therefore,
TextTrackPrivateRemote::mode will always be Disabled. When we switch text track
in the WebContent process side, we will only send the IPC message TextTrackSetMode
to RemoteMediaPlayerProxy in the GPU process to change the mode from Disabled
to Showing, but cannot change its value back to Disabled. When a user keeps
switching text track, all text tracks in the GPU process will become Showing,
and MediaPlayerPrivateAVFoundation cannot deal with that. As a result,
the WebContent process won't get the correct subtitles from the GPU process.
cueFormat() has the similar issue, it does not impact the functionality though.

Actually, TextTrackPrivateRemote can simply use the implementations of its
base class InbandTextTrackPrivate regarding mode and cue format.

In addition, TextTrackPrivateRemote does not need to get the "mode" value from
RemoteTextTrackProxy in the GPU process. So this patch removes the mode attribute
of TextTrackPrivateRemoteConfiguration.

  • GPUProcess/media/RemoteTextTrackProxy.cpp:

(WebKit::RemoteTextTrackProxy::configuration):

  • GPUProcess/media/TextTrackPrivateRemoteConfiguration.h:

(WebKit::TextTrackPrivateRemoteConfiguration::encode const):
(WebKit::TextTrackPrivateRemoteConfiguration::decode):

  • WebProcess/GPU/media/TextTrackPrivateRemote.cpp:

(WebKit::TextTrackPrivateRemote::setMode):
(WebKit::TextTrackPrivateRemote::updateConfiguration):

  • WebProcess/GPU/media/TextTrackPrivateRemote.h:
6:54 AM Changeset in webkit [277432] by eocanha@igalia.com
  • 4 edits in trunk

[GStreamer] media/track/in-band/track-in-band-srt-mkv-kind.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=225697

Source/WebCore:

This is a tentative fix for the flaky crash (I can't reproduce it locally after 10000
repetitions). It makes sure that mediaPlayerPrivate and any parameter passed to
handleTextSample() can either survive or detected to be invalid when the lambda is ran in
the main thread.

Reviewed by Alicia Boya Garcia.

Covered by existing tests.

  • platform/graphics/gstreamer/TextSinkGStreamer.cpp:

(webkitTextSinkHandleSample): Protect mediaPlayerPrivate and streadId and check if the mediaPlayerPrivate WeakRef is still alive.

LayoutTests:

Reviewed by Alicia Boya Garcia.

  • platform/glib/TestExpectations: Unskipped test.
4:57 AM Changeset in webkit [277431] by dbezhetskov
  • 2 edits in trunk/Tools

Add dbezhetskov as a commiter
https://bugs.webkit.org/show_bug.cgi?id=225742

Reviewed by Caio Araujo Neponoceno de Lima.

  • Scripts/webkitpy/common/config/contributors.json:
4:10 AM Changeset in webkit [277430] by Martin Robinson
  • 17 edits
    18 adds in trunk/LayoutTests

Import new and updated css-scroll-snap WPT tests
https://bugs.webkit.org/show_bug.cgi?id=225653

Reviewed by Sergio Villar Senin.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • web-platform-tests/css/css-scroll-snap/input/keyboard-expected.txt:
  • web-platform-tests/css/css-scroll-snap/input/keyboard.html:
  • web-platform-tests/css/css-scroll-snap/nested-scrollIntoView-snaps-expected.txt:
  • web-platform-tests/css/css-scroll-snap/nested-scrollIntoView-snaps.html:
  • web-platform-tests/css/css-scroll-snap/scroll-margin-visibility-check-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-margin-visibility-check.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-padding-and-margin-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-padding-and-margin.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-root-001-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-root-001.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-root-002-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-root-002.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-root-003-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-root-003.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/direction-rtl.html:
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-writing-mode-000-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-writing-mode-000.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/w3c-import.log:
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html:
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html:
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html:
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/resnap-to-focused-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/w3c-import.log:
  • web-platform-tests/css/css-scroll-snap/snap-at-user-scroll-end-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-at-user-scroll-end.html: Added.
  • web-platform-tests/css/css-scroll-snap/support/common.js:

(async keyPress):

  • web-platform-tests/css/css-scroll-snap/w3c-import.log:

LayoutTests:

3:39 AM Changeset in webkit [277429] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

ResizeReversePaginatedWebView fails on some OS versions on some hardware
https://bugs.webkit.org/show_bug.cgi?id=224699
<rdar://76782199>

Reviewed by Megan Gardner.

  • TestWebKitAPI/Tests/WebKit/ResizeReversePaginatedWebView.cpp:

(TestWebKitAPI::didLayout):
This test does *not* care about the specific number of pages that are
generated; the key to the test is the scroll position check.

Since the page-count check in this test has caused lots of trouble
in the past (see the history) just remove it and replace it with a
check that we ended up paginated at all.

2:53 AM Changeset in webkit [277428] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

REGRESSION(r277262): test imported/w3c/web-platform-tests/css/selectors/focus-visible-002.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=225659

Reviewed by Adrian Perez de Castro.

Do not try to grab focus on WebView widget for synthesized mouse press and release events if the widget has
already the focus or is not the current toplevel focus widget.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseSynthesizeMouseEvent):

2:49 AM Changeset in webkit [277427] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebKit

Unreviewed, reverting r277258.
https://bugs.webkit.org/show_bug.cgi?id=225740

Caused layout test failures

Reverted changeset:

"[GTK] Use always async scrolling in accelerated compositing
mode"
https://bugs.webkit.org/show_bug.cgi?id=225512
https://trac.webkit.org/changeset/277258

1:00 AM Changeset in webkit [277426] by Carlos Garcia Campos
  • 5 edits in trunk/Source/WebKit

[GTK][WPE] Add ArgumentCoder for GTlsCertificate
https://bugs.webkit.org/show_bug.cgi?id=225509

Reviewed by Adrian Perez de Castro.

Move the GTlsCertificate serialization from CertificateInfo ArgumentCoder to its own.

  • Shared/glib/ArgumentCodersGLib.cpp:

(IPC::ArgumentCoder<GRefPtr<GVariant>>::encode):
(IPC::ArgumentCoder<GRefPtr<GVariant>>::decode):
(IPC::ArgumentCoder<GRefPtr<GTlsCertificate>>::encode):
(IPC::ArgumentCoder<GRefPtr<GTlsCertificate>>::decode):
(IPC::encode): Deleted.
(IPC::decode): Deleted.

  • Shared/glib/ArgumentCodersGLib.h:
  • Shared/glib/UserMessage.cpp:

(WebKit::UserMessage::encode const):
(WebKit::UserMessage::decode):

  • Shared/soup/WebCoreArgumentCodersSoup.cpp:

(IPC::ArgumentCoder<CertificateInfo>::encode):
(IPC::ArgumentCoder<CertificateInfo>::decode):

May 12, 2021:

11:45 PM Changeset in webkit [277425] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

RELEASE_ASSERT(m_selection->isNone()) fails in Document::removedLastRef
https://bugs.webkit.org/show_bug.cgi?id=225434

Patch by Frederic Wang <fwang@igalia.com> on 2021-05-12
Reviewed by Ryosuke Niwa.

Document::removedLastRef asserts that the document's selection is not set. However, setting
that selection is possible in FrameSelection::setSelectionWithoutUpdatingAppearance when the
document has not been destroyed yet but is already detached from its frame. This patch
instead clears the selection in that case.

No new tests.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::setSelectionWithoutUpdatingAppearance): Clears the selection when
newSelection is in a detached document. Given the other conditions, this is actually
checking equivalent to !m_document->frame().

10:37 PM Changeset in webkit [277424] by Peng Liu
  • 6 edits in trunk/Source/WebCore

[iPad] SourceBufferPrivateAVFObjC should not report an error to the web page when the video playback is interrupted
https://bugs.webkit.org/show_bug.cgi?id=225620

Reviewed by Jer Noble.

If SourceBufferPrivateAVFObjC reports an error to a web page when
AVSampleBufferDisplayLayer reports AVErrorOperationInterrupted (the playback
was interrupted), the web page will likely destroy the video player (and teardown
the video element). That behavior will lead to an empty picture-in-picture window
if the video was playing in picture-in-picture.

With this patch, SourceBufferPrivateAVFObjC will not report an error to the
web page in case of playback interruption. Instead, it takes a note that
the playback was interrupted, so that when we try to resume the playback later,
it will flush the AVSampleBufferDisplayLayer to recover the playback state.

In addition, we need to enqueue an IDR frame first before we enqueue more
samples after flushing the AVSampleBufferDisplayLayer. That is guaranteed
by SourceBufferPrivate::reenqueSamples().

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

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playInternal):

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

(WebCore::MediaSourcePrivateAVFObjC::flushActiveSourceBuffersIfNeeded):

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

(WebCore::SourceBufferPrivateAVFObjC::flushIfNeeded):
(WebCore::SourceBufferPrivateAVFObjC::layerDidReceiveError):
(WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples):

10:36 PM Changeset in webkit [277423] by Russell Epstein
  • 8 edits in branches/safari-612.1.12-branch/Source

Versioning.

WebKit-7612.1.12.7

10:05 PM Changeset in webkit [277422] by Russell Epstein
  • 1 copy in tags/Safari-612.1.12.6

Tag Safari-612.1.12.6.

10:03 PM Changeset in webkit [277421] by Simon Fraser
  • 1 edit in trunk/Tools/ChangeLog

Update the MotionMark 1.1 plan file

Unreviewed.

Update MotionMark 1.1 to use the version from r277406, which removes the
Focus subtest.

  • Scripts/webkitpy/benchmark_runner/data/plans/motionmark1.1.plan:
10:02 PM Changeset in webkit [277420] by Chris Dumez
  • 19 edits
    2 adds
    2 deletes in trunk

Notification.requestPermission() should return a Promise
https://bugs.webkit.org/show_bug.cgi?id=225712

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Drop manual test that should not have been imported from WPT. The test happened to be using Notification.requestPermission()
internally.

  • web-platform-tests/service-workers/service-worker/fetch-event-within-sw-manual.https-expected.txt: Removed.
  • web-platform-tests/service-workers/service-worker/fetch-event-within-sw-manual.https.html: Removed.

Source/WebCore:

Notification.requestPermission() should return a Promise as per the specification:

Both Firefox and Chrome already support this.

Test: http/tests/notifications/request-with-promise.html

  • Modules/notifications/Notification.cpp:

(WebCore::Notification::requestPermission):

  • Modules/notifications/Notification.h:
  • Modules/notifications/Notification.idl:
  • Modules/notifications/NotificationClient.h:

Source/WebKit:

Update code now that WebCore passes a CompletionHandler instead of a
NotificationPermissionCallback.

  • WebProcess/Notifications/NotificationPermissionRequestManager.cpp:

(WebKit::NotificationPermissionRequestManager::~NotificationPermissionRequestManager):
(WebKit::NotificationPermissionRequestManager::startRequest):

  • WebProcess/Notifications/NotificationPermissionRequestManager.h:
  • WebProcess/WebCoreSupport/WebNotificationClient.cpp:

(WebKit::WebNotificationClient::requestPermission):

  • WebProcess/WebCoreSupport/WebNotificationClient.h:

Source/WebKitLegacy/mac:

Update code now that WebCore passes a CompletionHandler instead of a
NotificationPermissionCallback.

  • WebCoreSupport/WebNotificationClient.h:
  • WebCoreSupport/WebNotificationClient.mm:

(WebNotificationClient::requestPermission):
(-[WebNotificationPolicyListener initWithCompletionHandler:]):
(-[WebNotificationPolicyListener allow]):
(-[WebNotificationPolicyListener deny]):

Source/WebKitLegacy/win:

Update code now that WebCore passes a CompletionHandler instead of a
NotificationPermissionCallback.

  • WebCoreSupport/WebDesktopNotificationsDelegate.cpp:

(WebDesktopNotificationsDelegate::requestPermission):

  • WebCoreSupport/WebDesktopNotificationsDelegate.h:

LayoutTests:

  • http/tests/notifications/notification-in-non-secure-context-expected.txt:

Rebaseline test now that we log an error message in the JS console when trying to call
Notification.requestPermission() in a non-secure context.

  • http/tests/notifications/request-with-promise-expected.txt: Added.
  • http/tests/notifications/request-with-promise.html: Added.

Add layout test coverage.

8:46 PM Changeset in webkit [277419] by Diego Pino Garcia
  • 2 edits
    3 adds in trunk/LayoutTests

[GLIB] http/tests/security/contentSecurityPolicy/report-only-from-header.py is a flaky text failure

Unreviewed test gardening.

Sometimes there's an extra console log error message. Dump all JS console output and emit new baseline.

  • platform/glib/TestExpectations:
  • platform/glib/http/tests/security/contentSecurityPolicy/report-only-from-header-expected.txt: Added.
7:59 PM Changeset in webkit [277418] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

Some webgl/2.0.0/conformance/textures/image_bitmap_from_image_data tests are failing after r277369 if !USE(ACCELERATE)
https://bugs.webkit.org/show_bug.cgi?id=225725

Reviewed by Sam Weinig.

  • platform/graphics/PixelBufferConversion.cpp:

(WebCore::convertImagePixels): Fixed the wrong condition of destination.alphaFormat.

7:35 PM Changeset in webkit [277417] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[WinCairo] Failed to open WebInspector UI since r277231
https://bugs.webkit.org/show_bug.cgi?id=225715

Reviewed by Don Olmstead.

Windows WebKit2 failed to open WebInspector UI after r277231
changed Filesystem::pathByAppendingComponent.
"inspector-resource:///Main.html" was wrongly mapped to
"C:
Main.html".

requestURL.fileSystemPath() returns "\Main.html". The preceding
"\" should be removed before concatenating it with the bundle path
by using FileSystem::pathByAppendingComponent.

  • UIProcess/Inspector/win/InspectorResourceURLSchemeHandler.cpp:

(WebKit::InspectorResourceURLSchemeHandler::platformStartTask): Removed the preceding "\".

6:13 PM Changeset in webkit [277416] by Brent Fulgham
  • 9 edits in trunk/Source/WebKit

[Cocoa] Permit sysctl-read operations needed by Metal and other system frameworks
https://bugs.webkit.org/show_bug.cgi?id=225720
<rdar://problem/77438105>

Reviewed by Per Arne Vollan.

Further testing of iOS and macOS have revealed a handful of sysctl-read operations we should allow to improve
performance and correctness of OpenGL/Metal and other high-performance math routines.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
5:36 PM Changeset in webkit [277415] by Kyle Piddington
  • 2 edits in trunk/Source/ThirdParty/ANGLE

[Angle METAL] Remove thread qualifiers and pass-by-reference qualifiers for cast functions
https://bugs.webkit.org/show_bug.cgi?id=225702
<rdar://76799461>

Cast functions fail to compile when casting from user uniforms. Update cast functions to remove pass-by-reference
qualifiers.

Reviewed by Dean Jackson.

  • src/compiler/translator/TranslatorMetalDirect/ProgramPrelude.cpp:
5:31 PM Changeset in webkit [277414] by Chris Dumez
  • 19 edits
    2 deletes in trunk/Source/WebKit

Simplify / Modernize Notification permission implementation
https://bugs.webkit.org/show_bug.cgi?id=225711

Reviewed by Alex Christensen.

Simplify / Modernize Notification permission implementation. The main change was
adopting sendWithAsyncReply() for the IPC instead of using 2 separate IPC messages
for the request and the decision. As a result, we don't have to deal with request
identifiers.

No new tests, no behavior change and covered by existing API tests.

  • Sources.txt:
  • UIProcess/API/APIUIClient.h:

(API::UIClient::decidePolicyForNotificationPermissionRequest):

  • UIProcess/API/C/WKNotificationPermissionRequest.cpp:

(WKNotificationPermissionRequestAllow):
(WKNotificationPermissionRequestDeny):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/glib/WebKitNotificationPermissionRequest.cpp:

(webkitNotificationPermissionRequestAllow):
(webkitNotificationPermissionRequestDeny):

  • UIProcess/API/glib/WebKitUIClient.cpp:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::UIClient::decidePolicyForNotificationPermissionRequest):

  • UIProcess/Notifications/NotificationPermissionRequest.h:

(WebKit::NotificationPermissionRequest::create):
(WebKit::NotificationPermissionRequest::~NotificationPermissionRequest):
(WebKit::NotificationPermissionRequest::didReceiveDecision):
(WebKit::NotificationPermissionRequest::NotificationPermissionRequest):

  • UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp: Removed.
  • UIProcess/Notifications/NotificationPermissionRequestManagerProxy.h: Removed.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::resetState):
(WebKit::WebPageProxy::requestNotificationPermission):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Notifications/NotificationPermissionRequestManager.cpp:

(WebKit::NotificationPermissionRequestManager::startRequest):

  • WebProcess/Notifications/NotificationPermissionRequestManager.h:
  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
5:21 PM Changeset in webkit [277413] by commit-queue@webkit.org
  • 9 edits in trunk/Source/WebKit

[WebXR] Implement XRDeviceProxy::submitFrame
https://bugs.webkit.org/show_bug.cgi?id=225718

Patch by Ada Chan <ada.chan@apple.com> on 2021-05-12
Reviewed by Sam Weinig.

  • Shared/Cocoa/XRDeviceProxy.h:
  • Shared/Cocoa/XRDeviceProxy.mm:

(WebKit::XRDeviceProxy::submitFrame):

  • UIProcess/Cocoa/PlatformXRCoordinator.h:

(WebKit::PlatformXRCoordinator::submitFrame):

  • UIProcess/Cocoa/PlatformXRSystem.h:
  • UIProcess/Cocoa/PlatformXRSystem.messages.in:
  • UIProcess/Cocoa/PlatformXRSystem.mm:

(WebKit::PlatformXRSystem::submitFrame):

  • WebProcess/cocoa/PlatformXRSystemProxy.h:
  • WebProcess/cocoa/PlatformXRSystemProxy.mm:

(WebKit::PlatformXRSystemProxy::submitFrame):

5:17 PM Changeset in webkit [277412] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[BigSur Wk1 Release] imported/w3c/web-platform-tests/css/css-will-change/will-change-fixpos-cb-transform-1.html is a flaky image failure
https://bugs.webkit.org/show_bug.cgi?id=225704

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
5:09 PM Changeset in webkit [277411] by Chris Dumez
  • 5 edits
    3 adds in trunk

ASSERTION FAILED: actualVTablePointer == expectedVTablePointer in toJSNewlyCreated(JSC::JSGlobalObject *, WebCore::JSDOMGlobalObject *, Ref<WebCore::AudioNode> &&)
https://bugs.webkit.org/show_bug.cgi?id=225719
<rdar://77828031>

Reviewed by Geoffrey Garen.

Source/WebCore:

AudioNode has (a lot of) subclasses that are exposed to JS (for which we call toJS() for).
As a result, AudioNode needs a custom toJS() implementation which returns the correct subclass
wrapper, instead of a generic JSAudioNode.

Test: webaudio/event-relatedTarget-audionode.html

  • Modules/webaudio/AudioNode.idl:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSAudioNodeCustom.cpp: Added.

(WebCore::toJSNewlyCreated):
(WebCore::toJS):

LayoutTests:

Add layout test coverage. This test was reliably crashing before the fix.

  • webaudio/event-relatedTarget-audionode-expected.txt: Added.
  • webaudio/event-relatedTarget-audionode.html: Added.
5:03 PM Changeset in webkit [277410] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur Release wk2 arm64 ] http/tests/appcache/fail-on-update-2.html (layout-test) is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225665

Unreviewed test gardening.

Updating expectations to (DumpJSConsoleLogInStdErr Slow ) to stop the constant text failures, and improve the flaky timeouts.

  • platform/mac-wk2/TestExpectations:
4:27 PM Changeset in webkit [277409] by mmaxfield@apple.com
  • 2 edits in trunk/Websites/browserbench.org

[MotionMark] Apply r277406 to Websites/browserbench.org/MotionMark1.2
https://bugs.webkit.org/show_bug.cgi?id=225722

Rubber-stamped by Geoffrey Garen.

Just copy over the change, so the website gets updated.

This doesn't bump the version number, which is okay, because we never actually
"released" version 1.2; we just made a folder on a website, and didn't update any
links to point to it.

  • MotionMark1.2/resources/runner/tests.js:
4:24 PM Changeset in webkit [277408] by Chris Gambrell
  • 2 edits
    7 adds
    5 deletes in trunk/LayoutTests

[LayoutTests] http/tests/misc/last-modified-parsing.html handles non-standard dates differently in PHP than Python
https://bugs.webkit.org/show_bug.cgi?id=224933
<rdar://problem/77020039>

Reviewed by Jonathan Bedard.

  • http/tests/misc/last-modified-parsing-expected.txt: Removed.
  • http/tests/misc/last-modified-parsing.html: Removed.
  • http/tests/misc/no-last-modified-expected.txt: Removed.
  • http/tests/misc/no-last-modified.html: Removed.
  • http/tests/resources/last-modified.php: Removed.
  • http/wpt/misc: Added.
  • http/wpt/misc/last-modified-parsing-expected.txt: Added.
  • http/wpt/misc/last-modified-parsing.html: Added.
  • http/wpt/misc/no-last-modified-expected.txt: Added.
  • http/wpt/misc/no-last-modified.html: Added.
  • http/wpt/misc/resources: Added.
  • http/wpt/misc/resources/last-modified-utilities.js: Added.

(async getLastModified):

  • platform/win/TestExpectations:
4:22 PM Changeset in webkit [277407] by mmaxfield@apple.com
  • 2 edits in trunk/Tools

[MotionMark] Update plan file after r277406
https://bugs.webkit.org/show_bug.cgi?id=225721

Rubber-stamped by Geoffrey Garen.

Just update the plan.

  • Scripts/webkitpy/benchmark_runner/data/plans/motionmark1.1.plan:
4:18 PM Changeset in webkit [277406] by mmaxfield@apple.com
  • 2 edits in trunk/PerformanceTests

[MotionMark] Temporarily remove the focus test
https://bugs.webkit.org/show_bug.cgi?id=225714

Reviewed by Geoffrey Garen.

The focus test is causing unacceptably high variance on test results. Initial investigation
indicates that this is related to secondary and tertiary interactions between the browser's
runloop and the compositor's runloop. Not only that, but the variable cost of the focus test
seems to affect the variance on the subtests which run after it.

This patch temporarily removes the focus test, just so we can get a stronger signal of
browsers' true performance, while we do a deeper analysis of the focus test.

Because the focus test's score is lower than the average score of the subtests, removing it
causes scores in all browsers to increase:

| WebKit | Chrome | Firefox

================================================
Score with Focus | 1020 | 550 | 962
Score without Focus | 1623 | 874 | 1101
Stddev with Focus | 9.3% | 2.3% | 2.9%
Stddev without Focus | 0.7% | 0.5% | 7.9%

  • MotionMark/resources/runner/tests.js:
4:16 PM Changeset in webkit [277405] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ Catalina+ wk2 ] http/tests/webAPIStatistics/screen-functions-accessed-data-collection.html (layout-test) is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225667

Unreviewed test gardening.

Updating expectation to Slow to see if test conditions improve.

  • platform/mac/TestExpectations:
4:16 PM Changeset in webkit [277404] by Russell Epstein
  • 1 copy in tags/Safari-611.3.2.1.1

Tag Safari-611.3.2.1.1.

4:01 PM Changeset in webkit [277403] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur ] webaudio/AudioContext/audiocontext-close-basic.html (layout-test) is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225670

Unreviewed test gardening.

Updating expectations to slow to see if test will pass.

  • platform/mac/TestExpectations:
4:01 PM Changeset in webkit [277402] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-611.3.2.1-branch

Cherry-pick r277373. rdar://problem/77916543

Source/WebCore:
REGRESSION: Release assert in SlotAssignment::assignedNodesForSlot via ComposedTreeIterator::traverseNextInShadowTree
in Element::insertedIntoAncestor
https://bugs.webkit.org/show_bug.cgi?id=225684

Reviewed by Darin Adler.

The release assertion failure was caused by RenderTreeUpdater::tearDownRenderers end up traversing the parts of the DOM
for which Element::insertedIntoAncestor had not been called yet. Since HTMLSlotElement::insertedIntoAncestor is where
SlotAssignment::Slot is updated for a newly inserted slot, SlotAssignment::Slot may not contain this slot element.

Fixed the bug by returning early in SlotAssignment::assignedNodesForSlot when this condition holds, which is when
the shadow root is connected to a document but HTMLSlotElement isn't since its connected flag has not been updated yet.

Test: fast/shadow-dom/insert-host-child-with-slot-renderer-teardown-crash.html

  • dom/SlotAssignment.cpp: (WebCore::SlotAssignment::assignedNodesForSlot):

LayoutTests:
REGRESSION: Release assert in SlotAssignment::assignedNodesForSlot via ComposedTreeIterator::traverseNextInShadowTree in Element::insertedIntoAncestor
https://bugs.webkit.org/show_bug.cgi?id=225684

Reviewed by Darin Adler.

Added a regression test.

  • fast/shadow-dom/insert-host-child-with-slot-renderer-teardown-crash-expected.txt: Added.
  • fast/shadow-dom/insert-host-child-with-slot-renderer-teardown-crash.html: Added.

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

3:59 PM Changeset in webkit [277401] by Russell Epstein
  • 8 edits in branches/safari-611.3.2.1-branch/Source

Versioning.

WebKit-7611.3.2.1.1

3:59 PM Changeset in webkit [277400] by Brent Fulgham
  • 9 edits in trunk/Source/WebKit

[Cocoa] Silence uninteresting sandbox reports
https://bugs.webkit.org/show_bug.cgi?id=225713
<rdar://problem/77483132>

Reviewed by Per Arne Vollan.

Telemetry from the recently released iOS and macOS updates show a set of uninteresting sandbox violations. Most of
these are harmless, but all of them involve some runtime cost and may prevent code from making the best use of
available hardware and should be permitted.

These changes also bring the various sandboxes into better alignment, as many of these items had previously been
added to one of the other sandboxes.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
3:56 PM Changeset in webkit [277399] by Russell Epstein
  • 1 copy in tags/Safari-611.3.3

Tag Safari-611.3.3.

3:53 PM Changeset in webkit [277398] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur wk2 arm64 ] editing/selection/move-by-character-brute-force.html (layout-test) is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225664

Unreviewed test gardening.

Updating test expectations to slow.

  • platform/mac-wk2/TestExpectations:
3:46 PM Changeset in webkit [277397] by Russell Epstein
  • 1 copy in branches/safari-611.3.2.1-branch

New branch.

3:40 PM Changeset in webkit [277396] by Russell Epstein
  • 1 copy in tags/Safari-612.1.14

Tag Safari-612.1.14.

3:07 PM Changeset in webkit [277395] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[build.webkit.org] Bots should automatically recover from svn checkout is already locked issue
https://bugs.webkit.org/show_bug.cgi?id=225717

Reviewed by Jonathan Bedard.

  • CISupport/build-webkit-org/steps.py:

(CheckOutSource): Set haltOnFailure to False so that cleanup step can run. Also set the step name while we are at it.
(CheckOutSource.init): Also set logEnviron to False.
(CheckOutSource.getResultSummary): Run SVNCleanup step in case of failure.
(SVNCleanup):
(SVNCleanup.init):
(SVNCleanup.evaluateCommand):

  • CISupport/build-webkit-org/steps_unittest.py: Added unit-tests for the new step.
3:02 PM Changeset in webkit [277394] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ Catalina+ wk2 ] imported/w3c/web-platform-tests/css/css-transitions/transition-base-response-002.html (layout-test) is a flaky text failure
https://bugs.webkit.org/show_bug.cgi?id=225669

Unreviewed test gardening.

Updating expectations to Pass Failure for macOS Release and Debug.

  • platform/mac-wk2/TestExpectations:
2:57 PM Changeset in webkit [277393] by Chris Dumez
  • 2 edits in trunk/Tools

Unreviewed follow-up to r277376.

Enable the API tests only if ENABLE(NOTIFICATIONS). It is important since
notifications are enabled on macOS but not iOS currently.

  • TestWebKitAPI/Tests/WebKitCocoa/NotificationAPI.mm:
2:56 PM Changeset in webkit [277392] by sihui_liu@apple.com
  • 4 edits in trunk/Tools

[ BigSur Release ] TestWebKitAPI.IndexedDB.KillWebProcessWithOpenConnection is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=225372
<rdar://problem/77532291>

Reviewed by Chris Dumez.

Ensure IDB data is cleared before test and make error logging more detailed.

  • TestWebKitAPI/Tests/WebKitCocoa/KillWebProcessWithOpenConnection-1.html:
  • TestWebKitAPI/Tests/WebKitCocoa/KillWebProcessWithOpenConnection-2.html:
  • TestWebKitAPI/Tests/WebKitCocoa/WebProcessKillIDBCleanup.mm: Listen to version change event because it

indicates that server starts handling second open request in KillWebProcessWithOpenConnection-2.html.
(-[IndexedDBWebProcessKillMessageHandler userContentController:didReceiveScriptMessage:]):
(getNextMessage):
(TEST):

2:43 PM Changeset in webkit [277391] by commit-queue@webkit.org
  • 9 edits in trunk

Wrong position for orthogonal positioned element with writing-mode: vertical-rl
https://bugs.webkit.org/show_bug.cgi?id=180633

Patch by Ziran Sun <Ziran Sun> on 2021-05-12
Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

Re-sync the following 3 tests with WPT. grid-self-alignment-non-static-positioned-items-009.html and
grid-self-alignment-non-static-positioned-items-010.html are now passing.
grid-self-alignment-non-static-positioned-items-011.html is now producing the same test results as those
in Chromium.

  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009.html:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010.html:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011.html:

Source/WebCore:

When calculating offset position for orthogonal positioned element with writing mode vertical-rl,
we also need to take into account of borders and paddings. This change corrects computations
for both topOffset and leftOffset.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computePositionedLogicalWidthUsing const):
(WebCore::RenderBox::computePositionedLogicalHeightUsing const):

2:19 PM Changeset in webkit [277390] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

TapStorage::lock freed while locked in AudioSourceProviderAVFObjC::destroyMixIfNeeded()
https://bugs.webkit.org/show_bug.cgi?id=225706
<rdar://77719381>

Reviewed by Ryosuke Niwa.

In r275933, an update was made to protect access to TapStorage during destruction by
locking its lock inside destroyMixIfNeeded(), but if TapStorage has a refCount==1
during that teardown, the lock itself is destroyed while it is still held. Add an
explicit scoping to the lock holder, and only deref the TapStorage outside that
locking scope.

  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:

(WebCore::AudioSourceProviderAVFObjC::destroyMixIfNeeded):

2:08 PM Changeset in webkit [277389] by Wenson Hsieh
  • 6 edits in trunk/Source/WebKit

Plumb some more metadata to QuickLook when revealing images
https://bugs.webkit.org/show_bug.cgi?id=225709
rdar://77864866

Reviewed by Devin Rousso.

Add plumbing to supply QuickLook with some additional information about the image URL and current page URL when
revealing images.

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::handleContextMenuRevealImage):

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

(-[WKActionSheetAssistant handleElementActionWithType:element:needsInteraction:]):

  • UIProcess/mac/WKImageExtractionPreviewController.h:
  • UIProcess/mac/WKImageExtractionPreviewController.mm:

(-[WKImageExtractionPreviewItem initWithFileURL:title:imageURL:pageURL:]):
(-[WKImageExtractionPreviewItem dealloc]):
(-[WKImageExtractionPreviewItem previewItemURL]):
(-[WKImageExtractionPreviewItem previewOptions]):
(-[WKImageExtractionPreviewController initWithPage:fileURL:title:imageURL:]):

Rename the URL argument to fileURL, to avoid confusion with the new imageURL that's passed in. Note that
this is temporary, since we'll adopt new QuickLook SPI on macOS once the fix for rdar://74299451 is available.

(-[WKImageExtractionPreviewItem initWithURL:title:]): Deleted.
(-[WKImageExtractionPreviewController initWithPage:url:title:]): Deleted.

2:06 PM Changeset in webkit [277388] by ggaren@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

ConservativeRoots triggers page demand on Speedometer
https://bugs.webkit.org/show_bug.cgi?id=225676

Reviewed by Filip Pizlo.

Use a 2048 item / 16kB inline buffer. That's about 10% bigger than the
max capacity observed on Speedometer, and small enough to reasonably fit
on the stack.

Removed the separate out of line capacity because it was smaller than
the new inline capacity.

  • heap/ConservativeRoots.cpp:

(JSC::ConservativeRoots::grow):

  • heap/ConservativeRoots.h:
1:40 PM Changeset in webkit [277387] by Jonathan Bedard
  • 2 edits in trunk/Tools

[TestWebKitAPI] Explicitly exit after completing tests
https://bugs.webkit.org/show_bug.cgi?id=225703
<rdar://problem/77673980>

Reviewed by Alexey Proskuryakov.

  • TestWebKitAPI/ios/mainIOS.mm:

(main): Explicitly exit the testing process.

1:40 PM Changeset in webkit [277386] by Aditya Keerthi
  • 2 edits in trunk/Source/WebKit

REGRESSION (r275297): Unexpected autofocus when switching tabs
https://bugs.webkit.org/show_bug.cgi?id=225710
<rdar://problem/77542939>

Reviewed by Wenson Hsieh.

r275297 introduced logic to handle a focus environment change by
advancing to the next or previous focusable element, depending on the
focus context's heading direction. This logic enables a tab or a
shift+tab to change the focus from browser chrome directly to an
element on a web page.

However, the focus environment can change through mechanisms other than
tab / shift+tab. One example of this is when a user switches tabs. In
these cases, the UIFocusHeading supplied by the focus context is
UIFocusHeadingNone. Nevertheless, we unconditionally call
-[WKContentView _becomeFirstResponderWithSelectionMovingForward:completionHandler:]
when the focus context changes. Consequently, an element on the web page
is always focused when the WKContentView gains focus.

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView didUpdateFocusInContext:withAnimationCoordinator:]):

To fix, ensure we only focus an element on the page if the focus heading
is UIFocusHeadingNext or UIFocusHeadingPrevious. UIFocusHeadingNext will
focus the first focusable element, while UIFocusHeadingPrevious will focus
the last focusable element.

Note that a call to -[WKContentView becomeFirstResponder] is not made
if the focus heading is UIFocusHeadingNone. From my testing, I observed
that the view already was the first responder in that case.

1:13 PM Changeset in webkit [277385] by Said Abou-Hallawa
  • 3 edits
    2 adds in trunk

Removing the transform CSS property from the SVG element does not cause invalidation
https://bugs.webkit.org/show_bug.cgi?id=225366

Reviewed by Simon Fraser.

Source/WebCore:

If the new or the old RenderStyle includes a transform, the renderer of
the SVG element needs to be repainted.

Test: svg/css/svg-css-transform-dynamic-remove.html

  • rendering/svg/RenderSVGModelObject.cpp:

(WebCore::RenderSVGModelObject::styleDidChange):

LayoutTests:

  • svg/css/svg-css-transform-dynamic-remove-expected.html: Added.
  • svg/css/svg-css-transform-dynamic-remove.html: Added.
1:11 PM Changeset in webkit [277384] by weinig@apple.com
  • 2 edits in trunk/Source/WebCore

Remove inline annoatations for static functions in PixelBufferConversion
https://bugs.webkit.org/show_bug.cgi?id=225708

Reviewed by Darin Adler.

Remove inline annoatations for static functions in PixelBufferConversion
as suggested by Darin. The theory here is that outside of a header, the
use of 'inline' serves no purpose as the compiler is perfectly allowed
and capable of inlining these functions.

  • platform/graphics/PixelBufferConversion.cpp:

(WebCore::makeVImageBuffer):
(WebCore::convertImagePixelsAccelerated):
(WebCore::convertSinglePixelPremultipliedToPremultiplied):
(WebCore::convertSinglePixelPremultipliedToUnpremultiplied):
(WebCore::convertSinglePixelUnpremultipliedToPremultiplied):
(WebCore::convertSinglePixelUnpremultipliedToUnpremultiplied):
(WebCore::convertFunctor):

12:11 PM Changeset in webkit [277383] by mark.lam@apple.com
  • 21 edits
    2 adds in trunk/Source

Implement some common Baseline JIT slow paths using JIT thunks.
https://bugs.webkit.org/show_bug.cgi?id=225682

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This patch implements the following changes:

  1. Implement exception handling thunks:
    1. handleExceptionGenerator, which calls operationLookupExceptionHandler().
    2. handleExceptionWithCallFrameRollbackGenerator, which calls operationLookupExceptionHandlerFromCallerFrame().

All the JIT tiers were emitting their own copy of these routines to call these
operation, one per CodeBlock. We now emit 2 thunks for these and have all the
tiers just jump to them.

PolymorphicAccess also now uses the handleExceptionGenerator thunk.

DFG::JITCompiler::compileExceptionHandlers() has one small behavior difference
before it calls operationLookupExceptionHandlerFromCallerFrame(): it first
re-sets the top of stack for the function where we are about to throw a
StackOverflowError from. This re-setting of top of stack is useless because
we're imminently unwinding out of at least this frame for the StackOverflowError.
Hence, it is ok to use the handleExceptionWithCallFrameRollbackGenerator thunk
here as well. Note that no other tiers does this re-setting of top of stack.

FTLLowerDFGToB3 has one case using operationLookupExceptionHandlerFromCallerFrame()
which cannot be refactored to use these thunks because it does additional
work to throw a StackOverflowError. A different thunk will be needed. I left
it alone for now.

  1. Introduce JITThunks::existingCTIStub(ThunkGenerator, NoLockingNecessaryTag) so that a thunk can get a pointer to another thunk without locking the JITThunks lock. Otherwise, deadlock ensues.
  1. Change SlowPathCall to emit and use thunks instead of emitting a blob of code to call a slow path function for every bytecode in a CodeBlock.
  1. Introduce JITThunks::ctiSlowPathFunctionStub() to manage these SlowPathFunction thunks.
  1. Introduce JITThunks::preinitializeAggressiveCTIThunks() to initialize these thunks at VM initialization time. Pre-initializing them has multiple benefits:
    1. the thunks are not scattered through out JIT memory, thereby reducing fragmentation.
    2. we don't spend time at runtime compiling them when the user is interacting with the VM. Conceptually, these thunks can be VM independent and can be shared by VMs process-wide. However, it will require some additional work. For now, the thunks remain bound to a specific VM instance.

These changes are only enabled when ENABLE(EXTRA_CTI_THUNKS), which is currently
only available for ARM64 and non-Windows x86_64.

This patch has passed JSC tests on AS Mac.

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

Base New Diff

BaselineJIT: 89089964 (84.962811 MB) 84624776 (80.704475 MB) 0.95x (reduction)

DFG: 39117360 (37.305222 MB) 36415264 (34.728302 MB) 0.93x (reduction)

Thunk: 23230968 (22.154778 MB) 23130336 (22.058807 MB) 1.00x

InlineCache: 22027416 (21.006981 MB) 21969728 (20.951965 MB) 1.00x

FTL: 6575772 (6.271145 MB) 6097336 (5.814873 MB) 0.93x (reduction)

Wasm: 2302724 (2.196049 MB) 2301956 (2.195316 MB) 1.00x

YarrJIT: 1538956 (1.467663 MB) 1522488 (1.451958 MB) 0.99x

CSSJIT: 0 0

Uncategorized: 0 0

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bytecode/CodeBlock.h:

(JSC::CodeBlock::offsetOfInstructionsRawPointer):

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessGenerationState::emitExplicitExceptionHandler):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::compileExceptionHandlers):
(JSC::DFG::JITCompiler::link):

  • dfg/DFGJITCompiler.h:
  • ftl/FTLCompile.cpp:

(JSC::FTL::compile):

  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • jit/JIT.cpp:

(JSC::JIT::link):
(JSC::JIT::privateCompileExceptionHandlers):

  • jit/JIT.h:
  • jit/JITThunks.cpp:

(JSC::JITThunks::existingCTIStub):
(JSC::JITThunks::ctiSlowPathFunctionStub):
(JSC::JITThunks::preinitializeExtraCTIThunks):

  • jit/JITThunks.h:
  • jit/SlowPathCall.cpp: Added.

(JSC::JITSlowPathCall::call):
(JSC::JITSlowPathCall::generateThunk):

  • jit/SlowPathCall.h:
  • jit/ThunkGenerators.cpp:

(JSC::handleExceptionGenerator):
(JSC::handleExceptionWithCallFrameRollbackGenerator):
(JSC::popThunkStackPreservesAndHandleExceptionGenerator):

  • jit/ThunkGenerators.h:
  • runtime/CommonSlowPaths.h:
  • runtime/SlowPathFunction.h: Added.
  • runtime/VM.cpp:

(JSC::VM::VM):

Source/WTF:

Introduce ENABLE(EXTRA_CTI_THUNKS) flag to guard the use of these new thunks.
Currently, the thunks are 64-bit only, and only supported for ARM64 and non-Windows
X86_64. The reason it is not supported for Windows as well is because Windows
only has 4 argument registers. In this patch, the thunks do not use that many
registers yet, but there will be more thunks coming that will require the use
of up to 6 argument registers.

  • wtf/PlatformEnable.h:
11:40 AM Changeset in webkit [277382] by achristensen@apple.com
  • 42 edits in trunk/Source/WebCore

Use HashSet<RefPtr<Node>> instead of HashSet<Node*>
https://bugs.webkit.org/show_bug.cgi?id=220464

Reviewed by Chris Dumez and Ryosuke Niwa.

This makes us more resistent to lifetime bugs.

liveNodeSet() and ignoreSet() need to be WeakHashSet, and they are only used in debug builds so that's fine.

MutationObserver::observedNodes() is not called on the main thread, but it's called during garbage collection.
I replaced it with MutationObserver::isReachableFromOpaqueRoots which eliminates the HashSet allocation and hashing,
and it can return true early if it finds a contained opaque root, resulting in less work in several ways.
This should only increase our performance slightly while getting the same behavior.

  • accessibility/AXObjectCache.cpp:

(WebCore::conditionallyAddNodeToFilterList):
(WebCore::filterVectorPairForRemoval):
(WebCore::filterMapForRemoval):
(WebCore::filterListForRemoval):
(WebCore::AXObjectCache::prepareForDocumentDestruction):

  • bindings/js/JSMutationObserverCustom.cpp:

(WebCore::JSMutationObserverOwner::isReachableFromOpaqueRoots):

  • dom/MutationObserver.cpp:

(WebCore::MutationObserver::isReachableFromOpaqueRoots const):
(WebCore:: const): Deleted.

  • dom/MutationObserver.h:
  • dom/MutationObserverRegistration.cpp:

(WebCore::MutationObserverRegistration::isReachableFromOpaqueRoots const):
(WebCore::MutationObserverRegistration::addRegistrationNodesToSet const): Deleted.

  • dom/MutationObserverRegistration.h:
  • dom/Node.cpp:

(WebCore::liveNodeSet):
(WebCore::stringForRareDataUseType):
(WebCore::Node::dumpStatistics):
(WebCore::ignoreSet):
(WebCore::Node::trackForDebugging):
(WebCore::Node::~Node):

  • editing/AppendNodeCommand.cpp:

(WebCore::AppendNodeCommand::getNodesInCommand):

  • editing/AppendNodeCommand.h:
  • editing/CompositeEditCommand.cpp:

(WebCore::EditCommandComposition::getNodesInCommand):

  • editing/CompositeEditCommand.h:
  • editing/DeleteFromTextNodeCommand.cpp:

(WebCore::DeleteFromTextNodeCommand::getNodesInCommand):

  • editing/DeleteFromTextNodeCommand.h:
  • editing/EditCommand.cpp:

(WebCore::SimpleEditCommand::addNodeAndDescendants):

  • editing/EditCommand.h:
  • editing/InsertIntoTextNodeCommand.cpp:

(WebCore::InsertIntoTextNodeCommand::getNodesInCommand):

  • editing/InsertIntoTextNodeCommand.h:
  • editing/InsertNodeBeforeCommand.cpp:

(WebCore::InsertNodeBeforeCommand::getNodesInCommand):

  • editing/InsertNodeBeforeCommand.h:
  • editing/MergeIdenticalElementsCommand.cpp:

(WebCore::MergeIdenticalElementsCommand::getNodesInCommand):

  • editing/MergeIdenticalElementsCommand.h:
  • editing/RemoveNodeCommand.cpp:

(WebCore::RemoveNodeCommand::getNodesInCommand):

  • editing/RemoveNodeCommand.h:
  • editing/ReplaceNodeWithSpanCommand.cpp:

(WebCore::ReplaceNodeWithSpanCommand::getNodesInCommand):

  • editing/ReplaceNodeWithSpanCommand.h:
  • editing/SetNodeAttributeCommand.cpp:

(WebCore::SetNodeAttributeCommand::getNodesInCommand):

  • editing/SetNodeAttributeCommand.h:
  • editing/SetSelectionCommand.h:
  • editing/SpellingCorrectionCommand.cpp:
  • editing/SplitElementCommand.cpp:

(WebCore::SplitElementCommand::getNodesInCommand):

  • editing/SplitElementCommand.h:
  • editing/SplitTextNodeCommand.cpp:

(WebCore::SplitTextNodeCommand::getNodesInCommand):

  • editing/SplitTextNodeCommand.h:
  • editing/WrapContentsInDummySpanCommand.cpp:

(WebCore::WrapContentsInDummySpanCommand::getNodesInCommand):

  • editing/WrapContentsInDummySpanCommand.h:
  • editing/cocoa/HTMLConverter.mm:

(HTMLConverterCaches::cacheAncestorsOfStartToBeConverted):

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::highlightSelector):

  • xml/XPathFunctions.cpp:

(WebCore::XPath::FunId::evaluate const):

  • xml/XPathNodeSet.cpp:

(WebCore::XPath::sortBlock):
(WebCore::XPath::NodeSet::traversalSort const):

  • xml/XPathPath.cpp:

(WebCore::XPath::LocationPath::evaluate const):

  • xml/XPathPredicate.cpp:

(WebCore::XPath::Union::evaluate const):

11:34 AM Changeset in webkit [277381] by commit-queue@webkit.org
  • 5 edits in trunk/Source/JavaScriptCore

Unreviewed, reverting r277346.
https://bugs.webkit.org/show_bug.cgi?id=225705

Introduced a (rare) deadlock

Reverted changeset:

"ConservativeRoots triggers page demand on Speedometer"
https://bugs.webkit.org/show_bug.cgi?id=225676
https://trac.webkit.org/changeset/277346

11:28 AM Changeset in webkit [277380] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed follow-up to r277376.

Fix bad early return in NotificationPermissionRequestManager::didReceiveNotificationPermissionDecision().

  • WebProcess/Notifications/NotificationPermissionRequestManager.cpp:

(WebKit::NotificationPermissionRequestManager::didReceiveNotificationPermissionDecision):

11:00 AM Changeset in webkit [277379] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

HTMLMediaElement::mediaLoadingFailedFatally() does direct dispatch of events; should enqueue
https://bugs.webkit.org/show_bug.cgi?id=225700
<rdar://75576322>

Reviewed by Eric Carlson.

In r274559, an update was made to mediaLoadingFailedFatally to adopt recent spec changes, and as
part of that change, an "error" event was changed from being enqueued to being directly dispatched.
However, directly dispatching events exposes the element to JS and has the potential to cause the
element to be garbage collected, deleting the object and potentially other objects in the backtrace.
Events should always be enqueued, rather than directy dispatched, for this reason.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaLoadingFailedFatally):

10:58 AM Changeset in webkit [277378] by svillar@igalia.com
  • 3 edits
    2 adds in trunk

ASSERTION FAILED: m_clients.contains(&client) in CSSFontFace::removeClient via CSSSegmentedFontFace::~CSSSegmentedFontFace()
https://bugs.webkit.org/show_bug.cgi?id=223790

Reviewed by Ryosuke Niwa.

Source/WebCore:

CSSFontFace does not support adding the same client twice as it uses a HashSet to track them. This means that
it's a mistake to call removeClient() more than once. This could happen when specifying the same font
family more than once in a <font-face> element inside a svg container.

Test: fast/css/svg-font-face-duplicate-crash.html

  • css/CSSFontFaceSet.cpp:

(WebCore::CSSFontFaceSet::fontFace): Skip duplicate CSSFontFace's when before calling appendFontFace().

LayoutTests:

  • fast/css/svg-font-face-duplicate-crash-expected.txt: Added.
  • fast/css/svg-font-face-duplicate-crash.html: Added.
10:54 AM Changeset in webkit [277377] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-611-branch

Cherry-pick r277373. rdar://problem/77916543

Source/WebCore:
REGRESSION: Release assert in SlotAssignment::assignedNodesForSlot via ComposedTreeIterator::traverseNextInShadowTree
in Element::insertedIntoAncestor
https://bugs.webkit.org/show_bug.cgi?id=225684

Reviewed by Darin Adler.

The release assertion failure was caused by RenderTreeUpdater::tearDownRenderers end up traversing the parts of the DOM
for which Element::insertedIntoAncestor had not been called yet. Since HTMLSlotElement::insertedIntoAncestor is where
SlotAssignment::Slot is updated for a newly inserted slot, SlotAssignment::Slot may not contain this slot element.

Fixed the bug by returning early in SlotAssignment::assignedNodesForSlot when this condition holds, which is when
the shadow root is connected to a document but HTMLSlotElement isn't since its connected flag has not been updated yet.

Test: fast/shadow-dom/insert-host-child-with-slot-renderer-teardown-crash.html

  • dom/SlotAssignment.cpp: (WebCore::SlotAssignment::assignedNodesForSlot):

LayoutTests:
REGRESSION: Release assert in SlotAssignment::assignedNodesForSlot via ComposedTreeIterator::traverseNextInShadowTree in Element::insertedIntoAncestor
https://bugs.webkit.org/show_bug.cgi?id=225684

Reviewed by Darin Adler.

Added a regression test.

  • fast/shadow-dom/insert-host-child-with-slot-renderer-teardown-crash-expected.txt: Added.
  • fast/shadow-dom/insert-host-child-with-slot-renderer-teardown-crash.html: Added.

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

10:52 AM Changeset in webkit [277376] by Chris Dumez
  • 17 edits
    1 add in trunk

Queue notification permission requests for the same origin on WebKit side
https://bugs.webkit.org/show_bug.cgi?id=225701
<rdar://76804977>

Reviewed by Geoffrey Garen.

Source/WebCore:

Remove some dead code.

  • Modules/notifications/NotificationClient.h:

Source/WebKit:

If there are parallel notification permission requests for the same origin, we now queue them on WebKit
side and only ask the client once for the origin. Once we've received the permission from the client,
we respond to all JS requests at this point.

This patch also removes some dead code to facilitate refactoring the code to support this.
In a follow-up I am planning to use sendWithAsyncReply() and refactor this code further.

  • WebProcess/Notifications/NotificationPermissionRequestManager.cpp:

(WebKit::NotificationPermissionRequestManager::startRequest):
(WebKit::NotificationPermissionRequestManager::permissionLevel):
(WebKit::NotificationPermissionRequestManager::didReceiveNotificationPermissionDecision):

  • WebProcess/Notifications/NotificationPermissionRequestManager.h:
  • WebProcess/Notifications/WebNotificationManager.cpp:

(WebKit::WebNotificationManager::policyForOrigin const):

  • WebProcess/Notifications/WebNotificationManager.h:
  • WebProcess/WebCoreSupport/WebNotificationClient.cpp:

(WebKit::WebNotificationClient::requestPermission):
(WebKit::WebNotificationClient::checkPermission):

  • WebProcess/WebCoreSupport/WebNotificationClient.h:

Source/WebKitLegacy/mac:

Remove some dead code.

  • WebCoreSupport/WebNotificationClient.h:
  • WebCoreSupport/WebNotificationClient.mm:

Source/WebKitLegacy/win:

Remove some dead code.

  • WebCoreSupport/WebDesktopNotificationsDelegate.cpp:
  • WebCoreSupport/WebDesktopNotificationsDelegate.h:

Tools:

Add API test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/NotificationAPI.mm: Added.

(-[NotificationPermissionMessageHandler userContentController:didReceiveScriptMessage:]):
(-[NotificationPermissionUIDelegate initWithHandler:]):
(-[NotificationPermissionUIDelegate _webView:requestNotificationPermissionForSecurityOrigin:decisionHandler:]):
(TestWebKitAPI::runRequestPermissionTest):
(TestWebKitAPI::TEST):
(TestWebKitAPI::runParallelPermissionRequestsTest):

10:46 AM Changeset in webkit [277375] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Crash in WebPageProxy::endColorPicker()
https://bugs.webkit.org/show_bug.cgi?id=225679

Patch by Julian Gonzalez <julian_a_gonzalez@apple.com> on 2021-05-12
Reviewed by Ryosuke Niwa.

Make sure that endColorPicker() and didEndColorPicker()
do not both attempt to null-out m_colorPicker.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::endColorPicker):
(WebKit::WebPageProxy::didEndColorPicker):

10:44 AM Changeset in webkit [277374] by Russell Epstein
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.3.3

10:13 AM Changeset in webkit [277373] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

Source/WebCore:
REGRESSION: Release assert in SlotAssignment::assignedNodesForSlot via ComposedTreeIterator::traverseNextInShadowTree
in Element::insertedIntoAncestor
https://bugs.webkit.org/show_bug.cgi?id=225684

Reviewed by Darin Adler.

The release assertion failure was caused by RenderTreeUpdater::tearDownRenderers end up traversing the parts of the DOM
for which Element::insertedIntoAncestor had not been called yet. Since HTMLSlotElement::insertedIntoAncestor is where
SlotAssignment::Slot is updated for a newly inserted slot, SlotAssignment::Slot may not contain this slot element.

Fixed the bug by returning early in SlotAssignment::assignedNodesForSlot when this condition holds, which is when
the shadow root is connected to a document but HTMLSlotElement isn't since its connected flag has not been updated yet.

Test: fast/shadow-dom/insert-host-child-with-slot-renderer-teardown-crash.html

  • dom/SlotAssignment.cpp:

(WebCore::SlotAssignment::assignedNodesForSlot):

LayoutTests:
REGRESSION: Release assert in SlotAssignment::assignedNodesForSlot via ComposedTreeIterator::traverseNextInShadowTree in Element::insertedIntoAncestor
https://bugs.webkit.org/show_bug.cgi?id=225684

Reviewed by Darin Adler.

Added a regression test.

  • fast/shadow-dom/insert-host-child-with-slot-renderer-teardown-crash-expected.txt: Added.
  • fast/shadow-dom/insert-host-child-with-slot-renderer-teardown-crash.html: Added.
9:59 AM Changeset in webkit [277372] by Peng Liu
  • 6 edits in trunk/Source

Implement TextTrackPrivateRemote::inBandMetadataTrackDispatchType()
https://bugs.webkit.org/show_bug.cgi?id=225674

Reviewed by Eric Carlson.

Source/WebCore:

Remove an unused function in InbandTextTrackPrivate.

  • platform/graphics/InbandTextTrackPrivate.h:

(WebCore::InbandTextTrackPrivate::textTrackIndex const): Deleted.

Source/WebKit:

This patch ensures that InbandTextTrack::inBandMetadataTrackDispatchType()
behaviors the same no matter "Media in GPU Process" is enabled or not.

  • GPUProcess/media/RemoteTextTrackProxy.cpp:

(WebKit::RemoteTextTrackProxy::configuration):

  • WebProcess/GPU/media/TextTrackPrivateRemote.cpp:

(WebKit::TextTrackPrivateRemote::updateConfiguration):

  • WebProcess/GPU/media/TextTrackPrivateRemote.h:
8:59 AM Changeset in webkit [277371] by svillar@igalia.com
  • 7 edits in trunk

[css-flexbox] Do not use margins when computing aspect ratio cross sizes
https://bugs.webkit.org/show_bug.cgi?id=221210
LayoutTests/imported/w3c:

<rdar://problem/74097534>

Reviewed by Javier Fernandez.

  • web-platform-tests/css/css-flexbox/flex-aspect-ratio-img-row-013-expected.txt: Replaced FAIL by PASS expectations + new expectations.
  • web-platform-tests/css/css-flexbox/flex-aspect-ratio-img-row-013.html: Imported

latest changes from upstream WPT.

Source/WebCore:

Reviewed by Javier Fernandez.

In r270578 we implemented section 9.8.1 of the flexbox specs which allowed us to compute child's
indefinite cross sizes as definite when the flexbox container had a definite cross size and a couple
of other conditions. However we did not take into account that the child might have some margins in
in the cross direction. Aspect ratio computations must use the content box and thus, we need to
substract the margin extent before trying to compute a cross size based on an aspect ratio.

Note that when computeMainSizeFromAspectRatioUsing() is called the child might not have been ever
laid out. This means that the margins wouldn't have been computed and thus marginXXX() would always
return 0. That's why crossAxisMarginExtentForChild() was also modified so that it actually computes
the margins in case the child needs to be laid out.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::crossAxisMarginExtentForChild const):
(WebCore::RenderFlexibleBox::computeMainSizeFromAspectRatioUsing const):

LayoutTests:

Reviewed by Javier Fernandez.

  • TestExpectations: Unskipped flex-aspect-ratio-img-row-013.html which is now passing.
8:48 AM Changeset in webkit [277370] by mark.lam@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

Remove dead code around ENABLE(OPCODE_SAMPLING) and ENABLE(CODEBLOCK_SAMPLING).
https://bugs.webkit.org/show_bug.cgi?id=225699

Reviewed by Tadeu Zagallo.

This code revolves around an Interpreter::sampler() method which returns a
SamplingTool*. Neither the Interpreter method nor the SamplingTool class exists
anymore.

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::compileWithoutLinking):

  • jit/JIT.h:
  • jit/JITCall.cpp:

(JSC::JIT::compileCallEval):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileCallEval):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITInlines.h:

(JSC::JIT::sampleInstruction): Deleted.
(JSC::JIT::sampleCodeBlock): Deleted.

  • jit/JITOperations.cpp:
  • jit/SlowPathCall.h:

(JSC::JITSlowPathCall::call):

  • runtime/ScriptExecutable.h:

(JSC::ScriptExecutable::finishCreation): Deleted.

7:51 AM Changeset in webkit [277369] by weinig@apple.com
  • 8 edits
    2 adds in trunk/Source/WebCore

Factor copyImagePixels pixel conversion code into its own file
https://bugs.webkit.org/show_bug.cgi?id=225673

Reviewed by Darin Adler.

Removes virtual ImageBufferBackend::copyImagePixels() function and
moves functionality to new PixelBufferConversion.h/cpp.

Merge USE(ACCELERATE) code from ImageBufferCGBackend into the same
file and do some light cleanup.

  • Function renamed to covert convertImagePixels to convey that it is doing more than copying.
  • Add PixelBufferConversionView/ConstPixelBufferConversionView structs to hold parameters for the conversions, including a ColorSpace member that is not yet used but will be shortly.
  • Uses constexpr conditionals in unaccelerated cases to hoist branch checking for pixel format conversion requirements outside the main loop.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Add new files.

  • platform/graphics/PixelBufferConversion.cpp: Added.

(WebCore::makeVImageBuffer):
(WebCore::convertImagePixelsAccelerated):
(WebCore::convertSinglePixelPremultipliedToPremultiplied):
(WebCore::convertSinglePixelPremultipliedToUnpremultiplied):
(WebCore::convertSinglePixelUnpremultipliedToPremultiplied):
(WebCore::convertSinglePixelUnpremultipliedToUnpremultiplied):
(WebCore::convertFunctor):
(WebCore::convertImagePixels):

  • platform/graphics/PixelBufferConversion.h: Added.

Move existing copyImagePixels implementations here.

  • platform/graphics/ImageBufferBackend.cpp:

(WebCore::ImageBufferBackend::toBGRAData const):
(WebCore::ImageBufferBackend::getPixelBuffer const):
(WebCore::ImageBufferBackend::putPixelBuffer):
(WebCore::copyPremultipliedToPremultiplied): Deleted.
(WebCore::copyPremultipliedToUnpremultiplied): Deleted.
(WebCore::copyUnpremultipliedToPremultiplied): Deleted.
(WebCore::copyUnpremultipliedToUnpremultiplied): Deleted.
(WebCore::copyFunctor): Deleted.
(WebCore::ImageBufferBackend::copyImagePixels const): Deleted.

  • platform/graphics/ImageBufferBackend.h:
  • platform/graphics/cg/ImageBufferCGBackend.cpp:

(WebCore::makeVImageBuffer): Deleted.
(WebCore::copyImagePixelsAccelerated): Deleted.
(WebCore::ImageBufferCGBackend::copyImagePixels const): Deleted.

  • platform/graphics/cg/ImageBufferCGBackend.h:

Remove existing copyImagePixels() implementation and call new
convertImagePixels() instead.

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::copyUnmultipliedResult):
(WebCore::FilterEffect::copyPremultipliedResult):
(WebCore::FilterEffect::createUnmultipliedImageResult):
(WebCore::FilterEffect::createPremultipliedImageResult):
Fix pixel format for the PixelBuffers to match existing behaviors.
These are not being used at the moment but will in the future
and new assert in putPixelBuffer caught these being incorrect.

7:33 AM Changeset in webkit [277368] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. media/track/in-band/track-in-band-srt-mkv-kind.html is a flaky crash.

  • platform/glib/TestExpectations:
7:17 AM Changeset in webkit [277367] by commit-queue@webkit.org
  • 6 edits
    2 deletes in trunk

Unreviewed, reverting r277320 and r277329.
https://bugs.webkit.org/show_bug.cgi?id=225698

Added broken test fast/css/visited-link-mix-blend-mode.html

Reverted changesets:

"Don't allow :visited link style in subtrees that use mix-
blend-mode"
https://bugs.webkit.org/show_bug.cgi?id=225446
https://trac.webkit.org/changeset/277320

"Don't allow :visited link style in subtrees that use mix-
blend-mode"
https://bugs.webkit.org/show_bug.cgi?id=225446
https://trac.webkit.org/changeset/277329

6:37 AM Changeset in webkit [277366] by Diego Pino Garcia
  • 1 edit
    2 adds
    1 delete in trunk/LayoutTests

[GTK] Unreviewed test gardening. Update baselines for GTK.

Remove stale GTK baseline after r277321.
Emit new GTK baseline after WPT update in r277160.

  • platform/gtk/imported/w3c/web-platform-tests/css/css-flexbox/flex-item-contains-strict-expected.txt: Removed.
  • platform/gtk/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries-expected.txt: Added.
5:47 AM Changeset in webkit [277365] by Jean-Yves Avenard
  • 4 edits in trunk/Source/WebCore

Adopt CoreMedia SPI to identify audio-only playback for MSE clients
https://bugs.webkit.org/show_bug.cgi?id=225647
rdar://76138365

Reviewed by Youenn Fablet.

Source/WebCore:

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: tells whether the AVSBAR is attached to an <audio> or <video> element.

Source/WebCore/PAL:

  • pal/spi/cocoa/AVFoundationSPI.h: Add forward declaration for new methods while this isn't in SDK yet.
1:57 AM Changeset in webkit [277364] by youenn@apple.com
  • 10 edits
    1 copy
    4 moves
    2 adds in trunk/Source

Introduce an internal unit to render audio MediaStreamTrack(s)
https://bugs.webkit.org/show_bug.cgi?id=225601

Reviewed by Eric Carlson.

Source/WebCore:

Move files from platform/mediastream/mac to platform/mediastream/cocoa since they are used in both iOS and macOS.
Move Audio Unit functionality out of AudioMediaStreamTrackRendererUnit.
AudioMediaStreamTrackRendererUnit is responsible to manage sources and do the mixing.
To actually render audio, it will use an InternalUnit, which is currently done in process.

A future work will add support for a remote InternalUnit, that would run on GPUProcess.
To prepare for that, a callback allows customizing the Internal Unit creation.
We also change renderer start to be asynchronous, since it requires fetching the audio description from GPUProcess.

No change of behavior, covered by existing tests.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/cocoa/AudioSampleBufferList.h:
  • platform/mediastream/AudioMediaStreamTrackRenderer.h:
  • platform/mediastream/AudioTrackPrivateMediaStream.cpp:

(WebCore::AudioTrackPrivateMediaStream::startRenderer):

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererCocoa.cpp: Renamed from Source/WebCore/platform/mediastream/mac/AudioMediaStreamTrackRendererCocoa.cpp.

(WebCore::AudioMediaStreamTrackRendererCocoa::start):

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererCocoa.h: Copied from Source/WebCore/platform/mediastream/mac/AudioMediaStreamTrackRendererCocoa.h.
  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.cpp: Renamed from Source/WebCore/platform/mediastream/mac/AudioMediaStreamTrackRendererUnit.cpp.

(WebCore::AudioMediaStreamTrackRendererInternalUnit::createLocalInternalUnit):
(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::LocalAudioMediaStreamTrackRendererInternalUnit):
(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::retrieveFormatDescription):
(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::setAudioOutputDevice):
(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::start):
(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::stop):
(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::createAudioUnitIfNeeded):
(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::renderingCallback):

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.h: Renamed from Source/WebCore/platform/mediastream/mac/AudioMediaStreamTrackRendererCocoa.h.
  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp: Added.

(WebCore::getCreateInternalUnitFunction):
(WebCore::AudioMediaStreamTrackRendererUnit::setCreateInternalUnitFunction):
(WebCore::createInternalUnit):
(WebCore::AudioMediaStreamTrackRendererUnit::singleton):
(WebCore::AudioMediaStreamTrackRendererUnit::AudioMediaStreamTrackRendererUnit):
(WebCore::AudioMediaStreamTrackRendererUnit::~AudioMediaStreamTrackRendererUnit):
(WebCore::AudioMediaStreamTrackRendererUnit::setAudioOutputDevice):
(WebCore::AudioMediaStreamTrackRendererUnit::addSource):
(WebCore::AudioMediaStreamTrackRendererUnit::removeSource):
(WebCore::AudioMediaStreamTrackRendererUnit::start):
(WebCore::AudioMediaStreamTrackRendererUnit::stop):
(WebCore::AudioMediaStreamTrackRendererUnit::retrieveFormatDescription):
(WebCore::AudioMediaStreamTrackRendererUnit::render):

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.h: Renamed from Source/WebCore/platform/mediastream/mac/AudioMediaStreamTrackRendererUnit.h.

Source/WebKit:

Update according new WebCore API.

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.cpp:

(WebKit::RemoteAudioMediaStreamTrackRenderer::start):

  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.cpp:

(WebKit::AudioMediaStreamTrackRenderer::start):

  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.h:
1:48 AM Changeset in webkit [277363] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening. Gardened several test failures from GTK post-commit bot.

  • platform/gtk/TestExpectations:
1:09 AM Changeset in webkit [277362] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

REGRESSION(r277083): Proximity scroll snap is broken on iOS
https://bugs.webkit.org/show_bug.cgi?id=225649

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

No new tests. iOS does not have great support for the event sending test
infrastructure used to test scroll snap.

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:

(ArgumentCoder<FloatScrollSnapOffsetsInfo>::encode): Include the snap type when encoding ScrollSnapOffsetsInfo.
(ArgumentCoder<FloatScrollSnapOffsetsInfo>::decode): Include the snap type when decoding ScrollSnapOffsetsInfo.

  • Shared/WebCoreArgumentCoders.h: Added EnumTraits for ScrollSnapStrictness.
1:05 AM Changeset in webkit [277361] by youenn@apple.com
  • 11 edits in trunk/Source/WebCore

Enumerate AVCaptureDevice list in a background thread
https://bugs.webkit.org/show_bug.cgi?id=225643
<rdar://problem/77820002>

Reviewed by Eric Carlson.

Enumerate AVCaptureDevice in a background queue asynchronously.
Delay getUserMedia and enumerateDevices until this is completed.

Update RealtimeMediaSourceCenter accordingly and introduce RealtimeMediaSourceCenter::enumerateDevices for that purpose.
Replace getCaptureDevices by computeCaptureDevices to do the async computation.
Continue using captureDevices() getters.

Manually tested.

  • platform/mediastream/CaptureDevice.h:

(WebCore::CaptureDevice::CaptureDevice):
(WebCore::CaptureDevice::isolatedCopy):

  • platform/mediastream/CaptureDeviceManager.h:
  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices):
(WebCore::RealtimeMediaSourceCenter::enumerateDevices):
(WebCore::RealtimeMediaSourceCenter::validateRequestConstraints):
(WebCore::RealtimeMediaSourceCenter::validateRequestConstraintsAfterEnumeration):

  • platform/mediastream/RealtimeMediaSourceCenter.h:
  • platform/mediastream/RealtimeMediaSourceFactory.h:

(WebCore::AudioCaptureFactory::computeSpeakerDevices const):

  • platform/mediastream/ios/AVAudioSessionCaptureDevice.mm:

(WebCore::AVAudioSessionCaptureDevice::AVAudioSessionCaptureDevice):

  • platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h:
  • platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:

(WebCore::AVAudioSessionCaptureDeviceManager::scheduleUpdateCaptureDevices):
(WebCore::AVAudioSessionCaptureDeviceManager::computeCaptureDevices):

  • platform/mediastream/mac/AVCaptureDeviceManager.h:
  • platform/mediastream/mac/AVCaptureDeviceManager.mm:

(WebCore::AVCaptureDeviceManager::computeCaptureDevices):
(WebCore::AVCaptureDeviceManager::captureDevices):
(WebCore::AVCaptureDeviceManager::updateCachedAVCaptureDevices):
(WebCore::AVCaptureDeviceManager::retrieveCaptureDevices):
(WebCore::AVCaptureDeviceManager::refreshCaptureDevices):
(WebCore::AVCaptureDeviceManager::AVCaptureDeviceManager):

12:56 AM Changeset in webkit [277360] by youenn@apple.com
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] http/wpt/mediarecorder/set-srcObject-MediaStream-Blob.html (layout-test) is a flaky text failure
https://bugs.webkit.org/show_bug.cgi?id=225500
<rdar://problem/77636573>

Reviewed by Eric Carlson.

  • http/wpt/mediarecorder/set-srcObject-MediaStream-Blob.html:

Make sure video1 is playing to get its duration.

12:54 AM Changeset in webkit [277359] by youenn@apple.com
  • 2 edits in trunk/LayoutTests

fast/mediastream/getUserMedia-webaudio.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=225655
<rdar://74158395>

Reviewed by Eric Carlson.

  • fast/mediastream/getUserMedia-webaudio.html:

Retry several time instead of just once when detecting no noise to improve robustness.

May 11, 2021:

11:04 PM Changeset in webkit [277358] by Cameron McCormack
  • 6 edits in trunk

Include reasons for compositing in showLayerTree output
https://bugs.webkit.org/show_bug.cgi?id=225640

Reviewed by Simon Fraser.

Source/WebCore:

Since it seems useful to know why a layer is composited.

The logging code was only including one reason, rather than the
whole set of reasons, and that's unchanged (except for the function
name to make that clearer), although we could also just make that
include all of the reasons too.

There were two reason strings missing, which are also added --
OverflowScrollPositioning and WillChange -- which the use of a
switch should help catch in the future.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::logLayerInfo):
(WebCore::compositingReasonToString):
(WebCore::RenderLayerCompositor::logReasonsForCompositing):
(WebCore::operator<<):

  • rendering/RenderLayerCompositor.h:
  • rendering/RenderTreeAsText.cpp:

LayoutTests:

  • fast/harness/render-tree-as-text-options-expected.txt:
10:55 PM Changeset in webkit [277357] by Chris Dumez
  • 32 edits in trunk

Port WTF::FileSystem::listDirectory to std::filesystem
https://bugs.webkit.org/show_bug.cgi?id=225633

Reviewed by Darin Adler.

Source/WebCore:

Update FileSystem::listDirectory() call sites to deal with the fact that:

  • The function now returns file names instead of full file paths
  • The callers now have to do filtering by themselves if they need it
  • Modules/entriesapi/DOMFileSystem.cpp:

(WebCore::listDirectoryWithMetadata):

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::getAllDatabaseNamesAndVersions):
(WebCore::IDBServer::collectOriginsForVersion):
(WebCore::IDBServer::removeAllDatabasesForFullOriginPath):
(WebCore::IDBServer::removeAllDatabasesForOriginPath):
(WebCore::IDBServer::IDBServer::removeDatabasesModifiedSinceForVersion):
(WebCore::IDBServer::IDBServer::removeDatabasesWithOriginsForVersion):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabaseDirectoryWithUpgrade):
(WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForDirectory):

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::usage):
(WebCore::DatabaseTracker::deleteOrigin):

  • html/DirectoryFileListCreator.cpp:

(WebCore::appendDirectoryFiles):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::uriDecodeBinElementAddedCallback):
(WebCore::MediaPlayerPrivateGStreamer::purgeOldDownloadFiles):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/text/hyphen/HyphenationLibHyphen.cpp:

(WebCore::extractLocaleFromDictionaryFileName):
(WebCore::scanDirectoryForDictionaries):

Source/WebKit:

Update FileSystem::listDirectory() call sites to deal with the fact that:

  • The function now returns file names instead of full file paths
  • The callers now have to do filtering by themselves if they need it
  • NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp:

(WebKit::LocalStorageDatabaseTracker::origins const):

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::getDirectorySize):
(WebKit::CacheStorage::Engine::getDirectories):
(WebKit::CacheStorage::Engine::clearAllCachesFromDisk):

  • NetworkProcess/cache/NetworkCacheFileSystem.cpp:

(WebKit::NetworkCache::traverseDirectory):

  • UIProcess/API/APIContentRuleListStore.cpp:

(API::ContentRuleListStore::getAvailableContentRuleListIdentifiers):
(API::ContentRuleListStore::synchronousRemoveAllContentRuleLists):

  • UIProcess/DeviceIdHashSaltStorage.cpp:

(WebKit::DeviceIdHashSaltStorage::loadStorageFromDisk):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::mediaKeyOrigins):
(WebKit::WebsiteDataStore::removeMediaKeys):

  • WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.cpp:

(WebKit::WebKitExtensionManager::scanModules):

  • WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:

(WebKit::WebMediaKeyStorageManager::getMediaKeyOrigins):
(WebKit::removeAllMediaKeyStorageForOriginPath):
(WebKit::WebMediaKeyStorageManager::deleteMediaKeyEntriesModifiedBetweenDates):
(WebKit::WebMediaKeyStorageManager::deleteAllMediaKeyEntries):

Source/WebKitLegacy:

Update FileSystem::listDirectory() call sites to deal with the fact that:

  • The function now returns file names instead of full file paths
  • The callers now have to do filtering by themselves if they need it
  • Storage/StorageTracker.cpp:

(WebKit::StorageTracker::syncFileSystemAndTrackerDatabase):

Source/WebKitLegacy/win:

Update FileSystem::listDirectory() call sites to deal with the fact that:

  • The function now returns file names instead of full file paths
  • The callers now have to do filtering by themselves if they need it
  • Plugins/PluginDatabase.cpp:

(WebCore::PluginDatabase::getPluginPathsInDirectories const):

Source/WTF:

Port WTF::FileSystem::listDirectory to std::filesystem with the following 2 changes:

  • The function no longer takes a (blob-style) filter parameter
  • The function now returns file names instead of file paths, allowing the call sites to more easily filter based on prefixes.
  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::listDirectory):

  • wtf/FileSystem.h:
  • wtf/glib/FileSystemGlib.cpp:
  • wtf/posix/FileSystemPOSIX.cpp:
  • wtf/win/FileSystemWin.cpp:

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::createTestFile):
(TestWebKitAPI::TEST_F):

  • TestWebKitAPI/Tests/WebCore/cocoa/DatabaseTrackerTest.mm:

(TestWebKitAPI::removeDirectoryAndAllContents):

10:53 PM Changeset in webkit [277356] by Chris Dumez
  • 17 edits
    1 add in trunk

Add SPI to suspend / resume a WKWebView
https://bugs.webkit.org/show_bug.cgi?id=225333
<rdar://77462543>

Reviewed by Geoff Garen.

Source/WebCore:

Add new function to BackForwardCache to suspend a page and return a CachedPage
instead of requiring a HistoryItem and storing the CachedPage on that history
item. This is useful when we want to suspend the page in-place and do not want
to require a history item (or a navigation).

  • Headers.cmake:
  • history/BackForwardCache.cpp:

(WebCore::BackForwardCache::trySuspendPage):
(WebCore::BackForwardCache::addIfCacheable):
(WebCore::BackForwardCache::suspendPage):

  • history/BackForwardCache.h:
  • history/CachedPage.h:

Source/WebKit:

Add SPI to suspend / resume a WKWebView. This suspends the page as if it was in
the back/forward cache but the suspension happens in-place, no need to navigate.
The suspended page is also not part of the Back/Forward cache so its cap on the
number of suspended pages does not apply here.

Most of WKWebView's API / SPI will throw an exception when called on a suspended
view (The WKPageRefAPI will RELEASE_ASSERT()). Some of the basic API will stay
functional (URL, isLoading, title, ...). It is also safe to deallocate / close
a suspended WKWebView.

  • UIProcess/API/C/WKPage.cpp:

(crashIfPageIsSuspended):
(WKPageLoadURL):
(WKPageLoadURLWithShouldOpenExternalURLsPolicy):
(WKPageLoadURLWithUserData):
(WKPageLoadURLRequest):
(WKPageLoadURLRequestWithUserData):
(WKPageLoadFile):
(WKPageLoadFileWithUserData):
(WKPageLoadData):
(WKPageLoadDataWithUserData):
(WKPageLoadHTMLString):
(WKPageLoadHTMLStringWithUserData):
(WKPageLoadAlternateHTMLString):
(WKPageLoadAlternateHTMLStringWithUserData):
(WKPageLoadPlainTextString):
(WKPageLoadPlainTextStringWithUserData):
(WKPageLoadWebArchiveData):
(WKPageLoadWebArchiveDataWithUserData):
(WKPageStopLoading):
(WKPageReload):
(WKPageReloadWithoutContentBlockers):
(WKPageReloadFromOrigin):
(WKPageReloadExpiredOnly):
(WKPageTryClose):
(WKPageClose):
(WKPageGoForward):
(WKPageGoBack):
(WKPageGoToBackForwardListItem):
(WKPageTryRestoreScrollPosition):
(WKPageUpdateWebsitePolicies):
(WKPageSetApplicationNameForUserAgent):
(WKPageSetCustomUserAgent):
(WKPageSetCustomTextEncodingName):
(WKPageTerminate):
(WKPageRestoreFromSessionState):
(WKPageRestoreFromSessionStateWithoutNavigation):
(WKPageSetCustomBackingScaleFactor):
(WKPageSetTextZoomFactor):
(WKPageSetPageZoomFactor):
(WKPageSetPageAndTextZoomFactors):
(WKPageSetScaleFactor):
(WKPageSetUseFixedLayout):
(WKPageSetFixedLayoutSize):
(WKPageListenForLayoutMilestones):
(WKPageSetSuppressScrollbarAnimations):
(WKPageSetRubberBandsAtLeft):
(WKPageSetRubberBandsAtRight):
(WKPageSetRubberBandsAtTop):
(WKPageSetRubberBandsAtBottom):
(WKPageSetEnableVerticalRubberBanding):
(WKPageSetEnableHorizontalRubberBanding):
(WKPageSetBackgroundExtendsBeyondPage):
(WKPageSetPaginationMode):
(WKPageSetPaginationBehavesLikeColumns):
(WKPageSetPageLength):
(WKPageSetGapBetweenPages):
(WKPageSetPaginationLineGridEnabled):
(WKPageSetMaintainsInactiveSelection):
(WKPageCenterSelectionInVisibleArea):
(WKPageFindStringMatches):
(WKPageGetImageForFindMatch):
(WKPageSelectFindMatch):
(WKPageFindString):
(WKPageHideFindUI):
(WKPageCountStringMatches):
(WKPageSetPageContextMenuClient):
(WKPageSetPageFindClient):
(WKPageSetPageFindMatchesClient):
(WKPageSetPageInjectedBundleClient):
(WKPageSetPageFormClient):
(WKPageSetPageLoaderClient):
(WKPageSetPagePolicyClient):
(WKPageSetPageUIClient):
(WKPageSetPageNavigationClient):
(WKPageSetPageStateClient):
(WKPageRunJavaScriptInMainFrame):
(WKPageRunJavaScriptInMainFrame_b):
(WKPageRenderTreeExternalRepresentation):
(WKPageGetSourceForFrame):
(WKPageGetContentsAsString):
(WKPageGetBytecodeProfile):
(WKPageGetSamplingProfilerOutput):
(WKPageGetSelectionAsWebArchiveData):
(WKPageGetContentsAsMHTMLData):
(WKPageForceRepaint):
(WKPageValidateCommand):
(WKPageExecuteCommand):
(WKPageComputePagesForPrinting):
(WKPageDrawPagesToPDF):
(WKPageBeginPrinting):
(WKPageEndPrinting):
(WKPageSetControlledByAutomation):
(WKPageSetAllowsRemoteInspection):
(WKPageSetMediaVolume):
(WKPageSetMuted):
(WKPageSetMediaCaptureEnabled):
(WKPageDidAllowPointerLock):
(WKPageClearUserMediaState):
(WKPageDidDenyPointerLock):
(WKPageSetMayStartMediaWhenInWindow):
(WKPageSelectContextMenuItem):
(WKPageSetScrollPinningBehavior):
(WKPageSetAddsVisitedLinks):
(WKPageClearWheelEventTestMonitor):
(WKPageCallAfterNextPresentationUpdate):
(WKPageSetIgnoresViewportScaleLimits):
(WKPageGetApplicationManifest_b):
(WKPageDumpPrivateClickMeasurement):
(WKPageClearPrivateClickMeasurement):
(WKPageSetPrivateClickMeasurementOverrideTimerForTesting):
(WKPageMarkAttributedPrivateClickMeasurementsAsExpiredForTesting):
(WKPageSimulateResourceLoadStatisticsSessionRestart):
(WKPageSetPrivateClickMeasurementTokenPublicKeyURLForTesting):
(WKPageSetPrivateClickMeasurementTokenSignatureURLForTesting):
(WKPageSetPrivateClickMeasurementAttributionReportURLsForTesting):
(WKPageMarkPrivateClickMeasurementsAsExpiredForTesting):
(WKPageSetPCMFraudPreventionValuesForTesting):
(WKPageSetMockCameraOrientation):
(WKPageLoadedSubresourceDomains):
(WKPageClearLoadedSubresourceDomains):
(WKPageSetMediaCaptureReportingDelayForTesting):
(WKPageDispatchActivityStateUpdateForTesting):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView loadRequest:]):
(-[WKWebView loadFileURL:allowingReadAccessToURL:]):
(-[WKWebView loadHTMLString:baseURL:]):
(-[WKWebView loadData:MIMEType:characterEncodingName:baseURL:]):
(-[WKWebView startDownloadUsingRequest:completionHandler:]):
(-[WKWebView resumeDownloadFromResumeData:completionHandler:]):
(-[WKWebView goToBackForwardListItem:]):
(-[WKWebView goBack]):
(-[WKWebView goForward]):
(-[WKWebView reload]):
(-[WKWebView reloadFromOrigin]):
(-[WKWebView stopLoading]):
(-[WKWebView evaluateJavaScript:completionHandler:]):
(-[WKWebView evaluateJavaScript:inFrame:inContentWorld:completionHandler:]):
(-[WKWebView callAsyncJavaScript:arguments:inFrame:inContentWorld:completionHandler:]):
(-[WKWebView closeAllMediaPresentationsWithCompletionHandler:]):
(-[WKWebView pauseAllMediaPlaybackWithCompletionHandler:]):
(-[WKWebView setAllMediaPlaybackSuspended:completionHandler:]):
(-[WKWebView requestMediaPlaybackStateWithCompletionHandler:]):
(-[WKWebView setMicrophoneCaptureState:completionHandler:]):
(-[WKWebView setCameraCaptureState:completionHandler:]):
(-[WKWebView _evaluateJavaScript:asAsyncFunction:withSourceURL:withArguments:forceUserGesture:inFrame:inWorld:completionHandler:]):
(-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):
(-[WKWebView setAllowsBackForwardNavigationGestures:]):
(-[WKWebView setCustomUserAgent:]):
(-[WKWebView setAllowsLinkPreview:]):
(-[WKWebView setPageZoom:]):
(-[WKWebView findString:withConfiguration:completionHandler:]):
(-[WKWebView setMediaType:]):
(-[WKWebView setInteractionState:]):
(-[WKWebView setAllowsMagnification:]):
(-[WKWebView setMagnification:centeredAtPoint:]):
(-[WKWebView setMagnification:]):
(-[WKWebView printOperationWithPrintInfo:]):
(-[WKWebView createPDFWithConfiguration:completionHandler:]):
(-[WKWebView createWebArchiveDataWithCompletionHandler:]):
(-[WKWebView loadSimulatedRequest:response:responseData:]):
(-[WKWebView loadSimulatedRequest:withResponse:responseData:]):
(-[WKWebView loadSimulatedRequest:responseHTMLString:]):
(-[WKWebView loadSimulatedRequest:withResponseHTMLString:]):
(-[WKWebView loadFileRequest:allowingReadAccessToURL:]):
(-[WKWebView _toggleStrikeThrough:]):
(-[WKWebView _increaseListLevel:]):
(-[WKWebView _decreaseListLevel:]):
(-[WKWebView _changeListType:]):
(-[WKWebView _setViewportSizeForCSSViewportUnits:]):
(-[WKWebView _didEnableBrowserExtensions:]):
(-[WKWebView _didDisableBrowserExtensions:]):
(-[WKWebView _setEditable:]):
(-[WKWebView _executeEditCommand:argument:completion:]):
(-[WKWebView _startTextManipulationsWithConfiguration:completion:]):
(-[WKWebView _completeTextManipulation:completion:]):
(-[WKWebView _completeTextManipulationForItems:completion:]):
(-[WKWebView _takeFindStringFromSelection:]):
(-[WKWebView _updateMediaPlaybackControlsManager]):
(-[WKWebView _togglePictureInPicture]):
(-[WKWebView _closeAllMediaPresentations]):
(-[WKWebView _stopMediaCapture]):
(-[WKWebView _stopAllMediaPlayback]):
(-[WKWebView _suspendAllMediaPlayback]):
(-[WKWebView _resumeAllMediaPlayback]):
(-[WKWebView _restoreAppHighlights:]):
(-[WKWebView _restoreAndScrollToAppHighlight:]):
(-[WKWebView _addAppHighlight]):
(-[WKWebView _loadAlternateHTMLString:baseURL:forUnreachableURL:]):
(-[WKWebView _loadData:MIMEType:characterEncodingName:baseURL:userData:]):
(-[WKWebView _loadRequest:shouldOpenExternalURLs:]):
(-[WKWebView _loadRequest:shouldOpenExternalURLsPolicy:]):
(-[WKWebView _grantAccessToAssetServices]):
(-[WKWebView _revokeAccessToAssetServices]):
(-[WKWebView _switchFromStaticFontRegistryToUserFontRegistry]):
(-[WKWebView _appBoundNavigationDataForDomain:completionHandler:]):
(-[WKWebView _suspendPage:]):
(-[WKWebView _resumePage:]):
(-[WKWebView _setApplicationNameForUserAgent:]):
(-[WKWebView _killWebContentProcess]):
(-[WKWebView _reloadWithoutContentBlockers]):
(-[WKWebView _reloadExpiredOnly]):
(-[WKWebView _killWebContentProcessAndResetState]):
(-[WKWebView _takePDFSnapshotWithConfiguration:completionHandler:]):
(-[WKWebView _getPDFFirstPageSizeInFrame:completionHandler:]):
(-[WKWebView _restoreFromSessionStateData:]):
(-[WKWebView _restoreSessionState:andNavigate:]):
(-[WKWebView _close]):
(-[WKWebView _tryClose]):
(-[WKWebView _insertAttachmentWithFilename:contentType:data:options:completion:]):
(-[WKWebView _insertAttachmentWithFileWrapper:contentType:options:completion:]):
(-[WKWebView _insertAttachmentWithFileWrapper:contentType:completion:]):
(-[WKWebView _attachmentForIdentifier:]):
(-[WKWebView _simulateDeviceOrientationChangeWithAlpha:beta:gamma:]):
(-[WKWebView _showSafeBrowsingWarningWithTitle:warning:details:completionHandler:]):
(-[WKWebView _showSafeBrowsingWarningWithURL:title:warning:details:completionHandler:]):
(-[WKWebView _showSafeBrowsingWarningWithURL:title:warning:detailsWithLinks:completionHandler:]):
(-[WKWebView _isJITEnabled:]):
(-[WKWebView _evaluateJavaScriptWithoutUserGesture:completionHandler:]):
(-[WKWebView _callAsyncJavaScript:arguments:inFrame:inContentWorld:completionHandler:]):
(-[WKWebView _evaluateJavaScript:inFrame:inContentWorld:completionHandler:]):
(-[WKWebView _evaluateJavaScript:withSourceURL:inFrame:inContentWorld:completionHandler:]):
(-[WKWebView _updateWebpagePreferences:]):
(-[WKWebView _notifyUserScripts]):
(-[WKWebView _deferrableUserScriptsNeedNotification]):
(-[WKWebView _setAllowsRemoteInspection:]):
(-[WKWebView _setRemoteInspectionNameOverride:]):
(-[WKWebView _setAddsVisitedLinks:]):
(-[WKWebView _getMainResourceDataWithCompletionHandler:]):
(-[WKWebView _getWebArchiveDataWithCompletionHandler:]):
(-[WKWebView _getContentsAsStringWithCompletionHandler:]):
(-[WKWebView _getContentsOfAllFramesAsStringWithCompletionHandler:]):
(-[WKWebView _getContentsAsAttributedStringWithCompletionHandler:]):
(-[WKWebView _getApplicationManifestWithCompletionHandler:]):
(-[WKWebView _setPaginationMode:]):
(-[WKWebView _setPaginationBehavesLikeColumns:]):
(-[WKWebView _setPageLength:]):
(-[WKWebView _setGapBetweenPages:]):
(-[WKWebView _setPaginationLineGridEnabled:]):
(-[WKWebView _setTextZoomFactor:]):
(-[WKWebView _setPageZoomFactor:]):
(-[WKWebView _countStringMatches:options:maxCount:]):
(-[WKWebView _findString:options:maxCount:]):
(-[WKWebView _hideFindUI]):
(-[WKWebView _saveBackForwardSnapshotForItem:]):
(-[WKWebView _clearServiceWorkerEntitlementOverride:]):
(-[WKWebView _preconnectToServer:]):
(-[WKWebView _setCanUseCredentialStorage:]):
(-[WKWebView _setLayoutMode:]):
(-[WKWebView _setFixedLayoutSize:]):
(-[WKWebView _setBackgroundExtendsBeyondPage:]):
(-[WKWebView _setViewScale:]):
(-[WKWebView _setCORSDisablingPatterns:]):
(-[WKWebView _getProcessDisplayNameWithCompletionHandler:]):
(-[WKWebView _setMinimumEffectiveDeviceWidth:]):
(-[WKWebView _grantAccessToPreferenceService]):
(-[WKWebView _setScrollPerformanceDataCollectionEnabled:]):
(-[WKWebView _setAllowsMediaDocumentInlinePlayback:]):
(-[WKWebView _setMediaCaptureEnabled:]):
(-[WKWebView _setPageMuted:]):
(-[WKWebView _removeDataDetectedLinks:]):
(-[WKWebView _doAfterNextPresentationUpdate:]):
(-[WKWebView _doAfterNextPresentationUpdateWithoutWaitingForPainting:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::handleTouchEvent):
(WebKit::WebPageProxy::resumeActiveDOMObjectsAndAnimations):
(WebKit::WebPageProxy::suspendActiveDOMObjectsAndAnimations):
(WebKit::WebPageProxy::suspend):
(WebKit::WebPageProxy::resume):
(WebKit::WebPageProxy::requestMediaPlaybackState):
(WebKit::WebPageProxy::resetStateAfterProcessExited):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::suspend):
(WebKit::WebPage::resume):

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

Tools:

Add API test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSuspension.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/postMessage-regularly.html: Added.
9:23 PM Changeset in webkit [277355] by Darin Adler
  • 25 edits
    1 add in trunk

Remove the String::toInt family of functions
https://bugs.webkit.org/show_bug.cgi?id=225599

Reviewed by Anders Carlsson.

Source/WebCore:

  • platform/graphics/GLContext.cpp:

(WebCore::GLContext::version): Use
parseIntegerAllowingTrailingJunk<unsigned> instead of String::toUInt.

  • platform/graphics/GlyphBuffer.h:

(WebCore::GlyphBuffer::checkedStringOffsetAt const): Fix code that was
assuming GlyphBufferStringOffset was signed to compile without a warning
regardless of whether it's signed or unsigned. This was making GTK
builds have tons and tons of warnings, which was distracting while
working on the other fixes here.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(CachedResourceStreamingClient::responseReceived): Use
parseIntegerAllowingTrailingJunk<uint64_t> instead of String::toUInt64.

Source/WebKit:

  • Shared/win/AuxiliaryProcessMainWin.cpp:

(WebKit::AuxiliaryProcessMainCommon::parseCommandLine): Use
parseIntegerAllowingTrailingJunk<uint64_t> instead of String::toUInt64.

  • UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:

(WebKit::ScriptMessageClient::didPostMessage): Ditto.

  • UIProcess/win/WebProcessPoolWin.cpp:

(WebKit::initializeRemoteInspectorServer): Use
parseIntegerAllowingTrailingJunk<uint16_t> instead of StringView::toUInt64.
This is a 16-bit port number, so not valuable to parse larger integers.

Source/WTF:

  • wtf/text/AtomString.h: Deleted AtomString::toInt.
  • wtf/text/StringImpl.cpp:

(WTF::StringImpl::toIntStrict): Deleted.
(WTF::StringImpl::toUIntStrict): Deleted.
(WTF::StringImpl::toInt64Strict): Deleted.
(WTF::StringImpl::toUInt64Strict): Deleted.
(WTF::StringImpl::toIntPtrStrict): Deleted.
(WTF::StringImpl::toInt): Deleted.
(WTF::StringImpl::toUInt): Deleted.
(WTF::StringImpl::toInt64): Deleted.
(WTF::StringImpl::toUInt64): Deleted.
(WTF::StringImpl::toIntPtr): Deleted.

  • wtf/text/StringImpl.h: Deleted the above functions.
  • wtf/text/StringToIntegerConversion.h: Removed toIntegralType.
  • wtf/text/StringView.cpp:

(WTF::parseUInt16): Deleted.

  • wtf/text/StringView.h: Deleted StringView::toInt,

StringView::toIntStrict, StringView::toUInt64Strict,
StringView::toInt64Strict, and parseUInt16. Changed the constructor
that takes a const char* to work when passed nullptr. StringView has
a null value, and converting a null const char* should produce that.

  • wtf/text/WTFString.cpp:

(WTF::String::toIntStrict const): Deleted.
(WTF::String::toUIntStrict const): Deleted.
(WTF::String::toInt64Strict const): Deleted.
(WTF::String::toUInt64Strict const): Deleted.
(WTF::String::toIntPtrStrict const): Deleted.
(WTF::String::toInt const): Deleted.
(WTF::String::toUInt const): Deleted.
(WTF::String::toInt64 const): Deleted.
(WTF::String::toUInt64 const): Deleted.
(WTF::String::toIntPtr const): Deleted.
(WTF::lengthOfCharactersAsInteger): Deleted.
(WTF::charactersToIntStrict): Deleted.
(WTF::charactersToUIntStrict): Deleted.
(WTF::charactersToInt64Strict): Deleted.
(WTF::charactersToUInt64Strict): Deleted.
(WTF::charactersToIntPtrStrict): Deleted.
(WTF::charactersToInt): Deleted.
(WTF::charactersToUInt): Deleted.
(WTF::charactersToInt64): Deleted.
(WTF::charactersToUInt64): Deleted.
(WTF::charactersToIntPtr): Deleted.

  • wtf/text/WTFString.h: Deleted the above functions.

Tools:

  • TestWebKitAPI/CMakeLists.txt: Added StringToIntegerConversion.cpp.
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Ditto.
  • TestWebKitAPI/Tests/WTF/StringToIntegerConversion.cpp: Added.

Contains tests moved and adapted from the files below so we don't
lose test coverage. We and and should add many more tests.

  • TestWebKitAPI/Tests/WTF/StringView.cpp: Removed tests for parseUInt16

and StringView::toIntStrict.

  • TestWebKitAPI/Tests/WTF/WTFString.cpp: Removed tests for String::toInt.
  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm: Use

parseInteger<uint64_t> instead of StringView::toUInt64Strict.

  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm: Ditto.
8:55 PM Changeset in webkit [277354] by Devin Rousso
  • 21 edits in trunk

[macCatalyst] should have CSS hover: hover and pointer: fine
https://bugs.webkit.org/show_bug.cgi?id=225672

Reviewed by Tim Horton.

Source/WebKit:

Test: iOSMouseSupport.MouseAlwaysConnected

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::isMousePrimaryPointingDevice): Added.
(WebKit::hasAccessoryMousePointingDevice): Added.
(WebKit::hasAccessoryStylusPointingDevice): Added.
(WebKit::WebPage::hoverSupportedByPrimaryPointingDevice const):
(WebKit::WebPage::hoverSupportedByAnyAvailablePointingDevice const):
(WebKit::WebPage::pointerCharacteristicsOfPrimaryPointingDevice const):
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const):
(WebKit::hasMouseDevice): Deleted.
macCatalyst should consider the mouse as the primary pointing device, just like macOS:

  • hover and any-hover should always be hover
  • pointer and any-pointer should always be fine (instead of only if an accessory mouse/stylus is connected)
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

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

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

  • UIProcess/ios/WebProcessProxyIOS.mm:

(WebKit::WebProcessProxy::platformInitialize):
(WebKit::WebProcessProxy::platformDestroy):
(WebKit::WebProcessProxy::notifyHasMouseDeviceChanged): Deleted.

  • UIProcess/ios/WKMouseDeviceObserver.h:
  • UIProcess/ios/WKMouseDeviceObserver.mm:
  • Shared/WebProcessCreationParameters.h:
  • Shared/WebProcessCreationParameters.cpp:

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

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

(WebKit::WebProcess::initializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):
Clean up macro usage to avoid unnecessary work on macCatalyst.
Drive-by: Move non-platform code to non-platform files.

Source/WTF:

  • wtf/PlatformHave.h:

Add HAVE_MOUSE_DEVICE_OBSERVATION and HAVE_STYLUS_DEVICE_OBSERVATION to make callsites
clearer instead of having a somewhat unrelated connection to HAVE_UIKIT_WITH_MOUSE_SUPPORT
and HAVE_PENCILKIT_TEXT_INPUT (not to mention both of them are PLATFORM(MACCATALYST)
which isn't desirable since macCatalyst should consider the mouse as the primary pointing
device, just like macOS).

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/iOSMouseSupport.mm:

(TEST.iOSMouseSupport.MouseAlwaysConnected):

  • TestWebKitAPI/Tests/WebKitCocoa/iOSStylusSupport.mm:
8:49 PM Changeset in webkit [277353] by commit-queue@webkit.org
  • 17 edits
    1 delete in trunk

Unreviewed, reverting r277341.
https://bugs.webkit.org/show_bug.cgi?id=225685

Caused WK2 layout tests to exit with an exception

Reverted changeset:

"Add SPI to suspend / resume a WKWebView"
https://bugs.webkit.org/show_bug.cgi?id=225333
https://trac.webkit.org/changeset/277341

8:46 PM Changeset in webkit [277352] by Wenson Hsieh
  • 7 edits in trunk

[iOS] Mail compose web view doesn't scroll to reveal the selection in certain configurations
https://bugs.webkit.org/show_bug.cgi?id=225675
rdar://77095886

Reviewed by Tim Horton.

Source/WebKit:

Currently when computing input view bounds upon receiving UIKeyboardDidChangeFrameNotification, we attempt to
map the on-screen bounds of the keyboard to the window's coordinate space, and save the result in an ivar in
WKWebView, _inputViewBounds. The keyboard frame (which corresponds to UIKeyboardFrameEndUserInfoKey in the
notification's userInfo dictionary) is given to us in screen coordinates, and we currently pass this through
-convertRect:fromWindow:, with a nil UIWindow.

However, this results in mapping the rect from the coordinate space of the window's UIWindowScene rather than
the window screen. In shipping Mail on iOS, this doesn't matter because the window containing the compose web
view shares the same coordinate space as the screen. In some other configurations of MobileMail, however, the
compose web view appears inside its own UIWindow. This causes the above coordinate conversion logic to fail,
since we attempt to map a rect given to us in screen coordinates from the compose web view's window scene's
coordinate space, instead of the screen's coordinate space.

We fix this by using -convertRect:fromCoordinateSpace: instead, and explicitly pass in
self.window.screen.coordinateSpace.

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _updateScrollViewForTransaction:]):
(-[WKWebView _zoomToFocusRect:selectionRect:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):
(-[WKWebView _contentRectForUserInteraction]):
(-[WKWebView _updateVisibleContentRects]):
(-[WKWebView _keyboardChangedWithInfo:adjustScrollView:]):

Rename _inputViewBounds to _inputViewBoundsInWindow for clarity.

  • UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:
  • UIProcess/API/ios/WKWebViewTestingIOS.mm:

(-[WKWebView _inputViewBoundsInWindow]):
(-[WKWebView _inputViewBounds]): Deleted.

Tools:

Rename some testing SPI. See WebKit/ChangeLog for more information.

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::inputViewBounds const):

8:40 PM Changeset in webkit [277351] by Simon Fraser
  • 3 edits in trunk/Source/WebKit

Crash in DisplayLink::incrementFullSpeedRequestClientCount()
https://bugs.webkit.org/show_bug.cgi?id=225683
<rdar://77716330>

Reviewed by Tim Horton.

Crash data suggest that in WebPageProxy::updateWheelEventActivityAfterProcessSwap()
the connection might be null. Protect against that an an unset DisplayID, as we do
in wheelEventHysteresisUpdated().

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::updateWheelEventActivityAfterProcessSwap):

  • UIProcess/mac/DisplayLink.cpp:

(WebKit::DisplayLink::incrementFullSpeedRequestClientCount): Remove an extra semicolon.

7:45 PM Changeset in webkit [277350] by Simon Fraser
  • 10 edits in trunk/Source/WebCore

Display-frequency animations in ScrollController should be externally driven
https://bugs.webkit.org/show_bug.cgi?id=225663

Reviewed by Tim Horton.

Display-frequency animations (i.e. those driven by 1/60_s timers) should ultimately
be driven by Page::updateRendering(), since their output should be synchronized with
rendering updates.

As the first step, remove m_snapRubberbandTimer and m_scrollSnapTimer from
ScrollController and have it expose functions that tell its client to start and stop
the animation, and a per-frame callback. Give ScrollAnimator a 1/60_s timer
to drive this, temporarily.

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h:
  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::startAnimationCallback):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::stopAnimationCallback):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::scrollControllerAnimationTimerFired):

  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::ScrollAnimator):
(WebCore::ScrollAnimator::startAnimationCallback):
(WebCore::ScrollAnimator::stopAnimationCallback):
(WebCore::ScrollAnimator::scrollControllerAnimationTimerFired):

  • platform/ScrollAnimator.h:
  • platform/ScrollController.cpp:

(WebCore::ScrollController::animationCallback):
(WebCore::ScrollController::startOrStopAnimationCallbacks):
(WebCore::ScrollController::setIsAnimatingRubberBand):
(WebCore::ScrollController::setIsAnimatingScrollSnap):
(WebCore::ScrollController::updateScrollSnapAnimatingState):
(WebCore::ScrollController::updateRubberBandAnimatingState):

  • platform/ScrollController.h:
  • platform/ScrollSnapAnimatorState.cpp:

(WebCore::ScrollSnapAnimatorState::currentAnimatedScrollOffset const):

  • platform/ScrollSnapAnimatorState.h:
  • platform/mac/ScrollController.mm:

(WebCore::ScrollController::stopAllTimers):
(WebCore::ScrollController::handleWheelEvent):
(WebCore::ScrollController::updateRubberBandAnimatingState):
(WebCore::ScrollController::isScrollSnapInProgress const):
(WebCore::ScrollController::stopRubberbanding):
(WebCore::ScrollController::startRubberbandAnimation):
(WebCore::ScrollController::stopSnapRubberbandAnimation):
(WebCore::ScrollController::snapRubberBand):
(WebCore::ScrollController::isRubberBandInProgressInternal const):
(WebCore::ScrollController::scheduleStatelessScrollSnap):
(WebCore::ScrollController::statelessSnapTransitionTimerFired):
(WebCore::ScrollController::processWheelEventForScrollSnap):
(WebCore::ScrollController::startScrollSnapAnimation):
(WebCore::ScrollController::stopScrollSnapAnimation):
(WebCore::ScrollController::updateScrollSnapAnimatingState):
(WebCore::ScrollController::snapRubberBandTimerFired): Deleted.
(WebCore::ScrollController::startSnapRubberbandTimer): Deleted.
(WebCore::ScrollController::stopSnapRubberbandTimer): Deleted.
(WebCore::ScrollController::startScrollSnapTimer): Deleted.
(WebCore::ScrollController::stopScrollSnapTimer): Deleted.
(WebCore::ScrollController::scrollSnapTimerFired): Deleted.

6:25 PM Changeset in webkit [277349] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit

Fix the CGDisplayListImageBufferBackend build
https://bugs.webkit.org/show_bug.cgi?id=225681

Unreviewed.

  • Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.cpp:

(WebKit::CGDisplayListImageBufferBackend::getPixelBuffer const):

  • Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.h:
6:16 PM Changeset in webkit [277348] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Unreviewed, reverting r277319.
https://bugs.webkit.org/show_bug.cgi?id=225680

Always enabling AsyncOverflowScrolling made many tests fail or
crash

Reverted changeset:

"[GTK] compositing/overflow/dynamic-composited-scrolling-
status.html is failing"
https://bugs.webkit.org/show_bug.cgi?id=225644
https://trac.webkit.org/changeset/277319

5:54 PM Changeset in webkit [277347] by ggaren@apple.com
  • 2 edits in trunk/Source/WebCore

Function.prototype.toString triggers page demand on Speedometer
https://bugs.webkit.org/show_bug.cgi?id=225678

Reviewed by Mark Lam.

Some JS libraries -- e.g. jQuery, Ember-Debug, Angular -- like to
toString() JS functions in order to enforce return type, argument type,
or deprecation invariants. This triggers pathological page demand if
we keep throwing away the underlying script string.

  • loader/cache/CachedResource.cpp:

(WebCore::deadDecodedDataDeletionIntervalForResourceType): Let's try 5s.

5:52 PM Changeset in webkit [277346] by ggaren@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

ConservativeRoots triggers page demand on Speedometer
https://bugs.webkit.org/show_bug.cgi?id=225676

Reviewed by Saam Barati.

Use a Vector instead of OSAllocator to avoid mmap() and page fault --
and, like, come on.

Bump default inlineCapacity up to 1024 because we seem to overflow
frequently.

  • heap/ConservativeRoots.cpp:

(JSC::ConservativeRoots::ConservativeRoots):
(JSC::ConservativeRoots::~ConservativeRoots):
(JSC::ConservativeRoots::genericAddPointer):
(JSC::ConservativeRoots::grow): Deleted.

  • heap/ConservativeRoots.h:

(JSC::ConservativeRoots::roots const):
(JSC::ConservativeRoots::size const): Deleted.

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::append):

  • heap/VerifierSlotVisitor.cpp:

(JSC::VerifierSlotVisitor::append):

5:46 PM Changeset in webkit [277345] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

[MSE] QuotaExceededError Exception not thrown even if the sum of totalTrackBufferSize and appendBuffer size exceeds maximumBufferSize.
https://bugs.webkit.org/show_bug.cgi?id=225630

Patch by Toshio Ogasawara <toshio.ogasawara@access-company.com> on 2021-05-11
Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-append-buffer-full-quota-exceeded-error.html

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::appendBufferInternal):

  • platform/graphics/SourceBufferPrivate.cpp:

(WebCore::SourceBufferPrivate::evictCodedFrames):

  • platform/graphics/SourceBufferPrivate.h:

LayoutTests:

  • media/media-source/media-source-append-buffer-full-quota-exceeded-error-expected.txt: Added.
  • media/media-source/media-source-append-buffer-full-quota-exceeded-error.html: Added.
5:05 PM Changeset in webkit [277344] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Remove xpc_connection_kill
https://bugs.webkit.org/show_bug.cgi?id=225602

Patch by Alex Christensen <achristensen@webkit.org> on 2021-05-11
Reviewed by Alexey Proskuryakov.

Source/WebKit:

  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::terminateWithReason):

Source/WTF:

  • wtf/PlatformHave.h:
4:41 PM Changeset in webkit [277343] by sihui_liu@apple.com
  • 8 edits in trunk

Use one VM per thread for IDB serialization work
https://bugs.webkit.org/show_bug.cgi?id=225658

Reviewed by Chris Dumez.

Source/WebCore:

The vm map in IDBSerializationContext uses sessionID as key instead of thread identifier. Normally IDB has one
thread per session (see WebIDBServer and CrossThreadTaskHandler), so we are using one vm per thread. With
r275799, we remove WebIDBServer more aggressively (when no web process is not using IDB) to make sure its thread
does not stay around, and WebIDBServer will be destroyed after it finishes scheduled tasks on the background
thread. Then, it's possible that while a WebIDBServer for some session is removed and finishing last tasks,
a new IDB request for the same session comes in and we create a new WebIDBServer for the session. In this case,
two threads ends up using the same VM.

VM is generally not designed to be used on multiple threads, otherwise we need to acquire lock for each
WTF::String operation to get correct AtomStringTable. So let's just make sure we are using one VM per thread by
making the map in IDBSerializationContext keyed by thread pointer.

New API test: IndexedDB.OneVMPerThread

  • Modules/indexeddb/server/IDBSerializationContext.cpp:

(WebCore::IDBServer::IDBSerializationContext::getOrCreateIDBSerializationContext):
(WebCore::IDBServer::IDBSerializationContext::~IDBSerializationContext):
(WebCore::IDBServer::IDBSerializationContext::vm):
(WebCore::IDBServer::IDBSerializationContext::globalObject):
(WebCore::IDBServer::IDBSerializationContext::IDBSerializationContext):

  • Modules/indexeddb/server/IDBSerializationContext.h:
  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::MemoryIDBBackingStore):

  • Modules/indexeddb/server/MemoryObjectStore.cpp:

(WebCore::IDBServer::MemoryObjectStore::MemoryObjectStore):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::SQLiteIDBBackingStore):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBDatabaseProcessKill.mm:

(-[DatabaseProcessKillMessageHandler userContentController:didReceiveScriptMessage:]):
(TEST):

4:30 PM Changeset in webkit [277342] by Russell Epstein
  • 8 edits in branches/safari-612.1.12-branch/Source

Versioning.

WebKit-7612.1.12.6

2:39 PM Changeset in webkit [277341] by Chris Dumez
  • 17 edits
    1 add in trunk

Add SPI to suspend / resume a WKWebView
https://bugs.webkit.org/show_bug.cgi?id=225333
<rdar://77462543>

Reviewed by Geoffrey Garen.

Source/WebCore:

Add new function to BackForwardCache to suspend a page and return a CachedPage
instead of requiring a HistoryItem and storing the CachedPage on that history
item. This is useful when we want to suspend the page in-place and do not want
to require a history item (or a navigation).

  • Headers.cmake:
  • history/BackForwardCache.cpp:

(WebCore::BackForwardCache::trySuspendPage):
(WebCore::BackForwardCache::addIfCacheable):
(WebCore::BackForwardCache::suspendPage):

  • history/BackForwardCache.h:
  • history/CachedPage.h:

Source/WebKit:

Add SPI to suspend / resume a WKWebView. This suspends the page as if it was in
the back/forward cache but the suspension happens in-place, no need to navigate.
The suspended page is also not part of the Back/Forward cache so its cap on the
number of suspended pages does not apply here.

Most of WKWebView's API / SPI will throw an exception when called on a suspended
view (The WKPageRefAPI will RELEASE_ASSERT()). Some of the basic API will stay
functional (URL, isLoading, title, ...). It is also safe to deallocate / close
a suspended WKWebView.

  • UIProcess/API/C/WKPage.cpp:

(crashIfPageIsSuspended):
(WKPageLoadURL):
(WKPageLoadURLWithShouldOpenExternalURLsPolicy):
(WKPageLoadURLWithUserData):
(WKPageLoadURLRequest):
(WKPageLoadURLRequestWithUserData):
(WKPageLoadFile):
(WKPageLoadFileWithUserData):
(WKPageLoadData):
(WKPageLoadDataWithUserData):
(WKPageLoadHTMLString):
(WKPageLoadHTMLStringWithUserData):
(WKPageLoadAlternateHTMLString):
(WKPageLoadAlternateHTMLStringWithUserData):
(WKPageLoadPlainTextString):
(WKPageLoadPlainTextStringWithUserData):
(WKPageLoadWebArchiveData):
(WKPageLoadWebArchiveDataWithUserData):
(WKPageStopLoading):
(WKPageReload):
(WKPageReloadWithoutContentBlockers):
(WKPageReloadFromOrigin):
(WKPageReloadExpiredOnly):
(WKPageTryClose):
(WKPageClose):
(WKPageGoForward):
(WKPageGoBack):
(WKPageGoToBackForwardListItem):
(WKPageTryRestoreScrollPosition):
(WKPageUpdateWebsitePolicies):
(WKPageSetApplicationNameForUserAgent):
(WKPageSetCustomUserAgent):
(WKPageSetCustomTextEncodingName):
(WKPageTerminate):
(WKPageRestoreFromSessionState):
(WKPageRestoreFromSessionStateWithoutNavigation):
(WKPageSetCustomBackingScaleFactor):
(WKPageSetTextZoomFactor):
(WKPageSetPageZoomFactor):
(WKPageSetPageAndTextZoomFactors):
(WKPageSetScaleFactor):
(WKPageSetUseFixedLayout):
(WKPageSetFixedLayoutSize):
(WKPageListenForLayoutMilestones):
(WKPageSetSuppressScrollbarAnimations):
(WKPageSetRubberBandsAtLeft):
(WKPageSetRubberBandsAtRight):
(WKPageSetRubberBandsAtTop):
(WKPageSetRubberBandsAtBottom):
(WKPageSetEnableVerticalRubberBanding):
(WKPageSetEnableHorizontalRubberBanding):
(WKPageSetBackgroundExtendsBeyondPage):
(WKPageSetPaginationMode):
(WKPageSetPaginationBehavesLikeColumns):
(WKPageSetPageLength):
(WKPageSetGapBetweenPages):
(WKPageSetPaginationLineGridEnabled):
(WKPageSetMaintainsInactiveSelection):
(WKPageCenterSelectionInVisibleArea):
(WKPageFindStringMatches):
(WKPageGetImageForFindMatch):
(WKPageSelectFindMatch):
(WKPageFindString):
(WKPageHideFindUI):
(WKPageCountStringMatches):
(WKPageSetPageContextMenuClient):
(WKPageSetPageFindClient):
(WKPageSetPageFindMatchesClient):
(WKPageSetPageInjectedBundleClient):
(WKPageSetPageFormClient):
(WKPageSetPageLoaderClient):
(WKPageSetPagePolicyClient):
(WKPageSetPageUIClient):
(WKPageSetPageNavigationClient):
(WKPageSetPageStateClient):
(WKPageRunJavaScriptInMainFrame):
(WKPageRunJavaScriptInMainFrame_b):
(WKPageRenderTreeExternalRepresentation):
(WKPageGetSourceForFrame):
(WKPageGetContentsAsString):
(WKPageGetBytecodeProfile):
(WKPageGetSamplingProfilerOutput):
(WKPageGetSelectionAsWebArchiveData):
(WKPageGetContentsAsMHTMLData):
(WKPageForceRepaint):
(WKPageValidateCommand):
(WKPageExecuteCommand):
(WKPageComputePagesForPrinting):
(WKPageDrawPagesToPDF):
(WKPageBeginPrinting):
(WKPageEndPrinting):
(WKPageSetControlledByAutomation):
(WKPageSetAllowsRemoteInspection):
(WKPageSetMediaVolume):
(WKPageSetMuted):
(WKPageSetMediaCaptureEnabled):
(WKPageDidAllowPointerLock):
(WKPageClearUserMediaState):
(WKPageDidDenyPointerLock):
(WKPageSetMayStartMediaWhenInWindow):
(WKPageSelectContextMenuItem):
(WKPageSetScrollPinningBehavior):
(WKPageSetAddsVisitedLinks):
(WKPageClearWheelEventTestMonitor):
(WKPageCallAfterNextPresentationUpdate):
(WKPageSetIgnoresViewportScaleLimits):
(WKPageGetApplicationManifest_b):
(WKPageDumpPrivateClickMeasurement):
(WKPageClearPrivateClickMeasurement):
(WKPageSetPrivateClickMeasurementOverrideTimerForTesting):
(WKPageMarkAttributedPrivateClickMeasurementsAsExpiredForTesting):
(WKPageSimulateResourceLoadStatisticsSessionRestart):
(WKPageSetPrivateClickMeasurementTokenPublicKeyURLForTesting):
(WKPageSetPrivateClickMeasurementTokenSignatureURLForTesting):
(WKPageSetPrivateClickMeasurementAttributionReportURLsForTesting):
(WKPageMarkPrivateClickMeasurementsAsExpiredForTesting):
(WKPageSetPCMFraudPreventionValuesForTesting):
(WKPageSetMockCameraOrientation):
(WKPageLoadedSubresourceDomains):
(WKPageClearLoadedSubresourceDomains):
(WKPageSetMediaCaptureReportingDelayForTesting):
(WKPageDispatchActivityStateUpdateForTesting):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView loadRequest:]):
(-[WKWebView loadFileURL:allowingReadAccessToURL:]):
(-[WKWebView loadHTMLString:baseURL:]):
(-[WKWebView loadData:MIMEType:characterEncodingName:baseURL:]):
(-[WKWebView startDownloadUsingRequest:completionHandler:]):
(-[WKWebView resumeDownloadFromResumeData:completionHandler:]):
(-[WKWebView goToBackForwardListItem:]):
(-[WKWebView goBack]):
(-[WKWebView goForward]):
(-[WKWebView reload]):
(-[WKWebView reloadFromOrigin]):
(-[WKWebView stopLoading]):
(-[WKWebView evaluateJavaScript:completionHandler:]):
(-[WKWebView evaluateJavaScript:inFrame:inContentWorld:completionHandler:]):
(-[WKWebView callAsyncJavaScript:arguments:inFrame:inContentWorld:completionHandler:]):
(-[WKWebView closeAllMediaPresentationsWithCompletionHandler:]):
(-[WKWebView pauseAllMediaPlaybackWithCompletionHandler:]):
(-[WKWebView setAllMediaPlaybackSuspended:completionHandler:]):
(-[WKWebView requestMediaPlaybackStateWithCompletionHandler:]):
(-[WKWebView setMicrophoneCaptureState:completionHandler:]):
(-[WKWebView setCameraCaptureState:completionHandler:]):
(-[WKWebView _evaluateJavaScript:asAsyncFunction:withSourceURL:withArguments:forceUserGesture:inFrame:inWorld:completionHandler:]):
(-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):
(-[WKWebView setAllowsBackForwardNavigationGestures:]):
(-[WKWebView setCustomUserAgent:]):
(-[WKWebView setAllowsLinkPreview:]):
(-[WKWebView setPageZoom:]):
(-[WKWebView findString:withConfiguration:completionHandler:]):
(-[WKWebView setMediaType:]):
(-[WKWebView setInteractionState:]):
(-[WKWebView setAllowsMagnification:]):
(-[WKWebView setMagnification:centeredAtPoint:]):
(-[WKWebView setMagnification:]):
(-[WKWebView printOperationWithPrintInfo:]):
(-[WKWebView createPDFWithConfiguration:completionHandler:]):
(-[WKWebView createWebArchiveDataWithCompletionHandler:]):
(-[WKWebView loadSimulatedRequest:response:responseData:]):
(-[WKWebView loadSimulatedRequest:withResponse:responseData:]):
(-[WKWebView loadSimulatedRequest:responseHTMLString:]):
(-[WKWebView loadSimulatedRequest:withResponseHTMLString:]):
(-[WKWebView loadFileRequest:allowingReadAccessToURL:]):
(-[WKWebView _toggleStrikeThrough:]):
(-[WKWebView _increaseListLevel:]):
(-[WKWebView _decreaseListLevel:]):
(-[WKWebView _changeListType:]):
(-[WKWebView _setViewportSizeForCSSViewportUnits:]):
(-[WKWebView _didEnableBrowserExtensions:]):
(-[WKWebView _didDisableBrowserExtensions:]):
(-[WKWebView _setEditable:]):
(-[WKWebView _executeEditCommand:argument:completion:]):
(-[WKWebView _startTextManipulationsWithConfiguration:completion:]):
(-[WKWebView _completeTextManipulation:completion:]):
(-[WKWebView _completeTextManipulationForItems:completion:]):
(-[WKWebView _takeFindStringFromSelection:]):
(-[WKWebView _updateMediaPlaybackControlsManager]):
(-[WKWebView _togglePictureInPicture]):
(-[WKWebView _closeAllMediaPresentations]):
(-[WKWebView _stopMediaCapture]):
(-[WKWebView _stopAllMediaPlayback]):
(-[WKWebView _suspendAllMediaPlayback]):
(-[WKWebView _resumeAllMediaPlayback]):
(-[WKWebView _restoreAppHighlights:]):
(-[WKWebView _restoreAndScrollToAppHighlight:]):
(-[WKWebView _addAppHighlight]):
(-[WKWebView _loadAlternateHTMLString:baseURL:forUnreachableURL:]):
(-[WKWebView _loadData:MIMEType:characterEncodingName:baseURL:userData:]):
(-[WKWebView _loadRequest:shouldOpenExternalURLs:]):
(-[WKWebView _loadRequest:shouldOpenExternalURLsPolicy:]):
(-[WKWebView _grantAccessToAssetServices]):
(-[WKWebView _revokeAccessToAssetServices]):
(-[WKWebView _switchFromStaticFontRegistryToUserFontRegistry]):
(-[WKWebView _appBoundNavigationDataForDomain:completionHandler:]):
(-[WKWebView _suspendPage:]):
(-[WKWebView _resumePage:]):
(-[WKWebView _setApplicationNameForUserAgent:]):
(-[WKWebView _killWebContentProcess]):
(-[WKWebView _reloadWithoutContentBlockers]):
(-[WKWebView _reloadExpiredOnly]):
(-[WKWebView _killWebContentProcessAndResetState]):
(-[WKWebView _takePDFSnapshotWithConfiguration:completionHandler:]):
(-[WKWebView _getPDFFirstPageSizeInFrame:completionHandler:]):
(-[WKWebView _restoreFromSessionStateData:]):
(-[WKWebView _restoreSessionState:andNavigate:]):
(-[WKWebView _close]):
(-[WKWebView _tryClose]):
(-[WKWebView _insertAttachmentWithFilename:contentType:data:options:completion:]):
(-[WKWebView _insertAttachmentWithFileWrapper:contentType:options:completion:]):
(-[WKWebView _insertAttachmentWithFileWrapper:contentType:completion:]):
(-[WKWebView _attachmentForIdentifier:]):
(-[WKWebView _simulateDeviceOrientationChangeWithAlpha:beta:gamma:]):
(-[WKWebView _showSafeBrowsingWarningWithTitle:warning:details:completionHandler:]):
(-[WKWebView _showSafeBrowsingWarningWithURL:title:warning:details:completionHandler:]):
(-[WKWebView _showSafeBrowsingWarningWithURL:title:warning:detailsWithLinks:completionHandler:]):
(-[WKWebView _isJITEnabled:]):
(-[WKWebView _evaluateJavaScriptWithoutUserGesture:completionHandler:]):
(-[WKWebView _callAsyncJavaScript:arguments:inFrame:inContentWorld:completionHandler:]):
(-[WKWebView _evaluateJavaScript:inFrame:inContentWorld:completionHandler:]):
(-[WKWebView _evaluateJavaScript:withSourceURL:inFrame:inContentWorld:completionHandler:]):
(-[WKWebView _updateWebpagePreferences:]):
(-[WKWebView _notifyUserScripts]):
(-[WKWebView _deferrableUserScriptsNeedNotification]):
(-[WKWebView _setAllowsRemoteInspection:]):
(-[WKWebView _setRemoteInspectionNameOverride:]):
(-[WKWebView _setAddsVisitedLinks:]):
(-[WKWebView _getMainResourceDataWithCompletionHandler:]):
(-[WKWebView _getWebArchiveDataWithCompletionHandler:]):
(-[WKWebView _getContentsAsStringWithCompletionHandler:]):
(-[WKWebView _getContentsOfAllFramesAsStringWithCompletionHandler:]):
(-[WKWebView _getContentsAsAttributedStringWithCompletionHandler:]):
(-[WKWebView _getApplicationManifestWithCompletionHandler:]):
(-[WKWebView _setPaginationMode:]):
(-[WKWebView _setPaginationBehavesLikeColumns:]):
(-[WKWebView _setPageLength:]):
(-[WKWebView _setGapBetweenPages:]):
(-[WKWebView _setPaginationLineGridEnabled:]):
(-[WKWebView _setTextZoomFactor:]):
(-[WKWebView _setPageZoomFactor:]):
(-[WKWebView _countStringMatches:options:maxCount:]):
(-[WKWebView _findString:options:maxCount:]):
(-[WKWebView _hideFindUI]):
(-[WKWebView _saveBackForwardSnapshotForItem:]):
(-[WKWebView _clearServiceWorkerEntitlementOverride:]):
(-[WKWebView _preconnectToServer:]):
(-[WKWebView _setCanUseCredentialStorage:]):
(-[WKWebView _setLayoutMode:]):
(-[WKWebView _setFixedLayoutSize:]):
(-[WKWebView _setBackgroundExtendsBeyondPage:]):
(-[WKWebView _setViewScale:]):
(-[WKWebView _setCORSDisablingPatterns:]):
(-[WKWebView _getProcessDisplayNameWithCompletionHandler:]):
(-[WKWebView _setMinimumEffectiveDeviceWidth:]):
(-[WKWebView _grantAccessToPreferenceService]):
(-[WKWebView _setScrollPerformanceDataCollectionEnabled:]):
(-[WKWebView _setAllowsMediaDocumentInlinePlayback:]):
(-[WKWebView _setMediaCaptureEnabled:]):
(-[WKWebView _setPageMuted:]):
(-[WKWebView _removeDataDetectedLinks:]):
(-[WKWebView _doAfterNextPresentationUpdate:]):
(-[WKWebView _doAfterNextPresentationUpdateWithoutWaitingForPainting:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::handleTouchEvent):
(WebKit::WebPageProxy::resumeActiveDOMObjectsAndAnimations):
(WebKit::WebPageProxy::suspendActiveDOMObjectsAndAnimations):
(WebKit::WebPageProxy::suspend):
(WebKit::WebPageProxy::resume):
(WebKit::WebPageProxy::requestMediaPlaybackState):
(WebKit::WebPageProxy::resetStateAfterProcessExited):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::suspend):
(WebKit::WebPage::resume):

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

Tools:

Add API test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSuspension.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/postMessage-regularly.html: Added.
2:22 PM Changeset in webkit [277340] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur wk2 arm64 ] editing/selection/move-by-character-brute-force.html (layout-test) is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225664

Unreviewed test gardening.

Updating expectations to Pass Timeout for BigSur wk2 arm64.

  • platform/mac-wk2/TestExpectations:
1:46 PM Changeset in webkit [277339] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur Release wk2 arm64 ] http/tests/appcache/fail-on-update-2.html (layout-test) is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225665

Unreviewed test gardening.

Updating test expectations to Pass Timeout for BigSur Release wk2 arm64.

  • platform/mac-wk2/TestExpectations:
1:45 PM Changeset in webkit [277338] by Ben Nham
  • 2 edits in trunk/Source/WebKit

Failing sandbox check for media permissions should not generate a violation report
https://bugs.webkit.org/show_bug.cgi?id=225662

Reviewed by Geoffrey Garen.

We sandbox_check the UIProcess for camera and video permissions. But if the process doesn't
have those permissions, sandbox_check fails and generates an expensive violation report that
task_suspends the process. We need to suppress the reporting with SANDBOX_CHECK_NO_REPORT.

  • UIProcess/Cocoa/MediaPermissionUtilities.mm:

(WebKit::checkSandboxRequirementForType):

12:48 PM Changeset in webkit [277337] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur wk2 arm64 ] http/tests/cache/disk-cache/redirect-chain-limits.html (layout-test) is a flaky timeout
Nhttps://bugs.webkit.org/show_bug.cgi?id=225666

Unreviewed test gardening.

Updating expectations to Pass timeout.

  • platform/mac-wk2/TestExpectations:
12:47 PM Changeset in webkit [277336] by commit-queue@webkit.org
  • 20 edits in trunk

Add SPI to restrict networking to a set of hosts
https://bugs.webkit.org/show_bug.cgi?id=225426
<rdar://77571521>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-05-11
Reviewed by Tim Horton.

Source/WebCore:

In r259392 I added SPI to turn network access on and off, but a client needs finer grained control.
This uses the same infrastructure to add a set of hosts to allow. Setting it to nil (the default) allows all hosts,
but setting it to an empty set allows no network access. This accomplishes the same ability as the old SPI, so I'm deprecating it
with this as a replacement. The new ability to specify a finite number of hosts to allow creates a limited WKWebView.

  • Modules/websockets/ThreadableWebSocketChannel.cpp:

(WebCore::ThreadableWebSocketChannel::validateURL):

  • loader/ResourceLoadNotifier.cpp:

(WebCore::ResourceLoadNotifier::dispatchWillSendRequest):

  • page/Page.cpp:

(WebCore::Page::allowsLoadFromURL const):

  • page/Page.h:

(WebCore::Page::loadsFromNetwork const): Deleted.

  • page/PageConfiguration.h:

Source/WebKit:

  • Shared/WebPageCreationParameters.cpp:

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

  • Shared/WebPageCreationParameters.h:
  • UIProcess/API/APIPageConfiguration.cpp:

(API::PageConfiguration::copy const):

  • UIProcess/API/APIPageConfiguration.h:

(API::PageConfiguration::allowedNetworkHosts const):
(API::PageConfiguration::setAllowedNetworkHosts):
(API::PageConfiguration::loadsFromNetwork const): Deleted.
(API::PageConfiguration::setLoadsFromNetwork): Deleted.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _setLoadsFromNetwork:]):
(-[WKWebViewConfiguration _loadsFromNetwork]):
(-[WKWebViewConfiguration _setAllowedNetworkHosts:]):
(-[WKWebViewConfiguration _allowedNetworkHosts]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_lastNavigationWasAppBound):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ContentRuleListNotification.mm:

(TEST):
(webSocketAcceptValue): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
  • TestWebKitAPI/cocoa/HTTPServer.h:

(TestWebKitAPI::Connection::webSocketHandshake):

  • TestWebKitAPI/cocoa/HTTPServer.mm:

(TestWebKitAPI::Connection::webSocketHandshake):

12:02 PM Changeset in webkit [277335] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

REGRESSION (r277071): imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries.html is failing
https://bugs.webkit.org/show_bug.cgi?id=225469

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations: Mark the test as failing for iOS, too.
11:22 AM Changeset in webkit [277334] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[BigSur Wk2 Arm64] http/tests/privateClickMeasurement/store-private-click-measurement-with-source-nonce.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=224783

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:05 AM Changeset in webkit [277333] by Robert Jenner
  • 2 edits in trunk/LayoutTests

js/dom/Promise-reject-large-string.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=225258

Unreviewed test gardening.

Updating expectation to Pass Failure for arm64 only.

  • platform/mac/TestExpectations:
11:01 AM Changeset in webkit [277332] by youenn@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Improve usrsctp restart handling
https://bugs.webkit.org/show_bug.cgi?id=225638
<rdar://77582953>

Reviewed by Alex Christensen.

  • Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_input.c:

(sctp_process_cookie_existing):

11:00 AM Changeset in webkit [277331] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

[macOS] Extend access to 'com.apple.print.normalizerd' when canvas drawing is done in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=225623
<rdar://problem/77354349>

Reviewed by Per Arne Vollan.

We need to dynamically extend access to 'com.apple.print.normalizerd' when the GPU Process is not handling canvas drawing.
WebKit needs this access to properly draw EPS images.

Tested by fast/images/eps-as-image.html

  • UIProcess/WebPageProxy.cpp:

(WebKit::gpuMachServices): Add 'com.apple.print.normalizerd' to set of required services.

  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in: Remove 'com.apple.print.normalizerd' since it is

not possible to use from the Web Authentication process.

  • WebProcess/com.apple.WebProcess.sb.in: Expect the extension to be dynamically extended on all releases.
10:46 AM Changeset in webkit [277330] by Megan Gardner
  • 6 edits
    2 copies in trunk

Factor out find bounce layer
https://bugs.webkit.org/show_bug.cgi?id=225557

Reviewed by Tim Horton.

Factor out the text indicator bounce layer in preparation of making this
compatable with iOS.

No behavior change.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/mac/TextIndicatorWindow.h:
  • page/mac/TextIndicatorWindow.mm:

(WebCore::TextIndicatorWindow::setAnimationProgress):
(WebCore::TextIndicatorWindow::clearTextIndicator):
(WebCore::TextIndicatorWindow::setTextIndicator):
(WebCore::TextIndicatorWindow::closeWindow):
(WebCore::TextIndicatorWindow::startFadeOut):
(indicatorWantsBounce): Deleted.
(indicatorWantsContentCrossfade): Deleted.
(indicatorWantsFadeIn): Deleted.
(indicatorWantsManualAnimation): Deleted.
(-[WebTextIndicatorView initWithFrame:textIndicator:margin:offset:]): Deleted.
(createBounceAnimation): Deleted.
(createContentCrossfadeAnimation): Deleted.
(createShadowFadeAnimation): Deleted.
(createFadeInAnimation): Deleted.
(-[WebTextIndicatorView _animationDuration]): Deleted.
(-[WebTextIndicatorView hasCompletedAnimation]): Deleted.
(-[WebTextIndicatorView present]): Deleted.
(-[WebTextIndicatorView hideWithCompletionHandler:]): Deleted.
(-[WebTextIndicatorView setAnimationProgress:]): Deleted.
(-[WebTextIndicatorView isFlipped]): Deleted.

10:45 AM Changeset in webkit [277329] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Don't allow :visited link style in subtrees that use mix-blend-mode
https://bugs.webkit.org/show_bug.cgi?id=225446
rdar://65686091

Unreviewed build fix.

  • rendering/style/RenderStyle.h:
10:16 AM Changeset in webkit [277328] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Unreviewed, reverting r277322.
https://bugs.webkit.org/show_bug.cgi?id=225657

Causing build failure

Reverted changeset:

"Adopt CoreMedia SPI to identify audio-only playback for MSE
clients"
https://bugs.webkit.org/show_bug.cgi?id=225647
https://trac.webkit.org/changeset/277322

10:14 AM Changeset in webkit [277327] by eric.carlson@apple.com
  • 3 edits in trunk/Source/WebKit

[Cocoa] Add _STAttributionDisplayName to macOS and iOS GPUProcess Info.plist
https://bugs.webkit.org/show_bug.cgi?id=225626
rdar://77019240

Reviewed by Youenn Fablet.

  • GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-OSX.plist:
  • GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-iOS.plist:
8:52 AM Changeset in webkit [277326] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Tune number of threads for AS
https://bugs.webkit.org/show_bug.cgi?id=225635

Reviewed by Mark Lam.

Using 4 GC markers (which really means 3 parallel GC worker threads -- the mutator thread is
the 4th), 2 DFG threads, and 2 FTL threads seems to be more optimal than going off ncpu.

~1% JetStream2 speed-up, ~1% Speedometer2 speed-up.

  • runtime/Options.cpp:

(JSC::overrideDefaults):

8:33 AM Changeset in webkit [277325] by Alan Bujtas
  • 6 edits
    2 adds in trunk

REGRESSION(r275515): wpt/quirks/blocks-ignore-line-height.html
https://bugs.webkit.org/show_bug.cgi?id=225591
<rdar://problem/77766308>

Reviewed by Antti Koivisto.

Source/WebCore:

Replace the generic line height quirk with a list-item specific one.
The original quirk was added to cover fast/lists/list-item-line-height.html but it looks like
it only needs a list-item specific quirk. This is copied from legacy line layout (see InlineFlowBox c'tor).

Test: fast/inline/line-height-in-non-standards-mode.html

  • layout/formattingContexts/inline/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::inlineLevelBoxAffectsLineBox const):

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::rootBoxStyle):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::isOriginalDisplayListItemType const):
(WebCore::RenderStyle::isDisplayListItemType):

LayoutTests:

  • fast/inline/incorrect-middle-baseline-alignment-with-line-height-expected.html: progression.
  • fast/inline/line-height-in-non-standards-mode-expected.html: Added.
  • fast/inline/line-height-in-non-standards-mode.html: Added.
7:55 AM Changeset in webkit [277324] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebKit

[WebXR] Return a default layer handle in XRDeviceProxy::createLayerProjection
https://bugs.webkit.org/show_bug.cgi?id=225631

Patch by Ada Chan <ada.chan@apple.com> on 2021-05-11
Reviewed by Dean Jackson.

  • Shared/Cocoa/XRDeviceProxy.h:
  • Shared/Cocoa/XRDeviceProxy.mm:

(WebKit::XRDeviceProxy::createLayerProjection):

  • UIProcess/Cocoa/PlatformXRCoordinator.h:

(WebKit::PlatformXRCoordinator::defaultLayerHandle):

  • WebProcess/cocoa/PlatformXRSystemProxy.h:
  • WebProcess/cocoa/PlatformXRSystemProxy.mm:

(WebKit::PlatformXRSystemProxy::createLayerProjection):

6:53 AM Changeset in webkit [277323] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Disable IFC when inline level box has box shadow
https://bugs.webkit.org/show_bug.cgi?id=225634

Reviewed by Darin Adler.

Needs painting support.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForChild):

6:42 AM Changeset in webkit [277322] by Jean-Yves Avenard
  • 4 edits in trunk/Source/WebCore

Adopt CoreMedia SPI to identify audio-only playback for MSE clients
https://bugs.webkit.org/show_bug.cgi?id=225647
rdar://76138365

Reviewed by Youenn Fablet.

Source/WebCore:

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: tells whether the AVSBAR is attached to an <audio> or <video> element.

Source/WebCore/PAL:

  • pal/spi/cocoa/AVFoundationSPI.h: Add forward declaration for new methods while this isn't in SDK yet.
5:49 AM Changeset in webkit [277321] by cathiechen
  • 37 edits in trunk

[CSS contain] Support contain:size
https://bugs.webkit.org/show_bug.cgi?id=223570

Reviewed by Alan Bujtas.

LayoutTests/imported/w3c:

<canvas> and <video> don't support computing aspect ratio from width and height attributes yet,
so the heights are zero when they are with "contain: size".

  • web-platform-tests/css/css-contain/contain-size-grid-003-expected.txt:
  • web-platform-tests/css/css-contain/contain-size-grid-004-expected.txt:
  • web-platform-tests/css/css-contain/contain-size-multicol-as-flex-item-expected.txt:
  • web-platform-tests/css/css-flexbox/flex-item-contains-strict-expected.txt:
  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/canvas-aspect-ratio-expected.txt:
  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio-expected.txt:

Source/WebCore:

This patch brings initial support of CSS contain:size according to [1].
It adds shouldApplySizeContainment() to indicate whether the object is a size containment box.
The intrinsic sizes of size containment box are determined as if it had no content.
So the implementation need to cooperate with the layout steps:

  • Computing logical width: Size containment boxes skip handling children while computing minLogicalWidth and maxLogicalWidth in computeIntrinsicLogicalWidths. So the logical width is not affected by children.
  • Layout children: The logical height is changed after layout all children.
  • Computing logical height: At the beginning, size containment boxes need to reset logical height to the empty content height if it is not renderGrid. So the logical height is not affected by children.

We also need to calculate the sizes according to the layout algorithms.

  • Grid layout: To calculate the minLogicalWidth and maxLogicalWidth for indefinite size RenderGrid. The widths are calculated by GridTrackSizingAlgorithm: m_minContentSize and m_maxContentSize which are the sum of m_baseSize/m_growthLimit of all GridTracks. The size containment RenderGrid skips handling content in resolveIntrinsicTrackSizes and the m_maxContentSize will be the sum of m_baseSize. The logical height is same to width, but after calculating RenderGrid's logical height, it needs to calculate the track sizes again, to make sure that they are distributed properly. We use computeTrackSizesForDefiniteSize(ForRows, trackBasedLogicalHeight) to recalculate it.
  • MultiColumn layout: According to the specification, size containment boxes should be monolithic, so we need to extend column height for overflow and positioned size containment boxes. m_spaceShortageForSizeContainment is added to indicate the shortage space that need to balance the column heights. adjustSizeContainmentChildForPagination() will calculate the shortage.

[1] https://www.w3.org/TR/css-contain-1/#containment-size

  • rendering/GridTrackSizingAlgorithm.cpp: Add isComputingSizeContainment to indicate if it is calculating sizes for indefinite size RenderGrid which is size containment.

(WebCore::GridTrackSizingAlgorithm::gridAreaBreadthForChild const):
(WebCore::GridTrackSizingAlgorithm::computeGridContainerIntrinsicSizes):

It skips resolveIntrinsicTrackSizes if isComputingSizeContainment, so growthLimit might be undefined,
if so, use track.baseSize() instead.

(WebCore::GridTrackSizingAlgorithm::resolveIntrinsicTrackSizes): Skip resolve the content if isComputingSizeContainment().
(WebCore::GridTrackSizingAlgorithm::advanceNextState): Added RowSizingExtraIterationForSizeContainment.
(WebCore::GridTrackSizingAlgorithm::isValidTransition const):
(WebCore::GridTrackSizingAlgorithm::run): Do not stretch the track sizes if isComputingSizeContainment().

  • rendering/GridTrackSizingAlgorithm.h:
  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObject): Calculate m_spaceShortageForSizeContainment for positioned size containment.
(WebCore::RenderBlock::computeIntrinsicLogicalWidths const): Skip computeBlockPreferredLogicalWidths if shouldApplySizeContainment.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::computeIntrinsicLogicalWidths const): Skip handling the children for size containment box.
(WebCore::RenderBlockFlow::adjustBlockChildForPagination): Calculate m_spaceShortageForSizeContainment for child.
(WebCore::RenderBlockFlow::adjustSizeContainmentChildForPagination): m_spaceShortageForSizeContainment = childOverflowHeight - remainingLogicalHeight.

  • rendering/RenderBlockFlow.h:
  • rendering/RenderBox.cpp:

(WebCore::RenderBox::updateLogicalHeight): Reset the logical height to empty content height for size containment box.
(WebCore::RenderBox::isUnsplittableForPagination const): Size containment box is unsplittable.

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::computeIntrinsicLogicalWidths const): Ditto.

  • rendering/RenderFileUploadControl.cpp:

(WebCore::RenderFileUploadControl::computeIntrinsicLogicalWidths const): Ditto.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::computeIntrinsicLogicalWidths const): Ditto.

  • rendering/RenderFragmentedFlow.h:
  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::layoutBlock): If it is size containment with infiniteSize, using trackBasedLogicalHeight
to compute track sizes again to make sure the height is distributed properly.
(WebCore::RenderGrid::computeEmptyTracksForAutoRepeat const): Collapse if shouldApplySizeContainment.

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::computeIntrinsicRatioInformation const): This is handled in RenderReplaced::computeIntrinsicRatioInformation instead.

  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::computeIntrinsicLogicalWidths const): The widths of size containment boxes are optionsSpacingHorizontal.

  • rendering/RenderMenuList.cpp:

(RenderMenuList::computeIntrinsicLogicalWidths const): The widths of size containment box are theme.minimumMenuListSize.

  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::updateSpaceShortageForSizeContainment): Set m_spaceShortageForSizeContainment.

  • rendering/RenderMultiColumnFlow.h:
  • rendering/RenderMultiColumnSet.cpp:

(WebCore::RenderMultiColumnSet::RenderMultiColumnSet):
(WebCore::RenderMultiColumnSet::calculateBalancedHeight const): Add m_spaceShortageForSizeContainment to the column height.
(WebCore::RenderMultiColumnSet::prepareForLayout): Reset m_spaceShortageForSizeContainment.

  • rendering/RenderMultiColumnSet.h:
  • rendering/RenderObject.cpp:

(WebCore::shouldApplySizeContainment): Check if the object is a size containment box.

  • rendering/RenderObject.h:

(WebCore::RenderObject::isAtomicInlineLevelBox const):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::computeAspectRatioInformationForRenderBox const):
(WebCore::RenderReplaced::computeIntrinsicRatioInformation const): Use the empty intrinsicSize.

  • rendering/RenderReplaced.h: The intrinsicSize of size containment is (0, 0).
  • rendering/RenderSlider.cpp:

(WebCore::RenderSlider::computeIntrinsicLogicalWidths const): Ditto.

  • rendering/RenderTextControl.cpp:

(WebCore::RenderTextControl::computeIntrinsicLogicalWidths const): Ditto.

  • rendering/RenderVideo.cpp:

(WebCore::RenderVideo::calculateIntrinsicSize): Ditto.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::containsSize const):

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::computeIntrinsicRatioInformation const): Handled in RenderReplaced::computeIntrinsicRatioInformation instead.

LayoutTests:

Update the test result for size containment. Added explanations for size containment tests
that depended on other features.

5:24 AM Changeset in webkit [277320] by Antti Koivisto
  • 6 edits
    2 adds in trunk

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.
3:39 AM Changeset in webkit [277319] by Diego Pino Garcia
  • 2 edits in trunk/Tools

[GTK] compositing/overflow/dynamic-composited-scrolling-status.html is failing
https://bugs.webkit.org/show_bug.cgi?id=225644

Reviewed by Carlos Garcia Campos.

The test started failing in r277258, which makes WebKitGTK to use
always async scrolling in AC mode. After this change, WebKitTestRunner
should always enable AsyncOverflowScrolling.

  • WebKitTestRunner/gtk/TestControllerGtk.cpp:

(WTR::TestController::platformSpecificFeatureDefaultsForTest const): Enable AsyncOverflowScrolling.

1:34 AM Changeset in webkit [277318] by Angelos Oikonomopoulos
  • 6 edits in trunk/Tools

[JSC] detect infrastructure failure for remote stress tests
https://bugs.webkit.org/show_bug.cgi?id=222601

Reviewed by Mark Lam.

run-jsc-stress-tests currently detects failures by the absence of
a failure file (that is generated by each failing test). This is
fragile to begin with, as it assumes that tests that fail to run
(e.g. because of an error in the runner script) are successful by
default.

However, the main motivation for this patch is to make execution
more robust when using remote hosts. Currently,
--gnu-parallel-runner will transparently reschedule jobs on a
different host when a remote host goes away. But detectFailures
expects to be able to connect to all hosts and fetch the failure
files, which fails if a remote host is still down when the run
finishes.

Instead, this patch changes the runners to always generate a status
file with the exit code. detectFailures then fetches all status
files from all hosts that are live on exit. Tests that failed to
run are explicitly accounted for as 'noreport' and are set to
ERROR in the final report.

  • Scripts/run-javascriptcore-tests:

(runJSCStressTests):

  • Scripts/run-jsc-stress-tests:
  • Scripts/webkitruby/jsc-stress-test-writer-default.rb:
Note: See TracTimeline for information about the timeline view.