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

Timeline



Apr 15, 2020:

10:57 PM Changeset in webkit [260173] by mmaxfield@apple.com
  • 11 edits
    8 adds in trunk

[Cocoa] Password obscuring dots drawn with the system font are too small
https://bugs.webkit.org/show_bug.cgi?id=209692
<rdar://problem/60788385>

Reviewed by Darin Adler.

Source/WebCore:

The system font's U+2022 BULLET glyph got smaller. Instead, we should match
the native platform's behavior of using U+F79A. However, U+F79A is a PUA
character, meaning different fonts will draw it in arbitrary different ways.
Therefore, we should only use this character if we're drawing it with the
system font. Otherwise, we can take the old codepath and use U+2022 BULLET.

Tests: fast/text/text-security-disc-bullet-pua.html

platform/mac/fast/text/text-security-disc-bullet-pua-mac.html
platform/ios/fast/text/text-security-disc-bullet-pua-ios-new.html
platform/ios/fast/text/text-security-disc-bullet-pua-ios-old.html

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::text const):

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::constructTextRun):

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForStyle):

  • rendering/SimpleLineLayoutCoverage.cpp:

(WebCore::SimpleLineLayout::printReason):

  • rendering/SimpleLineLayoutCoverage.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::computeTextSecurityDiscShouldUsePUACodePoint const):

  • rendering/style/RenderStyle.h:

LayoutTests:

  • fast/text/text-security-disc-bullet-pua-expected.html: Added.
  • fast/text/text-security-disc-bullet-pua.html: Added.
  • platform/ios/fast/text/text-security-disc-bullet-pua-ios-new-expected.html: Added.
  • platform/ios/fast/text/text-security-disc-bullet-pua-ios-new.html: Added.
  • platform/ios/fast/text/text-security-disc-bullet-pua-ios-old-expected.html: Added.
  • platform/ios/fast/text/text-security-disc-bullet-pua-ios-old.html: Added.
  • platform/mac/fast/text/text-security-disc-bullet-pua-mac-expected.html: Added.
  • platform/mac/fast/text/text-security-disc-bullet-pua-mac.html: Added.
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
10:53 PM Changeset in webkit [260172] by jer.noble@apple.com
  • 7 edits in trunk/Source

REGRESSION (r260102): ASSERTION FAILED: m_arbitrators.contains(proxy) in WebKit::SharedArbitrator::endRoutingArbitrationForArbitrator
https://bugs.webkit.org/show_bug.cgi?id=210589
<rdar://problem/61844208>

Reviewed by Eric Carlson.

Source/WebCore:

Track whether the session successfully entered routing arbitration and only call
leaveRoutingAbritration() if entering was sucessful.

  • platform/audio/mac/AudioSessionMac.mm:

(WebCore::AudioSession::setCategory):

Source/WebKit:

Protect against an assertion in the SharedArbitrator in case where a WebProcess is terminated before it can call
endRoutingArbitration().

  • UIProcess/Media/AudioSessionRoutingArbitratorProxy.cpp:

(WebKit::AudioSessionRoutingArbitratorProxy::processDidTerminate):

  • UIProcess/Media/AudioSessionRoutingArbitratorProxy.h:
  • UIProcess/Media/cocoa/AudioSessionRoutingArbitratorProxyCocoa.mm:

(WebKit::SharedArbitrator::isInRoutingArbitrationForArbitrator):
(WebKit::SharedArbitrator::beginRoutingArbitrationForArbitrator):
(WebKit::SharedArbitrator::endRoutingArbitrationForArbitrator):
(WebKit::AudioSessionRoutingArbitratorProxy::processDidTerminate):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):

10:22 PM Changeset in webkit [260171] by Simon Fraser
  • 7 edits
    7 adds in trunk

[Async overflow scroll] background-attachment:fixed needs to disable async overflow scrolling
https://bugs.webkit.org/show_bug.cgi?id=210581

Reviewed by Zalan Bujtas.

Source/WebCore:

Start setting synchronousScrollingReasons on overflow scrolling nodes if the scrolling would move content
that has background-attachment:fixed (we can't use async scrolling there, because such content needs painting
on each scroll).

When style changes, we call FrameView::{add|remove}SlowRepaintObject(). That sets the "needsScrollingTreeUpdate"
compositing bit on the enclosing RenderLayer (note, any RenderLayer, not necessarily a scrolling one).
Setting that bit will ensure that RenderLayerCompositor does an "update backing and hierarchy" traversal,
and during this traversal, if we see a layer with the bit set, scrollingTreeState.needSynchronousScrollingReasonsUpdate
becomes true. At the end of the traversal this is used as a signal to call updateSynchronousScrollingNodes().

updateSynchronousScrollingNodes() needs to clear synchronousScrollingReasons on nodes that no longer need
to slow-scroll, and set it on those that do. To achieve this we use the set of slow-repaint renders from
FrameView, and the set of layers with scrolling nodes from RenderLayerCompositor, starting with the set of
all nodes, and pruning those known to be slow. synchronousScrollingReasons are cleared on the remainder.

Tests: scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-dynamic.html

scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-on-overflow.html

  • page/FrameView.cpp:

(WebCore::FrameView::addSlowRepaintObject):
(WebCore::FrameView::removeSlowRepaintObject):

  • page/FrameView.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::setSynchronousScrollingReasons):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateCompositingLayers):
(WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
(WebCore::RenderLayerCompositor::updateSynchronousScrollingNodes):

  • rendering/RenderLayerCompositor.h:

LayoutTests:

  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-dynamic-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-dynamic.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-on-overflow-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-on-overflow.html: Added.
9:34 PM Changeset in webkit [260170] by timothy_horton@apple.com
  • 8 edits in trunk

REGRESSION (r258337): Crash when right clicking on link that uses the system UI font with optimizeLegibility on Mojave
https://bugs.webkit.org/show_bug.cgi?id=210575
<rdar://problem/61646717>

Reviewed by Darin Adler.

Source/WebKit:

  • Shared/Cocoa/ArgumentCodersCocoa.mm:

(-[WKSecureCodingFontAttributeNormalizer archiver:willEncodeObject:]):
(IPC::encodeSecureCodingInternal):
The workaround introduced in r250640 and r251086 for archiving NSFonts
with optical sizing attributes is still incomplete, which was recently
revealed by making decoding failures more apparent (in r258337).

Specifically, the workaround was not applied to fonts encoded inside
NSAttributedStrings, which are encoded using a keyed archiver... only
to fonts encoded directly with CoreIPC.

Use a NSKeyedArchiver delegate to apply our fix-up to the optical sizing
attribute when any NSFont is being encoded, and only on platforms
that still exhibit the bug.

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

(WebKit::fontWithAttributes):
(WebKit::fontDescriptorWithFontAttributes): Deleted.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::updateFontManagerIfNeeded):

  • UIProcess/mac/WebPopupMenuProxyMac.mm:

(WebKit::WebPopupMenuProxyMac::showPopupMenu):
Refactor fontDescriptorWithFontAttributes to just return a font since that's what all callers actually want.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewGetContents.mm:

(TEST):
Add an API test ensuring that we can encode and decode a NSAttributedString
that includes a system-ui font with optimizeLegibility on.

8:38 PM Changeset in webkit [260169] by wilander@apple.com
  • 21 edits
    4 adds in trunk

Add SPI to configure WebsiteDataStores with a URL for standalone web applications and use it to disable first-party website data removal in ITP
https://bugs.webkit.org/show_bug.cgi?id=209634
<rdar://problem/60943970>

Reviewed by Alex Christensen.

Source/WebKit:

This change adds a new property to _WKWebsiteDataStoreConfiguration.h called
standaloneApplicationURL with which the hosting application can inform the
website data store that it's running as a standalone web application.

This change also forwards an existing standaloneApplicationURL as a
WebCore::RegistrableDomain into ITP so that explicit exemptions can be made
to first parties of standalone web applications. The exemptions made here
all for all of ITP's website data removal. This part of the change is
covered by the new layout tests.

Tests: http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database.html

http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion.html

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor):

  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:

(WebKit::ResourceLoadStatisticsStore::setStandaloneApplicationDomain):
(WebKit::ResourceLoadStatisticsStore::standaloneApplicationDomain const):

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::setStandaloneApplicationDomain):

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):
(WebKit::NetworkSession::forwardResourceLoadStatisticsSettings):

  • NetworkProcess/NetworkSession.h:
  • Shared/ResourceLoadStatisticsParameters.h:

(WebKit::ResourceLoadStatisticsParameters::encode const):
(WebKit::ResourceLoadStatisticsParameters::decode):

  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration standaloneApplicationURL]):
(-[_WKWebsiteDataStoreConfiguration setStandaloneApplication:]):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::platformSetNetworkParameters):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy const):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::standaloneApplicationURL const):
(WebKit::WebsiteDataStoreConfiguration::setStandaloneApplicationURL):

Tools:

Added a new test option called standaloneWebApplicationURL so that layout tests can
configure the website data store accordingly. Picking it up and using it requires
creating a new website data store with a configuration that has the standalone web
application URL.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::configureWebsiteDataStoreTemporaryDirectories):
(WTR::TestController::defaultWebsiteDataStore):
(WTR::parseStringTestHeaderValueAsURL):
(WTR::updateTestOptionsFromTestHeader):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::platformCreateWebView):

LayoutTests:

  • http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database.html: Added.
  • http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-expected.txt: Added.
  • http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion.html: Added.
7:19 PM Changeset in webkit [260168] by Andres Gonzalez
  • 6 edits
    2 adds in trunk/Source/WebCore

Add logging to core accessibility.
https://bugs.webkit.org/show_bug.cgi?id=210564

Reviewed by Chris Fleizach.

Added AXLogger class and AXTRACE macro. Used them in AXIsolatedTree.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/AXLogger.cpp: Added.

(WebCore::AXLogger::AXLogger):
(WebCore::AXLogger::~AXLogger):

  • accessibility/AXLogger.h: Added.
  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::AXIsolatedTree):
(WebCore::AXIsolatedTree::~AXIsolatedTree):
(WebCore::AXIsolatedTree::create):
(WebCore::AXIsolatedTree::nodeInTreeForID):
(WebCore::AXIsolatedTree::treeForID):
(WebCore::AXIsolatedTree::createTreeForPageID):
(WebCore::AXIsolatedTree::removeTreeForPageID):
(WebCore::AXIsolatedTree::treeForPageID):
(WebCore::AXIsolatedTree::nodeForID const):
(WebCore::AXIsolatedTree::objectsForIDs const):
(WebCore::AXIsolatedTree::generateSubtree):
(WebCore::AXIsolatedTree::createSubtree):
(WebCore::AXIsolatedTree::updateNode):
(WebCore::AXIsolatedTree::updateSubtree):
(WebCore::AXIsolatedTree::updateChildren):
(WebCore::AXIsolatedTree::focusedUIElement):
(WebCore::AXIsolatedTree::rootNode):
(WebCore::AXIsolatedTree::setRootNode):
(WebCore::AXIsolatedTree::setFocusedNode):
(WebCore::AXIsolatedTree::setFocusedNodeID):
(WebCore::AXIsolatedTree::removeNode):
(WebCore::AXIsolatedTree::removeSubtree):
(WebCore::AXIsolatedTree::appendNodeChanges):
(WebCore::AXIsolatedTree::applyPendingChanges):

  • platform/Logging.h:
7:18 PM Changeset in webkit [260167] by Chris Dumez
  • 6 edits in trunk

[IPC Hardening] MachMessage::messageSize() should use checked arithmetic
https://bugs.webkit.org/show_bug.cgi?id=210567
<rdar://problem/61734355>

Source/WebKit:

Reviewed by Geoffrey Garen.

Replace call to round_msg() call with a call to our new safeRoundMsg() which does
the same alignment up but using checked arithmetic to protect against overflows.

  • Platform/IPC/cocoa/MachMessage.cpp:

(IPC::safeRoundMsg):
(IPC::MachMessage::messageSize):

Source/WTF:

Reviewed by Geoffrey Garen.

Add operator / to CheckedArithmetic for convenience.

  • wtf/CheckedArithmetic.h:

(WTF::safeDivide):
(WTF::Checked::operator/=):
(WTF::operator/):

Tools:

Reviewed by Geoff Garen.

Add API test coverage for / operator in Checked.

  • TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp:

(TestWebKitAPI::TEST):

6:45 PM Changeset in webkit [260166] by keith_miller@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Disable Store-load pair auto-vectorization for JSC
https://bugs.webkit.org/show_bug.cgi?id=210574

Reviewed by Geoffrey Garen.

slp-vectorization appears to make our slow path code significantly
slower. That's because when we materialize our constant bytecode
structs into C++ we load all the fields at the same time then
widen them to the struct's member C++ size. Since we have 3
different possible sizes Clang generates a total mess of
code. Disabling this does not appear to be a regression on any
platform I tested and improves the performance of slow path code
significantly in micro benchmarks.

  • CMakeLists.txt:
  • Configurations/JavaScriptCore.xcconfig:
6:40 PM Changeset in webkit [260165] by rmorisset@apple.com
  • 5 edits in trunk/Source

Flaky Test: fetch/fetch-worker-crash.html
https://bugs.webkit.org/show_bug.cgi?id=187257
<rdar://problem/48527526>

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

The crash is coming from setExceptionPorts which is inlined in WTF::registerThreadForMachExceptionHandling.
From the error message we know that the problem is an "invalid port right".
http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/thread_set_exception_ports.html tells us that the "port right" is the third parameter to thread_set_exception_ports, which is exceptionPort in our case.
exceptionPort is a global variable defined at the top of Signals.cpp:

static mach_port_t exceptionPort;

It is set in exactly one place:

kern_return_t kr = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &exceptionPort);

in a std::call_once, in startMachExceptionHandlerThread().
Note that startMachExceptionHandlerThread() is called from the main thread just before the point where we are stuck.. and there is no synchronization to make sure it completed and its effect is visible to the worker thread before it uses exceptionPort.

So I think the crash is due to this race between allocating exceptionPort and using it, resulting in an invalid exceptionPort being sometimes passed to the kernel.
So this patch is a simple speculative fix, by running startMachExceptionHandlerThread() in initializeThreading(), before JSLock()::lock() can be run.

  • runtime/InitializeThreading.cpp:

(JSC::initializeThreading):

Source/WTF:

Make startMachExceptionHandlerThread visible so that we can make sure it is called whenever initializing JSC.

  • wtf/threads/Signals.cpp:

(WTF::startMachExceptionHandlerThread):

  • wtf/threads/Signals.h:
5:31 PM Changeset in webkit [260164] by Kocsen Chung
  • 2 edits in branches/safari-610.1.10-branch/Source/WebKit

Cherry-pick r260133. rdar://problem/61856640

REGRESSION (r259610): WebGL does not work at all on iOS (was: Google Maps tiles turn black after initial load)
<rdar://problem/61794480>

