⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Oct 22, 2020:

10:30 PM Changeset in webkit [268905] by Fujii Hironori
  • 9 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening

Updated expected.png for compositing and transforms tests.

  • platform/gtk/compositing/reflections/animation-inside-reflection-expected.png:
  • platform/gtk/compositing/webgl/webgl-background-color-expected.png:
  • platform/gtk/compositing/webgl/webgl-nonpremultiplied-blend-expected.png:
  • platform/gtk/transforms/3d/point-mapping/3d-point-mapping-2-expected.png:
  • platform/gtk/transforms/3d/point-mapping/3d-point-mapping-deep-expected.png:
  • platform/gtk/transforms/3d/point-mapping/3d-point-mapping-expected.png:
  • platform/gtk/transforms/3d/point-mapping/3d-point-mapping-origins-expected.png:
  • platform/gtk/transforms/3d/point-mapping/3d-point-mapping-preserve-3d-expected.png:
9:25 PM Changeset in webkit [268904] by commit-queue@webkit.org
  • 8 edits in trunk

Null check platformStrategies when making blob read stream for an NSURLRequest
https://bugs.webkit.org/show_bug.cgi?id=218112
<rdar://problem/70507102>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-10-22
Reviewed by Wenson Hsieh.

Source/WebCore:

r266187 made it possible to create a DataTransfer without a user event, which allows you to make a FileList,
which allows you to submit a multipart form without a user event that calls decidePolicyForNavigationAction
with a request that has a form data body that would make a blob upload stream. This causes us to use
platformStrategies in the UI process, which dereferences null. Since the blob only really exists in the network
process, just return a nil HTTPBody in such an exotic case instead of crashing.

Covered by an API test that would hit this crash. Web platform tests were insufficient because WebKitTestRunner does not
access WKNavigationAction.request, but Safari does.

  • platform/PlatformStrategies.cpp:

(WebCore::hasPlatformStrategies):

  • platform/PlatformStrategies.h:
  • platform/network/FormData.cpp:

(WebCore::FormData::containsBlobElement const):
(WebCore::FormData::resolveBlobReferences):

  • platform/network/FormData.h:
  • platform/network/cf/FormDataStreamCFNet.cpp:

(WebCore::createHTTPBodyCFReadStream):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/NavigationAction.mm:

(TEST):

8:49 PM Changeset in webkit [268903] by clopez@igalia.com
  • 4 edits in trunk/LayoutTests

[GTK][WPE] Gardening of failures happening on the bots.

Unreviewed gardening.

  • platform/glib/TestExpectations:
  • platform/gtk-wayland/TestExpectations:
  • platform/gtk/TestExpectations:
6:38 PM Changeset in webkit [268902] by Simon Fraser
  • 8 edits in trunk

REGRESSION(r268476): [ macOS ] tiled-drawing/scrolling/non-fast-region/handlers-in-iframes.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=218031
<rdar://problem/70532268>

Reviewed by Tim Horton.
Source/WebCore:

The test exercises wheel event regions in non-composited iframes. These were not reliably updated
when all wheel event handlers were removed, because Frame::invalidateContentEventRegionsIfNeeded()
early-returned if there were no handlers (but we need to update the regions in this case). Clean
up the logic here, and pass in a "reason" so we know that we should do work when there are no
handlers.

Document::wheelEventHandlersChanged() also needs to invalidate style, since flags in style
are used for wheel event region building, and it needs to call invalidateContentEventRegionsIfNeeded().

  • dom/Document.cpp:

(WebCore::Document::wheelEventHandlersChanged):
(WebCore::Document::didAddWheelEventHandler):
(WebCore::Document::didRemoveWheelEventHandler):

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

(WebCore::Frame::invalidateContentEventRegionsIfNeeded):

  • page/Frame.h:
  • page/FrameView.cpp:

(WebCore::FrameView::didLayout):

LayoutTests:

  • platform/mac/TestExpectations:
6:32 PM Changeset in webkit [268901] by Aditya Keerthi
  • 21 edits
    1 copy
    6 adds in trunk

[Contact Picker API] Add skeleton implementation of ContactsManager.select()
https://bugs.webkit.org/show_bug.cgi?id=218050
<rdar://problem/69862186>

Reviewed by Devin Rousso.

Source/WebCore:

ContactsManager.select() is the interface that allows clients to
present a contact picker. The method should immediately reject when
called from a subframe, when called outside user-interaction and when
called while a contact picker is already being displayed. Furthermore,
the promise is rejected when the supplied properties are empty or
invalid.

After the conditions necessary for the UI to be presented are verified,
ContactsManager.select() calls into the page's Chrome to display the
picker. The UI implementation on macOS and iOS will be done in
forthcoming patches.

See https://wicg.github.io/contact-api/spec/#contacts-manager-select
for more information.

Tests: contact-picker/contacts-select-invalid-properties-and-options.html

contact-picker/contacts-select-requires-user-gesture.html
contact-picker/contacts-select-subframe.html

  • Headers.cmake:
  • Modules/contact-picker/ContactInfo.h: Added encoder and decoder for IPC.

(WebCore::ContactInfo::encode const):
(WebCore::ContactInfo::decode):

  • Modules/contact-picker/ContactInfo.idl:
  • Modules/contact-picker/ContactProperty.h:
  • Modules/contact-picker/ContactsManager.cpp:

(WebCore::ContactsManager::frame const):
(WebCore::ContactsManager::select):

  • Modules/contact-picker/ContactsManager.h:
  • Modules/contact-picker/ContactsRequestData.h: Added.

ContactsRequestData encapsulates the information required to display a
picker UI. This includes the requested properties, the URL of the
presenting site, and whether multiple contact selection should be allowed.

(WebCore::ContactsRequestData::encode const):
(WebCore::ContactsRequestData::decode):

  • WebCore.xcodeproj/project.pbxproj:
  • page/Chrome.cpp:

(WebCore::Chrome::showContactPicker):

  • page/Chrome.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::showContactPicker):

Source/WebKit:

Added the necessary plumbing in order for the UIProcess to display a
contact picker after a call to ContactsManager.select() is made.

  • UIProcess/PageClient.h:

(WebKit::PageClient::showContactPicker):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::showContactPicker):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::showContactPicker):

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

(WebKit::WebPage::showContactPicker):

  • WebProcess/WebPage/WebPage.h:

LayoutTests:

Added tests for failure cases of the API. Note that success cases are
untested since no platforms currently display a picker UI, and the
specification states that the promise should fail in this case. The
success test cases will be added once the UI is implemented for iOS.

  • contact-picker/contacts-select-invalid-properties-and-options-expected.txt: Added.
  • contact-picker/contacts-select-invalid-properties-and-options.html: Added.
  • contact-picker/contacts-select-requires-user-gesture-expected.txt: Added.
  • contact-picker/contacts-select-requires-user-gesture.html: Added.
  • contact-picker/contacts-select-subframe-expected.txt: Added.
  • contact-picker/contacts-select-subframe.html: Added.
6:00 PM Changeset in webkit [268900] by Chris Dumez
  • 27 edits in trunk/Source/WebCore

Use WorkerOrWorkletGlobalScope in WebInspector code instead of WorkerGlobalScope
https://bugs.webkit.org/show_bug.cgi?id=218108

Reviewed by Darin Adler and Devin Rousso.

Use WorkerOrWorkletGlobalScope in WebInspector code instead of WorkerGlobalScope,
in preparation for Worklets support. This will allow us to reuse this code when
we add Web Inspector support for Worklets.

No new tests, no behavior change yet.

  • Modules/webaudio/AudioWorkletThread.cpp:

(WebCore::AudioWorkletThread::workerDebuggerProxy const):

  • Modules/webaudio/AudioWorkletThread.h:
  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::instrumentingAgentsForWebGPUDevice):
(WebCore::InspectorInstrumentation::consoleAgentEnabled):
(WebCore::InspectorInstrumentation::timelineAgentTracking):
(WebCore::InspectorInstrumentation::instrumentingAgentsFor):
(WebCore::InspectorInstrumentation::instrumentingAgentsForRenderer): Deleted.
(WebCore::InspectorInstrumentation::instrumentingAgentsForWorkerGlobalScope): Deleted.
(WebCore::InspectorInstrumentation::instrumentingAgentsForPage): Deleted.
(WebCore::InspectorInstrumentation::instrumentingAgentsForContext): Deleted.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didClearWindowObjectInWorld):
(WebCore::InspectorInstrumentation::isDebuggerPaused):
(WebCore::InspectorInstrumentation::identifierForNode):
(WebCore::InspectorInstrumentation::addEventListenersToNode):
(WebCore::InspectorInstrumentation::willInsertDOMNode):
(WebCore::InspectorInstrumentation::didInsertDOMNode):
(WebCore::InspectorInstrumentation::willRemoveDOMNode):
(WebCore::InspectorInstrumentation::didRemoveDOMNode):
(WebCore::InspectorInstrumentation::willModifyDOMAttr):
(WebCore::InspectorInstrumentation::didModifyDOMAttr):
(WebCore::InspectorInstrumentation::didRemoveDOMAttr):
(WebCore::InspectorInstrumentation::willInvalidateStyleAttr):
(WebCore::InspectorInstrumentation::didInvalidateStyleAttr):
(WebCore::InspectorInstrumentation::documentDetached):
(WebCore::InspectorInstrumentation::frameWindowDiscarded):
(WebCore::InspectorInstrumentation::mediaQueryResultChanged):
(WebCore::InspectorInstrumentation::activeStyleSheetsUpdated):
(WebCore::InspectorInstrumentation::didPushShadowRoot):
(WebCore::InspectorInstrumentation::willPopShadowRoot):
(WebCore::InspectorInstrumentation::didChangeCustomElementState):
(WebCore::InspectorInstrumentation::pseudoElementCreated):
(WebCore::InspectorInstrumentation::pseudoElementDestroyed):
(WebCore::InspectorInstrumentation::didCreateNamedFlow):
(WebCore::InspectorInstrumentation::willRemoveNamedFlow):
(WebCore::InspectorInstrumentation::didChangeRegionOverset):
(WebCore::InspectorInstrumentation::didRegisterNamedFlowContentElement):
(WebCore::InspectorInstrumentation::didUnregisterNamedFlowContentElement):
(WebCore::InspectorInstrumentation::mouseDidMoveOverElement):
(WebCore::InspectorInstrumentation::handleTouchEvent):
(WebCore::InspectorInstrumentation::handleMousePress):
(WebCore::InspectorInstrumentation::forcePseudoState):
(WebCore::InspectorInstrumentation::characterDataModified):
(WebCore::InspectorInstrumentation::willSendXMLHttpRequest):
(WebCore::InspectorInstrumentation::willFetch):
(WebCore::InspectorInstrumentation::didInstallTimer):
(WebCore::InspectorInstrumentation::didRemoveTimer):
(WebCore::InspectorInstrumentation::didAddEventListener):
(WebCore::InspectorInstrumentation::willRemoveEventListener):
(WebCore::InspectorInstrumentation::isEventListenerDisabled):
(WebCore::InspectorInstrumentation::willPostMessage):
(WebCore::InspectorInstrumentation::didPostMessage):
(WebCore::InspectorInstrumentation::didFailPostMessage):
(WebCore::InspectorInstrumentation::willDispatchPostMessage):
(WebCore::InspectorInstrumentation::didDispatchPostMessage):
(WebCore::InspectorInstrumentation::willCallFunction):
(WebCore::InspectorInstrumentation::didCallFunction):
(WebCore::InspectorInstrumentation::willDispatchEvent):
(WebCore::InspectorInstrumentation::didDispatchEvent):
(WebCore::InspectorInstrumentation::willHandleEvent):
(WebCore::InspectorInstrumentation::didHandleEvent):
(WebCore::InspectorInstrumentation::willDispatchEventOnWindow):
(WebCore::InspectorInstrumentation::didDispatchEventOnWindow):
(WebCore::InspectorInstrumentation::eventDidResetAfterDispatch):
(WebCore::InspectorInstrumentation::willEvaluateScript):
(WebCore::InspectorInstrumentation::didEvaluateScript):
(WebCore::InspectorInstrumentation::willFireTimer):
(WebCore::InspectorInstrumentation::didFireTimer):
(WebCore::InspectorInstrumentation::didInvalidateLayout):
(WebCore::InspectorInstrumentation::willLayout):
(WebCore::InspectorInstrumentation::didLayout):
(WebCore::InspectorInstrumentation::didScroll):
(WebCore::InspectorInstrumentation::willComposite):
(WebCore::InspectorInstrumentation::didComposite):
(WebCore::InspectorInstrumentation::willPaint):
(WebCore::InspectorInstrumentation::didPaint):
(WebCore::InspectorInstrumentation::willRecalculateStyle):
(WebCore::InspectorInstrumentation::didRecalculateStyle):
(WebCore::InspectorInstrumentation::didScheduleStyleRecalculation):
(WebCore::InspectorInstrumentation::applyUserAgentOverride):
(WebCore::InspectorInstrumentation::applyEmulatedMedia):
(WebCore::InspectorInstrumentation::willSendRequest):
(WebCore::InspectorInstrumentation::willSendRequestOfType):
(WebCore::InspectorInstrumentation::didLoadResourceFromMemoryCache):
(WebCore::InspectorInstrumentation::didReceiveResourceResponse):
(WebCore::InspectorInstrumentation::didReceiveThreadableLoaderResponse):
(WebCore::InspectorInstrumentation::didReceiveData):
(WebCore::InspectorInstrumentation::didFinishLoading):
(WebCore::InspectorInstrumentation::didFailLoading):
(WebCore::InspectorInstrumentation::continueAfterXFrameOptionsDenied):
(WebCore::InspectorInstrumentation::continueWithPolicyDownload):
(WebCore::InspectorInstrumentation::continueWithPolicyIgnore):
(WebCore::InspectorInstrumentation::willLoadXHRSynchronously):
(WebCore::InspectorInstrumentation::didLoadXHRSynchronously):
(WebCore::InspectorInstrumentation::scriptImported):
(WebCore::InspectorInstrumentation::scriptExecutionBlockedByCSP):
(WebCore::InspectorInstrumentation::didReceiveScriptResponse):
(WebCore::InspectorInstrumentation::domContentLoadedEventFired):
(WebCore::InspectorInstrumentation::loadEventFired):
(WebCore::InspectorInstrumentation::frameDetachedFromParent):
(WebCore::InspectorInstrumentation::didCommitLoad):
(WebCore::InspectorInstrumentation::frameDocumentUpdated):
(WebCore::InspectorInstrumentation::loaderDetachedFromFrame):
(WebCore::InspectorInstrumentation::frameStartedLoading):
(WebCore::InspectorInstrumentation::frameStoppedLoading):
(WebCore::InspectorInstrumentation::frameScheduledNavigation):
(WebCore::InspectorInstrumentation::frameClearedScheduledNavigation):
(WebCore::InspectorInstrumentation::defaultAppearanceDidChange):
(WebCore::InspectorInstrumentation::willIntercept):
(WebCore::InspectorInstrumentation::shouldInterceptRequest):
(WebCore::InspectorInstrumentation::shouldInterceptResponse):
(WebCore::InspectorInstrumentation::interceptRequest):
(WebCore::InspectorInstrumentation::interceptResponse):
(WebCore::InspectorInstrumentation::didOpenDatabase):
(WebCore::InspectorInstrumentation::didDispatchDOMStorageEvent):
(WebCore::InspectorInstrumentation::shouldWaitForDebuggerOnStart):
(WebCore::InspectorInstrumentation::workerStarted):
(WebCore::InspectorInstrumentation::workerTerminated):
(WebCore::InspectorInstrumentation::didCreateWebSocket):
(WebCore::InspectorInstrumentation::willSendWebSocketHandshakeRequest):
(WebCore::InspectorInstrumentation::didReceiveWebSocketHandshakeResponse):
(WebCore::InspectorInstrumentation::didCloseWebSocket):
(WebCore::InspectorInstrumentation::didReceiveWebSocketFrame):
(WebCore::InspectorInstrumentation::didReceiveWebSocketFrameError):
(WebCore::InspectorInstrumentation::didSendWebSocketFrame):
(WebCore::InspectorInstrumentation::didHandleMemoryPressure):
(WebCore::InspectorInstrumentation::didChangeCSSCanvasClientNodes):
(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContext):
(WebCore::InspectorInstrumentation::didChangeCanvasMemory):
(WebCore::InspectorInstrumentation::recordCanvasAction):
(WebCore::InspectorInstrumentation::didFinishRecordingCanvasFrame):
(WebCore::InspectorInstrumentation::didEnableExtension):
(WebCore::InspectorInstrumentation::didCreateWebGLProgram):
(WebCore::InspectorInstrumentation::willDestroyWebGLProgram):
(WebCore::InspectorInstrumentation::isWebGLProgramDisabled):
(WebCore::InspectorInstrumentation::isWebGLProgramHighlighted):
(WebCore::InspectorInstrumentation::willConfigureSwapChain):
(WebCore::InspectorInstrumentation::willDestroyWebGPUPipeline):
(WebCore::InspectorInstrumentation::willApplyKeyframeEffect):
(WebCore::InspectorInstrumentation::didChangeWebAnimationName):
(WebCore::InspectorInstrumentation::didSetWebAnimationEffect):
(WebCore::InspectorInstrumentation::didChangeWebAnimationEffectTiming):
(WebCore::InspectorInstrumentation::didChangeWebAnimationEffectTarget):
(WebCore::InspectorInstrumentation::didCreateWebAnimation):
(WebCore::InspectorInstrumentation::willDestroyWebAnimation):
(WebCore::InspectorInstrumentation::networkStateChanged):
(WebCore::InspectorInstrumentation::updateApplicationCacheStatus):
(WebCore::InspectorInstrumentation::addMessageToConsole):
(WebCore::InspectorInstrumentation::consoleCount):
(WebCore::InspectorInstrumentation::consoleCountReset):
(WebCore::InspectorInstrumentation::takeHeapSnapshot):
(WebCore::InspectorInstrumentation::startConsoleTiming):
(WebCore::InspectorInstrumentation::logConsoleTiming):
(WebCore::InspectorInstrumentation::stopConsoleTiming):
(WebCore::InspectorInstrumentation::consoleTimeStamp):
(WebCore::InspectorInstrumentation::startProfiling):
(WebCore::InspectorInstrumentation::stopProfiling):
(WebCore::InspectorInstrumentation::consoleStartRecordingCanvas):
(WebCore::InspectorInstrumentation::consoleStopRecordingCanvas):
(WebCore::InspectorInstrumentation::didRequestAnimationFrame):
(WebCore::InspectorInstrumentation::didCancelAnimationFrame):
(WebCore::InspectorInstrumentation::willFireAnimationFrame):
(WebCore::InspectorInstrumentation::didFireAnimationFrame):
(WebCore::InspectorInstrumentation::willFireObserverCallback):
(WebCore::InspectorInstrumentation::didFireObserverCallback):
(WebCore::InspectorInstrumentation::layerTreeDidChange):
(WebCore::InspectorInstrumentation::renderLayerDestroyed):
(WebCore::InspectorInstrumentation::instrumentingAgentsFor):
(WebCore::InspectorInstrumentation::instrumentingAgentsForContext): Deleted.
(WebCore::InspectorInstrumentation::instrumentingAgentsForFrame): Deleted.
(WebCore::InspectorInstrumentation::instrumentingAgentsForDocument): Deleted.
(WebCore::InspectorInstrumentation::instrumentingAgentsForPage): Deleted.
(WebCore::InspectorInstrumentation::instrumentingAgentsForWorkerGlobalScope): Deleted.

  • inspector/InspectorWebAgentBase.h:

(WebCore::WorkerAgentContext::WorkerAgentContext):

  • inspector/WorkerDebugger.cpp:

(WebCore::WorkerDebugger::WorkerDebugger):
(WebCore::WorkerDebugger::attachDebugger):
(WebCore::WorkerDebugger::detachDebugger):
(WebCore::WorkerDebugger::runEventLoopWhilePaused):

  • inspector/WorkerDebugger.h:
  • inspector/WorkerInspectorController.cpp:

(WebCore::WorkerInspectorController::WorkerInspectorController):
(WebCore::WorkerInspectorController::connectFrontend):
(WebCore::WorkerInspectorController::workerAgentContext):
(WebCore::WorkerInspectorController::createLazyAgents):
(WebCore::WorkerInspectorController::vm):

  • inspector/WorkerInspectorController.h:
  • inspector/WorkerToPageFrontendChannel.h:
  • inspector/agents/worker/ServiceWorkerAgent.cpp:

(WebCore::ServiceWorkerAgent::ServiceWorkerAgent):

  • inspector/agents/worker/WorkerAuditAgent.cpp:

(WebCore::WorkerAuditAgent::WorkerAuditAgent):
(WebCore::WorkerAuditAgent::injectedScriptForEval):

  • inspector/agents/worker/WorkerAuditAgent.h:
  • inspector/agents/worker/WorkerConsoleAgent.cpp:

(WebCore::WorkerConsoleAgent::WorkerConsoleAgent):

  • inspector/agents/worker/WorkerDebuggerAgent.cpp:

(WebCore::WorkerDebuggerAgent::WorkerDebuggerAgent):
(WebCore::WorkerDebuggerAgent::breakpointActionLog):
(WebCore::WorkerDebuggerAgent::injectedScriptForEval):

  • inspector/agents/worker/WorkerDebuggerAgent.h:
  • inspector/agents/worker/WorkerNetworkAgent.cpp:

(WebCore::WorkerNetworkAgent::WorkerNetworkAgent):
(WebCore::WorkerNetworkAgent::setResourceCachingDisabledInternal):
(WebCore::WorkerNetworkAgent::scriptExecutionContext):

  • inspector/agents/worker/WorkerNetworkAgent.h:
  • inspector/agents/worker/WorkerRuntimeAgent.cpp:

(WebCore::WorkerRuntimeAgent::WorkerRuntimeAgent):
(WebCore::WorkerRuntimeAgent::injectedScriptForEval):

  • inspector/agents/worker/WorkerRuntimeAgent.h:
  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::prepareForDestruction):

  • workers/WorkerGlobalScope.h:

(WebCore::WorkerGlobalScope::inspectorController const): Deleted.

  • workers/WorkerOrWorkletGlobalScope.cpp:

(WebCore::WorkerOrWorkletGlobalScope::WorkerOrWorkletGlobalScope):
(WebCore::WorkerOrWorkletGlobalScope::prepareForDestruction):

  • workers/WorkerOrWorkletGlobalScope.h:

(WebCore::WorkerOrWorkletGlobalScope::inspectorController const):

  • workers/WorkerOrWorkletThread.h:
  • workers/WorkerThread.h:

(WebCore::WorkerThread::workerDebuggerProxy const): Deleted.

5:20 PM Changeset in webkit [268899] by Russell Epstein
  • 1 copy in tags/Safari-610.2.11.51.5

Tag Safari-610.2.11.51.5.

4:15 PM Changeset in webkit [268898] by Simon Fraser
  • 7 edits
    2 adds in trunk

Twitter Photo gallery incorrectly rendered after opening another modal
https://bugs.webkit.org/show_bug.cgi?id=217737
<rdar://problem/70314822>

Reviewed by Zalan Bujtas.
Source/WebCore:

If a layer with a certain configuration of clipping layers had non-zero border-radius, then
changes to zero border-radius, we'd fail to undo the composited rounded-corner masking.
This was because RenderLayerBacking::updateGeometry() didn't call setMasksToBoundsRect()
in the non-rounded corner case.

The compositing code in general tries to separate "configuration" changes (i.e. setting
up the right layer hierarchy) from "geometry" changes (setting positions and sizes).
In this area, those responsibilities were muddied because the return value from
setMasksToBoundsRect() was used to know whether the platform-specific GraphicsLayer
supports rounded-corner clips. This forced RenderLayerBacking::updateChildClippingStrategy()
to do some geometry computation.

Clean that up by adding the static GraphicsLayer::supportsRoundedClip(), and use
that to know if the platform needs a m_childClippingMaskLayer (all non-CA platforms).
Now updateChildClippingStrategy() can be purely about hierarchy, and updateGeometry()
can focus on geometry. In updateGeometry(), we are sure to call setMasksToBoundsRect()
in the non-rounded corner case too.

Test: compositing/style-change/border-radius-change.html

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::supportsRoundedClip):
(WebCore::GraphicsLayer::setMasksToBoundsRect):

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::setMasksToBoundsRect): Deleted.

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayer::supportsRoundedClip):
(WebCore::GraphicsLayerCA::setMasksToBoundsRect):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::updateChildClippingStrategy):

LayoutTests:

  • compositing/style-change/border-radius-change-expected.html: Added.
  • compositing/style-change/border-radius-change.html: Added.
3:25 PM Changeset in webkit [268897] by Chris Dumez
  • 19 edits
    1 copy in trunk/Source/WebCore

Share more code between WorkerThread and AudioWorkletThread
https://bugs.webkit.org/show_bug.cgi?id=218051

Reviewed by Geoffrey Garen.

Share more code between WorkerThread and AudioWorkletThread by moving more logic
to the WorkerOrWorklet base class.

No new tests, no web-facing behavior change.

  • Modules/webaudio/AudioWorkletMessagingProxy.cpp:

(WebCore::generateWorkletParameters):

  • Modules/webaudio/AudioWorkletThread.cpp:

(WebCore::AudioWorkletThread::AudioWorkletThread):
(WebCore::AudioWorkletThread::createGlobalScope):
(WebCore::AudioWorkletThread::workerLoaderProxy):
(WebCore::AudioWorkletThread::createThread):
(WebCore::AudioWorkletThread::globalScope const):

  • Modules/webaudio/AudioWorkletThread.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/MemoryRelease.cpp:

(WebCore::releaseMemory):

  • page/cocoa/ResourceUsageThreadCocoa.mm:

(WebCore::ResourceUsageThread::platformCollectCPUData):

  • page/linux/ResourceUsageThreadLinux.cpp:

(WebCore::ResourceUsageThread::platformCollectCPUData):

  • workers/DedicatedWorkerThread.cpp:

(WebCore::DedicatedWorkerThread::runEventLoop):

  • workers/WorkerGlobalScope.h:
  • workers/WorkerOrWorkletGlobalScope.h:

(WebCore::WorkerOrWorkletGlobalScope::suspend):
(WebCore::WorkerOrWorkletGlobalScope::resume):

  • workers/WorkerOrWorkletThread.cpp: Copied from Source/WebCore/workers/WorkerThread.cpp.

(WebCore::WorkerOrWorkletThread::workerOrWorkletThreadsLock):
(WebCore::WorkerOrWorkletThread::WorkerOrWorkletThread):
(WebCore::WorkerOrWorkletThread::~WorkerOrWorkletThread):
(WebCore::WorkerOrWorkletThread::startRunningDebuggerTasks):
(WebCore::WorkerOrWorkletThread::stopRunningDebuggerTasks):
(WebCore::WorkerOrWorkletThread::runEventLoop):
(WebCore::WorkerOrWorkletThread::workerOrWorkletThread):
(WebCore::WorkerOrWorkletThread::start):
(WebCore::WorkerOrWorkletThread::stop):
(WebCore::WorkerOrWorkletThread::suspend):
(WebCore::WorkerOrWorkletThread::resume):
(WebCore::WorkerOrWorkletThread::releaseFastMallocFreeMemoryInAllThreads):

  • workers/WorkerOrWorkletThread.h:

(WebCore::WorkerOrWorkletThread::thread const):
(WebCore::WorkerOrWorkletThread::globalScope const):
(WebCore::WorkerOrWorkletThread::runLoop):
(WebCore::WorkerOrWorkletThread::start):
(WebCore::WorkerOrWorkletThread::stop):
(WebCore::WorkerOrWorkletThread::identifier const):
(WebCore::WorkerOrWorkletThread::evaluateScriptIfNecessary):
(WebCore::WorkerOrWorkletThread::shouldWaitForWebInspectorOnStartup const):

  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::workerThreadCount):
(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::~WorkerThread):
(WebCore::WorkerThread::createThread):
(WebCore::WorkerThread::createGlobalScope):
(WebCore::WorkerThread::shouldWaitForWebInspectorOnStartup const):
(WebCore::WorkerThread::evaluateScriptIfNecessary):
(WebCore::WorkerThread::globalScope):

  • workers/WorkerThread.h:
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::queueTaskToFireFetchEvent):
(WebCore::ServiceWorkerThread::queueTaskToPostMessage):
(WebCore::ServiceWorkerThread::queueTaskToFireInstallEvent):
(WebCore::ServiceWorkerThread::queueTaskToFireActivateEvent):
(WebCore::ServiceWorkerThread::finishedEvaluatingScript):

  • worklets/Worklet.cpp:

(WebCore::Worklet::Worklet):

  • worklets/Worklet.h:

(WebCore::Worklet::identifier const):

  • worklets/WorkletParameters.h:

(WebCore::WorkletParameters::isolatedCopy const):

3:13 PM Changeset in webkit [268896] by Jonathan Bedard
  • 3 edits
    4 adds in trunk/Tools

[webkitpy] Use webkitcorepy's autoinstaller for chrome and gecko drivers
https://bugs.webkit.org/show_bug.cgi?id=218059
<rdar://problem/70551255>

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/autoinstalled: Added.
  • Scripts/webkitpy/autoinstalled/init.py: Added.
  • Scripts/webkitpy/autoinstalled/chromedriver.py: Added.

(ChromeDriverPackage): Special listing rules for the chrome driver.

  • Scripts/webkitpy/autoinstalled/geckodriver.py: Added.

(GeckoDriverPackage): Special listing rules for the GeckoDriver.

  • Scripts/webkitpy/benchmark_runner/utils.py:

(get_driver_binary_path):

  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module): Remove Chrome and Gecko drivers.
(AutoinstallImportHook.install_chromedriver): Deleted.
(AutoinstallImportHook.install_geckodriver): Deleted.
(get_driver_filename): Deleted.
(get_os_info): Deleted.

3:06 PM Changeset in webkit [268895] by Adrian Perez de Castro
  • 5 edits in trunk/Source/WebCore

Non-unified build fixes, late-ish October 2020 edition
https://bugs.webkit.org/show_bug.cgi?id=218095

Unreviewed non-unified build fix.

No new tests needed.

  • Modules/speech/SpeechRecognitionResultList.h: Include SpeechRecognitionResult.h

instead of using a forward declaration.

  • layout/integration/LayoutIntegrationLineLayout.cpp: Add missing RenderImage.h header.
  • page/scrolling/ScrollingTreeLatchingController.h: Add missing wtf/OptionSet.h header

and forward-declare WheelEventProcessingSteps.

  • workers/WorkerOrWorkletGlobalScope.cpp: Add missing WorkerOrWorkletThread.h and

WorkerRunLoop.h headers.

3:01 PM Changeset in webkit [268894] by Alan Coon
  • 1 copy in tags/Safari-611.1.4

Tag Safari-611.1.4.

2:56 PM Changeset in webkit [268893] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Web Audio continues to play when navigating off the web page via an iframe
https://bugs.webkit.org/show_bug.cgi?id=218078

Reviewed by Eric Carlson.

The page was suspending playback when clicking the link and then resuming playback in the pagehide
event handler. The issue is that the AudioContext's state gets updated asynchronously when the
page suspends or resume rendering, as per specification. When entering the back/forward cache,
AudioContext::suspend() would be called but would do nothing because the state was "suspended",
despite the script having just called "resume()". To address the issue, AudioContext::suspend()
now early returns only if the context is closed or based on the m_wasSuspendedByScript flag
when gets updated synchronously when the script calls suspend() / resume(). Similarly,
AudioContext::resume() checks those same flags now.

No new tests, this impacts audio rendering on speakers but is not web-observable.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::resumeRendering):
Check if the MediaSession is interrupted before asynchronously setting the AudioContext's state
to "running". This is important because the state gets updated asynchronously but the MediaSession
can be interrupted synchronously when AudioContext::suspend() gets called, which would have set
the AudioContext's state to "interrupted". We don't want to incorrectly change the state from
"interrupted" to "running" in this case. Note that AudioContext::suspendRendering() already does
the same thing.

(WebCore::AudioContext::suspend):
(WebCore::AudioContext::resume):
Only early return if the AudioContext is closed or if the m_wasSuspendedByScript flag is set. The
m_wasSuspendedByScript gets updated synchronously when suspendRendering() / resumeRendering() get
called, unlike the AudioContext's state which gets updated asynchronously.

(WebCore::AudioContext::suspendPlayback):
Stop early returning if the state is "suspended". This was wrong since the state gets updated
asynchronously.

2:34 PM Changeset in webkit [268892] by Lauro Moura
  • 3 edits in trunk/LayoutTests

[GLIB] Gardening some crashes

Unreviewed test gardening.

Mesa 'hydra' crashes still almost every build.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
2:23 PM Changeset in webkit [268891] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[WPE] Unreviewed test gardening. Move WebAudio test failure entries to GLIB.

Also gardened a few more flaky failures.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
1:32 PM Changeset in webkit [268890] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

report-non-inclusive-language should also report total for all the non-inclusive terms
https://bugs.webkit.org/show_bug.cgi?id=218096

Reviewed by Darin Adler.

  • Scripts/report-non-inclusive-language: Report total for all the non-inclusive terms. Also improved

formatting of the output to make it one-line.

1:31 PM Changeset in webkit [268889] by commit-queue@webkit.org
  • 19 edits in trunk

Rename scroll-snap-margin to scroll-margin
https://bugs.webkit.org/show_bug.cgi?id=218075

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

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt: Update result for newly passing test.
  • web-platform-tests/css/css-scroll-snap/inheritance-expected.txt: Ditto
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-computed-expected.txt: Ditto.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-shorthand-expected.txt: Ditto.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-valid-expected.txt: Ditto.
  • web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt: Ditto.

Source/WebCore:

Rename scroll-snap-margin to scroll-margin while leaving scroll-snap-margin still
available as an alias for backward compatibility reasons.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle): Rename CSS property name.

  • css/CSSProperties.json: Rename CSS property and add an alias to the old name.
  • css/StyleProperties.cpp: Changes to reflect new name.

(WebCore::StyleProperties::getPropertyValue const): Ditto.
(WebCore::StyleProperties::asText const): Ditto.

  • css/parser/CSSPropertyParser.cpp: Ditto.

(WebCore::CSSPropertyParser::parseSingleValue): Ditto.
(WebCore::CSSPropertyParser::parseShorthand): Ditto.

  • page/scrolling/AxisScrollSnapOffsets.cpp: Ditto.

(WebCore::updateSnapOffsetsForScrollableArea): Ditto.

  • rendering/style/RenderStyle.cpp: Ditto.

(WebCore::RenderStyle::scrollMargin const): Ditto.
(WebCore::RenderStyle::scrollMarginTop const): Ditto.
(WebCore::RenderStyle::scrollMarginBottom const): Ditto.
(WebCore::RenderStyle::scrollMarginLeft const): Ditto.
(WebCore::RenderStyle::scrollMarginRight const): Ditto.
(WebCore::RenderStyle::setScrollMarginTop): Ditto.
(WebCore::RenderStyle::setScrollMarginBottom): Ditto.
(WebCore::RenderStyle::setScrollMarginLeft): Ditto.
(WebCore::RenderStyle::setScrollMarginRight): Ditto.
(WebCore::RenderStyle::scrollSnapMargin const): Deleted.
(WebCore::RenderStyle::scrollSnapMarginTop const): Deleted.
(WebCore::RenderStyle::scrollSnapMarginBottom const): Deleted.
(WebCore::RenderStyle::scrollSnapMarginLeft const): Deleted.
(WebCore::RenderStyle::scrollSnapMarginRight const): Deleted.
(WebCore::RenderStyle::setScrollSnapMarginTop): Deleted.
(WebCore::RenderStyle::setScrollSnapMarginBottom): Deleted.
(WebCore::RenderStyle::setScrollSnapMarginLeft): Deleted.
(WebCore::RenderStyle::setScrollSnapMarginRight): Deleted.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::initialScrollMargin): Added to reflect new name.
(WebCore::RenderStyle::initialScrollSnapMargin): Deleted.

  • rendering/style/StyleScrollSnapPoints.cpp: Changes to reflect new name.

(WebCore::StyleScrollSnapArea::StyleScrollSnapArea): Ditto.

  • rendering/style/StyleScrollSnapPoints.h: Ditto.

(WebCore::operator==): Ditto.

LayoutTests:

  • platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt: Update results for this test.
1:29 PM Changeset in webkit [268888] by Russell Epstein
  • 2 edits in branches/safari-610.2.11.51-branch/Source/WebKit

Cherry-pick r268377. rdar://problem/70320656

Unreviewed build fix after r268367.

  • Configurations/WebKit.xcconfig: Corrected the definition of WK_PDFKIT_LDFLAGS_maccatalyst.

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

1:29 PM Changeset in webkit [268887] by Russell Epstein
  • 4 edits in branches/safari-610.2.11.51-branch/Source

Cherry-pick r268367. rdar://problem/70320656

[macCatalyst] Enable WKPDFView
https://bugs.webkit.org/show_bug.cgi?id=217403
<rdar://problem/48217791>

Reviewed by Tim Horton.

Source/WebKit:

  • Configurations/WebKit.xcconfig: Linked PDFKit.framework when building for the Catalyst variant on Big Sur or later.

Source/WTF:

  • wtf/PlatformEnableCocoa.h: Enabled WKPDFView when building for the Catalyst variant on Big Sur or later.

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

1:20 PM Changeset in webkit [268886] by Noam Rosenthal
  • 24 edits
    37 adds in trunk

LayoutTests/imported/w3c:
Support EXIF image resolution in CoreGraphics (macOS/iOS)
https://bugs.webkit.org/show_bug.cgi?id=217820

Reviewed by Darin Adler.

Imported density-size-correction tests

  • resources/import-expectations.json:
  • web-platform-tests/density-size-correction: Added.
  • web-platform-tests/density-size-correction/density-corrected-image-in-canvas-expected.txt: Added.
  • web-platform-tests/density-size-correction/density-corrected-image-in-canvas.html: Added.
  • web-platform-tests/density-size-correction/density-corrected-image-svg-aspect-ratio-expected.html: Added.
  • web-platform-tests/density-size-correction/density-corrected-image-svg-aspect-ratio.html: Added.
  • web-platform-tests/density-size-correction/density-corrected-image-svg-expected.html: Added.
  • web-platform-tests/density-size-correction/density-corrected-image-svg.html: Added.
  • web-platform-tests/density-size-correction/density-corrected-natural-size-expected.txt: Added.
  • web-platform-tests/density-size-correction/density-corrected-natural-size.html: Added.
  • web-platform-tests/density-size-correction/density-corrected-size-bg-expected.html: Added.
  • web-platform-tests/density-size-correction/density-corrected-size-bg.html: Added.
  • web-platform-tests/density-size-correction/density-corrected-size-img-expected.html: Added.
  • web-platform-tests/density-size-correction/density-corrected-size-img.html: Added.
  • web-platform-tests/density-size-correction/density-corrected-size-pseudo-elements-expected.html: Added.
  • web-platform-tests/density-size-correction/density-corrected-size-pseudo-elements.html: Added.
  • web-platform-tests/density-size-correction/density-corrected-various-elements-expected.html: Added.
  • web-platform-tests/density-size-correction/density-corrected-various-elements.html: Added.
  • web-platform-tests/density-size-correction/resources: Added.
  • web-platform-tests/density-size-correction/resources/exif-resolution-no-change.jpg: Added.
  • web-platform-tests/density-size-correction/resources/exif-resolution-none.jpg: Added.
  • web-platform-tests/density-size-correction/resources/exif-resolution-preapplied-hires.jpg: Added.
  • web-platform-tests/density-size-correction/resources/exif-resolution-preapplied-lores.jpg: Added.
  • web-platform-tests/density-size-correction/resources/exif-resolution-preapplied-non-uniform.jpg: Added.
  • web-platform-tests/density-size-correction/resources/exif-resolution-valid-hires.jpg: Added.
  • web-platform-tests/density-size-correction/resources/exif-resolution-valid-lores.jpg: Added.
  • web-platform-tests/density-size-correction/resources/exif-resolution-valid-non-uniform.jpg: Added.
  • web-platform-tests/density-size-correction/resources/exif-resolution-with-orientation.jpg: Added.
  • web-platform-tests/density-size-correction/resources/exify.js: Added.

(createImageWithMetadata):

  • web-platform-tests/density-size-correction/resources/w3c-import.log: Added.
  • web-platform-tests/density-size-correction/third_party: Added.
  • web-platform-tests/density-size-correction/third_party/piexif: Added.
  • web-platform-tests/density-size-correction/third_party/piexif/LICENSE.txt: Added.
  • web-platform-tests/density-size-correction/third_party/piexif/piexif.js: Added.

(that.remove):
(that.insert):
(that.load):
(that.dump):
(copy):
(_get_thumbnail):
(_pack_byte):
(_pack_short):
(_pack_long):
(_value_to_bytes):
(_dict_to_bytes):
(ExifReader):
(ExifReader.prototype.get_ifd):
(ExifReader.prototype.convert_value):
(typeof.btoa.string_appeared_here.btoa):
(typeof.atob.string_appeared_here.atob):
(getImageSize):
(pack):
(unpack):
(nStr):
(splitIntoSegments):
(getExifSeg):
(mergeSegments):
(toHex):
(that.GPSHelper.degToDmsRational):
(that.GPSHelper.dmsRationalToDeg):

  • web-platform-tests/density-size-correction/third_party/piexif/w3c-import.log: Added.
  • web-platform-tests/density-size-correction/w3c-import.log: Added.

Source/WebCore:
Support EXIF image resolution in CoreGraphics (macOS/iOS)
https://bugs.webkit.org/show_bug.cgi?id=217820

Reviewed by Darin Adler.

Spec: https://github.com/whatwg/html/pull/5574

Read EXIF resolution/preferred size from image in decoder using CoreGraphics methods.
Separate between image size and sourceSize(), the latter should only be used for accessing the
actual pixels of the stored image.

Imported relevant w3c tests.

Tests: imported/w3c/web-platform-tests/density-size-correction/density-corrected-image-in-canvas.html

imported/w3c/web-platform-tests/density-size-correction/density-corrected-image-svg-aspect-ratio.html
imported/w3c/web-platform-tests/density-size-correction/density-corrected-image-svg.html
imported/w3c/web-platform-tests/density-size-correction/density-corrected-natural-size.html
imported/w3c/web-platform-tests/density-size-correction/density-corrected-size-bg.html
imported/w3c/web-platform-tests/density-size-correction/density-corrected-size-img.html
imported/w3c/web-platform-tests/density-size-correction/density-corrected-size-pseudo-elements.html
imported/w3c/web-platform-tests/density-size-correction/density-corrected-various-elements.html

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::texImageSourceHelper):

Similar to orientation, draw into a buffer before uploading to WebGL also when the image
has a density corrected size.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::preTransformedNativeImageForCurrentFrame):

Apply density-correction when pre-transforming image for tile drawing.

(WebCore::BitmapImage::draw):

Correct the source-rect when drawing the image.

(WebCore::BitmapImage::nativeImageForCurrentFrameRespectingOrientation): Deleted.

Renamed to preTransformedNativeImageForCurrentFrame.

  • platform/graphics/BitmapImage.h:
  • platform/graphics/Image.h:

(WebCore::Image::sourceSize const):
(WebCore::Image::hasDensityCorrectedSize const):
(WebCore::Image::preTransformedNativeImageForCurrentFrame):
(WebCore::Image::nativeImageForCurrentFrameRespectingOrientation): Deleted.

Expose hasDensityCorrectedSize and sourceSize (for WebGL) and

  • platform/graphics/ImageDecoder.h:

(WebCore::ImageDecoder::frameDensityCorrectedSizeAtIndex const):

  • platform/graphics/ImageFrame.h:

(WebCore::ImageFrame::setDensityCorrectedSize):
(WebCore::ImageFrame::densityCorrectedSize const):

  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::cacheMetadataAtIndex):
(WebCore::ImageSource::densityCorrectedSize):
(WebCore::ImageSource::size):
(WebCore::ImageSource::sourceSize):

  • platform/graphics/ImageSource.h:

(WebCore::ImageSource::hasDensityCorrectedSize):

Expose existence of densityCorrectedSize in Image{Decoder|Source|Frame}.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::drawPattern):

Handle nativeImageForCurrentFrameRespectingOrientation rename.

  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::createImageSourceMetadataOptions):
(WebCore::densityCorrectedSizeFromProperties):
(WebCore::ImageDecoderCG::hotSpot const):
(WebCore::ImageDecoderCG::frameDensityCorrectedSizeAtIndex const):
(WebCore::ImageDecoderCG::createFrameImageAtIndex):

  • platform/graphics/cg/ImageDecoderCG.h:
  • platform/image-decoders/ScalableImageDecoder.h:

Decode image resolution from image metadata.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/ImageResolution.h:
  • platform/graphics/ImageResolution.cpp:

Added.

LayoutTests:
Support EXIF image resolution in CoreGraphics (OSX/iOS)
https://bugs.webkit.org/show_bug.cgi?id=217820

Reviewed by Darin Adler.

For now, expect image failure in tests that require fuzzy matching.
The tests pass manually. There is an open bug for fuzzy matching.

  • platform/gtk/TestExpectations:
  • platform/win/TestExpectations:
  • platform/wincairo/TestExpectations:
  • platform/wpe/TestExpectations:

Disable this feature for platforms where it's not yet supported.

1:09 PM Changeset in webkit [268885] by Devin Rousso
  • 7 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r266074): Sources: icon for non-JavaScript breakpoints doesn't change when breakpoints are globally disabled
https://bugs.webkit.org/show_bug.cgi?id=218064

Reviewed by Joseph Pecoraro.

  • UserInterface/Models/Breakpoint.js:

(WI.Breakpoint.prototype.get resolved): Added.

  • UserInterface/Models/JavaScriptBreakpoint.js:

(WI.JavaScriptBreakpoint.prototype.get resolved):
Add get resolved to the base class based on WI.debuggerManager.breakpointsEnabled. Use
it in the subclass as part of the result.

  • UserInterface/Views/BreakpointTreeElement.js:

(WI.BreakpointTreeElement.prototype.updateStatus):
(WI.BreakpointTreeElement.prototype._dataUpdated):

  • UserInterface/Views/BreakpointTreeElement.css:

(.item.breakpoint .status > .status-image:not(.resolved)): Added.

  • UserInterface/Views/JavaScriptBreakpointTreeElement.css:

(.item.breakpoint.javascript .status > .status-image): Deleted.
(.item.breakpoint.javascript .status > .status-image.resolved): Deleted.

  • UserInterface/Views/JavaScriptBreakpointTreeElement.js:

(WI.JavaScriptBreakpointTreeElement.prototype.updateStatus): Deleted.
Eliminate unnecessary protected function now that all breakpoints have a get resolved.
Drive-by: inline CSS class name constants.

12:31 PM Changeset in webkit [268884] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GTK] Rebaseline fast/repaint/focus-ring-repaint.html after r268862

Unreviewed test gardening.

  • platform/gtk/fast/repaint/focus-ring-repaint-expected.txt:
12:16 PM Changeset in webkit [268883] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebKit

IPC testing API should have the capability to observe messages being sent and received
https://bugs.webkit.org/show_bug.cgi?id=217870

Unreviewed ASAN release build fix.

  • Platform/IPC/JSIPCBinding.cpp:
  • WebProcess/WebPage/IPCTestingAPI.cpp:

(WebKit::IPCTestingAPI::JSMessageListener::JSMessageListener):

12:16 PM Changeset in webkit [268882] by Alan Coon
  • 8 edits in branches/safari-610.2.11.51-branch/Source

Versioning.

WebKit-7610.2.11.51.5

12:12 PM Changeset in webkit [268881] by Lauro Moura
  • 1 edit
    1 add in trunk/LayoutTests

[GTK] Add media/context-menu-actions baseline after r268865.

Unreviewed test gardening.

r268865 changed this test to use set isChangingPresentationMode, which
is not yet supported in GTK. Instead of skipping all test, update the
baseline to keep testing the other assertions.

  • platform/gtk/media/context-menu-actions-expected.txt: Added.
11:51 AM Changeset in webkit [268880] by aakash_jain@apple.com
  • 5 edits in trunk/Tools

[webkitpy] Rename slave to worker in perftestsrunner
https://bugs.webkit.org/show_bug.cgi?id=218082

Reviewed by Ryosuke Niwa.

  • Scripts/webkitpy/performance_tests/perftestsrunner.py:

(PerfTestsRunner._parse_args): Supporting both --slave-config-json-path and --worker-config-json-path for now.
(_generate_results):
(_merge_worker_config_json):
(_merge_slave_config_json): Deleted.

  • Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py:
  • Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:

(MainTest.test_parse_args):
(MainTest.test_parse_deprecated_args): Added unit-test for deprecated parameter.

  • BuildSlaveSupport/build.webkit.org-config/steps.py:

(RunAndUploadPerfTests):

11:47 AM Changeset in webkit [268879] by Jonathan Bedard
  • 5 edits in trunk/Tools

Few webkitpy tests fail for machines in non-PST timezones
https://bugs.webkit.org/show_bug.cgi?id=218079
<rdar://problem/70579517>

Reviewed by Aakash Jain.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/test/find_unittest.py:
  • Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:

(TestGit.test_info):

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

(TestSvn.test_info):

11:36 AM Changeset in webkit [268878] by eric.carlson@apple.com
  • 7 edits
    1 add in trunk

UIClient isn't notified when page muted state changes
https://bugs.webkit.org/show_bug.cgi?id=218085
<rdar://problem/70462420>

Reviewed by Youenn Fablet.

Source/WebKit:

API test: WKWebView.MediaMuted

  • UIProcess/API/C/WKPage.cpp:

(WKPageGetMediaState): reportedMediaCaptureState -> reportedMediaState.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _mediaCaptureState]): Ditto.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::updateReportedMediaCaptureState): Only record current capture
state in m_reportedMediaCaptureState. m_delayStopCapturingReporting isn't necessary,
remove it.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::reportedMediaState const): Renamed from reportedMediaCaptureState
to reflect what it returns.
(WebKit::WebPageProxy::mediaStateFlags const): Deleted.
(WebKit::WebPageProxy::reportedMediaCaptureState const): Deleted.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/xcshareddata/xcschemes/TestWebKitAPI.xcscheme:
  • TestWebKitAPI/Tests/WebKitCocoa/MediaMutedState.mm: Added.

(-[AudioStateObserver initWithWebView:]):
(-[AudioStateObserver observeValueForKeyPath:ofObject:change:context:]):
(-[AudioStateTestView setMuted:]):
(TestWebKitAPI::TEST):