Unreviewed, partial revert of r259610 because it broke Google Maps.
Stop using RunningBoard for the "Foreground" assertion because it fails to
give the target GPU access.

  • UIProcess/ios/ProcessAssertionIOS.mm: (WebKit::runningBoardNameForAssertionType):

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

5:07 PM Changeset in webkit [260163] by Simon Fraser
  • 6 edits in trunk/Source/WebCore

Lay the groundwork for SynchronousScrollingReason on overflow nodes
https://bugs.webkit.org/show_bug.cgi?id=210565

Reviewed by Tim Horton.

Make setSynchronousScrollingReasons() public on ScrollingCoordinator because we're going
to be calling it for overflow scrolling nodes.

Call ScrollingCoordinator::slowRepaintObjectsDidChange() not just when we go between
none some some slow-repaint objects, but whenever the set changes. slowRepaintObjectsDidChange()
is lightweight.

Minor cleanup in FrameView to avoid testing Page* nullness every time.

  • page/FrameView.cpp:

(WebCore::FrameView::prepareForDetach):
(WebCore::FrameView::isScrollSnapInProgress const):
(WebCore::FrameView::usesAsyncScrolling const):
(WebCore::FrameView::addSlowRepaintObject):
(WebCore::FrameView::removeSlowRepaintObject):
(WebCore::FrameView::addViewportConstrainedObject):
(WebCore::FrameView::removeViewportConstrainedObject):
(WebCore::FrameView::scrollingCoordinator const):
(WebCore::FrameView::shouldUpdateCompositingLayersAfterScrolling const):
(WebCore::FrameView::isRubberBandInProgress const):
(WebCore::FrameView::requestScrollPositionUpdate):
(WebCore::FrameView::layoutOrVisualViewportChanged):
(WebCore::FrameView::performPostLayoutTasks):
(WebCore::FrameView::scrollableAreaSetChanged):
(WebCore::FrameView::wheelEvent):
(WebCore::FrameView::setScrollPinningBehavior):

  • page/FrameView.h:
  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::slowRepaintObjectsDidChange):
(WebCore::ScrollingCoordinator::synchronousScrollingReasonsForFrameView const):
(WebCore::ScrollingCoordinator::updateSynchronousScrollingReasons):
(WebCore::ScrollingCoordinator::shouldUpdateScrollLayerPositionSynchronously const):
(WebCore::ScrollingCoordinator::synchronousScrollingReasonsAsText const):
(WebCore::ScrollingCoordinator::frameViewHasSlowRepaintObjectsDidChange): Deleted.
(WebCore::ScrollingCoordinator::synchronousScrollingReasons const): Deleted.

  • page/scrolling/ScrollingCoordinator.h:

(WebCore::ScrollingCoordinator::setSynchronousScrollingReasons):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateBacking):

5:04 PM Changeset in webkit [260162] by Ross Kirsling
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed build fix for r260161.

  • runtime/IntlObject.cpp:

(JSC::canonicalLangTag):

4:33 PM Changeset in webkit [260161] by Ross Kirsling
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, address Darin's feedback on r260151.

  • runtime/IntlObject.cpp:

(JSC::canonicalLangTag):

4:32 PM Changeset in webkit [260160] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebKit

[IPC Hardening] MachMessage::create() should use checked arithmetic
<https://webkit.org/b/210572>
<rdar://problem/61729947>

Reviewed by Chris Dumez.

  • Platform/IPC/cocoa/ConnectionCocoa.mm:

(IPC::Connection::sendOutgoingMessage):

  • Add nullptr check since MachMessage::create() can return an empty std::unique_ptr<> now.
  • Platform/IPC/cocoa/MachMessage.cpp:

(IPC::MachMessage::create):

  • Use CheckedSize to compute the buffer size.
4:26 PM Changeset in webkit [260159] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

Unreviewed PLT fix after r260081.

  • WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:

(WebKit::InjectedBundle::decodeBundleParameters):

4:17 PM Changeset in webkit [260158] by Ben Nham
  • 2 edits in trunk/Source/WebKit

DidFirstLayerFlush IPC can be head-of-line-blocked and delay first paint by 200+ ms on process swap
https://bugs.webkit.org/show_bug.cgi?id=210571

Reviewed by Geoffrey Garen.

When we process swap, the layer swap/unhiding for the new hosted layer is gated by the
DidFirstLayerFlush IPC. But actually sending this IPC can be head-of-line blocked for an
arbitrarily long time because we append it to the queue of messages for the main run loop to
process. In some cases, e.g. for the NYT PLT content, this blocks first paint by 200 ms
while the WebProcess main thread is busy doing other things (like executing deferred
scripts).

To fix this, use a CATransaction commit handler to send the IPC right after we commit.

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::sendDidFirstLayerFlushIfNeeded):

4:12 PM Changeset in webkit [260157] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r260101. rdar://problem/61853298

createArchiveList() in WebCoreArgumentCodersMac.mm should do more validity checks
<https://webkit.org/b/210448>
<rdar://problem/61677029>

Reviewed by Darin Adler.

  • Shared/mac/WebCoreArgumentCodersMac.mm: (IPC::createArchiveList): Add more validity checks.

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

4:09 PM Changeset in webkit [260156] by Wenson Hsieh
  • 3 edits in trunk/Source/WebKit

Unreviewed, fix the watchOS and tvOS builds after r260146

Move some code for controlling the presentation of context menus on iOS behind USE(UICONTEXTMENU).

  • UIProcess/ios/WKActionSheetAssistant.h:
  • UIProcess/ios/WKContentViewInteraction.mm:
3:16 PM Changeset in webkit [260155] by Diego Pino Garcia
  • 2 edits
    8 adds in trunk/LayoutTests

[GTK] Gardening, emit baselines after r260139
https://bugs.webkit.org/show_bug.cgi?id=210573

Unreviewed gardening.

  • platform/gtk/imported/w3c/web-platform-tests/css/css-animations/Element-getAnimations.tentative-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt: Added.
3:01 PM Changeset in webkit [260154] by Jack Lee
  • 2 edits in trunk/LayoutTests

Infinite loop in InsertListCommand::doApply()
https://bugs.webkit.org/show_bug.cgi?id=210354
<rdar://problem/61427778>

Reviewed by Geoffrey Garen.

Update the regression test for this hang issue.

  • editing/inserting/insert-list-end-of-table-expected.txt: Added.
  • editing/inserting/insert-list-end-of-table.html: Added.
2:57 PM Changeset in webkit [260153] by Jack Lee
  • 3 edits
    2 adds in trunk

Source/WebCore:
ASSERTION FAILED: !selectionToDelete.isNone() in TypingCommand::forwardDeleteKeyPressed
when deleting a UserSelect::None element.
https://bugs.webkit.org/show_bug.cgi?id=210530
<rdar://problem/58591480>

Reviewed by Geoffrey Garen.

Quit forwardDeleteKeyPressed() if FrameSelection::modify() returns empty selection.

Test: editing/deleting/forward-delete-UserSelect-None-element.html

  • editing/TypingCommand.cpp:

(WebCore::TypingCommand::forwardDeleteKeyPressed):

LayoutTests:
ASSERTION FAILED: !selectionToDelete.isNone() in TypingCommand::forwardDeleteKeyPressed
when deleting a UserSelect::None element.
https://bugs.webkit.org/show_bug.cgi?id=210530
<rdar://problem/58591480>

Reviewed by Geoffrey Garen.

Added a regression test for the crash.

  • editing/deleting/forward-delete-UserSelect-None-element-expected.txt: Added.
  • editing/deleting/forward-delete-UserSelect-None-element.html: Added.
2:23 PM Changeset in webkit [260152] by Kocsen Chung
  • 1 copy in tags/Safari-610.1.9.3

Tag Safari-610.1.9.3.

2:18 PM Changeset in webkit [260151] by Ross Kirsling
  • 9 edits in trunk

[ECMA-402] Extension values should default to true, canonicalize without "-true"
https://bugs.webkit.org/show_bug.cgi?id=210457

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/intl-collator.js:
  • stress/intl-datetimeformat.js:
  • stress/intl-numberformat.js:
  • stress/intl-object.js:
  • stress/intl-pluralrules.js:

Fix tests.

  • test262/expectations.yaml:

Mark two test cases as passing.

Source/JavaScriptCore:

This patch implements two simple intertwining updates to ECMA-402:

  • runtime/IntlObject.cpp:

(JSC::canonicalLangTag):
(JSC::resolveLocale):

2:07 PM Changeset in webkit [260150] by Peng Liu
  • 10 edits in trunk/Source

Video elements don't return to the correct position when exiting fullscreen
https://bugs.webkit.org/show_bug.cgi?id=210529

Reviewed by Jer Noble.

Source/WebCore:

Add WEBCORE_EXPORT to the function setNeedsDOMWindowResizeEvent().

  • dom/Document.h:

Source/WebKit:

Some web pages use the "resize" event handler to calculate the element size after
they exit fullscreen, and the calculation is based on the container element size which
might be affected by the fullscreen mode.

We need to call WebPageProxy::setNeedsDOMWindowResizeEvent() to fire the "resize" event
in the repaint callback after the exiting fullscreen process is completed and the
possible layout change due to exiting fullscreen is done. Otherwise the size calculation
might be wrong.

  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:

(-[WKFullScreenWindowController _completedExitFullScreen]):

  • UIProcess/mac/WKFullScreenWindowController.mm:

(-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setNeedsDOMWindowResizeEvent):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
1:42 PM Changeset in webkit [260149] by Kocsen Chung
  • 8 edits in branches/safari-610.1.9-branch/Source

Versioning.

1:38 PM Changeset in webkit [260148] by commit-queue@webkit.org
  • 2 edits in trunk/JSTests

stress/delete-property-dfg-inline.js.ftl-no-cjit-small-pool consistently timing out on debug JSC bot
https://bugs.webkit.org/show_bug.cgi?id=210513

Patch by Justin Michaud <justin@justinmichaud.com> on 2020-04-15
Reviewed by Saam Barati.

  • stress/delete-property-dfg-inline.js:
1:22 PM Changeset in webkit [260147] by Wenson Hsieh
  • 7 edits
    2 adds in trunk

[iPadOS] Some pages indefinitely zoom in and out due to idempotent text autosizing
https://bugs.webkit.org/show_bug.cgi?id=210551
<rdar://problem/56820674>

Reviewed by Tim Horton.

Source/WebCore:

Rename m_initialScale and initialScale() on Page to m_initialScaleIgnoringContentSize and
initialScaleIgnoringContentSize(), respectively. See WebKit/ChangeLog for more details.

Test: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-reaches-stable-state.html

  • page/Page.cpp:

(WebCore::Page::setInitialScaleIgnoringContentSize):
(WebCore::Page::setInitialScale): Deleted.

  • page/Page.h:

(WebCore::Page::initialScaleIgnoringContentSize const):
(WebCore::Page::initialScale const): Deleted.

  • style/StyleAdjuster.cpp:

(WebCore::Style::Adjuster::adjustmentForTextAutosizing):

Source/WebKit:

On a non-responsive web page with one or lines of non-wrapping text of a specific length (just under 1920px),
it's possible for the combination of idempotent text autosizing heuristics and viewport shrink-to-fit to cause
the single line of text to grow and shrink in size indefinitely, and additionally cause the initial scale to
thrash between multiple values indefinitely. This manifests in the entire page repeatedly zooming in and out
immediately after page load.

Consider the following scenario:

(1) A viewport configuration change (e.g. due to parsing the viewport meta tag) schedules the timer to reset

idempotent text autosizing. Let's suppose the page has a really long line of non-wrapping 12px text that is
below 1920px wide.

(2) The timer fires, invalidating styles and recomputing text autosizing given the current initial scale. The

current initial scale is below 1, since ViewportConfiguration will attempt to shrink to fit the page to
avoid horizontal scrolling. This causes text autosizing to boost the long line of text to a larger value
(let's say 17px).

(3) The next time we perform style recomputation and layout, we discover that the content width of the page is

now larger than 1920px, which is the maximum width which we'll attempt to shrink to fit; when computing
initial scale, we give up trying to shrink down to avoid making the inital scale too small, and instead just
keep it at 1.

(4) This change in viewport configuration then schedules another idempotent text autosizing reset. When this

timer fires, it sees that the initial scale is now 1, which means that the text is no longer boosted, so we
make the single line of text small again (12px).

(5) After the next style recomputation and layout, this causes the content width of the page to dip below the

1920px threshold, causing the initial scale to dip below 1 again. As detailed above, this schedules another
idempotent text autosizing update, which now boosts font size once again, and the cycle continues.

To fix this, instead of consulting the initial scale (ViewportConfiguration::initialScale()) when computing
the boosted font size for idempotent text autosizing, we can instead ask for the initial scale ignoring content
size (ViewportConfiguration::initialScaleIgnoringContentSize()). This prevents changes in content size due to
idempotent autosizing from affecting the idempotent autosizing heuristic (through the different initial scale),
and ensures that this method of text autosizing actually remains idempotent.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::resetIdempotentTextAutosizingIfNeeded):
(WebKit::WebPage::viewportConfigurationChanged):

LayoutTests:

Add a layout test to verify that on a page with a single line of text, if idempotent text autosizing is enabled,
the text size is boosted by idempotent autosizing, but we don't end up getting into a state where the computed
font size flickers between multiple values.

  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-reaches-stable-state-expected.txt: Added.
  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-reaches-stable-state.html: Added.
1:20 PM Changeset in webkit [260146] by Megan Gardner
  • 5 edits in trunk/Source/WebKit

Data Detected Actions sheets are presented from odd locations.
https://bugs.webkit.org/show_bug.cgi?id=210531
<rdar://problem/60941346>

Reviewed by Wenson Hsieh.

Use the existing context menu targeted preview code to ensure that the
data detected menus are presented in a good location.

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

(-[WKActionSheetAssistant contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView contextMenuInteraction:willEndForConfiguration:animator:]):

12:51 PM Changeset in webkit [260145] by Ross Kirsling
  • 7 edits in trunk

[ECMA-402] Fix Intl.DateTimeFormat patterns and fields in WebKit
https://bugs.webkit.org/show_bug.cgi?id=209783

Reviewed by Keith Miller.

JSTests:

  • stress/date-toLocaleString.js:
  • stress/intl-datetimeformat.js:

Add tests and fix some existing ones.

  • test262/config.yaml:
  • test262/expectations.yaml:

Mark eight test cases passing...but skip half of them due to outdated CLDR data in macOS system ICU.

Source/JavaScriptCore:

This patch implements two intertwining normative changes to Intl.DateTimeFormat:

  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::initializeDateTimeFormat):
(JSC::IntlDateTimeFormat::partTypeString):

12:42 PM Changeset in webkit [260144] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Gardening of flaky failures
https://bugs.webkit.org/show_bug.cgi?id=210563

Unreviewed gardening.

  • platform/gtk/TestExpectations:
12:15 PM Changeset in webkit [260143] by Russell Epstein
  • 1 copy in tags/Safari-610.1.9.2

Tag Safari-610.1.9.2.

11:53 AM Changeset in webkit [260142] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

REGRESSION (r258977): Crash under Document::visibilityStateChanged
https://bugs.webkit.org/show_bug.cgi?id=210555

Reviewed by Youenn Fablet.

Re-introduce null check of page in Document::visibilityStateChanged() which got inadvertently
dropped in r258977.

  • dom/Document.cpp:

(WebCore::Document::visibilityStateChanged):

11:32 AM Changeset in webkit [260141] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Remove expectations for imported/blink/storage/indexeddb/blob-basics-metadata.html
https://bugs.webkit.org/show_bug.cgi?id=199117

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
11:21 AM Changeset in webkit [260140] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

REGRESSION( r260114): [ Mac and iOS ] imported/w3c/web-platform-tests/web-animations/timing-model/timelines/document-timelines.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=210549
<rdar://problem/61828495>

Unreviewed.

Partial revert of r260114. See webkit.org/b/210559 for details.

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks):

10:39 AM Changeset in webkit [260139] by graouts@webkit.org
  • 22 edits in trunk

[Web Animations] Add support for pseudoElement on KeyframeEffect and KeyframeEffectOptions
https://bugs.webkit.org/show_bug.cgi?id=207290
<rdar://problem/59199003>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Mark 23 additional WPT tests as PASS.

  • web-platform-tests/css/css-animations/Document-getAnimations.tentative-expected.txt:
  • web-platform-tests/css/css-animations/Element-getAnimations.tentative-expected.txt:
  • web-platform-tests/css/css-transitions/Document-getAnimations.tentative-expected.txt:
  • web-platform-tests/web-animations/idlharness.window-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events-expected.txt:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt:

Source/WebCore:

We add the required IDL bindings such that JS-originated Web Animations can target pseudo-elements, either via the KeyframeEffect.pseudoElement
property, or via the KeyframeEffectOptions.pseudoElement property, which is set on the object passed to the KeyframeEffect constrcutor and
Element.animate().

This means that a PseudoElement can be targeted by an animation even if it's not been created through style resolution by virtue of a ::before
or ::after selector and a "content" style rule. This means that when either the "target" or "pseudoElement" property of KeyframeEffect is set,
we ensure a PseudoElement is created and set on the host element if required. And additionally, we ensure that during style resolution, animations
are applied to such pseudo-elements with a new PseudoElement::isTargetedByKeyframeEffectRequiringPseudoElement() method that indicates that a
JS-originated KeyframeEffect targets this pseudo-element.

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::create): Handle the new KeyframeEffectOptions.pseudoElement property in the KeyframeEffect constructor.
(WebCore::KeyframeEffect::targetsPseudoElement const): Indicates whether this effect targets a pseudo-element and not a regular
element or a null target.
(WebCore::KeyframeEffect::targetElementOrPseudoElement const): Use the new targetsPseudoElement() method to determine whether a
pseudo-element is targeted. We also remove an assertion that only made sense when m_pseudoId could only be set via a CSS-originated
animation and another one when the only possible m_pseudoId values were PseudoId::Before and PseudoId::After.
(WebCore::KeyframeEffect::setTarget): Call the new didChangeTargetElementOrPseudoElement() method if the provided value differs
from the stored value for m_target.
(WebCore::KeyframeEffect::pseudoElement const): Return the matching normalized string with a :: prefix for m_pseudoId if the target
is a pseudo-element. Note that PseudoElement::pseudoElementNameForEvents() will only return a string for "::before" and "::after" since
we only know how to animate these pseudo-elements.
(WebCore::KeyframeEffect::setPseudoElement): Determine a matching PseudoId, if any, for the provided string, and call the new
didChangeTargetElementOrPseudoElement() method if the provided value differs from the stored value for m_pseudoId.
(WebCore::KeyframeEffect::didChangeTargetElementOrPseudoElement): New method called when either m_target or m_pseudoId is changed
such that we can ensure the required PseudoElement is created if the animation targets a pseudo-element. Then we run the same logic
that we used to in KeyframeEffect::setTarget().
(WebCore::KeyframeEffect::requiresPseudoElement const): Indicates whether a PseudoElement must remain created for this KeyframeEffect,
which is only necessary for JS-originated effects targeting a pseudo-element.

  • animation/KeyframeEffect.h:
  • animation/KeyframeEffect.idl:
  • animation/KeyframeEffectOptions.h:
  • animation/KeyframeEffectOptions.idl:
  • animation/KeyframeEffectStack.cpp:

(WebCore::KeyframeEffectStack::requiresPseudoElement const): Indicates whether one or more JS-originated keyframe effects in the stack target
the PseudoElement owning this stack.

  • animation/KeyframeEffectStack.h:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::commitStyles): Use KeyframeEffect::targetsPseudoElement() to determine whether the animation's effect's target is a
pseudo-element, in which case we need to throw a NoModificationAllowedError exception.

  • dom/PseudoElement.cpp:

(WebCore::PseudoElement::rendererIsNeeded): Return true also when one or more JS-originated keyframe effects in the stack target this pseudo-element.
(WebCore::PseudoElement::isTargetedByKeyframeEffectRequiringPseudoElement): Return true when one or more JS-originated keyframe effects in the stack
target this pseudo-element.

  • dom/PseudoElement.h:
  • rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:

(WebCore::createContentRenderers): Remove the assertion that the "content" property was set since it's valid for this function to now be called
due to JS-originated keyframe effects targeting the given pseudo-element. Instead we add an assertion that there are such keyframe effects in
case no "content" property was set.
(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement): Only remove pseudo-elements if there are no JS-originated keyframe effects
targeting the specified pseudo-element.

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolvePseudoStyle): Allow animated style resolution for pseudo-elements targeted by JS-originated keyframe effects.

10:27 AM Changeset in webkit [260138] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS ] scrollingcoordinator/mac/latching/horizontal-overflow-back-swipe.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=210351

Unreviewed test gardening.

  • platform/mac/TestExpectations:
10:22 AM Changeset in webkit [260137] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[iOS] Potential crash under WebProcess::platformInitializeWebProcess
https://bugs.webkit.org/show_bug.cgi?id=210547

Reviewed by Brent Fulgham.

If the UI process fails to issue an extension to the runningboard service, the WebContent process will crash
while trying to consume this extension.

No new tests, since the test runners are unsandboxed, so issuing the extension will always succeed.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

9:39 AM Changeset in webkit [260136] by Russell Epstein
  • 6 edits in branches/safari-610.1.9-branch

Cherry-pick r259753. rdar://problem/61360674

[macOS] Crash under WebKit::SandboxExtension::consume
https://bugs.webkit.org/show_bug.cgi?id=210188

Reviewed by Geoffrey Garen.

Source/WebKit:

When issuing a mach lookup extension to the database mapping service in the UI process fails, the WebContent
process will crash when trying to consume the extension.

No new tests, since I am not able to reproduce the issue.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeWebProcess):
  • WebProcess/com.apple.WebProcess.sb.in:

LayoutTests:

  • fast/sandbox/mac/sandbox-mach-lookup-expected.txt:
  • fast/sandbox/mac/sandbox-mach-lookup.html:

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

9:39 AM Changeset in webkit [260135] by Russell Epstein
  • 8 edits in branches/safari-610.1.9-branch/Source

Versioning.

9:35 AM Changeset in webkit [260134] by Brent Fulgham
  • 5 edits in trunk

[Cocoa] Remove generic parameter serialization fallback
https://bugs.webkit.org/show_bug.cgi?id=210509
<rdar://problem/55522650>

Reviewed by Geoffrey Garen.

Source/WebKit:

Tested by BundleFormDelegate parameter serialization tests...

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _setInputDelegate:]):

  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::elementDidFocus):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/BundleFormDelegate.mm:

(WKWebProcessPlugInWithoutRegisteredCustomClass): Update to reflect
fact that we block serialization of unregistered classes.

9:18 AM Changeset in webkit [260133] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

REGRESSION (r259610): WebGL does not work at all on iOS (was: Google Maps tiles turn black after initial load)
<rdar://problem/61794480>

Unreviewed, partial revert of r259610 because it broke Google Maps.
Stop using RunningBoard for the "Foreground" assertion because it fails to
give the target GPU access.

  • UIProcess/ios/ProcessAssertionIOS.mm:

(WebKit::runningBoardNameForAssertionType):

9:06 AM Changeset in webkit [260132] by Carlos Garcia Campos
  • 11 edits in trunk

[GTK4] Fix use of gtk init functions
https://bugs.webkit.org/show_bug.cgi?id=210550

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Add gtk_init and gtk_init_check receiving parameters to GtkVersioning.

  • PlatformGTK.cmake:
  • platform/graphics/PlatformDisplay.cpp:
  • platform/gtk/GtkVersioning.h:

(gtk_init):
(gtk_init_check):

Source/WebKit:

Include GtkVersioning.h instead of gtk.h

  • WebProcess/gtk/WebProcessMainGtk.cpp:

Tools:

Include GtkVersioning.h instead of gtk.h.

  • TestWebKitAPI/Tests/WebKitGtk/AccessibilityTestServer.cpp:
  • TestWebKitAPI/Tests/WebKitGtk/InspectorTestServer.cpp:
  • TestWebKitAPI/gtk/main.cpp:
  • WebKitTestRunner/gtk/main.cpp:
8:48 AM Changeset in webkit [260131] by ysuzuki@apple.com
  • 4 edits
    20 adds in trunk

import.meta.url: baseURL for a module script should be response URL, not request URL
https://bugs.webkit.org/show_bug.cgi?id=205294

Reviewed by Youenn Fablet.

Source/WebCore:

The module should expose response URL as import.meta.url instead of request URL.
If redirection happens, this URL should be redirected one.

  • bindings/js/ScriptModuleLoader.cpp:

(WebCore::ScriptModuleLoader::resolve):
(WebCore::ScriptModuleLoader::responseURLFromRequestURL):
(WebCore::ScriptModuleLoader::createImportMetaProperties):
(WebCore::ScriptModuleLoader::notifyFinished):

  • bindings/js/ScriptModuleLoader.h:

LayoutTests:

AppleWin networking does not properly propagate fragment if redirect location clears it. This is a known issue[1].

[1]: See http/tests/navigation/redirect-to-fragment2.html [ Failure ] in platform/win/TestExpectations.

  • http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-redirect-expected.txt: Added.
  • http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-redirect-with-fragment-expected.txt: Added.
  • http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-redirect-with-fragment.html: Added.
  • http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-redirect.html: Added.
  • http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-with-fragment-expected.txt: Added.
  • http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-with-fragment.html: Added.
  • http/wpt/html/semantics/scripting-1/the-script-element/module/resources/import-meta-url-expose.js: Added.
  • http/wpt/resources/redirect.py: Added.

(main):

  • http/wpt/service-workers/module-meta-url-fragment-worker.js: Added.

(async e):

  • http/wpt/service-workers/module-meta-url-fragment.https-expected.txt: Added.
  • http/wpt/service-workers/module-meta-url-fragment.https.html: Added.
  • http/wpt/service-workers/resources/module-meta-url-fragment.html: Added.
  • platform/win/http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-redirect-with-fragment-expected.txt: Added.
8:46 AM Changeset in webkit [260130] by Jonathan Bedard
  • 4 edits in trunk/Tools

REGRESSION: [ Mojave+ Debug WK1 ] Layout Test imported/blink/storage/indexeddb/blob-basics-metadata.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=199117
<rdar://problem/52967035>

Reviewed by Alexey Proskuryakov.

  • Scripts/run-javascriptcore-tests: Set JSC_useKernTCSM to false.
  • Scripts/webkitpy/port/base.py:

(Port.setup_environ_for_server): Forward JSC_useKernTCSM.

  • Scripts/webkitpy/port/driver.py:

(Driver._setup_environ_for_driver): Set JSC_useKernTCSM to false.

8:32 AM Changeset in webkit [260129] by jer.noble@apple.com
  • 4 edits in trunk/Source

isNullFunctionPointer() can fail for symbols not explicitly marked as weakly linked.
https://bugs.webkit.org/show_bug.cgi?id=210532

Reviewed by Tim Horton.

Source/ThirdParty/libwebrtc:

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

Source/WebCore:

Symbols whose declarations are explicitly marked as weakly imported are guaranteed to be
NULL when the library containing those symbols is not available at runtime, or when the
symbol itself isn't present in the version of the library which is available at runtime. For
symbols which are not explicitly marked as weakly imported (because, e.g., the framework
itself is weakly imported), this technique can fail. Rather than test the nullity of a
random static C++ class method with isNullFunctionPointer(), explicitly mark as weak_import
a utility method added by the WebKit project, which conveniently is already used from within
LibWebRTCProviderCocoa, and test the nullity of that method instead.

  • platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:

(WebCore::LibWebRTCProvider::webRTCAvailable):

8:29 AM Changeset in webkit [260128] by Peng Liu
  • 2 edits in trunk/Source/WebKit

Adopt interface AVAudioRoutingArbiter for Mac
https://bugs.webkit.org/show_bug.cgi?id=210167

Reviewed by Jer Noble.

A follow-up patch to fix a build error.

  • UIProcess/Media/cocoa/AudioSessionRoutingArbitratorProxyCocoa.mm:

(WebKit::SharedArbitrator::beginRoutingArbitrationForArbitrator):

7:54 AM Changeset in webkit [260127] by Claudio Saavedra
  • 2 edits in trunk/Source/WebCore

[GTK] Make PlatformScreen::screenDPI() GTK4-ready
https://bugs.webkit.org/show_bug.cgi?id=210543

Reviewed by Adrian Perez de Castro.

No new tests needed.

This method is using deprecated and removed APIs
from GDK. Guard the removed API usage so that it's only
used in GTK3 and update to use the replacement APIs otherwise.

Also, make it to also use the gtk-xft-dpi GtkSettings property.
This method is mostly used in response to a change in this
property, so ignoring its value doesn't seem a good idea.

The following priority is used:

  1. (GTK3 only) query gdk_screen_get_resolution().
  2. Use the GtkSettings::gtk-xft-dpi property.
  3. Calculate the actual DPI from the monitor 0's properties.
  4. If none of these succeed, use the default DPI, 96.
  • platform/gtk/PlatformScreenGtk.cpp:

(WebCore::screenDPI):

7:33 AM Changeset in webkit [260126] by Carlos Garcia Campos
  • 4 edits
    1 delete in trunk/Source/WebCore

[GTK] Remove IconGtk
https://bugs.webkit.org/show_bug.cgi?id=210546

Reviewed by Adrian Perez de Castro.

It's currently unused in GTK port since we never show an icon for file uploads.

  • SourcesGTK.txt:
  • platform/graphics/Icon.cpp:
  • platform/graphics/Icon.h:
  • platform/graphics/gtk/IconGtk.cpp: Removed.