11:26 AM Changeset in webkit [268877] by Alan Coon
  • 3 edits in branches/safari-611.1.4-branch/Source/WebCore

Revert r268483. rdar://problem/70578639

11:26 AM Changeset in webkit [268876] by Alan Coon
  • 17 edits
    10 deletes in branches/safari-611.1.4-branch

Revert r268615. rdar://problem/70578639

11:26 AM Changeset in webkit [268875] by Alan Coon
  • 7 edits in branches/safari-611.1.4-branch

Revert r268616. rdar://problem/70578639

11:26 AM Changeset in webkit [268874] by Alan Coon
  • 7 edits in branches/safari-611.1.4-branch

Revert r268746. rdar://problem/70578639

11:26 AM Changeset in webkit [268873] by Alan Coon
  • 4 edits
    2 deletes in branches/safari-611.1.4-branch

Revert r268771. rdar://problem/70578639

11:06 AM Changeset in webkit [268872] by youenn@apple.com
  • 9 edits
    3 adds in trunk

Introduce worklet destinations and allow to fetch modules with CORS based on destination
https://bugs.webkit.org/show_bug.cgi?id=218019
<rdar://problem/70526201>

Reviewed by Chris Dumez.

Source/WebCore:

Add support for audioworklet and paintworklet fetch destinations.
In case of those destinations, use cors mode instead of same-origin mode when fetching worklet top level module.

Test: http/wpt/webaudio/audioworklet-addModule-cors.sub.https.html

  • Modules/fetch/FetchRequest.idl:
  • loader/FetchOptions.h:

(WebCore::isScriptLikeDestination):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadAsynchronously):

  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::processNextScriptFetchJobIfNeeded):

Source/WebKit:

Add support to new fetch destinations in enumerations.

  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::isAllowedByContentSecurityPolicy):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::resourceLoadInfo):

LayoutTests:

  • http/wpt/webaudio/audioworklet-addModule-cors.sub.https-expected.txt: Added.
  • http/wpt/webaudio/audioworklet-addModule-cors.sub.https.html: Added.
  • http/wpt/webaudio/resources/dummy-worklet.py: Added.

(main):
(DummyProcessor):

10:45 AM Changeset in webkit [268871] by rmorisset@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Use operand names when dumping Bytecode
https://bugs.webkit.org/show_bug.cgi?id=218084

Reviewed by Saam Barati.

For example this would output the following:

[ 258] put_to_scope scope:loc7, var:3, value:loc8, getPutInfo:1048576<DoNotThrowIfNotFound|GlobalProperty|Initialization|NotStrictMode>, symbolTableOrScopeDepth:0, offset:0

instead of

[ 258] put_to_scope loc7, 3, loc8, 1048576<DoNotThrowIfNotFound|GlobalProperty|Initialization|NotStrictMode>, 0, 0

  • bytecode/BytecodeDumper.h:

(JSC::BytecodeDumperBase::dumpOperand):

  • generator/Opcode.rb:
10:31 AM Changeset in webkit [268870] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Detect unrecognized options in build-jsc
https://bugs.webkit.org/show_bug.cgi?id=218077

Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2020-10-22
Reviewed by Yusuke Suzuki.

Currently, Getopt::Long is configured with pass_through, in order to
be able to forward arbitrary arguments in buildMyProject. However, that
means that typos in option names (e.g. using --cmake-args instead of
--cmakeargs) go undetected and the option is silently ignored.

For cmake builds, there is no such forwarding, so check that there are
no remaining arguments in ARGV and refuse to continue if so. This runs
the risk of breaking wrapper scripts that incorrectly pass unrecognized
options, but that seems like a good thing.

  • Scripts/build-jsc:
9:47 AM Changeset in webkit [268869] by don.olmstead@sony.com
  • 3 edits
    14 copies
    5 adds in trunk/Source/WebCore

[WebGPU] Add Dawn implementation skeleton
https://bugs.webkit.org/show_bug.cgi?id=217982

Reviewed by Myles C. Maxfield.

Add an empty implementation of the WebGPU types. This gets WebGPU built and linking
using Dawn.

  • PlatformWinCairo.cmake:
  • platform/Dawn.cmake: Added.
  • platform/graphics/gpu/GPUPlatformTypes.h:
  • platform/graphics/gpu/dawn/GPUBindGroupAllocatorDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPUBindGroupAllocator::create):
(WebCore::GPUBindGroupAllocator::GPUBindGroupAllocator):
(WebCore::GPUBindGroupAllocator::reallocate):
(WebCore::GPUBindGroupAllocator::tryReset):

  • platform/graphics/gpu/dawn/GPUBindGroupDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPUBindGroup::tryCreate):
(WebCore::GPUBindGroup::GPUBindGroup):
(WebCore::GPUBindGroup::~GPUBindGroup):

  • platform/graphics/gpu/dawn/GPUBindGroupLayoutDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPUBindGroupLayout::tryCreate):

  • platform/graphics/gpu/dawn/GPUBufferDawn.cpp: Added.

(WebCore::GPUBuffer::tryCreate):
(WebCore::GPUBuffer::GPUBuffer):
(WebCore::GPUBuffer::~GPUBuffer):
(WebCore::GPUBuffer::isReadOnly const):
(WebCore::GPUBuffer::state const):
(WebCore::GPUBuffer::mapOnCreation):
(WebCore::GPUBuffer::registerMappingCallback):
(WebCore::GPUBuffer::runMappingCallback):
(WebCore::GPUBuffer::stagingBufferForRead):
(WebCore::GPUBuffer::stagingBufferForWrite):
(WebCore::GPUBuffer::copyStagingBufferToGPU):
(WebCore::GPUBuffer::unmap):
(WebCore::GPUBuffer::destroy):

  • platform/graphics/gpu/dawn/GPUCommandBufferDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPUCommandBuffer::tryCreate):
(WebCore::GPUCommandBuffer::GPUCommandBuffer):
(WebCore::GPUCommandBuffer::copyBufferToBuffer):
(WebCore::GPUCommandBuffer::copyBufferToTexture):
(WebCore::GPUCommandBuffer::copyTextureToBuffer):
(WebCore::GPUCommandBuffer::copyTextureToTexture):

  • platform/graphics/gpu/dawn/GPUComputePassEncoderDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPUComputePassEncoder::tryCreate):
(WebCore::GPUComputePassEncoder::GPUComputePassEncoder):
(WebCore::GPUComputePassEncoder::setPipeline):
(WebCore::GPUComputePassEncoder::dispatch):
(WebCore::GPUComputePassEncoder::platformPassEncoder const):

  • platform/graphics/gpu/dawn/GPUComputePipelineDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPUComputePipeline::tryCreate):
(WebCore::GPUComputePipeline::recompile):

  • platform/graphics/gpu/dawn/GPUDeviceDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPUDevice::tryCreate):
(WebCore::GPUDevice::GPUDevice):

  • platform/graphics/gpu/dawn/GPUPlatformTypesDawn.h: Added.

(WebCore::HandleDeleter<PlatformBuffer>::operator()):
(WebCore::HandleDeleter<PlatformCommandBuffer>::operator()):
(WebCore::HandleDeleter<PlatformComputePassEncoder>::operator()):
(WebCore::HandleDeleter<PlatformComputePipeline>::operator()):
(WebCore::HandleDeleter<PlatformDevice>::operator()):
(WebCore::HandleDeleter<PlatformDrawable>::operator()):
(WebCore::HandleDeleter<PlatformProgrammablePassEncoder>::operator()):
(WebCore::HandleDeleter<PlatformQueue>::operator()):
(WebCore::HandleDeleter<PlatformRenderPassEncoder>::operator()):
(WebCore::HandleDeleter<PlatformRenderPipeline>::operator()):
(WebCore::HandleDeleter<PlatformSampler>::operator()):
(WebCore::HandleDeleter<PlatformShaderModule>::operator()):
(WebCore::HandleDeleter<PlatformSwapLayer>::operator()):
(WebCore::HandleDeleter<PlatformTexture>::operator()):

  • platform/graphics/gpu/dawn/GPUProgrammablePassEncoderDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPUProgrammablePassEncoder::endPass):
(WebCore::GPUProgrammablePassEncoder::setBindGroup):

  • platform/graphics/gpu/dawn/GPUQueueDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPUQueue::tryCreate):
(WebCore::GPUQueue::GPUQueue):
(WebCore::GPUQueue::submit):
(WebCore::GPUQueue::label const):
(WebCore::GPUQueue::setLabel const):

  • platform/graphics/gpu/dawn/GPURenderPassEncoderDawn.cpp: Added.

(WebCore::GPURenderPassEncoder::tryCreate):
(WebCore::GPURenderPassEncoder::GPURenderPassEncoder):
(WebCore::GPURenderPassEncoder::platformPassEncoder const):
(WebCore::GPURenderPassEncoder::setPipeline):
(WebCore::GPURenderPassEncoder::setBlendColor):
(WebCore::GPURenderPassEncoder::setViewport):
(WebCore::GPURenderPassEncoder::setScissorRect):
(WebCore::GPURenderPassEncoder::setIndexBuffer):
(WebCore::GPURenderPassEncoder::setVertexBuffers):
(WebCore::GPURenderPassEncoder::draw):
(WebCore::GPURenderPassEncoder::drawIndexed):

  • platform/graphics/gpu/dawn/GPURenderPipelineDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPURenderPipeline::tryCreate):
(WebCore::GPURenderPipeline::recompile):

  • platform/graphics/gpu/dawn/GPUSamplerDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPUSampler::tryCreate):
(WebCore::GPUSampler::GPUSampler):

  • platform/graphics/gpu/dawn/GPUShaderModuleDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPUShaderModule::tryCreate):
(WebCore::GPUShaderModule::GPUShaderModule):

  • platform/graphics/gpu/dawn/GPUSwapChainDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPUSwapChain::tryCreate):
(WebCore::GPUSwapChain::GPUSwapChain):
(WebCore::GPUSwapChain::tryGetCurrentTexture):
(WebCore::GPUSwapChain::present):
(WebCore::GPUSwapChain::reshape):
(WebCore::GPUSwapChain::platformLayer const):

  • platform/graphics/gpu/dawn/GPUTextureDawn.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUPlatformTypes.h.

(WebCore::GPUTexture::tryCreate):
(WebCore::GPUTexture::create):
(WebCore::GPUTexture::GPUTexture):
(WebCore::GPUTexture::tryCreateDefaultTextureView):

9:23 AM Changeset in webkit [268868] by Chris Dumez
  • 8 edits in trunk/Source/WebCore

Turn ScriptExecutionContext::vm() into a pure virtual function
https://bugs.webkit.org/show_bug.cgi?id=218057

Reviewed by Geoffrey Garen.

Turn ScriptExecutionContext::vm() into a pure virtual function instead of using a
non-virtual function that does type-checking inside.

  • dom/Document.cpp:

(WebCore::Document::vm):

  • dom/Document.h:
  • dom/EmptyScriptExecutionContext.h:
  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::vm): Deleted.

  • dom/ScriptExecutionContext.h:
  • workers/WorkerOrWorkletGlobalScope.cpp:

(WebCore::WorkerOrWorkletGlobalScope::vm):

  • workers/WorkerOrWorkletGlobalScope.h:
9:01 AM Changeset in webkit [268867] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Elements in Shadow DOM are wrongly marked as stale by the WebDriver
https://bugs.webkit.org/show_bug.cgi?id=217635

Patch by Nitzan Uziely <linkgoron@gmail.com> on 2020-10-22
Reviewed by Brian Burg.

Source/WebDriver:

Changed stale checking, to check if the root node is the document element,
instead of document.contains which doesn't work for elements in Shadow DOM.

  • Session.cpp:

(WebDriver::Session::elementSendKeys):

Source/WebKit:

Fixed the focus script to work for elements in Shadow DOM
instead of declaring them as not interactable.

  • WebProcess/Automation/WebAutomationSessionProxy.js:

(let.AutomationSessionProxy.prototype._clearStaleNodes):
(let.AutomationSessionProxy):

8:55 AM Changeset in webkit [268866] by Aditya Keerthi
  • 10 edits
    2 adds in trunk

[iOS] Prevent presentation of input peripherals when focusing form controls with a validation message
https://bugs.webkit.org/show_bug.cgi?id=218004
<rdar://problem/70507678>

Reviewed by Wenson Hsieh.

Source/WebCore:

Added isFocusingWithValidationMessage() to HTMLFormControlElement so
that the state can be encoded in FocusedElementInformation and sent to
the UIProcess.

See WebKit Changelog for more information.

Test: fast/forms/ios/input-peripherals-with-validation-message.html

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::isFocusingWithValidationMessage const):
(WebCore::HTMLFormControlElement::focusAndShowValidationMessage):

  • html/HTMLFormControlElement.h:

Source/WebKit:

Interactive form validation can result in the presentation of a
validation message bubble near the first form control that has invalid
data. Prior to displaying the message, the invalid control is focused.
On iOS, this also has the effect of also presenting a virtual keyboard
or another custom input peripheral, such as a context menu for date
inputs.

Attempting to present both the validation message and custom input
peripheral can leave the view in an inconsistent state. For example,
<select> popovers have a strange flashing behavior when presented
alongside a validation message, and context menus can fail to present
entirely.

In order to address these issues, we should never attempt to present
both a validation message and an input peripheral. Instead, we can
prevent the presentation of input peripherals when the focused control
is presenting a validation message. This behavior matches macOS. Note
that we still present the keyboard for controls that have a keyboard
view, since the keyboard area does overlap the area where a validation
message is presented.

  • Shared/FocusedElementInformation.cpp:

(WebKit::FocusedElementInformation::encode const):
(WebKit::FocusedElementInformation::decode):

  • Shared/FocusedElementInformation.h:

Added isFocusingWithValidationMessage to the struct, so that the UIProcess
knows that the element gained focus due to the presentation of a
validation message.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):

Prevent an input view from being shown if the control does not present
a keyboard and was focused with a validation message.

(-[WKContentView _elementDidBlur]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getFocusedElementInformation):

LayoutTests:

Added a test which verifies that focusing on a date input as a result
of presenting a validation message, successfully presents the message,
and does not present a context menu. The test also ensures that controls
that present a keyboard, such as text inputs, present both the message
and the keyboard.

  • fast/forms/ios/input-peripherals-with-validation-message-expected.txt: Added.
  • fast/forms/ios/input-peripherals-with-validation-message.html: Added.
  • resources/ui-helper.js:

(window.UIHelper.isShowingPopover):

8:22 AM Changeset in webkit [268865] by Peng Liu
  • 33 edits in trunk

Let webkitDisplayingFullscreen() return true when a video element’s fullscreen mode is not VideoFullscreenModeNone
https://bugs.webkit.org/show_bug.cgi?id=216426

Reviewed by Jer Noble.

Source/WebCore:

This patch moves m_changingVideoFullscreenMode of HTMLVideoElement to HTMLMediaElement.
The flag is used to protect interfaces regarding video presentation mode changes.
It also guards the code path when we use element fullscreen to implement video
fullscreen (VIDEO_USES_ELEMENT_FULLSCREEN). It is better to store the flag in
HTMLMediaElement to have fine control.

This patch reverts the changing regarding HTMLVideoElement::webkitDisplayingFullscreen
in r262456. This function will return true in the same run loop as a
webkitpresentationmodechanged event is fired when a video element is entering
fullscreen or picture-in-picture.

Also, this patch adds Internals::isChangingPresentationMode which can be used by
layout tests to check whether a video presentation mode change is completed.

Covered by existing tests.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::isFullscreen const): Align the implementation
with isStandardFullscreen().
(WebCore::HTMLMediaElement::enterFullscreen): Set m_changingVideoFullscreenMode to true
if the video element is changing presentation mode. Also fix a bug about the
flag m_waitingToEnterFullscreen.
(WebCore::HTMLMediaElement::exitFullscreen): Ditto.
(WebCore::HTMLMediaElement::didBecomeFullscreenElement): Ditto.
(WebCore::HTMLMediaElement::didStopBeingFullscreenElement): Ditto.

  • html/HTMLMediaElement.h:

(WebCore::HTMLMediaElement::setChangingVideoFullscreenMode):
(WebCore::HTMLMediaElement::isChangingVideoFullscreenMode const):
(WebCore::HTMLMediaElement::waitingToEnterFullscreen): Deleted.

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::webkitDisplayingFullscreen): Revert the change
in r262456. Some web sites expect this function to return true if the video element
is entering fullscreen and the event webkitpresentationmodechanged is fired.
(WebCore::HTMLVideoElement::setPresentationMode): Remove code regarding m_isChangingVideoFullscreenMode.
(WebCore::HTMLVideoElement::didEnterFullscreenOrPictureInPicture): Fix an event firing issue when
a video element is entering fullscreen while exiting picture-in-picture.
(WebCore::HTMLVideoElement::didExitFullscreenOrPictureInPicture): Fix an event firing issue when
a video element is exiting picture-in-picture.
(WebCore::HTMLVideoElement::isChangingPresentationMode const): This interface
is used by layout tests (through Internals) to check whether a video presentation
mode change is completed.
(WebCore::HTMLVideoElement::didBecomeFullscreenElement): Deleted.

  • html/HTMLVideoElement.h:
  • testing/Internals.cpp:

(WebCore::Internals::isChangingPresentationMode const): This interface is used
by layout tests to check whether a video presentation mode change is completed.

  • testing/Internals.h:
  • testing/Internals.idl:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewCloseAllMediaPresentations.mm:

(TEST):
Use internals.isChangingPresentationMode() to make sure a video presentation mode
change (from inline to picture-in-picture) is completed before moving to the next
step of the test.

LayoutTests:

Check Internals::isChangingPresentationMode instead of HTMLVideoElement::webkitDisplayingFullscreen
to confirm the video presentation mode change is completed before moving to the next step of a test.

  • http/tests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-live-broadcast-expected.txt:
  • http/tests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-live-broadcast.html:
  • media/context-menu-actions.html:
  • media/media-fullscreen-loop-inline-expected.txt:
  • media/media-fullscreen-loop-inline.html:
  • media/media-fullscreen-pause-inline-expected.txt:
  • media/media-fullscreen-pause-inline.html:
  • media/media-fullscreen-return-to-inline-expected.txt:
  • media/media-fullscreen-return-to-inline.html:
  • media/presentationmodechanged-fired-once-expected.txt:
  • media/presentationmodechanged-fired-once.html:
  • media/video-fullscreen-only-playback-expected.txt:
  • media/video-fullscreen-only-playback.html:
  • media/video-playsinline-expected.txt:
  • media/video-playsinline.html:
  • media/video-presentation-mode-expected.txt:
  • media/video-presentation-mode.html:
  • media/video-webkit-playsinline-expected.txt:
  • media/video-webkit-playsinline.html:
  • platform/mac/TestExpectations:
7:43 AM Changeset in webkit [268864] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Handle line box sizing quirks at the line box level
https://bugs.webkit.org/show_bug.cgi?id=218060

Reviewed by Antti Koivisto.

In this patch the line box vertical sizing behavior (mostly quirk) is moved from the inline box to the line box level.

  1. Inline boxes (root and other inline boxes (<span>)) are always sized to their initial height (see layout bounds) regardless of

whether they have content or not.

  1. They are set to empty initially and we change them to non-empty as they gain (non-inline-level-box) content

(e.g. <div>root inline box gains content</div>).

  1. Use this empty flag as input to the line box vertical sizing logic (only non-empty inline boxes contribute to the line box height).

Note that in standard mode the root inline box starts with an imaginary strut which makes it non-empty even when it has no content.
This is most visible with simple block containers like this:

<div style="border: 1px solid green"><img></div>

In quirks mode the border hugs the image (root inline box does not contribute to the height of the line box), while in standard mode
(assume 1. the image is taller than the default font with line spacing, 2. font has 4px descent),
there's a 4px gap between the border and the image.

  1. While computing the final line rect (InlineFormattingContext::Geometry::computedLineLogicalRect), just rely on the line box height

computation (no need to check whether the line has content).

  1. Treat <br> as visually non-empty run as it may contribute to the line box visually.
  2. Add <br> quirk behavior so that it only contributes to the line box height when the line is empty.
  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):
(WebCore::Layout::LineBoxBuilder::alignInlineLevelBoxesVerticallyAndComputeLineBoxHeight):
(WebCore::Layout::InlineFormattingContext::Geometry::computedLineLogicalRect const):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::shouldInlineLevelBoxStretchLineBox const):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::isRunVisuallyNonEmpty const):

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::InlineLevelBox::verticalAlign const):

6:40 AM Changeset in webkit [268863] by commit-queue@webkit.org
  • 2 edits
    1 add in trunk/Tools

[Flatpak SDK] Backport GStreamer device monitor patch
https://bugs.webkit.org/show_bug.cgi?id=218021

Patch by Philippe Normand <pnormand@igalia.com> on 2020-10-22
Reviewed by Adrian Perez de Castro.

Backport of https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/679 to be shipped in 1.20.
This is needed to prevent false-positive critical warnings on the bots. See #217959.

  • buildstream/elements/sdk/gstreamer.bst:
  • buildstream/patches/gstreamer-0001-devicemonitor-Stop-only-the-already-started-provider.patch: Added.
6:22 AM Changeset in webkit [268862] by Antti Koivisto
  • 4 edits in trunk

[LFC][Integration] Lines with outline should be marked having visual overflow
https://bugs.webkit.org/show_bug.cgi?id=218071

Reviewed by Zalan Bujtas.

Source/WebCore:

Seen in fast/repaint/focus-ring-repaint.html

We may fail to paint newly added outlines correctly. This is a legacy line layout bug exposed by IFC integration.

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::addToLine):

Mark when adding content to line.

LayoutTests:

  • fast/repaint/focus-ring-repaint-expected.txt:
6:02 AM Changeset in webkit [268861] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GLIB][GTK] Unreviewed test gardening. Gardened some of the latest flaky failures.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
5:41 AM Changeset in webkit [268860] by cathiechen
  • 12 edits
    1 copy
    2 adds in trunk

ResizeObserver is not properly garbage collected
https://bugs.webkit.org/show_bug.cgi?id=215158

Reviewed by Frédéric Wang.

Source/WebCore:

If ResizeObservers are referenced inside ResizeObserverCallbacks, they are not garbage collected properly. To fix this,
add IsWeakCallback to ResizeObserverCallback interface so that it uses JSC::Weak to store the callback. And add the callback
to visitor in JSResizeObserver::visitAdditionalChildren() to keep it alive. In order to test ResizeObserver leak, add test interface
numberOfResizeObservers() to Internals.idl.

Test: resize-observer/resize-observer-callback-leak.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSResizeObserverCustom.cpp: Copied from Source/WebCore/page/ResizeObserverCallback.idl.

(WebCore::JSResizeObserver::visitAdditionalChildren): Add callback to SlotVisitor.

  • dom/Document.h:

(WebCore::Document::numberOfResizeObservers const):

  • page/ResizeObserver.h:

(WebCore::ResizeObserver::callback):

  • page/ResizeObserver.idl: Add JSCustomMarkFunction to the interface.
  • page/ResizeObserverCallback.h:
  • page/ResizeObserverCallback.idl: Add IsWeakCallback to the interface.
  • testing/Internals.cpp: Add numberOfResizeObservers.

(WebCore::Internals::numberOfResizeObservers const):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • resize-observer/resize-observer-callback-leak-expected.txt: Added.
  • resize-observer/resize-observer-callback-leak.html: Added.
3:00 AM Changeset in webkit [268859] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GStreamer] Restrict ImageDecoder to WebProcess
https://bugs.webkit.org/show_bug.cgi?id=218023

Patch by Philippe Normand <pnormand@igalia.com> on 2020-10-22
Reviewed by Carlos Garcia Campos.

Ideally this decoder should operate only from the WebProcess (or from the GPUProcess) which
should be the only process where GStreamer has been runtime initialized. This is a step
towards a GStreamer-free GTK/WPE UIProcess.

  • platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:

(WebCore::ImageDecoderGStreamer::supportsContainerType):
(WebCore::ImageDecoderGStreamer::canDecodeType):

2:42 AM Changeset in webkit [268858] by Carlos Garcia Campos
  • 6 edits in trunk

WebDriver: handle key events with non-ASCII unicode code point
https://bugs.webkit.org/show_bug.cgi?id=217950

Reviewed by Carlos Alberto Lopez Perez.

Source/WebKit:

We are assuming that key events are limited to ASCII, but they contain a unicode code point.

Fixes: imported/w3c/webdriver/tests/perform_actions/key_events.py::test_printable_key_sends_correct_events[\xe0-]

imported/w3c/webdriver/tests/perform_actions/key_events.py::test_printable_key_sends_correct_events[\u0416-]
imported/w3c/webdriver/tests/perform_actions/key_events.py::test_printable_key_sends_correct_events[\u2603-]
imported/w3c/webdriver/tests/perform_actions/key_events.py::test_printable_key_sends_correct_events[\uf6c2-]

  • UIProcess/Automation/SimulatedInputDispatcher.h: Use UChar32 instead of char for CharKey.
  • UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:

(WebKit::WebAutomationSession::platformSimulateKeyboardInteraction): Handle Charkey as a unicode code point.

  • UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp:

(WebKit::WebAutomationSession::platformSimulateKeyboardInteraction): Ditto.

WebDriverTests:

Remove expectations for tests that are now passing.

2:38 AM WebKitGTK/2.30.x edited by Philippe Normand
(diff)
2:36 AM Changeset in webkit [268857] by Carlos Garcia Campos
  • 24 edits
    1 add in trunk

Unreviewed. Update W3C WebDriver imported tests.

Tools:

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

  • MiniBrowser/gtk/BrowserWindow.c:

(browserWindowSwitchTab):
(browser_window_append_view):

WebDriverTests:

  • TestExpectations.json:
  • imported/w3c/importer.json:
  • imported/w3c/tools/webdriver/webdriver/client.py:
  • imported/w3c/tools/wptrunner/wptrunner/browsers/android_weblayer.py:
  • imported/w3c/tools/wptrunner/wptrunner/browsers/chrome.py:
  • imported/w3c/tools/wptrunner/wptrunner/browsers/chrome_android.py:
  • imported/w3c/tools/wptrunner/wptrunner/environment.py:
  • imported/w3c/tools/wptrunner/wptrunner/executors/base.py:
  • imported/w3c/tools/wptrunner/wptrunner/executors/executormarionette.py:
  • imported/w3c/tools/wptrunner/wptrunner/executors/executorselenium.py:
  • imported/w3c/tools/wptrunner/wptrunner/executors/executorservodriver.py:
  • imported/w3c/tools/wptrunner/wptrunner/executors/executorwebdriver.py:
  • imported/w3c/tools/wptrunner/wptrunner/executors/protocol.py:
  • imported/w3c/tools/wptrunner/wptrunner/testdriver-extra.js:
  • imported/w3c/tools/wptrunner/wptrunner/testharnessreport.js:¡
  • imported/w3c/tools/wptrunner/wptrunner/webdriver_server.py:
  • imported/w3c/tools/wptrunner/wptrunner/wptcommandline.py:
  • imported/w3c/tools/wptrunner/wptrunner/wptrunner.py:
  • imported/w3c/webdriver/tests/element_click/shadow_dom.py: Added.
  • imported/w3c/webdriver/tests/perform_actions/support/refine.py:
  • imported/w3c/webdriver/tests/print/printcmd.py:
  • imported/w3c/webdriver/tests/print/user_prompts.py:
12:32 AM Changeset in webkit [268856] by commit-queue@webkit.org
  • 21 edits in trunk

Scroll snap: don't create implicit snap points at scrollmin/scrollmax
https://bugs.webkit.org/show_bug.cgi?id=216882
<rdar://problem/69443288>

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

LayoutTests/imported/w3c:

Update expectations for these tests.

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

Source/WebCore:

  • page/scrolling/AxisScrollSnapOffsets.cpp:

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

LayoutTests:

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

Oct 21, 2020:

11:43 PM Changeset in webkit [268855] by clopez@igalia.com
  • 4 edits
    3 adds in trunk/Tools

[JHbuild] Add patch to wpebackend-fdo to fix the build on Ubuntu-18.04
https://bugs.webkit.org/show_bug.cgi?id=218068

Reviewed by Adrian Perez de Castro.

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

  • gtk/jhbuild.modules:
  • gtk/patches/wpebackend-fdo-cmake-buildfix-3.10.patch: Added.
  • jhbuild/jhbuild-minimal.modules:
  • jhbuild/patches/wpebackend-fdo-cmake-buildfix-3.10.patch: Added.
  • wpe/jhbuild.modules:
  • wpe/patches/wpebackend-fdo-cmake-buildfix-3.10.patch: Added.
10:24 PM Changeset in webkit [268854] by rniwa@webkit.org
  • 4 edits
    1 add in trunk/Source/WebKit

Move function definitions in JSIPCBinding.h into cpp file
https://bugs.webkit.org/show_bug.cgi?id=218065

Reviewed by Wenson Hsieh.

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

No new tests since there is no behavior change.

  • Platform/IPC/JSIPCBinding.cpp: Added.

(IPC::jsValueForDecodedStringArgumentValue): Moved from .h.
(IPC::jsValueForDecodedArgumentValue<String>): Ditto.
(IPC::jsValueForDecodedArgumentValue<URL>): Ditto.
(IPC::jsValueForDecodedArgumentValue<RegistrableDomain>): Ditto.
(IPC::jsValueForDecodedNumericArgumentValue): Ditto.
(IPC::jsValueForDecodedArgumentValue<double>): Ditto.
(IPC::jsValueForDecodedArgumentValue<float>): Ditto.
(IPC::jsValueForDecodedArgumentValue<int8_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<int16_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<int32_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<int64_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<uint8_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<uint16_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<uint32_t>): Ditto.
(IPC::jsValueForDecodedArgumentValue<uint64_t>): Ditto.
(IPC::jsValueForDecodedArgumentRect): Ditto.
(IPC::jsValueForDecodedArgumentValue<IntRect>): Ditto.
(IPC::jsValueForDecodedArgumentValue<FloatRect>): Ditto.

  • Platform/IPC/JSIPCBinding.h:

(IPC::jsValueForDecodedArgumentValue):

  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
10:24 PM Changeset in webkit [268853] by achristensen@apple.com
  • 12 edits in trunk

Update and pass new URL web platform tests
https://bugs.webkit.org/show_bug.cgi?id=218056

Reviewed by Tim Horton.

LayoutTests/imported/w3c:

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

Source/WebCore:

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

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

  • html/URLDecomposition.cpp:

(WebCore::URLDecomposition::setPathname):

Source/WTF:

  • wtf/URL.cpp:

(WTF::URL::setPath):

9:50 PM Changeset in webkit [268852] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Replace O(n2) algorithm from r268709 with O(n) algorithm
https://bugs.webkit.org/show_bug.cgi?id=218062

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

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

  • bindings/js/JSDOMConvertRecord.h:
7:18 PM Changeset in webkit [268851] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION: [ Big Sur ] fast/text/international/complex-character-based-fallback.html is a constant failure
rdar://70556068

Unreviewed test gardening.

  • platform/mac/TestExpectations:
6:12 PM Changeset in webkit [268850] by clopez@igalia.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r268798): Fix build without ENABLE_LAYOUT_FORMATTING_CONTEXT
https://bugs.webkit.org/show_bug.cgi?id=218017

Unreviewed build-fix.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::styleDidChange): Add missing ifdef guards.

5:46 PM Changeset in webkit [268849] by weinig@apple.com
  • 6 edits in trunk/Source/WebCore

Remove use of in-makefile grepping of FEATURE_AND_PLATFORM_DEFINES
https://bugs.webkit.org/show_bug.cgi?id=218001

Reviewed by Darin Adler.

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

  • DerivedSources.make:

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

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

  • css/fullscreen.css:
  • css/mathml.css:
  • css/mediaControls.css:
  • html/shadow/mac/imageControlsMac.css:

Put required #ifdefs into the css files themselves, rather than embedding the
logic in the makefile.

5:41 PM Changeset in webkit [268848] by rniwa@webkit.org
  • 7 edits in trunk

IPC testing API should have the capability to observe messages being sent and received
https://bugs.webkit.org/show_bug.cgi?id=217870

Reviewed by Darin Adler.

Source/WebKit:

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

Tests: TestWebKitAPI.IPCTestingAPI.CanInterceptAlert

TestWebKitAPI.IPCTestingAPI.CanInterceptHasStorageAccess
TestWebKitAPI.IPCTestingAPI.CanInterceptFindString

  • Platform/IPC/Connection.cpp:

(IPC::Connection::sendMessage): Added the code to invoke MessageObserver::willSendMessage.
Also remove any stale MessageObserver as neded.
(IPC::Connection::addMessageObserver): Added.
(IPC::Connection::dispatchMessage): Added the code to invoke MessageObserver::didReceiveMessage.
Also remove any stale MessageObserver as neded.

  • Platform/IPC/Connection.h:

(IPC::Connection::MessageObserver): Added. A pure virtual interface for observing IPC messages.

  • Platform/IPC/JSIPCBinding.h:

(IPC::jsValueForDecodedStringArgumentValue): Extracted from jsValueForDecodedArgumentValue<String>.
Now takes the type name as an argument.
(IPC::jsValueForDecodedArgumentValue<URL>): Use "URL" as the type name.
(IPC::jsValueForDecodedArgumentValue<RegistrableDomain>): Use "RegistrableDomain" as the type name.
(IPC::jsValueForDecodedArgumentValue<OptionSet<U>>): Added. Specializations for OptionSet<U>

  • WebProcess/WebPage/IPCTestingAPI.cpp:

(WebKit::IPCTestingAPI::JSMessageListener): Added. Implements IPC::MessageObserver.
(WebKit::IPCTestingAPI::JSIPC::staticFunctions):
(WebKit::IPCTestingAPI::createTypeError): Moved.
(WebKit::IPCTestingAPI::JSIPC::addMessageListener): Added.
(WebKit::IPCTestingAPI::JSIPC::addIncomingMessageListener): Added.
(WebKit::IPCTestingAPI::JSIPC::addOutgoingMessageListener): Added.
(WebKit::IPCTestingAPI::JSMessageListener::JSMessageListener): Added.
(WebKit::IPCTestingAPI::JSMessageListener::didReceiveMessage): Added.
(WebKit::IPCTestingAPI::JSMessageListener::willSendMessage): Added.
(WebKit::IPCTestingAPI::JSMessageListener::jsDescriptionFromDecoder): Added.

Tools:

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

  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:

(IPCTestingAPI.CanInterceptAlert):
(IPCTestingAPI.CanInterceptHasStorageAccess):
(IPCTestingAPI.CanInterceptFindString):

5:40 PM Changeset in webkit [268847] by Megan Gardner
  • 4 edits
    2 adds in trunk

Stop gap patch fix for regression in r267329.
https://bugs.webkit.org/show_bug.cgi?id=218020
Source/WebCore:

<rdar://problem/69542459>

Reviewed by Darin Adler.

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

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

  • editing/VisibleSelection.cpp:

(WebCore::VisibleSelection::validate):

LayoutTests:

Reviewed by Darin Adler.

  • editing/selection/double-click-and-drag-over-anchor-to-select-expected.txt: Added.
  • editing/selection/double-click-and-drag-over-anchor-to-select.html: Added.
  • resources/ui-helper.js:

(window.UIHelper.doubleClickAtMouseDown):
(window.UIHelper.mouseUp):
(window.UIHelper.dragMouseAcrossElement):
(window.UIHelper.doubleClickElementMouseDown):

4:36 PM Changeset in webkit [268846] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION(iOS 14): imported/w3c/web-platform-tests/mathml/relations/html5-tree/dynamic-childlist-001.html is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=217268

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
4:28 PM Changeset in webkit [268845] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (r267531): [ Big Sur iOS 14 ] imported/w3c/web-platform-tests/mathml/relations/html5-tree/dynamic-childlist-001.htm is a constant failure
rdar://70550210

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:26 PM Changeset in webkit [268844] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitpy] Use webkitcorepy's autoinstaller for beautifulsoup
https://bugs.webkit.org/show_bug.cgi?id=218049
<rdar://problem/70542684>

Reviewed by Aakash Jain.

  • Scripts/webkitpy/init.py:
  • Scripts/webkitpy/thirdparty/BeautifulSoup.py:
  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module): Remove _install_beatifulsoup.
(AutoinstallImportHook._install_pytest_timeout): Deleted.
(AutoinstallImportHook._install_pytest): Deleted.
(AutoinstallImportHook._install_beautifulsoup): Deleted.

4:09 PM Changeset in webkit [268843] by commit-queue@webkit.org
  • 5 edits in trunk

Implement ISO-2022-JP encoder step 3
https://bugs.webkit.org/show_bug.cgi?id=218046

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

LayoutTests/imported/w3c:

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

Source/WebCore:

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

  • platform/text/TextCodecCJK.cpp:

(WebCore::iso2022JPEncode):

3:41 PM Changeset in webkit [268842] by Aditya Keerthi
  • 2 edits in trunk/Source/WebKit

Remove unused UIDocumentMenuViewController SPI declarations
https://bugs.webkit.org/show_bug.cgi?id=218053

Reviewed by Tim Horton.

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

  • Platform/spi/ios/UIKitSPI.h:
3:38 PM Changeset in webkit [268841] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Address post-landing review feedback from Sam Weinig for r268820.

  • Modules/webaudio/AudioSummingJunction.cpp:

(WebCore::AudioSummingJunction::maximumNumberOfChannels const):

3:22 PM Changeset in webkit [268840] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION(iOS 14): imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002.html is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=217268

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
3:17 PM Changeset in webkit [268839] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (r267531): [ Big Sur iOS 14 ] imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002.html is a constant failure
rdar://70546330

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:16 PM Changeset in webkit [268838] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r268570. rdar://problem/70541887

v2: WebKit::XPCServiceEventHandler block should call exit() on the main thread
<https://webkit.org/b/217773>
<rdar://problem/70275659>

Reviewed by Geoff Garen.

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm: (WebKit::XPCServiceEventHandler):
  • Use NSRunLoop instead of libdispatch to run code on the main thread since libdispatch can randomly pick a new main thread when exit() is called on the original main thread.

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

3:16 PM Changeset in webkit [268837] by Alan Coon
  • 7 edits in branches/safari-610-branch/Source/WebCore

Cherry-pick r268398. rdar://problem/70541902

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

Reviewed by Eric Carlson.

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

Manually tested.

  • html/HTMLVideoElement.cpp: (WebCore::HTMLVideoElement::paintCurrentFrameInContext):
  • platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::setVisibleForCanvas):
  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h: (WebCore::MediaPlayerPrivateInterface::setVisibleForCanvas):
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVisible): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVisibleForCanvas):

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

3:16 PM Changeset in webkit [268836] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WebCore

Cherry-pick r268712. rdar://problem/70541891

Fix crash in RenderLayerBacking::updateClippingStackLayerGeometry()
https://bugs.webkit.org/show_bug.cgi?id=217940
<rdar://problem/70316952>

Reviewed by Tim Horton.

Crash data suggest that entry.clipData.clippingLayer (which is a WeakRef<RenderLayer>)
can be null, so check it.

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateClippingStackLayerGeometry):

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

3:16 PM Changeset in webkit [268835] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WebCore

Cherry-pick r268701. rdar://problem/70541911

Fix possible crash in GraphicsLayerCA::computeVisibleAndCoverageRect()
https://bugs.webkit.org/show_bug.cgi?id=217930
<rdar://problem/70316943>

Reviewed by Tim Horton.

If we made a m_overflowControlsHostLayerAncestorClippingStack, make sure we unparent
its layers when tearing down the RenderLayerBacking, and when we determine that we
longer need a m_ancestorClippingStack (having a m_overflowControlsHostLayerAncestorClippingStack
implies that we have a m_ancestorClippingStack).

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::destroyGraphicsLayers): (WebCore::RenderLayerBacking::updateAncestorClipping):

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

3:15 PM Changeset in webkit [268834] by Alan Coon
  • 4 edits in branches/safari-610-branch

Cherry-pick r268602. rdar://problem/70541712

[WebAuthn] Remove the "alg" field in the attestation statement
https://bugs.webkit.org/show_bug.cgi?id=217720
<rdar://problem/70349734>

Reviewed by Brent Fulgham.

Source/WebKit:

This old field was used in an unreleased old attestation statement format and is not used by
the final attestation statement format that will be added to the spec:
https://github.com/w3c/webauthn/pull/1491.

Therefore, remove it to resolve confusion.

Covered by existing tests.

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):

LayoutTests:

  • http/wpt/webauthn/public-key-credential-create-success-local.https.html:

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

3:15 PM Changeset in webkit [268833] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r268507. rdar://problem/70541950

[iOS] Allow additional sysctl reads needed by image decoding
https://bugs.webkit.org/show_bug.cgi?id=217733
<rdar://problem/68649171>

Reviewed by Per Arne Vollan.

Telemetry on iOS 14 shows that we are hitting some sandbox violations during image decoding. We should
grant access to hw.byteorder, hw.cachelinesize_compat, and hw.vectorunit. We should silence warnings
about hw.cpufrequency_compat since it is not needed in web-facing use cases.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

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

3:15 PM Changeset in webkit [268832] by Alan Coon
  • 10 edits in branches/safari-610-branch/Source

Cherry-pick r268473. rdar://problem/70541789

Web Inspector: REGRESSION(r267148): new Big Sur styles are not used
https://bugs.webkit.org/show_bug.cgi?id=217682
<rdar://problem/70269030>

Reviewed by Brian Burg.

r267148 changed navigator.userAgent from 11_0 to 10_15_7. This breaks Web Inspector
styling, which relied on this value to know what OS version it was running on in order to
know which styles to use.

Source/WebCore:

  • inspector/InspectorFrontendHost.idl:
  • inspector/InspectorFrontendHost.h:
  • inspector/InspectorFrontendHost.cpp: (WebCore::InspectorFrontendHost::platformVersionName const): Added. Derive a lowercased kekab-cased platform version name from __MAC_OS_X_VERSION_MIN_REQUIRED.

Source/WebInspectorUI:

  • UserInterface/Base/Platform.js:
  • UserInterface/Views/Variables.css: (body.mac-platform): Added. (body.mac-platform:not(.sierra, .high-sierra)): Deleted. Use InspectorFrontendHost.platformVersionName instead of navigator.userAgent. Remove unnecessary platform version names and other unused data.
  • UserInterface/Base/Main.js: (WI.contentLoaded): (WI.undockedTitleAreaHeight): Added.
  • UserInterface/Views/Popover.js: (WI.Popover.prototype._update): Provide a way to get the undocked title area height for use in JavaScript calculations.
  • UserInterface/Controllers/HARBuilder.js: (WI.HARBuilder.creator): The WI.Platform.version.build hasn't changed in a long time, so just remove it.

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

3:15 PM Changeset in webkit [268831] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WebCore

Cherry-pick r268084. rdar://problem/70541921

AX: Expose lineRangeForPosition for iOS Accessibility code
https://bugs.webkit.org/show_bug.cgi?id=217256
<rdar://problem/67478962>

Reviewed by Zalan Bujtas.

Expose the existing lineRangeForPosition method for iOS accessibility.

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper lineMarkersForMarker:]):

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

3:15 PM Changeset in webkit [268830] by Alan Coon
  • 3 edits in branches/safari-610-branch/Source/WebCore

Cherry-pick r266787. rdar://problem/70541715

AccessibilityMenuList and MenuListPopup notifications need to be posted asynchronously.
https://bugs.webkit.org/show_bug.cgi?id=216309
<rdar://problem/68108824>

Reviewed by Chris Fleizach.

MenuList notifications were posted synchronously which triggers a DOM
layout and style update in the middle of an ongoing DOM mutation update.
This is unnecessary and, furthermore, causes crashes since the DOM
layout update cannot be re-entrant. This change makes these
notifications asynchronous.

  • accessibility/AccessibilityMenuList.cpp: (WebCore::AccessibilityMenuList::didUpdateActiveOption):
  • accessibility/AccessibilityMenuListPopup.cpp: (WebCore::AccessibilityMenuListPopup::didUpdateActiveOption):

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

3:04 PM Changeset in webkit [268829] by Alan Coon
  • 1 copy in tags/Safari-611.1.3.5

Tag Safari-611.1.3.5.

3:03 PM Changeset in webkit [268828] by Alan Coon
  • 8 edits in branches/safari-611.1.3-branch/Source

Versioning.

WebKit-7611.1.3.5

2:37 PM Changeset in webkit [268827] by clopez@igalia.com
  • 3 edits in trunk/Tools

update-webkitgtk-libs and run-webkit-tests fail silently if flatpak has problems updating
https://bugs.webkit.org/show_bug.cgi?id=218047

Reviewed by Philippe Normand.

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

  • Scripts/update-webkit-flatpak: Add missing sys.exit call with the return code.
  • flatpak/flatpakutils.py:

(WebkitFlatpak.run_in_sandbox): In python false is zero when casted to int.

2:33 PM Changeset in webkit [268826] by Chris Dumez
  • 9 edits in trunk/Source/WebCore

Update FFTFrame::realData() / imagData() to return an AudioFloatArray
https://bugs.webkit.org/show_bug.cgi?id=218048

Reviewed by Philippe Normand.

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

  • Modules/webaudio/PeriodicWave.cpp:

(WebCore::PeriodicWave::createBandLimitedTables):

  • Modules/webaudio/RealtimeAnalyser.cpp:

(WebCore::RealtimeAnalyser::doFFTAnalysisIfNecessary):

  • platform/audio/FFTFrame.cpp:

(WebCore::FFTFrame::interpolateFrequencyComponents):
(WebCore::FFTFrame::scaleFFT):
(WebCore::FFTFrame::multiply):
(WebCore::FFTFrame::extractAverageGroupDelay):
(WebCore::FFTFrame::addConstantGroupDelay):
(WebCore::FFTFrame::print):

  • platform/audio/FFTFrame.h:

(WebCore::FFTFrame::realData):
(WebCore::FFTFrame::imagData):
(WebCore::FFTFrame::realData const):
(WebCore::FFTFrame::imagData const):

  • platform/audio/FFTFrameStub.cpp:

(WebCore::FFTFrame::realData const): Deleted.
(WebCore::FFTFrame::imagData const): Deleted.

  • platform/audio/gstreamer/FFTFrameGStreamer.cpp:

(WebCore::FFTFrame::FFTFrame):
(WebCore::FFTFrame::realData const): Deleted.
(WebCore::FFTFrame::imagData const): Deleted.

  • platform/audio/mac/FFTFrameMac.cpp:

(WebCore::FFTFrame::FFTFrame):
(WebCore::FFTFrame::doFFT):
(WebCore::FFTFrame::realData const): Deleted.
(WebCore::FFTFrame::imagData const): Deleted.

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

[LFC][Integration] Add content dependent vertical line snapping
https://bugs.webkit.org/show_bug.cgi?id=218034

Reviewed by Antti Koivisto.

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

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::InlineLevelBox::isAtomicInlineLevelBox const):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

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

2:23 PM Changeset in webkit [268824] by Alan Coon
  • 8 edits in branches/safari-610-branch/Source

Versioning.

WebKit-7610.3.5

2:21 PM Changeset in webkit [268823] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Apply font line-spacing to <br> inline level box
https://bugs.webkit.org/show_bug.cgi?id=218043

Reviewed by Antti Koivisto.

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

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::isRootInlineBox const):
(WebCore::Layout::LineBoxBuilder::isRootBox const):
(WebCore::Layout::LineBoxBuilder::setVerticalGeometryForInlineBox const):
(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):

2:15 PM Changeset in webkit [268822] by Chris Dumez
  • 13 edits in trunk/Source/WebCore

Share more code between WorkerGlobalScope and WorkletGlobalScope
https://bugs.webkit.org/show_bug.cgi?id=217995

Reviewed by Darin Adler.

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

No new tests, no Web-facing behavior change.

  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::prepareForDestruction):

  • Modules/webaudio/AudioWorkletGlobalScope.h:
  • Modules/webaudio/AudioWorkletThread.cpp:

(WebCore::AudioWorkletThread::stop):

  • workers/WorkerEventLoop.cpp:

(WebCore::WorkerEventLoop::create):
(WebCore::WorkerEventLoop::WorkerEventLoop):

  • workers/WorkerEventLoop.h:
  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::prepareForDestruction):
(WebCore::WorkerGlobalScope::removeAllEventListeners):
(WebCore::WorkerGlobalScope::suspend):
(WebCore::WorkerGlobalScope::resume):
(WebCore::WorkerGlobalScope::close):
(WebCore::WorkerGlobalScope::wrapCryptoKey):
(WebCore::WorkerGlobalScope::unwrapCryptoKey):
(WebCore::WorkerGlobalScope::thread const):

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

(WebCore::WorkerOrWorkletGlobalScope::WorkerOrWorkletGlobalScope):
(WebCore::WorkerOrWorkletGlobalScope::prepareForDestruction):
(WebCore::WorkerOrWorkletGlobalScope::disableEval):
(WebCore::WorkerOrWorkletGlobalScope::disableWebAssembly):
(WebCore::WorkerOrWorkletGlobalScope::isJSExecutionForbidden const):
(WebCore::WorkerOrWorkletGlobalScope::eventLoop):
(WebCore::WorkerOrWorkletGlobalScope::isContextThread const):
(WebCore::WorkerOrWorkletGlobalScope::postTask):

  • workers/WorkerOrWorkletGlobalScope.h:

(WebCore::WorkerOrWorkletGlobalScope::isClosing const):
(WebCore::WorkerOrWorkletGlobalScope::workerOrWorkletThread const):
(WebCore::WorkerOrWorkletGlobalScope::markAsClosing):

  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::stop):

  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::WorkletGlobalScope):
(WebCore::WorkletGlobalScope::prepareForDestruction):

  • worklets/WorkletGlobalScope.h:
1:40 PM Changeset in webkit [268821] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Line may be able to fit some more content when the current candidate is trimmable
https://bugs.webkit.org/show_bug.cgi?id=218044

Reviewed by Antti Koivisto.

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

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):

1:27 PM Changeset in webkit [268820] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Add addOutput() / removeOutput() utility functions to AudioSummingJunction
https://bugs.webkit.org/show_bug.cgi?id=218045

Reviewed by Eric Carlson.

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

No new tests, no web-facing behavior change.

  • Modules/webaudio/AudioNode.cpp:

(WebCore::AudioNode::updateChannelsForInputs):

  • Modules/webaudio/AudioNodeInput.cpp:

(WebCore::AudioNodeInput::connect):
(WebCore::AudioNodeInput::disconnect):
(WebCore::AudioNodeInput::disable):
(WebCore::AudioNodeInput::enable):
(WebCore::AudioNodeInput::numberOfChannels const):

  • Modules/webaudio/AudioParam.cpp:

(WebCore::AudioParam::connect):
(WebCore::AudioParam::disconnect):

  • Modules/webaudio/AudioSummingJunction.cpp:

(WebCore::AudioSummingJunction::markRenderingStateAsDirty):
(WebCore::AudioSummingJunction::addOutput):
(WebCore::AudioSummingJunction::removeOutput):
(WebCore::AudioSummingJunction::maximumNumberOfChannels const):
(WebCore::AudioSummingJunction::changedOutputs): Deleted.

  • Modules/webaudio/AudioSummingJunction.h:
1:05 PM Changeset in webkit [268819] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Add lazy image loading to feature status page
https://bugs.webkit.org/show_bug.cgi?id=208225

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

Add status entry for lazy image loading.

  • features.json:
12:34 PM Changeset in webkit [268818] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Update style of contained layout boxes
https://bugs.webkit.org/show_bug.cgi?id=218017
<rdar://problem/70531938>

Reviewed by Zalan Bujtas.

Followup fix.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::containing):

12:29 PM Changeset in webkit [268817] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Remove redundant vertical position snapping in the iterator interface
https://bugs.webkit.org/show_bug.cgi?id=218039

Reviewed by Antti Koivisto.

Snapping is done during display content construction.

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::RunIteratorModernPath::rect const):
(WebCore::LayoutIntegration::verticallyRoundedRect): Deleted.

12:21 PM Changeset in webkit [268816] by Peng Liu
  • 2 edits in trunk/Source/WebCore

A video element may fail to enter picture-in-picture from fullscreen
https://bugs.webkit.org/show_bug.cgi?id=217999

Reviewed by Eric Carlson.

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

  • html/HTMLMediaElement.cpp:

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

12:19 PM Changeset in webkit [268815] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][Integration] Ascent and descent are rounded to integral position
https://bugs.webkit.org/show_bug.cgi?id=218036

Reviewed by Antti Koivisto.

In this patch, we round ascent/descent vertical position values to integral to match legacy behavior.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):

  • layout/inlineformatting/InlineLineBox.cpp:

(WebCore::Layout::LineBox::InlineLevelBox::setBaseline):
(WebCore::Layout::LineBox::InlineLevelBox::setDescent):
(WebCore::Layout::LineBox::InlineLevelBox::setLayoutBounds):

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::InlineLevelBox::setBaseline): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::setDescent): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::setLayoutBounds): Deleted.

12:14 PM Changeset in webkit [268814] by Chris Dumez
  • 4 edits
    6 adds in trunk

MessagePort & MessageEvent should be exposed to AudioWorklets
https://bugs.webkit.org/show_bug.cgi?id=218037

Reviewed by Darin Adler.

Source/WebCore:

MessagePort & MessageEvent should be exposed to AudioWorklets:

Test: http/wpt/webaudio/the-audio-api/the-audioworklet-interface/exposed-properties.https.html

  • dom/MessageEvent.idl:
  • dom/MessagePort.idl:

LayoutTests:

Add layout test coverage.

  • http/wpt/webaudio/the-audio-api/the-audioworklet-interface/exposed-properties.https-expected.txt: Added.
  • http/wpt/webaudio/the-audio-api/the-audioworklet-interface/exposed-properties.https.html: Added.
  • http/wpt/webaudio/the-audio-api/the-audioworklet-interface/processors/exposed-properties-processor.js: Added.

(ExposedPropertiesTestProcessor.prototype.process):
(ExposedPropertiesTestProcessor):

11:43 AM Changeset in webkit [268813] by Devin Rousso
  • 5 edits in trunk/Source/WebKitLegacy/mac

[macOS WK1] provide a way for Apple-internal clients to disable link preview
https://bugs.webkit.org/show_bug.cgi?id=217984
<rdar://problem/70500022>

Reviewed by Tim Horton.

  • WebView/WebViewPrivate.h:
  • WebView/WebView.mm:

(-[WebView _allowsLinkPreview]): Added.
(-[WebView _setAllowsLinkPreview:]): Added.

  • WebView/WebImmediateActionController.h:
  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController isEnabled]): Added.
(-[WebImmediateActionController setEnabled:]): Added.
(-[WebImmediateActionController _cancelImmediateAction]):

11:38 AM Changeset in webkit [268812] by Chris Dumez
  • 22 edits in trunk

Make sure WebAudio API throws exceptions with useful error messages
https://bugs.webkit.org/show_bug.cgi?id=218033

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline existing tests now that exception messages have been improved.

  • web-platform-tests/webaudio/the-audio-api/the-constantsourcenode-interface/constant-source-basic-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-channels-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelaylimit-expected.txt:

Source/WebCore:

Make sure WebAudio API throws exceptions with useful error messages to be
more developer friendly.

No new tests, rebaselined existing tests.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::create):

  • Modules/webaudio/AudioScheduledSourceNode.cpp:

(WebCore::AudioScheduledSourceNode::startLater):

  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::registerProcessor):

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::createScriptProcessor):
(WebCore::BaseAudioContext::finishedRendering):

  • Modules/webaudio/ConvolverNode.cpp:

(WebCore::ConvolverNode::setBuffer):

  • Modules/webaudio/DefaultAudioDestinationNode.cpp:

(WebCore::DefaultAudioDestinationNode::startRendering):

  • Modules/webaudio/DelayNode.cpp:

(WebCore::DelayNode::create):

  • Modules/webaudio/OfflineAudioContext.cpp:

(WebCore::OfflineAudioContext::create):

  • Modules/webaudio/OfflineAudioDestinationNode.cpp:

(WebCore::OfflineAudioDestinationNode::startRendering):

LayoutTests:

Rebaseline existing tests now that exception messages have been improved.

  • webaudio/Oscillator/oscillator-basic-expected.txt:
  • webaudio/ScriptProcessor/scriptprocessornode-expected.txt:
  • webaudio/convolver-channels-expected.txt:
  • webaudio/convolver-setBuffer-different-samplerate-expected.txt:
  • webaudio/delaynode-maxdelaylimit-expected.txt:
  • webaudio/dom-exceptions-expected.txt:
11:33 AM Changeset in webkit [268811] by Lauro Moura
  • 5 edits in trunk

webkitpy: Check for duplicated keys in json expectation files
https://bugs.webkit.org/show_bug.cgi?id=218032

Reviewed by Carlos Alberto Lopez Perez.

Tools:

When JSON contains repeated keys, Python only uses the last key/value
pair in the resulting dict, without warnings. This may cause some
expectations to be ignored, like what r267323 fixed.

This change also makes MockTestExpectations use the same loading
validation as the actual expectation instead of calling json.loads
directly.

  • Scripts/webkitpy/common/test_expectations.py:

(check_repeated_keys): Added.
(TestExpectations.init): Use helper function.
(TestExpectations._load_expectation_string): Moved validation here.

  • Scripts/webkitpy/common/test_expectations_unittest.py:

(MockTestExpectations.init): Use helper function.
(test_repeated_keys): Added test when there are repeated keys.

WebDriverTests:

11:21 AM Changeset in webkit [268810] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION: [ Win10 wk1 ews ] svg/clip-path/clip-path-invalid.svg is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=218040

Unreviewed test gardening.

  • platform/win/TestExpectations:
11:10 AM Changeset in webkit [268809] by graouts@webkit.org
  • 3 edits
    2 adds in trunk

REGRESSION (r263729): transform transition doesn't restart
https://bugs.webkit.org/show_bug.cgi?id=218011
Source/WebCore:

Reviewed by Dean Jackson.
<rdar://problem/70035130>

In the case of accelerated animations, style for the targeted element is not updated while the animation is
in flight since the animation is performed by Core Animation. This means that by the time the "transitionend"
event is fired, a transition has not yet performed style updates for the element that would have already been
performed for a software animations and thus the updates to the completed and running transition maps performed
under AnimationTimeline::updateCSSTransitionsForStyleableAndProperty() may be out of sync with the assumptions
made in DocumentTimelinesController::updateAnimationsAndSendEvents() that a transition newly marked as finished
should be added to the list of completed transitions.

Indeed, in the newly-added test, if a style update is forced during the "transitionend" event listener before also
clearing the transition styles, two style updates, and thus two calls to updateCSSTransitionsForStyleableAndProperty(),
will have been performed by the time updateAnimationsAndSendEvents() runs again and collects completed transitions,
during which time the transition in question will have been removed from the list of running transitions and added
to the list of completed transitions (first update) and subsequently removed from the list of completed transitions
(second update). At this point, setting styles that would start a new transition for this property will not yield a
transition since we won't be able to satisfy the requirement that the new target value does not match that of the
completed transition.

In this change we stop assuming that just because updateAnimationsAndSendEvents() sees a transition as finished for
the first time it implies that the transition is still considered a running transition. As such we only add a transition
to the list of completed transitions should it be in the list of running transitions.

Test: webanimations/transition-restart-after-style-recalc-during-transitionend.html

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::transitionDidComplete):

LayoutTests:

<rdar://problem/70035130>

Reviewed by Dean Jackson.

Add a new test that checks that forcing a style update during dispatch of the "transitionend" event
does not prevent the completed transition from starting again if reset.

  • webanimations/transition-restart-after-style-recalc-during-transitionend-expected.txt: Added.
  • webanimations/transition-restart-after-style-recalc-during-transitionend.html: Added.
11:09 AM Changeset in webkit [268808] by graouts@webkit.org
  • 5 edits in trunk/Source/WebCore

Rename hasRunningTransitionsForProperty() and hasCompletedTransitionsForProperty() to be singular
https://bugs.webkit.org/show_bug.cgi?id=218014

Reviewed by Geoffrey Garen.

Since there is only running or completed transition per property, the name of these methods was misleading.

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::updateCSSTransitionsForStyleableAndProperty):

  • dom/Element.cpp:

(WebCore::Element::hasCompletedTransitionForProperty const):
(WebCore::Element::hasRunningTransitionForProperty const):
(WebCore::Element::hasCompletedTransitionsForProperty const): Deleted.
(WebCore::Element::hasRunningTransitionsForProperty const): Deleted.

  • dom/Element.h:
  • style/Styleable.h:

(WebCore::Styleable::hasCompletedTransitionForProperty const):
(WebCore::Styleable::hasRunningTransitionForProperty const):
(WebCore::Styleable::hasCompletedTransitionsForProperty const): Deleted.
(WebCore::Styleable::hasRunningTransitionsForProperty const): Deleted.

11:07 AM Changeset in webkit [268807] by graouts@webkit.org
  • 3 edits in trunk/LayoutTests

[WK1] webanimations/accelerated-overlapping-transform-animations.html is a failure
https://bugs.webkit.org/show_bug.cgi?id=217997
<rdar://problem/70505533>

Reviewed by Dean Jackson.

On WK1 UIHelper.ensureStablePresentationUpdate() does not guarantee frames have elapsed so we
wait a couple of animation frames in that configuration to ensure an accelerated animation has
been applied.

  • platform/mac-wk1/TestExpectations:
  • webanimations/accelerated-overlapping-transform-animations.html:
11:07 AM Changeset in webkit [268806] by Antti Koivisto
  • 4 edits in trunk/Source/WebCore

[LFC][Integration] Use LineLayout::containing() in more places
https://bugs.webkit.org/show_bug.cgi?id=218029

Reviewed by Zalan Bujtas.

  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::firstTextRunFor):
(WebCore::LayoutIntegration::runFor):
(WebCore::LayoutIntegration::lineLayoutSystemFlowForRenderer): Deleted.

  • rendering/RenderText.cpp:

(WebCore::RenderText::usesComplexLineLayoutPath const):
(WebCore::RenderText::layoutFormattingContextLineLayout const): Deleted.

  • rendering/RenderText.h:
10:14 AM Changeset in webkit [268805] by youenn@apple.com
  • 21 edits
    1 copy
    5 adds in trunk

WebRTC VP9 Decoder should be able to use VTB
https://bugs.webkit.org/show_bug.cgi?id=217811

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Add RTCVideoDecoderVTBVP9 as a VP9 decoder using the VTB API.
Enable this code path by default if VP9 is enabled and hardware VP9 decoding is supported.
Allow to override this setting for testing purposes.

Add SPI header files in case they are not available.

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:
  • Source/webrtc/sdk/WebKit/CMBaseObjectSPI.h: Added.
  • Source/webrtc/sdk/WebKit/VTVideoDecoderSPI.h: Added.
  • Source/webrtc/sdk/WebKit/WebKitDecoder.mm:

(webrtc::createWebKitDecoderFactory):

  • Source/webrtc/sdk/WebKit/WebKitUtilities.h:
  • Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:

(webrtc::createWebKitVP9Decoder):

  • Source/webrtc/sdk/objc/api/video_codec/RTCWrappedNativeVideoDecoder.mm:

(-[RTCWrappedNativeVideoDecoder implementationName]):

  • Source/webrtc/sdk/objc/components/video_codec/RTCDefaultVideoDecoderFactory.h:
  • Source/webrtc/sdk/objc/components/video_codec/RTCDefaultVideoDecoderFactory.m:

(-[RTCDefaultVideoDecoderFactory initWithH265:vp9:vp9VTB:]):
(-[RTCDefaultVideoDecoderFactory createDecoder:]):

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderVTBVP9.h: Added.
  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderVTBVP9.mm: Added.

(RTCFrameDecodeParams::RTCFrameDecodeParams):
(VP9BufferToCMSampleBuffer):
(vp9DecompressionOutputCallback):
(-[RTCVideoDecoderVTBVP9 dealloc]):
(-[RTCVideoDecoderVTBVP9 startDecodeWithNumberOfCores:]):
(-[RTCVideoDecoderVTBVP9 decode:missingFrames:codecSpecificInfo:renderTimeMs:]):
(-[RTCVideoDecoderVTBVP9 decodeData:size:timeStamp:]):
(-[RTCVideoDecoderVTBVP9 setCallback:]):
(-[RTCVideoDecoderVTBVP9 setError:]):
(-[RTCVideoDecoderVTBVP9 releaseDecoder]):
(-[RTCVideoDecoderVTBVP9 resetDecompressionSession]):
(-[RTCVideoDecoderVTBVP9 configureDecompressionSession]):
(-[RTCVideoDecoderVTBVP9 destroyDecompressionSession]):
(-[RTCVideoDecoderVTBVP9 setVideoFormat:]):
(-[RTCVideoDecoderVTBVP9 implementationName]):

  • Source/webrtc/sdk/objc/native/src/objc_video_decoder_factory.mm:

(webrtc::ObjCVideoDecoderFactory::CreateVideoDecoder):

  • libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

Add testing support to enable VP9 decoding through VTB for WebRTC.

Test: webrtc/vp9-vtb.html

  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
  • platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:

(WebCore::LibWebRTCProviderCocoa::createDecoderFactory):

  • testing/Internals.cpp:

(WebCore::Internals::setWebRTCVP9VTBSupport):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • webrtc/vp9-vtb-expected.txt: Added.
  • webrtc/vp9-vtb.html: Added.
10:10 AM Changeset in webkit [268804] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Disable image map content
https://bugs.webkit.org/show_bug.cgi?id=218030

Reviewed by Antti Koivisto.

Image maps are not supported yet.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

10:02 AM Changeset in webkit [268803] by Hector Lopez
  • 2 edits in trunk/LayoutTests

Add test expectation
https://bugs.webkit.org/show_bug.cgi?id=217997

Unreviewed test gardening.

  • platform/win/TestExpectations:
9:54 AM Changeset in webkit [268802] by Alan Coon
  • 4 edits
    2 adds in branches/safari-611.1.4-branch

Cherry-pick r268771. rdar://problem/70532973

REGRESSION (r268483): Map jumps around while zooming on windy.com, strava.com
https://bugs.webkit.org/show_bug.cgi?id=217987
<rdar://problem/70418548>

Reviewed by Simon Fraser.

Source/WebCore:

When several animations targetting the same property and the same layer are overlapping, we used to
always override the previous animations. With r268483 we started maintaining all active animations
and let them run, potentially with additivity if the animation could be broken into several animations
each targeting a given transform operation.

On top of that, with r268615 and the support for accelerated animation of individual CSS transform
properties (translate, scale and rotate), all transform-related animations were made additive.

This meant that we would always run active animations targeting "transform" in a way where they would be
additive rather than being replaced.

Any animation targeting "transform" will yield one or several accelerated animations, and the first of this
animation set will always have a 0 index. So now, when we compile a list of transform animations in
GraphicsLayerCA::updateAnimations(), we reset that list any time we encounted an animation with a 0 index,
ensuring only the top-most transform animation is applied.

We also fix an issue where we didn't account for the possibility that a single KeyframeEffect could yield
several transform animations with the same name in pauseAnimation() and removeAnimation(). We now pause or
remove all animations with the provided name.

Test: webanimations/accelerated-overlapping-transform-animations.html

  • platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::pauseAnimation): (WebCore::GraphicsLayerCA::removeAnimation): (WebCore::GraphicsLayerCA::updateAnimations):

LayoutTests:

Add a new test that checks that only the last of two overlapping "transform" animations is applied.

  • platform/mac-wk1/TestExpectations:
  • webanimations/accelerated-overlapping-transform-animations-expected.html: Added.
  • webanimations/accelerated-overlapping-transform-animations.html: Added.

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

9:40 AM Changeset in webkit [268801] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Simplify ScriptExecutionContext::vm()
https://bugs.webkit.org/show_bug.cgi?id=218028

Reviewed by Darin Adler.

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::vm):

9:39 AM Changeset in webkit [268800] by Darin Adler
  • 8 edits
    2 adds in trunk

REGRESSION(r266295): Range allows start and end containers to belong to different trees
https://bugs.webkit.org/show_bug.cgi?id=217895

Reviewed by Ryosuke Niwa.

Source/WebCore:

Test: fast/dom/Range/ranges-across-trees.html

  • dom/BoundaryPoint.h: Added treeOrder<TreeType>.
  • dom/Node.cpp:

(WebCore::parent<Tree>): Added.
(WebCore::parent<ComposedTree>): Added.
(WebCore::depth): Changed into a template that takes TreeType.
(WebCore::commonInclusiveAncestorAndChildren): Ditto.
(WebCore::commonInclusiveAncestor): Changed to explicitly use ComposedTree to preserve
the current behavior, but likely will return later to make this a template and have it
us the normal tree by default.
(WebCore::treeOrder): Changed into a template that takes TreeType.
(WebCore::documentOrder): Call treeOrder<ComposedTree> to preserve the current behavior.
Likely will delete this later after changing callers to use treeOrder.

  • dom/Node.h: Added Tree, ShadowIncludingTree, and ComposedTree. Added parent and

treeOrder function templates. TreeType currently is a set of classes but they could
also be objects of another type. Maybe an enumeration named TreeType instead?

  • dom/Range.cpp:

(WebCore::Range::setStart): Use treeOrder instead of documentOrder to use the normal
tree instead of the composed tree.
(WebCore::Range::setEnd): Ditto.
(WebCore::Range::isPointInRange): Use isPointInRange<Tree> instead of isPointInRange
to use the normal tree instead of the composed tree.
(WebCore::Range::comparePoint const): Use treeOrder instead of documentOrder to use
the normal tree instead of the composed tree.
(WebCore::Range::compareNode const): Ditto.
(WebCore::Range::compareBoundaryPoints const): Ditto.
(WebCore::Range::intersectsNode const): Use intersects<Tree> instead of isPointInRange
to use the normal tree instead of the composed tree.

  • dom/SimpleRange.cpp:

(WebCore::treeOrder): Changed into a template that takes TreeType.
(WebCore::documentOrder): Call treeOrder<ComposedTree> to preserve the current behavior.
Likely will delete this later after changing callers to use treeOrder.
(WebCore::isPointInRange): Changed into a template that takes TreeType.
For now the default tree type is still ComposedTree, but will change that later.
(WebCore::intersects): Ditto.
(WebCore::contains<Tree>): Added.
(WebCore::contains<ComposedTree>): Added.

  • dom/SimpleRange.h: Added isPointInRange, intersects, and treeOrder function templates.

LayoutTests:

  • fast/dom/Range/ranges-across-trees.html: Added.
9:36 AM Changeset in webkit [268799] by Hector Lopez
  • 2 edits in trunk/LayoutTests

REGRESSION(r268476): [ macOS ] tiled-drawing/scrolling/non-fast-region/handlers-in-iframes.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=218031

Unreviewed test gardening.

  • platform/mac/TestExpectations:
9:21 AM Changeset in webkit [268798] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

[LFC][Integration] Update style of contained layout boxes
https://bugs.webkit.org/show_bug.cgi?id=218017

Reviewed by Zalan Bujtas.

Update layout box style on style change as needed. This fixes at least fast/replaced/max-width-percent.html with
image support enabled.

The patch also contains refactoring to make BoxTree non-const and moves the style update code there.

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::BoxTree):
(WebCore::LayoutIntegration::BoxTree::buildTree):
(WebCore::LayoutIntegration::BoxTree::updateStyle):
(WebCore::LayoutIntegration::BoxTree::layoutBoxForRenderer):
(WebCore::LayoutIntegration::BoxTree::layoutBoxForRenderer const):
(WebCore::LayoutIntegration::BoxTree::rendererForLayoutBox):
(WebCore::LayoutIntegration::BoxTree::rendererForLayoutBox const):

  • layout/integration/LayoutIntegrationBoxTree.h:

(WebCore::LayoutIntegration::BoxTree::flow const):
(WebCore::LayoutIntegration::BoxTree::flow):

  • layout/integration/LayoutIntegrationInlineContent.cpp:

(WebCore::LayoutIntegration::InlineContent::rendererForLayoutBox const):

  • layout/integration/LayoutIntegrationInlineContent.h:
  • layout/integration/LayoutIntegrationLineIteratorModernPath.h:

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

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::LineLayout):
(WebCore::LayoutIntegration::LineLayout::containing):
(WebCore::LayoutIntegration::LineLayout::updateReplacedDimensions):
(WebCore::LayoutIntegration::LineLayout::updateStyle):
(WebCore::LayoutIntegration::LineLayout::constructContent):
(WebCore::LayoutIntegration::LineLayout::textRunsFor const):
(WebCore::LayoutIntegration::LineLayout::runFor const):
(WebCore::LayoutIntegration::LineLayout::rendererForLayoutBox const):
(WebCore::LayoutIntegration::LineLayout::paint):
(WebCore::LayoutIntegration::LineLayout::hitTest):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::RunIteratorModernPath::renderer const):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::styleDidChange):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::styleDidChange):

Update the line layout style.

9:15 AM Changeset in webkit [268797] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Un-needed casts in Screen::{width,height}()
https://bugs.webkit.org/show_bug.cgi?id=218013

Patch by Philippe Normand <pnormand@igalia.com> on 2020-10-21
Reviewed by Darin Adler.

  • page/Screen.cpp:

(WebCore::Screen::height const): There is no need to convert from float to long and then
unsigned.
(WebCore::Screen::width const): Ditto.

9:01 AM Changeset in webkit [268796] by commit-queue@webkit.org
  • 5 edits in trunk

Don't crash when deallocating WKWebView during TLS handshake
https://bugs.webkit.org/show_bug.cgi?id=218025
<rdar://problem/70225969>

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

Source/WebKit:

NetworkProcessProxy::didReceiveAuthenticationChallenge would sometimes dereference an unchecked
Optional<SecurityOriginData> which would result in a null dereference crash. Also, sometimes
Connection::initializeSendSource would assert because it was trying to set up a cancel handler for
a send port that had not been successfully set up yet. I added a test that reproduces both of these
issues most of the time.

  • Platform/IPC/cocoa/ConnectionCocoa.mm:

(IPC::Connection::initializeSendSource):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:

(TEST):

8:04 AM Changeset in webkit [268795] by weinig@apple.com
  • 7 edits in trunk/Tools

Cleanup DumpRenderTree in preparation for supporting arbitrary test header commands
https://bugs.webkit.org/show_bug.cgi?id=217962

Reviewed by Darin Adler.

  • Moves DumpRenderTree's TestOptions to be fully backed by TestFeatures like WebKitTestRunnner, allowing future changes to utilize any WebPreference once SPI is available from WebKitLegacy.
  • Removes use of using namespace std; from DumpRenderTree.mm, which is not something we normally do and made the code a bit confusing.
  • Move some random setting of preferences to centralized reset functions.
  • DumpRenderTree/TestOptions.cpp:
  • DumpRenderTree/TestOptions.h:
  • DumpRenderTree/mac/DumpRenderTree.mm:
  • DumpRenderTree/mac/TestRunnerMac.mm:
  • DumpRenderTree/mac/UIDelegate.mm:
  • DumpRenderTree/win/DumpRenderTree.cpp:
7:06 AM Changeset in webkit [268794] by caitp@igalia.com
  • 26 edits
    14 adds in trunk

[JSC] support op_get_private_name in DFG and FTL
https://bugs.webkit.org/show_bug.cgi?id=214861

Reviewed by Filip Pizlo.

JSTests:

  • microbenchmarks/class-fields-private/monomorphic-get-private-field.js: Added.
  • microbenchmarks/class-fields-private/polymorphic-get-private-field.js: Added.
  • stress/dfg-get-private-name-by-id-generic.js: Added.
  • stress/dfg-get-private-name-by-id-osr-bad-identifier.js: Added.
  • stress/dfg-get-private-name-by-id.js: Added.
  • stress/dfg-get-private-name-by-offset-osr-bad-identifier.js: Added.
  • stress/dfg-get-private-name-by-offset-osr-bad-structure.js: Added.
  • stress/dfg-get-private-name-by-offset.js: Added.
  • stress/dfg-get-private-name-by-val-generic.js: Added.
  • stress/ftl-get-private-name-by-id.js: Added.
  • stress/ftl-get-private-name-by-offset-multi.js: Added.
  • stress/get-private-name-with-constant-ident.js: Added.
  • stress/get-private-name-with-constant-symbol.js: Added.
  • stress/get-private-name-with-different-symbol.js: Added.

Source/JavaScriptCore:

Adds DFG/FTL support for op_get_private_name.

During DFG bytecode parsing, we will attempt, if deemed possible by
the information available, to output a GetByOffset operation. If a
single private field identifier is used in all cases (the common case),
but there are too many structure variants, a GetPrivateNameById
operation is emitted instead. Failing that, the GetPrivateName
operation is produced, which produces a GetByVal IC like in the
baseline JIT.

In FTL, GetPrivateNameByID can be reduced to [Multi]GetByOffset in the
DFGConstantFoldingPhase, or a GetByID IC when lowering to B3.

  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::computeFromLLInt):

  • bytecode/StructureStubInfo.h:

(JSC::appropriateOptimizingGetByIdFunction):
(JSC::appropriateGenericGetByIdFunction):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::simplifyGetByStatus):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::handleGetPrivateNameById):
(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGNode.h:

(JSC::DFG::Node::convertToGetByOffset):
(JSC::DFG::Node::convertToMultiGetByOffset):
(JSC::DFG::Node::hasCacheableIdentifier):
(JSC::DFG::Node::hasHeapPrediction):

  • dfg/DFGNodeType.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetPrivateName):
(JSC::DFG::SpeculativeJIT::compileGetPrivateNameByVal):
(JSC::DFG::SpeculativeJIT::compileGetPrivateNameById):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::getPrivateName):
(JSC::FTL::DFG::LowerDFGToB3::compileGetPrivateName):
(JSC::FTL::DFG::LowerDFGToB3::compileGetPrivateNameById):

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

(JSC::getPrivateName):
(JSC::JSC_DEFINE_JIT_OPERATION):

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

(JSC::appropriateOptimizingGetByFunction):
(JSC::appropriateGetByFunction):
(JSC::tryCacheGetBy):

  • jit/Repatch.h:
  • runtime/OptionsList.h:
5:36 AM Changeset in webkit [268793] by Carlos Garcia Campos
  • 23 edits in trunk

WebDriver: add support for wheel actions
https://bugs.webkit.org/show_bug.cgi?id=217174

Reviewed by Brian Burg.

.:

Enable WEBDRIVER_WHEEL_INTERACTIONS for GTK and WPE ports.

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/WebDriver:

Handle wheel actions.

  • Actions.h:
  • Session.cpp:

(WebDriver::automationSourceType): Handle InputSource::Type::Wheel.
(WebDriver::Session::performActions): Handle Action::Type::Wheel.

  • WebDriverService.cpp:

(WebDriver::processKeyAction): Assert if Action::Subtype::Scroll.
(WebDriver::processPointerMoveAction): Move this code to a helper to be used by both pointer move and scroll actions.
(WebDriver::processPointerAction): Use processPointerMoveAction().
(WebDriver::processWheelAction): Call processPointerMoveAction() and process the scroll delta too.
(WebDriver::processInputActionSequence): Handle InputSource::Type::Wheel.

Source/WebKit:

  • UIProcess/Automation/Automation.json: Add scroll delta to action state.
  • UIProcess/Automation/SimulatedInputDispatcher.cpp:

(WebKit::SimulatedInputSourceState::emptyStateForSourceType): Initialize scrollDelta for wheel actions.
(WebKit::SimulatedInputDispatcher::transitionInputSourceToState): Handle SimulatedInputSourceType::Wheel.

  • UIProcess/Automation/SimulatedInputDispatcher.h:
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::WebAutomationSession): Add SimulatedInputSourceType::Wheel.
(WebKit::WebAutomationSession::terminate): Handle pending wheel events.
(WebKit::WebAutomationSession::willShowJavaScriptDialog): Ditto.
(WebKit::WebAutomationSession::wheelEventsFlushedForPage): Ditto.
(WebKit::WebAutomationSession::willClosePage): Ditto.
(WebKit::WebAutomationSession::isSimulatingUserInteraction const): Return true if there are pending wheel events too.
(WebKit::WebAutomationSession::simulateWheelInteraction): Handle the wheel action.
(WebKit::simulatedInputSourceTypeFromProtocolSourceType): Handle Inspector::Protocol::Automation::InputSourceType::Wheel.
(WebKit::WebAutomationSession::performInteractionSequence): Initialize the scroll delta for wheel action.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:

(WebKit::WebAutomationSession::platformSimulateWheelInteraction): Synthesize a wheel event.

  • UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp:

(WebKit::WebAutomationSession::platformSimulateWheelInteraction): Ditto.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::isProcessingWheelEvents const): Return whether page has pending wheel events.
(WebKit::WebPageProxy::didReceiveEvent): Notify automation that pending wheel events have been processed.

  • UIProcess/WebPageProxy.h:
  • config.h:

Tools:

Add webdriver-wheel-interactions option.

  • Scripts/webkitperl/FeatureList.pm:

WebDriverTests:

Remove expectations for wheel actions test.

5:26 AM Changeset in webkit [268792] by svillar@igalia.com
  • 8 edits in trunk

[css-flexbox] flex-basis not animatable
https://bugs.webkit.org/show_bug.cgi?id=180435
LayoutTests/imported/w3c:

<rdar://problem/59363784>

Reviewed by Antoine Quint.

  • web-platform-tests/css/css-flexbox/animation/flex-basis-composition-expected.txt: Replaced FAIL expectations with PASS.
  • web-platform-tests/css/css-flexbox/animation/flex-basis-interpolation-expected.txt: Ditto.
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt: Ditto.
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt: Ditto.
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt: Ditto.

Source/WebCore:

Reviewed by Antoine Quint.

Make flex-basis property animatable as per spec. This allows us to pass ~100 flexbox animation subtests.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap): Mark flex-basis as animatable.

4:32 AM Changeset in webkit [268791] by youenn@apple.com
  • 4 edits in trunk

[iOS] Disable audio capture in the background for non Safari applications
https://bugs.webkit.org/show_bug.cgi?id=217948
<rdar://problem/70241557>

Reviewed by Eric Carlson.

Source/WebCore:

We do not have good OS support when capturing audio in a WebProcess for a backgrounded application.
Until we have proper support, it seems best to mute audio capture when being backgrounded.
Manually tested.

  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.mm:

(WebCore::RealtimeMediaSourceCenter::shouldInterruptAudioOnPageVisibilityChange):

LayoutTests:

  • platform/ios/mediastream/video-muted-in-background-tab.html:

By default, audio capture will be muted in WTR if page goes to background.
Update the test to explicitly request for audio capture to continue while in background.

3:50 AM Changeset in webkit [268790] by Philippe Normand
  • 3 edits in trunk/Source/WebCore

[GStreamer] Create video sink only for video player
https://bugs.webkit.org/show_bug.cgi?id=217974

Reviewed by Xabier Rodriguez-Calvar.

There's no need for a video sink when the media player is created for an <audio> element.

  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::initializeGStreamerAndRegisterWebKitElements): Downrank the GL video sink, as we
create it on-demand and not through autovideosink anyway.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Avoid creating useless video sink.

1:17 AM Changeset in webkit [268789] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GLIB][GTK] Unreviewed test gardening. Update test expectations.

Gardened several audioworklet test that are flaky in GTK. Also skip
non WPT MediaSession tests in GLIB.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
1:02 AM Changeset in webkit [268788] by Antti Koivisto
  • 2 edits
    2 adds in trunk/LayoutTests/imported/w3c

Import web-platform-tests/css/selectors/is-where-basic.html
https://bugs.webkit.org/show_bug.cgi?id=218009

Reviewed by Tim Horton.

One more :is/:where test.

  • web-platform-tests/css/selectors/is-where-basic-expected.txt: Added.
  • web-platform-tests/css/selectors/is-where-basic.html: Added.
  • web-platform-tests/css/selectors/w3c-import.log:
12:32 AM Changeset in webkit [268787] by Lauro Moura
  • 2 edits in trunk/Tools

webkitpy: Fix webdriver logging message
https://bugs.webkit.org/show_bug.cgi?id=218006

Reviewed by Carlos Garcia Campos.

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py:

(WebDriverTestRunner.process_results): Use the test name instead of
the dir name.

Note: See TracTimeline for information about the timeline view.