7:25 AM Changeset in webkit [260125] by Adrian Perez de Castro
  • 4 edits
    1 add in trunk/Source

[GTK4] Provide an alternative to gtk_widget_{get,is}_toplevel()
https://bugs.webkit.org/show_bug.cgi?id=210463

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Adapt utility functions to GTK4, and provide replacement implementations for the
gtk_widget_get_tolevel() and gtk_widget_is_toplevel() functions for GTK4 builds.

No new tests needed.

  • platform/gtk/GtkUtilities.cpp:

(WebCore::gtkWindowGetOrigin): Added.
(WebCore::convertWidgetPointToScreenPoint): Move code used to find the window position
into a separate function, and use it to avoid the USE(GTK4) conditional here.
(WebCore::widgetIsOnscreenToplevelWindow): Adapt to make it work with GTK4.

  • platform/gtk/GtkVersioning.h: Added.

(gtk_widget_is_toplevel): Alternative implementation for GTK4.
(gtk_widget_get_toplevel): Ditto.
(gtk_window_get_position): Ditto.

Source/WebKit:

  • UIProcess/API/glib/WebKitUIClient.cpp: Adapt to take into account that GTK4 does not

provide the GtkWidget.configure-event signal.

6:50 AM Changeset in webkit [260124] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Gardening of flaky failures
https://bugs.webkit.org/show_bug.cgi?id=210545

Unreviewed gardening.

  • platform/gtk/TestExpectations:
6:08 AM Changeset in webkit [260123] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebCore

[GTK4] Adapt to cursor API changes
https://bugs.webkit.org/show_bug.cgi?id=210453

Reviewed by Carlos Garcia Campos.

No new tests needed.

  • platform/gtk/CursorGtk.cpp:

(WebCore::fallbackCursor): Utility function which returns the "default" cursor for GTK4.
(WebCore::createNamedCursor): Adapt to the changes in the gdk_cursor_new_from_name().
(WebCore::createCustomCursor): Create a GdkTexture directly when the given Cairo surface is
in one of the pixel formats supported by gdk_memory_texture_new(), otherwise convert first;
then create a GdkCursor from the GdkTexture.

5:28 AM Changeset in webkit [260122] by Carlos Garcia Campos
  • 2 edits in trunk

Unreviewed. Do not run gtk-doc when building with GTK4

It's not supported yet.

  • Source/PlatformGTK.cmake:
2:49 AM Changeset in webkit [260121] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Gardening of flaky failures
https://bugs.webkit.org/show_bug.cgi?id=210542

Unreviewed gardening.

  • platform/gtk/TestExpectations:
1:53 AM Changeset in webkit [260120] by Said Abou-Hallawa
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r259891.

Causes significant iOS MotionMark regression

Reverted changeset:

"Switch unused IOKit classes from allow-with-report to deny-
with-report"
https://bugs.webkit.org/show_bug.cgi?id=210136
https://trac.webkit.org/changeset/259891

12:02 AM Changeset in webkit [260119] by Devin Rousso
  • 14 edits
    3 adds in trunk

[ESNext] Implement logical assignment operators
https://bugs.webkit.org/show_bug.cgi?id=209716

Reviewed by Ross Kirsling.

JSTests:

  • stress/logical-assignment-operator-and.js: Added.
  • stress/logical-assignment-operator-nullish.js: Added.
  • stress/logical-assignment-operator-or.js: Added.
  • test262/config.yaml:
  • test262/expectations.yaml:

Right now, test262 expects an early error to be thrown if the lhs is not simple, which does
not match what we do with other read-modify assignment operators. This is likely to change
in the future to match existing behavior (throw a ReferenceError) [1].

[1]: <https://github.com/tc39/ecma262/issues/257#issuecomment-502878708>

Source/JavaScriptCore:

Implement the logical assignment operators proposal, which is now Stage 3. It introduces
three new assignment operators which will only store the result of the rhs in the lhs if the
lhs meets the given condition:

  • ??=, for if the lhs is nullish (null or undefined)
  • ||=, for if the lhs is falsy
  • &&=, for if the lhs is truthy

This short circuiting can be beneficial as it can avoid a redundant store when used in the
common JavaScript programming pattern of "defaulting" a parameter.

`js

function foo(x) {

x = x
42;

}

`

If x is a truthy value, it would result in the rhs x being stored back into the lhs x.
In some situations, this can have negative unintended side-effects, such as for innerHTML.

Logical assignment operators, however, are defined such that they only store if the rhs is
to actually be needed/used, skipping the redundant store and simply returning lhs otherwise.

In the case of readonly references, this means that an error is only thrown when the
assignment occurs, meaning that if the lhs already satisfies the condition it will be used
and returned with no error.

  • parser/ParserTokens.h:
  • parser/Lexer.cpp:

(JSC::Lexer<T>::lexWithoutClearingLineTerminator):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseAssignmentExpression):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::makeAssignNode):

  • parser/Nodes.h:
  • parser/NodeConstructors.h:

(JSC::ShortCircuitReadModifyResolveNode::ShortCircuitReadModifyResolveNode): Added.
(JSC::ShortCircuitReadModifyBracketNode::ShortCircuitReadModifyBracketNode): Added.
(JSC::ShortCircuitReadModifyDotNode::ShortCircuitReadModifyDotNode): Added.

  • bytecompiler/NodesCodegen.cpp:

(JSC::emitShortCircuitAssignment): Added.
(JSC::ShortCircuitReadModifyResolveNode::emitBytecode): Added.
(JSC::ShortCircuitReadModifyDotNode::emitBytecode): Added.
(JSC::ShortCircuitReadModifyBracketNode::emitBytecode): Added.

  • runtime/OptionsList.h:

Add a useLogicalAssignmentOperators setting for controlling this feature.

Tools:

  • Scripts/run-jsc-stress-tests:

Apr 14, 2020:

11:20 PM Changeset in webkit [260118] by Simon Fraser
  • 10 edits
    3 adds in trunk

[Async overflow scroll] Backgrounds missing on gmail sometimes
https://bugs.webkit.org/show_bug.cgi?id=210506
<rdar://problem/60523869>

Reviewed by Zalan Bujtas.
Source/WebCore:

When painting the scrolled contents layers of accelerated overflow:scroll, RenderBlock::paint()
needs to not short-circuit when the dirty rect is outside a clipping rect, because accelerated
overflow involves overdraw for tiles outside the visible area.

There were two code paths that made this mostly work: overflowRectForPaintRejection() tested for
usesCompositedScrolling(), and the #if PLATFORM(IOS_FAMILY) made it work on iOS.

For content involving flexbox, overflowRectForPaintRejection() gave the wrong answer because
flex layout would sometimes clear m_overflow, even on an overflow:scroll element.

So remove overflowRectForPaintRejection(), and instead revert to the simple visualOverflowRect(),
but first check a bit that's passed down from compositing code that indicates that
we're painting the contents of composited scroll

Test: compositing/scrolling/async-overflow-scrolling/mac/overflow-in-flex-empty-tiles.html

  • rendering/PaintPhase.h:
  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::paint):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::overflowRectForPaintRejection const): Deleted.

  • rendering/RenderBox.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::paintForegroundForFragments):

LayoutTests:

Test with a scroller inside a flexbox; programmatically scrolls the scroller to the bottom,
then mouseWheels up to reveal new tiles.

  • TestExpectations:
  • compositing/scrolling/async-overflow-scrolling/mac/overflow-in-flex-empty-tiles-expected.html: Added.
  • compositing/scrolling/async-overflow-scrolling/mac/overflow-in-flex-empty-tiles.html: Added.
  • platform/mac/TestExpectations: Test is macOS-only because it uses wheel events.
10:30 PM Changeset in webkit [260117] by jer.noble@apple.com
  • 2 edits in trunk/Tools

WKTR always enables capturing audio/video in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=210319

Reviewed by Tim Horton.

Capturing in the GPUProcess should be off by default. GPU capture can be enabled at runtime via
the --internal-feature flag of run-webkit-tests.

  • WebKitTestRunner/TestOptions.h:
9:13 PM Changeset in webkit [260116] by Megan Gardner
  • 4 edits in trunk/Source/WebKit

File Upload Menus presented from odd locations.
https://bugs.webkit.org/show_bug.cgi?id=210523
<rdar://problem/60390846>

Use the existing context menu targeted preview code to ensure that the
file menus are presented in a good location.

Reviewed by Wenson Hsieh.

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

(-[WKFileUploadPanel contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]):

8:10 PM Changeset in webkit [260115] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GTK] Garden media/media-source/media-source-seek-back flaky crashes

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
7:46 PM Changeset in webkit [260114] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

Content expanding is broken on icourse163.org
https://bugs.webkit.org/show_bug.cgi?id=210510
<rdar://problem/45951820>

Reviewed by Simon Fraser.

www.icourse163.org's animation code expects a decimal point in the rAF timestamp (millisecond resolution).

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks):

  • page/Quirks.cpp:

(WebCore::Quirks::needsMillisecondResolutionForHighResTimeStamp const):

  • page/Quirks.h:
7:35 PM Changeset in webkit [260113] by Devin Rousso
  • 18 edits
    2 copies
    1 add in trunk

Web Inspector: Debugger: add a Step next that steps by expression
https://bugs.webkit.org/show_bug.cgi?id=210324

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

Step next is a hybrid of Step over and Step into which continues execution to the next pause
opportunity within the current (or ancestor) call frame. It is especially useful when trying
to debug minified code, such as trying to continue to c() in a() && b() && c();, where
Step over would continue to the next statement (i.e. after the ;) and Step in would
continue to the first line inside a() (and would require a Step out to get back).

  • inspector/protocol/Debugger.json:
  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::stepNext): Added.

  • debugger/Debugger.h:
  • debugger/Debugger.cpp:

(JSC::Debugger::stepNextExpression): Added.
(JSC::Debugger::atExpression):
(JSC::Debugger::clearNextPauseState):

Source/WebInspectorUI:

Step next is a hybrid of Step over and Step into which continues execution to the next pause
opportunity within the current (or ancestor) call frame. It is especially useful when trying
to debug minified code, such as trying to continue to c() in a() && b() && c();, where
Step over would continue to the next statement (i.e. after the ;) and Step in would
continue to the first line inside a() (and would require a Step out to get back).

  • UserInterface/Controllers/DebuggerManager.js:

(WI.DebuggerManager.prototype.stepNext): Added.

  • UserInterface/Base/Main.js:

(WI.contentLoaded):
(WI.debuggerStepNext): Added.

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerPaused):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerResumed):

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Images/StepNext.svg: Added.

LayoutTests:

  • inspector/debugger/stepping/stepNext.html: Added.
  • inspector/debugger/stepping/stepNext-expected.txt: Added.
  • inspector/debugger/stepping/stepInto.html:
  • inspector/debugger/stepping/stepInto-expected.txt:
  • inspector/debugger/stepping/stepOut.html:
  • inspector/debugger/stepping/stepOut-expected.txt:
  • inspector/debugger/stepping/stepOver.html:
  • inspector/debugger/stepping/stepOver-expected.txt:

Renamed functions for clarity and added additional test cases from other commands.

6:24 PM Changeset in webkit [260112] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

dictionaryValueOfType() in WebCoreArgumentCodersMac.mm can be replaced with dynamic_cf_cast<>()
<https://webkit.org/b/210456>

Reviewed by Darin Adler.

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::dictionaryValueOfType): Delete.
(IPC::extractDictionaryValue): Add.

  • Use dynamic_cf_cast<>() in place of manually checking the CFTypeID of each object.

(IPC::createArchiveList):

  • Call new extractDictionaryValue() template function to verify values are the correct types in the dictionary and to set the output variables.
6:08 PM Changeset in webkit [260111] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

Use CFArrayGetValues() in createArchiveList() in WebCoreArgumentCodersMac.mm
<https://webkit.org/b/210519>

Reviewed by Darin Adler.

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::createArchiveList):

  • Use CFArrayGetValues() to copy array more efficiently.
6:07 PM Changeset in webkit [260110] by Alan Coon
  • 2 edits in branches/safari-610.1.10-branch/Source/WebKit

Cherry-pick r260104. rdar://problem/61800020

REGRESSION (r259898): Tabs occasionally go blank and get stuck that way
https://bugs.webkit.org/show_bug.cgi?id=210520
<rdar://problem/61776830>

Reviewed by Simon Fraser.

  • UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::setAcceleratedCompositingRootLayer): setThumbnailView calls setAcceleratedCompositingRootLayer in order to reconnect the existing root layer. After r259898, this would cause us to go down the process-swap path, and hide the root layer, and nothing would ever come along and fix it.

If setAcceleratedCompositingRootLayer is called with the existing root
layer, that cannot be a process swap, so ignore it and proceed as before.

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

4:59 PM Changeset in webkit [260109] by fpizlo@apple.com
  • 3 edits in trunk/Websites/webkit.org

Unreviewed, check in some more files for a blog post.

  • blog-files/speculation-in-jsc/full-add-cfg.graffle:
  • blog-files/speculation-in-jsc/full-add-cfg.svg:
4:58 PM Changeset in webkit [260108] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Don't show tooltips for tabs
https://bugs.webkit.org/show_bug.cgi?id=210464

Reviewed by Devin Rousso.

Don't show tooltips when they match the name of the tab. We no longer truncate tab names
so the tooltip is redundant.

Only show tooltips for settings and search (pinned tabs).

  • UserInterface/Views/TabBarItem.js:

(WI.TabBarItem):
(WI.TabBarItem.prototype.set title):

4:57 PM Changeset in webkit [260107] by fpizlo@apple.com
  • 3 edits in trunk/Websites/webkit.org

Unreviewed, check in some more files for a blog post.

  • blog-files/speculation-in-jsc/full-add-cfg.graffle:
  • blog-files/speculation-in-jsc/full-add-cfg.svg:
4:57 PM Changeset in webkit [260106] by sbarati@apple.com
  • 3 edits in trunk/JSTests

Skip all low executable memory wasm tests on arm64
https://bugs.webkit.org/show_bug.cgi?id=210522

Reviewed by Tadeu Zagallo.

In my original JIT islands patch, I only skipped one of the "low executable
memory" tests. But the others are also causing problems on the iOS JSC test
runners, so let's just skip them all.

  • wasm/lowExecutableMemory/exports-oom.js:
  • wasm/lowExecutableMemory/imports-oom.js:
4:54 PM Changeset in webkit [260105] by fpizlo@apple.com
  • 1 edit
    2 adds in trunk/Websites/webkit.org

Unreviewed, check in some more files for a blog post.

  • blog-files/speculation-in-jsc/full-add-cfg.graffle: Added.
  • blog-files/speculation-in-jsc/full-add-cfg.svg: Added.
4:53 PM Changeset in webkit [260104] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r259898): Tabs occasionally go blank and get stuck that way
https://bugs.webkit.org/show_bug.cgi?id=210520
<rdar://problem/61776830>

Reviewed by Simon Fraser.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::setAcceleratedCompositingRootLayer):
setThumbnailView calls setAcceleratedCompositingRootLayer in order to reconnect the
existing root layer. After r259898, this would cause us to go down the
process-swap path, and hide the root layer, and nothing would ever
come along and fix it.

If setAcceleratedCompositingRootLayer is called with the existing root
layer, that cannot be a process swap, so ignore it and proceed as before.

4:33 PM Changeset in webkit [260103] by fpizlo@apple.com
  • 3 edits
    2 adds in trunk/Websites/webkit.org

Unreviewed, check in some more files for a blog post.

  • blog-files/speculation-in-jsc/dfg-pipeline-dark.graffle: Added.
  • blog-files/speculation-in-jsc/dfg-pipeline-dark.svg: Added.
  • blog-files/speculation-in-jsc/ftl-pipeline-dark.graffle
  • blog-files/speculation-in-jsc/ftl-pipeline-dark.svg:
3:35 PM Changeset in webkit [260102] by Peng Liu
  • 30 edits
    1 move
    8 adds in trunk

Adopt interface AVAudioRoutingArbiter for Mac
https://bugs.webkit.org/show_bug.cgi?id=210167
Source/WebCore:

Reviewed by Eric Carlson.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/ios/AudioSessionIOS.mm:

(WebCore::AudioSession::setCategory):
(WebCore::categoryName): Deleted.

  • platform/audio/mac/AudioSessionMac.mm: Renamed from Source/WebCore/platform/audio/mac/AudioSessionMac.cpp.

(WebCore::AudioSession::setCategory):
(WebCore::AudioSession::categoryOverride const):
(WebCore::AudioSession::setCategoryOverride):

Fix unified build failures.

  • platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.h:

Source/WebCore/PAL:

Reviewed by Eric Carlson.

Add softlink for AVAudioRoutingArbiter.

  • pal/cocoa/AVFoundationSoftLink.h:
  • pal/cocoa/AVFoundationSoftLink.mm:

Source/WebKit:

<rdar://problem/59113994>

Reviewed by Eric Carlson.

Add a new cross-process object pair, AudioSessionRouterAbitrator/Proxy which passes routing
arbitration commands from WebContent -> UIProcess. Because the UIProcess can represent
multiple WebContent processes, it must track all outstanding arbitration requests globally.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::initializeGPUProcess):

  • Sources.txt:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::mediaRelatedMachServices):

  • UIProcess/Media/AudioSessionRoutingArbitratorProxy.cpp: Added.

(WebKit::AudioSessionRoutingArbitratorProxy::AudioSessionRoutingArbitratorProxy):
(WebKit::AudioSessionRoutingArbitratorProxy::~AudioSessionRoutingArbitratorProxy):
(WebKit::AudioSessionRoutingArbitratorProxy::beginRoutingArbitrationWithCategory):
(WebKit::AudioSessionRoutingArbitratorProxy::leaveRoutingArbitration):

  • UIProcess/Media/AudioSessionRoutingArbitratorProxy.h: Added.

(WebKit::AudioSessionRoutingArbitratorProxy::category const):
(WebKit::AudioSessionRoutingArbitratorProxy::destinationId):

  • UIProcess/Media/AudioSessionRoutingArbitratorProxy.messages.in: Added.
  • UIProcess/Media/cocoa/AudioSessionRoutingArbitratorProxyCocoa.mm: Added.

(WebKit::SharedArbitrator::sharedInstance):
(WebKit::SharedArbitrator::beginRoutingArbitrationForArbitrator):
(WebKit::SharedArbitrator::leaveRoutingArbitrationForArbitrator):
(WebKit::AudioSessionRoutingArbitratorProxy::AudioSessionRoutingArbitratorProxy):
(WebKit::AudioSessionRoutingArbitratorProxy::~AudioSessionRoutingArbitratorProxy):
(WebKit::AudioSessionRoutingArbitratorProxy::beginRoutingArbitrationWithCategory):
(WebKit::AudioSessionRoutingArbitratorProxy::leaveRoutingArbitration):

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

(WebKit::WebProcessProxy::WebProcessProxy):

  • UIProcess/WebProcessProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_processDisplayName):

  • WebProcess/WebProcess.cpp:
  • WebProcess/cocoa/AudioSessionRoutingArbitrator.cpp: Added.

(WebKit::AudioSessionRoutingArbitrator::AudioSessionRoutingArbitrator):
(WebKit::AudioSessionRoutingArbitrator::supplementName):
(WebKit::AudioSessionRoutingArbitrator::beginRoutingArbitrationWithCategory):
(WebKit::AudioSessionRoutingArbitrator::leaveRoutingAbritration):

  • WebProcess/cocoa/AudioSessionRoutingArbitrator.h: Added.
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::AudioFactory::createAudioCaptureSource):

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

Source/WTF:

Reviewed by Eric Carlson.

Add macro HAVE_AVAUDIO_ROUTING_ARBITER.

  • wtf/PlatformHave.h:

Tools:

Reviewed by Eric Carlson.

Add test for softlink of AVAudioRoutingArbiter.

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

(TestWebKitAPI::TEST):

3:01 PM Changeset in webkit [260101] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

createArchiveList() in WebCoreArgumentCodersMac.mm should do more validity checks
<https://webkit.org/b/210448>
<rdar://problem/61677029>

Reviewed by Darin Adler.

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::createArchiveList): Add more validity checks.

2:50 PM Changeset in webkit [260100] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

ReadableStreamDefaultController::enqueue should check for worker terminated exception
https://bugs.webkit.org/show_bug.cgi?id=210485

Reviewed by Mark Lam.

Make sure to not assert in case of enqueue exception if we are in a terminating worker.
This is covered by WPT fetch/api/basic/stream-response.any.worker.html and fetch/api/basic/stream-safe-creation.any.worker.html.

  • bindings/js/ReadableStreamDefaultController.h:

(WebCore::ReadableStreamDefaultController::enqueue):

2:36 PM Changeset in webkit [260099] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

Protect MediaStreamTrackPrivate and RealtimeMediaSource when iterating its observers
https://bugs.webkit.org/show_bug.cgi?id=210488

Reviewed by Eric Carlson.

Making sure explicitly that the track private and source remain alive while looping from its observers.

  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::forEachObserver const):

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::forEachObserver const):

2:30 PM Changeset in webkit [260098] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

Do more checking before reusing precompiled sandbox
https://bugs.webkit.org/show_bug.cgi?id=210304
<rdar://problem/61155623>

Reviewed by Darin Adler.

We recently discovered that the system sandbox framework version does not always change
when breaking changes in the sandbox format are made. This can lead to the precompiled
version of a sandbox not working properly when a sandbox version changes.

To guard against this, make the following changes:

  1. Compare the SANDBOX_BUILD_ID in place when the sandbox was compiled to the value on the current system. SANDBOX_BUILD_ID, which is a GUID, is always regenerated when the sandbox framework is rebuilt.
  1. Compare the OS version in place when the sandbox was compiled to the value on the current system. This will trigger us recompiling sandboxes even when the sandbox framework did not change, but this is a small performance cost that would only happen after a software update.
  • Shared/mac/AuxiliaryProcessMac.mm:

(WebKit::compileAndCacheSandboxProfile):
(WebKit::tryApplyCachedSandbox):

2:26 PM Changeset in webkit [260097] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Gardening, update expectations after r260062
https://bugs.webkit.org/show_bug.cgi?id=210516

Unreviewed gardening.

  • platform/gtk/TestExpectations:
1:59 PM Changeset in webkit [260096] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Elements: Computed: de-indent items in the Variables section so that wrapped content doesn't line up with the --
https://bugs.webkit.org/show_bug.cgi?id=210384

Reviewed by Timothy Hatcher.

  • UserInterface/Views/ComputedStyleDetailsPanel.css:

(.sidebar > .panel.details.css-style > .content > .computed .property):

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

[GTK][WPE] Fix navigator-detached-no-crash expectations

Unreviewed test gardening.

  • platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt:

Upload the correct expectation file.

  • platform/wpe/TestExpectations: Removed failing expectation.
1:30 PM Changeset in webkit [260094] by fpizlo@apple.com
  • 1 edit
    2 adds in trunk/Websites/webkit.org

Unreviewed, check in some more files for a blog post.

  • blog-files/speculation-in-jsc/ftl-pipeline-dark.graffle: Added.
  • blog-files/speculation-in-jsc/ftl-pipeline-dark.svg: Added.
1:27 PM Changeset in webkit [260093] by pvollan@apple.com
  • 7 edits
    1 add in trunk

[iOS] Content filtering needs access to the frontboard service
https://bugs.webkit.org/show_bug.cgi?id=210505

Reviewed by Geoffrey Garen.

Source/WebKit:

Content filtering in the WebContent process needs access to the frontboard service on iOS. Issue an extension
to this service when content filtering is enabled.

API test: WebKit.WebFilterFeatureHasFrontboardServiceAccess

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/WebFilter.mm: Added.

(isManagedSessionMethodOverride):
(TEST):

1:23 PM Changeset in webkit [260092] by commit-queue@webkit.org
  • 7 edits in trunk

AX: Smart Invert doesn't handle the picture elements on foxnews.com
<https://webkit.org/b/210472>

Patch by James Craig <jcraig@apple.com> on 2020-04-14
Reviewed by Chris Fleizach.

Source/WebCore:

Tests: accessibilty/smart-invert.html

accessibilty/smart-invert-reference.html

Filled out more variants in the test cases, and removed the unnecessary :not() selector.

  • css/html.css:

(@media (inverted-colors) img, picture, video):
(@media (inverted-colors) img:not(picture>img), picture, video): Deleted.

LayoutTests:

Filled out more variants in the test cases, and removed the unnecessary :not() selector.

  • accessibility/smart-invert-expected.txt:
  • accessibility/smart-invert-reference-expected.html:
  • accessibility/smart-invert-reference.html:
  • accessibility/smart-invert.html:
1:23 PM Changeset in webkit [260091] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Console: treat long strings as non-simple so they aren't truncated
https://bugs.webkit.org/show_bug.cgi?id=210511
<rdar://problem/49570592>

Reviewed by Joseph Pecoraro.

Treat strings longer than 140 characters (WI.FormattedValue.MaxPreviewStringLength) as not
simple so that WI.ConsoleMessageView makes itself expandable, which will show the full
length string when expanded (the truncated string is still shown when collapsed).

  • UserInterface/Views/FormattedValue.js:

(WI.FormattedValue.isSimpleString): Added.
(WI.FormattedValue.hasSimpleDisplay):

  • UserInterface/Views/ConsoleMessageView.js:

(WI.ConsoleMessageView.prototype._shouldConsiderObjectLossless):

12:15 PM Changeset in webkit [260090] by Wenson Hsieh
  • 7 edits in trunk/Source

[iPadOS] Wikipedia articles lay out incorrectly in 1/3 multitasking window
https://bugs.webkit.org/show_bug.cgi?id=210501
<rdar://problem/54856323>

Reviewed by Tim Horton.

Source/WebCore:

In a 1/3 multitasking window, Safari currently uses the -[WKWebView _allowsViewportShrinkToFit] SPI to force
pages to shrink down by fitting the content width to the view width. This legacy method of shrinking to fit
involves laying the page out at the normal view width (320px in 1/3 multitasking), and then scaling the page
down such that any amount of horizontal overflow fits within the view.

In iOS 13, a new style of shrinking to fit was introduced in support of two new features: page zoom controls
(accessible via the page formatting menu), and on-by-default page scaling when loading desktop sites on certain
models of iPad where the page width is less than cutoffs of 1112px (in landscape) and 1024px (in portrait). This
new method of shrinking to fit involves laying out at a larger width (computed from a combination of the minimum
effective device width and layout size scale factor), and scaling to fit the effective layout size scale factor
instead of the entire contents of the page. This means that while we may still get horizontal scrolling after
shrinking to fit, the overall layout of the page is preserved.

Currently, in 1/3 multitasking, Safari still relies on the former to scale pages down to fit, which means that
Wikipedia articles (among other websites) do not lay out sensibly. Moreover, even if Safari adopted the second
mechanism for shrinking to fit, layout issues would still exist (albeit to a lesser degree), since we'd still
attempt to shrink the content width down to fit due to the fact that the desktop version of Wikipedia doesn't
have a meta viewport. While we wouldn't get a broken layout, we'd still have a blank column running down the
right side of the page, which is less than ideal.

It's clear that in this case, attempting to shrink page content down to fit the view is suboptimal (at best, it
leads to a large portion of the page being blank; at worst, it completely breaks page layout). To address this
bug for now, add a parallel minimumEffectiveDeviceWidth value that takes effect when ignoring scaling
constraints (i.e. when we're in a multitasking window), and scale the page down to fit this value instead of
fitting the full content width when computing initial scale in ViewportConfiguration::initialScaleFromSize.
Maintaining this value separately from m_minimumEffectiveDeviceWidth makes it much easier to ensure that the
effects of this change are only ever active when the quirk is applied, and also when the view is embedded in a
multitasking window.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldLayOutAtMinimumWindowWidthWhenIgnoringScalingConstraints const):

Introduce a quirk to fix layout issues in multitasking mode on the desktop version of Wikipedia.

  • page/Quirks.h:
  • page/ViewportConfiguration.cpp:

(WebCore::ViewportConfiguration::initialScaleFromSize const):
(WebCore::ViewportConfiguration::setMinimumEffectiveDeviceWidth):
(WebCore::ViewportConfiguration::setMinimumEffectiveDeviceWidthWhenIgnoringScalingConstraints):

  • page/ViewportConfiguration.h:

Add a minimum effective device width value that only takes effect when ignoring scaling constraints, and update
shouldIgnoreMinimumEffectiveDeviceWidth() and minimumEffectiveDeviceWidth() to not always return true and
0 (respectively) when ignoring scaling constraints, if m_minimumEffectiveDeviceWidthWhenIgnoringScalingConstraints
is set.

(WebCore::ViewportConfiguration::minimumEffectiveDeviceWidth const):
(WebCore::ViewportConfiguration::shouldIgnoreMinimumEffectiveDeviceWidth const):
(WebCore::ViewportConfiguration::shouldShrinkToFitMinimumEffectiveDeviceWidthWhenIgnoringScalingConstraints const):

Source/WebKit:

Apply the viewport quirk if needed; see WebCore/ChangeLog for more details.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::updateVisibleContentRects):

12:14 PM Changeset in webkit [260089] by Alan Coon
  • 2 edits in branches/safari-610.1.10-branch/Source/WebKitLegacy/mac

Cherry-pick r260043. rdar://problem/61784032

REGRESSION (r259843): "Missing Plug-In" when dragging an image into Mail Compose
https://bugs.webkit.org/show_bug.cgi?id=210458
<rdar://problem/61735361>

Reviewed by Wenson Hsieh.

  • WebCoreSupport/WebFrameLoaderClient.mm: (WebFrameLoaderClient::createPlugin): r259843 changed this code from making a dictionary with a set of key->object mappings to making a dictionary with an array of keys as its only key and an array of objects as that key's value. Not quite the same thing.

Go back to dictionaryWithObjects:forKeys:.

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

12:12 PM Changeset in webkit [260088] by graouts@webkit.org
  • 5 edits in trunk/Source/WebCore

Factor PseudoElement creation calls into a single Element::ensurePseudoElement(pseudoId) method
https://bugs.webkit.org/show_bug.cgi?id=210495

Reviewed by Antti Koivisto.

To support webkit.org/b/207290 we need a way to ensure a PseudoElement is available for ::before and ::after
pseudo-elements on a given Element. We now use a Element::ensurePseudoElement(pseudoId) method to do this and
replace existing places where we would do something similar.

  • dom/Element.cpp:

(WebCore::Element::ensurePseudoElement):

  • dom/Element.h:
  • rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:

(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolvePseudoStyle):

12:09 PM Changeset in webkit [260087] by ysuzuki@apple.com
  • 2 edits in trunk/JSTests

Unreviewed, reduce iteration count and introduce early return to make typed-array-subarray-can-throw-oom-error.js execution time short while throwing an error
https://bugs.webkit.org/show_bug.cgi?id=210507

  • stress/typed-array-subarray-can-throw-oom-error.js:

(canThrow):
(bar):
(get bar):

12:05 PM Changeset in webkit [260086] by Simon Fraser
  • 3 edits
    2 adds in trunk

Scroll snap in subframes is often broken
https://bugs.webkit.org/show_bug.cgi?id=210503

Reviewed by Darin Adler.

Source/WebCore:

RenderBox::findEnclosingScrollableContainer() incorrectly consulted the scrollability
of the main frame, causing snapping in subframes to be broken any time the main frame
was not scrollable.

Test: tiled-drawing/scrolling/scroll-snap/scroll-snap-async-iframe.html

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::findEnclosingScrollableContainer const):

LayoutTests:

  • tiled-drawing/scrolling/scroll-snap/scroll-snap-async-iframe-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-async-iframe.html: Added.
12:04 PM Changeset in webkit [260085] by Alan Coon
  • 8 edits in trunk/Source

Versioning.

12:00 PM Changeset in webkit [260084] by Alan Coon
  • 1 copy in branches/safari-610.1.10-branch

New branch.

11:48 AM Changeset in webkit [260083] by Andres Gonzalez
  • 6 edits in trunk

Source/WebCore:
Make WTR::AccessibilityUIElements calls to accessibilitySetValue run on AX secondary thread. web content
https://bugs.webkit.org/show_bug.cgi?id=210500

Reviewed by Chris Fleizach.

Removed _accessibilitySetTestValue since it is no longer used, use
_accessibilitySetValue instead.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper _accessibilitySetTestValue:forAttribute:]): Deleted.

Tools:
Make WTR::AccessibilityUIElements calls to accessibilitySetValue run on AX secondary thread.
https://bugs.webkit.org/show_bug.cgi?id=210500

Reviewed by Chris Fleizach.

Needed to test accessibility isolated tree mode. Follow up to
https://bugs.webkit.org/show_bug.cgi?id=210392.

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::setBoolAttributeValue):
(AccessibilityUIElement::resetSelectedTextMarkerRange):

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::setAttributeValue):
(WTR::attributesOfElement):
(WTR::descriptionOfElements):
(WTR::AccessibilityUIElement::stringDescriptionOfAttributeValue):
(WTR::AccessibilityUIElement::stringAttributeValue):
(WTR::AccessibilityUIElement::uiElementArrayAttributeValue const):
(WTR::AccessibilityUIElement::uiElementAttributeValue const):
(WTR::AccessibilityUIElement::boolAttributeValue):
(WTR::AccessibilityUIElement::setBoolAttributeValue):
(WTR::AccessibilityUIElement::setValue):
(WTR::AccessibilityUIElement::setSelectedTextRange):
(WTR::AccessibilityUIElement::setSelectedVisibleTextRange):
(WTR::AccessibilityUIElement::setSelectedChild const):
(WTR::AccessibilityUIElement::setSelectedChildAtIndex const):
(WTR::AccessibilityUIElement::removeSelectionAtIndex const):
(WTR::AccessibilityUIElement::takeFocus):
(WTR::AccessibilityUIElement::resetSelectedTextMarkerRange):

11:42 AM Changeset in webkit [260082] by youenn@apple.com
  • 4 edits in trunk/LayoutTests/imported/w3c

Resync featurepolicy.js to fix WPT mediacapture-streams/MediaStream-default-feature-policy.https.html
https://bugs.webkit.org/show_bug.cgi?id=210482

Reviewed by Geoffrey Garen.

Update to upstream featureploicy.js to fix failure.

  • web-platform-tests/feature-policy/resources/featurepolicy.js:

(assert_feature_policy_supported):
(test_feature_in_iframe):
(test_allowed_feature_for_subframe):
(expect_reports):

  • web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https-expected.txt:
  • web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub-expected.txt:
11:07 AM Changeset in webkit [260081] by Brent Fulgham
  • 7 edits in trunk

InjectedBundle parameters often need initialization function called before unarchiving
https://bugs.webkit.org/show_bug.cgi?id=189709
<rdar://problem/44573653>

Reviewed by Ryosuke Niwa.

Source/WebKit:

Handle the case where the InjectedBundle parameters do not successfully decode because they contain
an unexpected class from the embedding program. If this happens, try decoding the bundle parameters
after the bundle initialiation function runs, which gives the embedding program the opportunity to
register additional classes that are safe for serialization.

Extend WKWebProcessPlugIn with a method that returns the names of any custom classes that need
to be serialized by the InjectedBundle.

Create a new 'decodeBundleParameters' method that contains the logic that used to live in 'initialize'.
Revise 'initialize' to call this new method.

  • WebProcess/InjectedBundle/InjectedBundle.h:
  • WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:

(WebKit::InjectedBundle::initialize): Use the new method.
(WebKit::InjectedBundle::decodeBundleParameters): Added.
(WebKit::InjectedBundle::setBundleParameters): Use 'decodeObjectOfClasses' with the more complete
'classesForCoder' method to unarchive the passed bundle parameters, rather than the
NSDictionary-specific method, since InjectedBundles often encode other types of objects, and the
NSDictionary object may itself hold other kinds of objects.

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:

(WebKit::WKWebProcessPlugIn::additionalClassesForParameterCoder): Added.

Tools:

  • TestWebKitAPI/cocoa/WebProcessPlugIn/WebProcessPlugIn.mm:

(-[WebProcessPlugIn additionalClassesForParameterCoder]): Added.

10:17 AM Changeset in webkit [260080] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Address review comments after r260035
https://bugs.webkit.org/show_bug.cgi?id=210440

Reviewed by David Kilzer.

Omit unused argument names.

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetIgnoreViewportScalingConstraints):
(WKPreferencesGetIgnoreViewportScalingConstraints):

10:08 AM Changeset in webkit [260079] by svillar@igalia.com
  • 2 edits in trunk/Tools

[Flatpak] Make run-webkit-tests obey WEBKIT_JHBUILD
https://bugs.webkit.org/show_bug.cgi?id=210497

Reviewed by Philippe Normand.

run-webkit-tests in linux uses the flatpak SDK if the flatpak
directories are found in the build directory. However it might the the case
that a developer wants to run them using the jhbuild SDK which can be
configured in parallel. We have the WEBKIT_JHBUILD environment variable to
force other scripts to use jhbuild instead of flatpak so we can use it as well
for this use case.

  • flatpak/flatpakutils.py:

(run_in_sandbox_if_available):

10:03 AM Changeset in webkit [260078] by ddkilzer@apple.com
  • 53 edits in trunk/Source/WebCore

Add WARN_UNUSED_RETURN to decode methods in Source/WebCore
<https://webkit.org/b/210416>
<rdar://problem/61693462>

Reviewed by Alex Christensen.

  • Modules/geolocation/GeolocationPositionData.h:
  • Modules/indexeddb/IDBGetAllResult.h:
  • Modules/indexeddb/IDBGetResult.h:
  • Modules/indexeddb/IDBKeyData.h:
  • Modules/indexeddb/IDBKeyRangeData.h:
  • Modules/indexeddb/server/IDBSerialization.cpp:

(WebCore::decodeKey):

  • Modules/indexeddb/shared/IDBCursorInfo.h:
  • Modules/indexeddb/shared/IDBCursorRecord.h:
  • Modules/indexeddb/shared/IDBDatabaseInfo.h:
  • Modules/indexeddb/shared/IDBError.h:
  • Modules/indexeddb/shared/IDBGetAllRecordsData.h:
  • Modules/indexeddb/shared/IDBGetRecordData.h:
  • Modules/indexeddb/shared/IDBIndexInfo.h:
  • Modules/indexeddb/shared/IDBIterateCursorData.h:
  • Modules/indexeddb/shared/IDBObjectStoreInfo.h:
  • Modules/indexeddb/shared/IDBRequestData.h:
  • Modules/indexeddb/shared/IDBResourceIdentifier.h:
  • Modules/indexeddb/shared/IDBTransactionInfo.h:
  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::decodeTimeComparator):

  • dom/EventInit.h:
  • dom/ExceptionData.h:
  • dom/SecurityPolicyViolationEvent.h:
  • editing/FontAttributeChanges.h:
  • editing/FontShadow.h:
  • loader/CanvasActivityRecord.h:
  • loader/FetchOptions.h:

(WebCore::FetchOptions::decodePersistent):

  • platform/ContentFilterUnblockHandler.h:
  • platform/DragItem.h:
  • platform/KeyedCoding.h:
  • platform/LinkIcon.h:
  • platform/ThreadSafeDataBuffer.h:
  • platform/audio/mac/CAAudioStreamDescription.h:
  • platform/cf/KeyedDecoderCF.h:
  • platform/generic/KeyedDecoderGeneric.h:
  • platform/glib/KeyedDecoderGlib.h:
  • platform/graphics/Region.h:
  • platform/graphics/RemoteVideoSample.h:

(WebCore::RemoteVideoSample::decode):

  • platform/mediastream/MediaConstraints.h:

(WebCore::MediaConstraint::decode):
(WebCore::NumericConstraint::decode):
(WebCore::StringConstraint::decode):

  • platform/mediastream/RealtimeMediaSourceCapabilities.h:
  • platform/mediastream/RealtimeMediaSourceSettings.h:
  • platform/mediastream/RealtimeMediaSourceSupportedConstraints.h:
  • platform/network/HTTPHeaderMap.h:
  • platform/network/NetworkLoadMetrics.h:
  • platform/network/ResourceRequestBase.h:
  • platform/network/ResourceResponseBase.h:

(WebCore::ResourceResponseBase::decode):

  • platform/network/SameSiteInfo.h:
  • platform/network/SocketStreamError.h:
  • platform/network/curl/ResourceRequest.h:
  • platform/network/soup/ResourceRequest.h:
  • platform/network/soup/ResourceResponse.h:
  • rendering/EventRegion.h:
  • workers/service/ServiceWorkerFetchResult.h:
  • Add WARN_UNUSED_RETURN to all decode functions.
9:38 AM Changeset in webkit [260077] by Megan Gardner
  • 2 edits in trunk/Source/WebKit

YouTube sometimes navigates unexpectedly when invoking a context menu on a video link.
https://bugs.webkit.org/show_bug.cgi?id=210467
<rdar://problem/58841584>

Reviewed by Tim Horton.

Cancel any outstanding touches tracked by WebTouchEventsGestureRecognizer, so that we dispatch
touchcancel to the page instead of touchend, so that the page does not misinterpret
context menu invocation as a tap.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]):

9:19 AM Changeset in webkit [260076] by graouts@webkit.org
  • 10 edits in trunk/Source/WebCore

[Web Animations] Store an Element / PseudoId pair to define the KeyframeEffect target
https://bugs.webkit.org/show_bug.cgi?id=210491

Reviewed by Antti Koivisto.

In preparation for webkit.org/b/207290 where we will expose the pseudoElement JS API on KeyframeEffect we now
use an Element / PseudoId (m_target / m_pseudoId) pair to specify an effect's target. In the cases where it matters,
such as accessing the various animation collections exposed through Element and the KeyframeEffectStack, we now use
the new KeyframeEffect::targetElementOrPseudoElement() method to access the Element or PseudoElement targeted with
the Element / PseudoId pair.

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::removeAnimation):

  • animation/DeclarativeAnimation.cpp:

(WebCore::DeclarativeAnimation::initialize):

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::transitionDidComplete):
(WebCore::DocumentTimeline::animationAcceleratedRunningStateDidChange):

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::create):
(WebCore::KeyframeEffect::KeyframeEffect):
(WebCore::KeyframeEffect::copyPropertiesFromSource):
(WebCore::KeyframeEffect::getKeyframes):
(WebCore::KeyframeEffect::forceLayoutIfNeeded):
(WebCore::KeyframeEffect::computeCSSAnimationBlendingKeyframes):
(WebCore::KeyframeEffect::computeCSSTransitionBlendingKeyframes):
(WebCore::KeyframeEffect::animationTimelineDidChange):
(WebCore::KeyframeEffect::updateEffectStackMembership):
(WebCore::KeyframeEffect::targetElementOrPseudoElement const):
(WebCore::KeyframeEffect::setTarget):
(WebCore::KeyframeEffect::apply):
(WebCore::KeyframeEffect::invalidate):
(WebCore::KeyframeEffect::getAnimatedStyle):
(WebCore::KeyframeEffect::applyPendingAcceleratedActions):
(WebCore::KeyframeEffect::document const):
(WebCore::KeyframeEffect::renderer const):

  • animation/KeyframeEffect.h:
  • animation/KeyframeEffectStack.cpp:

(WebCore::KeyframeEffectStack::addEffect):

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setEffectInternal):
(WebCore::WebAnimation::setTimeline):
(WebCore::WebAnimation::persist):

  • dom/Document.cpp:

(WebCore::Document::matchingAnimations):

  • inspector/agents/InspectorAnimationAgent.cpp:

(WebCore::buildObjectForKeyframes):
(WebCore::InspectorAnimationAgent::requestEffectTarget):

9:16 AM Changeset in webkit [260075] by Lauro Moura
  • 5 edits in trunk/LayoutTests

[GTK][WPE] Layout test gardening

Unreviewed test gardening.

  • platform/gtk/TestExpectations:

Removed deprecated expectation.

  • platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt:

Updated expectations.

  • platform/wpe/TestExpectations: Updated several EME expectations with

correct bug number. A number of passing tests are also marked as PASS.

  • platform/wpe/fast/dom/navigator-detached-no-crash-expected.txt:

Updated expectations.

9:04 AM Changeset in webkit [260074] by Simon Fraser
  • 42 edits
    2 adds in trunk

[Async overflow scroll] Custom scrollbars on gmail don't show
https://bugs.webkit.org/show_bug.cgi?id=210438
<rdar://problem/61722541>

Reviewed by Tim Horton.

Source/WebCore:

Custom scrollbars painted into the backing store of the scrolling element, but that
might have become an empty "simple container layer" causing the scroll bars to not
be painted anywhere.

Fix by making compositing layers for custom scrollbars. This is better than giving
backing store to the scroller's element, because that might be huge.

Test: scrollbars/async-overflow-custom-scrollbar.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::requiresLayerForScrollbar const):
(WebCore::RenderLayerBacking::requiresHorizontalScrollbarLayer const):
(WebCore::RenderLayerBacking::requiresVerticalScrollbarLayer const):
(WebCore::RenderLayerBacking::requiresScrollCornerLayer const):

  • rendering/RenderLayerBacking.h:

LayoutTests:

Layer tree dumps changed because of scrollbar and scroll corner layers.

  • compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt:
  • compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt:
  • compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt:
  • compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt:
  • compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt:
  • compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt:
  • compositing/overflow/overflow-auto-with-touch-expected.txt:
  • compositing/overflow/overflow-overlay-with-touch-expected.txt:
  • compositing/overflow/scrolling-content-clip-to-viewport-expected.txt:
  • compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases-expected.txt:
  • compositing/overflow/textarea-scroll-touch-expected.txt:
  • compositing/repaint/scroller-with-foreground-layer-repaints-expected.txt:
  • compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
  • compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-clipped-by-scroll-expected.txt:
  • compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-expected.txt:
  • compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt:
  • compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller-expected.txt:
  • compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-hidden-expected.txt:
  • compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-visible-expected.txt:
  • compositing/scrolling/async-overflow-scrolling/layer-in-overflow-expected.txt:
  • compositing/scrolling/async-overflow-scrolling/layer-in-overflow-gain-clipping-layer-expected.txt:
  • compositing/scrolling/async-overflow-scrolling/layer-in-overflow-in-clipped-expected.txt:
  • compositing/scrolling/async-overflow-scrolling/layer-in-overflow-lose-clipping-layer-expected.txt:
  • compositing/scrolling/async-overflow-scrolling/visibility-hidden-scrollers-expected.txt:
  • compositing/scrolling/overflow-scrolling-layers-are-self-painting-expected.txt:
  • compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller-expected.txt:
  • compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller-expected.txt:
  • compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow-expected.txt:
  • compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness-expected.txt:
  • compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping-expected.txt:
  • compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping-expected.txt:
  • compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll-expected.txt:
  • compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content-expected.txt:
  • fast/scrolling/mac/event-region-scrolled-contents-layer-expected.txt:
  • platform/mac/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt:
  • scrollbars/async-overflow-custom-scrollbar-expected.html: Added.
  • scrollbars/async-overflow-custom-scrollbar.html: Added.
  • tiled-drawing/scrolling/overflow/overflow-scrolled-down-tile-coverage-expected.txt:
  • tiled-drawing/scrolling/overflow/overflow-scrolled-up-tile-coverage-expected.txt:
  • tiled-drawing/scrolling/overflow/overflow-tile-coverage-expected.txt:
8:38 AM Changeset in webkit [260073] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Gardening, mark several MSE tests as flaky
https://bugs.webkit.org/show_bug.cgi?id=210499

Unreviewed gardening.

  • platform/gtk/TestExpectations:
6:34 AM Changeset in webkit [260072] by Claudio Saavedra
  • 2 edits in trunk/Source/WebCore

[GTK] Adapt to GdkVisual deprecation and removal
https://bugs.webkit.org/show_bug.cgi?id=210489

Reviewed by Adrian Perez de Castro.

No new tests needed.

Update the GdkVisual used to get the screen depth per component in
GTK3 and use default values for GTK4, as visuals as an abstraction
are gone from GTK4. The use in WK is very limited so there's no
much gain from peeking into backend-specific values.

  • platform/gtk/PlatformScreenGtk.cpp:

(WebCore::screenDepth): Guard GdkVisual call and leave
default value for GTK4.
(WebCore::screenDepthPerComponent): Update API and ditto.

5:19 AM Changeset in webkit [260071] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[GTK][WPE] Scrollbar handle has no minimum size
https://bugs.webkit.org/show_bug.cgi?id=209962

Reviewed by Adrian Perez de Castro.

Set a minimum thumb length.

  • platform/adwaita/ScrollbarThemeAdwaita.cpp:

(WebCore::ScrollbarThemeAdwaita::minimumThumbLength):

5:17 AM Changeset in webkit [260070] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[GTK] New scrollbar click behavior
https://bugs.webkit.org/show_bug.cgi?id=210002

Reviewed by Adrian Perez de Castro.

Use the same bahavior for mouse events when not rendering native scrollbars.

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::ScrollbarThemeGtk::handleMousePressEvent):

4:37 AM Changeset in webkit [260069] by Antti Koivisto
  • 47 edits in trunk

[CSS Selectors] Selectors Level 4 specificity calculation for pseudo classes
https://bugs.webkit.org/show_bug.cgi?id=210419

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/selectors/invalidation/is-expected.txt:

Source/WebCore:

CSS selector specification drafts at some point had a concept of "dynamic specificity" where
the specificity of a selector depended on the element it matched. It was only ever used with
:matches and :nth-child pseudo classes and has subsequently been removed. Selector specificity
can now always be computed statically.

There is a ton of code to support this obsolete feature. Remove it.

https://drafts.csswg.org/selectors-4/#specificity-rules

"The specificity of an :is(), :not(), or :has() pseudo-class is replaced by the specificity
of the most specific complex selector in its selector list argument.

Analogously, the specificity of an :nth-child() or :nth-last-child() selector is the specificity
of the pseudo class itself (counting as one pseudo-class selector) plus the specificity of the
most specific complex selector in its selector list argument (if any)."

  • css/html.css:

Reorganize a :matches rule into a selector list to keep the exact specificites.
It matters here to select between listbox and menulist correctly based on the 'size' and 'multiple' attributes.

  • css/CSSSelector.cpp:

(WebCore::selectorSpecificity):
(WebCore::maxSpecificity):
(WebCore::simpleSelectorSpecificityInternal):
(WebCore::CSSSelector::simpleSelectorSpecificity const):

Also handle nth here.

(WebCore::CSSSelector::specificity const):
(WebCore::simpleSelectorFunctionalPseudoClassStaticSpecificity): Deleted.
(WebCore::functionalPseudoClassStaticSpecificity): Deleted.
(WebCore::staticSpecificityInternal): Deleted.
(WebCore::CSSSelector::staticSpecificity const): Deleted.

Rename to just computeSpecificity(), there is no other kind than static.

  • css/CSSSelector.h:
  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::match const):
(WebCore::SelectorChecker::matchHostPseudoClass const):
(WebCore::SelectorChecker::matchRecursively const):
(WebCore::SelectorChecker::checkOne const):
(WebCore::SelectorChecker::matchSelectorList const):

SelectorChecker doesn't need to deal with specificity anymore.

  • css/SelectorChecker.h:
  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::addNthChildType):
(WebCore::SelectorCompiler::addPseudoClassType):
(WebCore::SelectorCompiler::constructFragmentsInternal):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorChecker):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeFunctionCallValueMatching):

Neither does SelectorCompiler.

  • cssjit/SelectorCompiler.h:
  • dom/SelectorQuery.cpp:

(WebCore::SelectorDataList::selectorMatches const):
(WebCore::SelectorDataList::selectorClosest const):

  • inspector/InspectorStyleSheet.cpp:

(WebCore::buildObjectForSelectorHelper):
(WebCore::selectorsFromSource):
(WebCore::InspectorStyleSheet::buildObjectForSelector):
(WebCore::InspectorStyleSheet::buildObjectForSelectorList):
(WebCore::InspectorStyleSheet::buildObjectForRule):
(WebCore::InspectorStyleSheet::buildArrayForRuleList):
(WebCore::hasDynamicSpecificity): Deleted.

  • inspector/InspectorStyleSheet.h:
  • inspector/agents/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::setRuleSelector):
(WebCore::InspectorCSSAgent::addRule):
(WebCore::InspectorCSSAgent::buildObjectForRule):
(WebCore::InspectorCSSAgent::buildArrayForMatchedRuleList):

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::highlightSelector):

  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::ruleMatches):

Switch to get the specificity from the selector instead of computing it during selector checking.

  • style/ElementRuleCollector.h:

LayoutTests:

Update specificity tests for static behavior, trying to also keep them useful.

  • fast/css/is-specificity-10-expected.html:
  • fast/css/is-specificity-10.html:
  • fast/css/is-specificity-2-expected.html:
  • fast/css/is-specificity-2.html:
  • fast/css/is-specificity-3-expected.html:
  • fast/css/is-specificity-3.html:
  • fast/css/is-specificity-4-expected.html:
  • fast/css/is-specificity-4.html:
  • fast/css/is-specificity-5.html:
  • fast/css/matches-specificity-10-expected.html:
  • fast/css/matches-specificity-10.html:
  • fast/css/matches-specificity-2-expected.html:
  • fast/css/matches-specificity-2.html:
  • fast/css/matches-specificity-3-expected.html:
  • fast/css/matches-specificity-3.html:
  • fast/css/matches-specificity-4-expected.html:
  • fast/css/matches-specificity-4.html:
  • fast/css/matches-specificity-5.html:
  • fast/css/nth-child-specificity-2-expected.html:
  • fast/css/nth-child-specificity-2.html:
  • fast/css/nth-child-specificity-3-expected.html:
  • fast/css/nth-child-specificity-3.html:
  • fast/css/nth-child-specificity-4-expected.html:
  • fast/css/nth-child-specificity-4.html:
  • fast/css/nth-last-child-specificity-2-expected.html:
  • fast/css/nth-last-child-specificity-2.html:
  • fast/css/nth-last-child-specificity-3-expected.html:
  • fast/css/nth-last-child-specificity-3.html:
  • fast/css/nth-last-child-specificity-4-expected.html:
  • fast/css/nth-last-child-specificity-4.html:
4:26 AM Changeset in webkit [260068] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Do not process RTC Network messages coming from NetworkProcess if LibWebRTCNetwork is not active
https://bugs.webkit.org/show_bug.cgi?id=207376
<rdar://problem/59238611>

Unreviewed.
Post-commit review update, change variable name to network.
No change of behavior.

  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::didReceiveMessage):

3:24 AM Changeset in webkit [260067] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

[GLIB] Fix race condition in FileMonitor implementation
https://bugs.webkit.org/show_bug.cgi?id=210483

Reviewed by Adrian Perez de Castro.

This is causing flaky timeouts when running resource load statistics layout tests. The problem is that we assume
FileMonitor has the last reference of the platform monitor and it's deleted on g_object_unref(), but GLib keeps
another reference that is released later on a different thread if the monitor is still active. We just need to
ensure we cancel the monitor before calling g_object_unref().

  • platform/FileMonitor.h:
  • platform/glib/FileMonitorGLib.cpp:

(WebCore::FileMonitor::~FileMonitor):
(WebCore::FileMonitor::didChange):
(WebCore::FileMonitor::cancel):

2:58 AM Changeset in webkit [260066] by cturner@igalia.com
  • 2 edits in trunk/Source/WebCore

[EME][CDMProxy] Fix waitingForKey logic
https://bugs.webkit.org/show_bug.cgi?id=210437

Reviewed by Xabier Rodriguez-Calvar.

startedWaitingForKey() was incorrectly flagged. It needs to signal on
the 0->1 transition, here it was only signalling on N->N+1 where N>0.

Also break ASSERTs into separate statements, it makes it easier in a
crash dump to see which conjuct fired.

Test: imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-waiting-for-a-key.https.html

  • platform/encryptedmedia/CDMProxy.cpp:

(WebCore::CDMInstanceProxy::startedWaitingForKey):
(WebCore::CDMInstanceProxy::stoppedWaitingForKey):

2:50 AM Changeset in webkit [260065] by Carlos Garcia Campos
  • 20 edits
    6 adds in trunk

[GTK] Bring back support for rendering scrollbars using the system appearance
https://bugs.webkit.org/show_bug.cgi?id=209805

Reviewed by Michael Catanzaro.

Source/WebCore:

Bring back ScrollbarThemeGtk, RenderThemeGadget and RenderThemeWidget (renamed as RenderThemeScrollbar),
including only the code needed to render the scrollbars. ScrollbarThemeGtk inherits from ScrollbarThemeAdwaita
that is used when system appearance is disabled.

  • PlatformGTK.cmake:
  • SourcesGTK.txt:
  • platform/adwaita/ScrollbarThemeAdwaita.cpp:
  • platform/adwaita/ScrollbarThemeAdwaita.h:
  • platform/gtk/RenderThemeGadget.cpp: Added.

(WebCore::RenderThemeGadget::create):
(WebCore::createStyleContext):
(WebCore::appendElementToPath):
(WebCore::RenderThemeGadget::RenderThemeGadget):
(WebCore::RenderThemeGadget::marginBox const):
(WebCore::RenderThemeGadget::borderBox const):
(WebCore::RenderThemeGadget::paddingBox const):
(WebCore::RenderThemeGadget::contentsBox const):
(WebCore::RenderThemeGadget::color const):
(WebCore::RenderThemeGadget::backgroundColor const):
(WebCore::RenderThemeGadget::opacity const):
(WebCore::RenderThemeGadget::state const):
(WebCore::RenderThemeGadget::setState):
(WebCore::RenderThemeGadget::minimumSize const):
(WebCore::RenderThemeGadget::preferredSize const):
(WebCore::RenderThemeGadget::render):
(WebCore::RenderThemeBoxGadget::RenderThemeBoxGadget):
(WebCore::RenderThemeBoxGadget::preferredSize const):
(WebCore::RenderThemeScrollbarGadget::RenderThemeScrollbarGadget):
(WebCore::RenderThemeScrollbarGadget::renderStepper):

  • platform/gtk/RenderThemeGadget.h: Added.

(WebCore::RenderThemeGadget::context const):

  • platform/gtk/RenderThemeScrollbar.cpp: Added.

(WebCore::widgetMap):
(WebCore::RenderThemeScrollbar::getOrCreate):
(WebCore::RenderThemeScrollbar::clearCache):
(WebCore::RenderThemeScrollbar::RenderThemeScrollbar):
(WebCore::RenderThemeScrollbar::stepper):

  • platform/gtk/RenderThemeScrollbar.h: Added.

(WebCore::RenderThemeScrollbar::scrollbar const):
(WebCore::RenderThemeScrollbar::contents const):
(WebCore::RenderThemeScrollbar::slider const):
(WebCore::RenderThemeScrollbar::trough const):

  • platform/gtk/ScrollbarThemeGtk.cpp: Added.

(WebCore::ScrollbarTheme::nativeTheme):
(WebCore::themeChangedCallback):
(WebCore::ScrollbarThemeGtk::ScrollbarThemeGtk):
(WebCore::ScrollbarThemeGtk::setUseSystemAppearance):
(WebCore::ScrollbarThemeGtk::themeChanged):
(WebCore::ScrollbarThemeGtk::updateThemeProperties):
(WebCore::ScrollbarThemeGtk::hasButtons):
(WebCore::scrollbarPartStateFlags):
(WebCore::widgetTypeForScrollbar):
(WebCore::contentsRectangle):
(WebCore::ScrollbarThemeGtk::trackRect):
(WebCore::ScrollbarThemeGtk::backButtonRect):
(WebCore::ScrollbarThemeGtk::forwardButtonRect):
(WebCore::ScrollbarThemeGtk::paint):
(WebCore::ScrollbarThemeGtk::handleMousePressEvent):
(WebCore::ScrollbarThemeGtk::scrollbarThickness):
(WebCore::ScrollbarThemeGtk::minimumThumbLength):

  • platform/gtk/ScrollbarThemeGtk.h: Added.

Source/WebKit:

Add WebKitWebContext:use-system-appearance-for-scrollbars property. It's enabled by default to keep backwards
compatibility.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const): Encode useSystemAppearanceForScrollbars.
(WebKit::WebProcessCreationParameters::decode): Decode useSystemAppearanceForScrollbars.

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::copy): Copy m_useSystemAppearanceForScrollbars;

  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/glib/WebKitWebContext.cpp:

(webkitWebContextGetProperty):
(webkitWebContextSetProperty):
(webkitWebContextConstructed):
(webkit_web_context_class_init):
(webkit_web_context_set_use_system_appearance_for_scrollbars):
(webkit_web_context_get_use_system_appearance_for_scrollbars):

  • UIProcess/API/gtk/WebKitWebContext.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/glib/WebProcessPoolGLib.cpp:

(WebKit::WebProcessPool::platformInitializeWebProcess): Initialize useSystemAppearanceForScrollbars parameter.

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/glib/WebProcessGLib.cpp:

(WebKit::WebProcess::platformInitializeWebProcess): Call setUseSystemAppearanceForScrollbars to set
useSystemAppearanceForScrollbars parameter.
(WebKit::WebProcess::setUseSystemAppearanceForScrollbars): Call ScrollbarThemeGtk::setUseSystemAppearance().

Tools:

Do not use system appearance for scrollbars in MiniBrowser and unit tests.

  • MiniBrowser/gtk/main.c:

(main):

  • TestWebKitAPI/glib/WebKitGLib/TestMain.h:

(Test::Test):

2:36 AM Changeset in webkit [260064] by youenn@apple.com
  • 4 edits in trunk/Source/WebCore

Add a timer to AVVideoCaptureSource to verify reception of frames
https://bugs.webkit.org/show_bug.cgi?id=210335

Reviewed by Eric Carlson.

Count the number of frames being captured.
Add a timer repeating every 3 seconds.
Timer starts/stops based on whether the session is running/is interrupted.
If the number of frames did not increase, fail the source.
Manually tested.

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::captureFailed):
Explicitly call stop() instead of just setting m_isProducingData.
This ensures we release all resources and that we may not restart capturing after captureFailed().

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

(WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
(WebCore::AVVideoCaptureSource::verifyIsCapturing):
(WebCore::AVVideoCaptureSource::updateVerifyCapturingTimer):
(WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection):
(WebCore::AVVideoCaptureSource::captureSessionIsRunningDidChange):

2:30 AM Changeset in webkit [260063] by youenn@apple.com
  • 6 edits in trunk/Source/WebKit

WebSocketChannel should remove itself from its manager map
https://bugs.webkit.org/show_bug.cgi?id=210424

Reviewed by Alex Christensen.

WebSocketChannelManager was never removing any entry from its map.
To fix this, the manager is now keeping a WeakPtr to each channel.
When the channel is destroyed, it will remove itself from its channel manager.

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::WebSocketChannel):
(WebKit::WebSocketChannel::~WebSocketChannel):

  • WebProcess/Network/WebSocketChannel.h:
  • WebProcess/Network/WebSocketChannelManager.cpp:

(WebKit::WebSocketChannelManager::addChannel):
(WebKit::WebSocketChannelManager::createWebSocketChannel): Deleted.

  • WebProcess/Network/WebSocketChannelManager.h:

(WebKit::WebSocketChannelManager::removeChannel):

  • WebProcess/Network/WebSocketProvider.cpp:

(WebKit::WebSocketProvider::createWebSocketChannel):

12:56 AM Changeset in webkit [260062] by Nikolas Zimmermann
  • 50 edits
    4 copies
    50 adds in trunk/LayoutTests

[Gtk] Update pixel tests baseline for all tests containing or referencing SVGs (except WPT)
https://bugs.webkit.org/show_bug.cgi?id=210282

Rubber-stamped by Žan Doberšek.

This extends the work from webkit.org/b/209136 to have a pixel test baseline
for all layout tests, even outside the svg/ directory, that contain or
reference SVGs.

This is mainly useful for developing webkit.org/b/90738, to ease
comparison of the SVG PoC branch with vanilla WebKit. In future we
should rather convert more and more tests to reftests instead of
relying on pixel tests - which SVG does for many features right now.

  • platform/gtk/TestExpectations:
  • platform/gtk/css3/blending/background-blend-mode-image-svg-expected.png: Added.
  • platform/gtk/css3/blending/background-blend-mode-svg-color-expected.png: Added.
  • platform/gtk/css3/blending/svg-blend-color-burn-expected.png: Copied from LayoutTests/platform/gtk/svg/filters/filter-hidden-content-expected.png.
  • platform/gtk/css3/blending/svg-blend-color-burn-expected.txt: Added.
  • platform/gtk/css3/blending/svg-blend-color-dodge-expected.png: Added.
  • platform/gtk/css3/blending/svg-blend-color-dodge-expected.txt: Added.
  • platform/gtk/css3/blending/svg-blend-darken-expected.png: Added.
  • platform/gtk/css3/blending/svg-blend-darken-expected.txt: Added.
  • platform/gtk/css3/blending/svg-blend-difference-expected.png: Added.
  • platform/gtk/css3/blending/svg-blend-difference-expected.txt: Added.
  • platform/gtk/css3/blending/svg-blend-exclusion-expected.png: Copied from LayoutTests/platform/gtk/svg/filters/filter-hidden-content-expected.png.
  • platform/gtk/css3/blending/svg-blend-exclusion-expected.txt: Added.
  • platform/gtk/css3/blending/svg-blend-hard-light-expected.png: Added.
  • platform/gtk/css3/blending/svg-blend-lighten-expected.png: Added.
  • platform/gtk/css3/blending/svg-blend-lighten-expected.txt: Added.
  • platform/gtk/css3/blending/svg-blend-multiply-alpha-expected.png:
  • platform/gtk/css3/blending/svg-blend-multiply-expected.png: Added.
  • platform/gtk/css3/blending/svg-blend-multiply-expected.txt: Added.
  • platform/gtk/css3/blending/svg-blend-overlay-expected.png: Added.
  • platform/gtk/css3/blending/svg-blend-overlay-expected.txt: Added.
  • platform/gtk/css3/blending/svg-blend-screen-expected.png: Copied from LayoutTests/platform/gtk/svg/filters/filter-hidden-content-expected.png.
  • platform/gtk/css3/blending/svg-blend-screen-expected.txt: Added.
  • platform/gtk/css3/blending/svg-blend-soft-light-expected.png: Added.
  • platform/gtk/css3/blending/svg-blend-soft-light-expected.txt: Added.
  • platform/gtk/css3/filters/effect-reference-composite-expected.png:
  • platform/gtk/css3/filters/effect-reference-composite-hw-expected.png:
  • platform/gtk/css3/filters/effect-reference-external-expected.png: Added.
  • platform/gtk/css3/filters/effect-reference-hw-expected.png:
  • platform/gtk/css3/filters/effect-reference-ordering-expected.png:
  • platform/gtk/css3/filters/effect-reference-ordering-hw-expected.png:
  • platform/gtk/css3/shapes/shape-outside/shape-image/support/left-half-rectangle-20-expected.png: Copied from LayoutTests/platform/gtk/svg/filters/filter-hidden-content-expected.png.
  • platform/gtk/css3/shapes/shape-outside/shape-image/support/left-half-rectangle-20-expected.txt: Added.
  • platform/gtk/css3/shapes/shape-outside/shape-image/support/left-half-rectangle-50-expected.png: Added.
  • platform/gtk/css3/shapes/shape-outside/shape-image/support/left-half-rectangle-50-expected.txt: Added.
  • platform/gtk/css3/shapes/shape-outside/shape-image/support/left-half-rectangle-70-expected.png: Added.
  • platform/gtk/css3/shapes/shape-outside/shape-image/support/left-half-rectangle-70-expected.txt: Added.
  • platform/gtk/css3/shapes/shape-outside/shape-image/support/left-half-rectangle-expected.png: Added.
  • platform/gtk/css3/shapes/shape-outside/shape-image/support/left-half-rectangle-expected.txt: Added.
  • platform/gtk/css3/shapes/shape-outside/shape-image/support/right-half-rectangle-70-expected.png: Added.
  • platform/gtk/css3/shapes/shape-outside/shape-image/support/right-half-rectangle-70-expected.txt: Added.
  • platform/gtk/css3/shapes/shape-outside/shape-image/support/right-half-rectangle-expected.png: Added.
  • platform/gtk/css3/shapes/shape-outside/shape-image/support/right-half-rectangle-expected.txt: Added.
  • platform/gtk/css3/shapes/spec-examples/support/rounded-triangle-expected.png: Added.
  • platform/gtk/css3/shapes/spec-examples/support/rounded-triangle-expected.txt: Added.
  • platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.png:
  • platform/gtk/fast/backgrounds/size/contain-and-cover-expected.png:
  • platform/gtk/fast/backgrounds/size/contain-and-cover-expected.txt: Added.
  • platform/gtk/fast/backgrounds/size/contain-and-cover-zoomed-expected.png:
  • platform/gtk/fast/backgrounds/size/contain-and-cover-zoomed-expected.txt: Added.
  • platform/gtk/fast/harness/render-tree-as-text-options-expected.png: Added.
  • platform/gtk/imported/w3c/canvas/2d.fillStyle.parse.svg-1-expected.png: Added.
  • platform/gtk/imported/w3c/canvas/2d.fillStyle.parse.svg-2-expected.png: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-tspan-02-b-expected.txt:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-05-b-expected.txt:
  • platform/gtk/svg/W3C-SVG-1.1/text-tselect-02-f-expected.png:
  • platform/gtk/svg/as-background-image/svg-as-background-4-expected.png:
  • platform/gtk/svg/as-background-image/svg-as-background-4-expected.txt: Added.
  • platform/gtk/svg/custom/circular-marker-reference-2-expected.png:
  • platform/gtk/svg/custom/circular-marker-reference-2-expected.txt: Added.
  • platform/gtk/svg/custom/glyph-transformation-with-hkern-expected.txt:
  • platform/gtk/svg/custom/non-circular-marker-reference-expected.png:
  • platform/gtk/svg/custom/non-circular-marker-reference-expected.txt: Added.
  • platform/gtk/svg/custom/text-clip-expected.png:
  • platform/gtk/svg/filters/filter-hidden-content-expected.png:
  • platform/gtk/svg/text/foreignObject-text-clipping-bug-expected.png:
  • platform/gtk/svg/text/select-textLength-spacing-squeeze-4-expected.png:
  • platform/gtk/svg/text/select-textLength-spacing-stretch-4-expected.png:
  • platform/gtk/svg/text/select-textLength-spacingAndGlyphs-stretch-4-expected.png:
  • platform/gtk/svg/text/select-x-list-4-expected.png:
  • platform/gtk/svg/text/select-x-list-with-tspans-4-expected.png:
  • platform/gtk/svg/text/selection-tripleclick-expected.png:
  • platform/gtk/svg/text/text-align-01-b-expected.png:
  • platform/gtk/svg/text/text-align-02-b-expected.png:
  • platform/gtk/svg/text/text-align-03-b-expected.png:
  • platform/gtk/svg/text/text-align-04-b-expected.png:
  • platform/gtk/svg/text/text-align-05-b-expected.png:
  • platform/gtk/svg/text/text-align-06-b-expected.png:
  • platform/gtk/svg/text/text-deco-01-b-expected.png:
  • platform/gtk/svg/text/text-fonts-01-t-expected.png:
  • platform/gtk/svg/text/text-fonts-02-t-expected.png:
  • platform/gtk/svg/text/text-intro-05-t-expected.png:
  • platform/gtk/svg/text/text-path-01-b-expected.png:
  • platform/gtk/svg/text/text-spacing-01-b-expected.png:
  • platform/gtk/svg/text/text-text-01-b-expected.png:
  • platform/gtk/svg/text/text-text-03-b-expected.png:
  • platform/gtk/svg/text/text-text-05-t-expected.png:
  • platform/gtk/svg/text/text-text-07-t-expected.png:
  • platform/gtk/svg/text/text-text-08-b-expected.png:
  • platform/gtk/svg/text/text-tref-01-b-expected.png:
  • platform/gtk/svg/text/text-tselect-01-b-expected.png:
  • platform/gtk/svg/text/text-tselect-02-f-expected.png:
  • platform/gtk/svg/text/text-tspan-01-b-expected.png:
  • platform/gtk/svg/text/text-ws-01-t-expected.png:
  • platform/gtk/svg/text/text-ws-02-t-expected.png:
12:40 AM Changeset in webkit [260061] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Add logging in case of WebRTC socket error
https://bugs.webkit.org/show_bug.cgi?id=210428

Reviewed by Eric Carlson.

Add some release logging in case of error when sending, setting option or closing a socket.

  • NetworkProcess/webrtc/LibWebRTCSocketClient.cpp:

(WebKit::LibWebRTCSocketClient::sendTo):
(WebKit::LibWebRTCSocketClient::close):
(WebKit::LibWebRTCSocketClient::setOption):

12:06 AM Changeset in webkit [260060] by commit-queue@webkit.org
  • 50 edits in trunk

Unreviewed, reverting r260024.
https://bugs.webkit.org/show_bug.cgi?id=210480

Regressed performance due to loss of specificity caching
(Requested by anttik on #webkit).

Reverted changeset:

"[CSS Selectors] Selectors Level 4 specificity calculation for
pseudo classes"
https://bugs.webkit.org/show_bug.cgi?id=210419
https://trac.webkit.org/changeset/260024

Note: See TracTimeline for information about the timeline view.