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

Timeline



Oct 20, 2021:

11:51 PM Changeset in webkit [284591] by beidson@apple.com
  • 22 edits
    3 adds in trunk

WebKit Managed Notifications: Skeleton NotificationProvider
https://bugs.webkit.org/show_bug.cgi?id=231786

Reviewed by Alex Christensen.

Source/WebCore:

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setBuiltInNotificationsEnabled):
(WebCore::RuntimeEnabledFeatures::builtInNotificationsEnabled const):

Source/WebKit:

Currently, notification messages route from WebContent to the UI process.

When "WebKit-managed built-in notifications" are enabled, notification requests will route from
WebContent to Networking instead.

From there they will head off to webpushd to be handled.

This patch just sets up the switch where messages can optionally head off to the Networking
process instead of the UIProcess.

(It also lays the SPI groundwork for the webpushd mach service name)

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):
(WebKit::NetworkSession::~NetworkSession):

  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/Notifications/NetworkNotificationManager.cpp: Added.

(WebKit::NetworkNotificationManager::NetworkNotificationManager):
(WebKit::NetworkNotificationManager::showNotification):
(WebKit::NetworkNotificationManager::cancelNotification):
(WebKit::NetworkNotificationManager::clearNotifications):
(WebKit::NetworkNotificationManager::didDestroyNotification):

  • NetworkProcess/Notifications/NetworkNotificationManager.h: Added.
  • NetworkProcess/WebStorage/LocalStorageDatabase.cpp: Unified build fixup.
  • Sources.txt:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration webPushMachServiceName]):
(-[_WKWebsiteDataStoreConfiguration setWebPushMachServiceName:]):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::setWebPushMachServiceName):
(WebKit::WebsiteDataStoreConfiguration::webPushMachServiceName const):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Notifications/WebNotificationManager.cpp:

(WebKit::sendNotificationMessage):
(WebKit::WebNotificationManager::show):
(WebKit::WebNotificationManager::cancel):
(WebKit::WebNotificationManager::clearNotifications):
(WebKit::WebNotificationManager::didDestroyNotification):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
  • wtf/PlatformEnableCocoa.h:

Tools:

  • WebKitTestRunner/TestOptions.cpp:

(WTR::TestOptions::defaults): Disable BuiltInNotificationsEnabled for now.

11:27 PM Changeset in webkit [284590] by ysuzuki@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

*IsSane API's could take in the Structure's we're consulting, or they can be out parameters, so we don't rely on the CPU's memory ordering
https://bugs.webkit.org/show_bug.cgi?id=231996

Reviewed by Filip Pizlo.

objectPrototypeIsSane, arrayPrototypeChainIsSane, and stringPrototypeChainIsSane reloads structures from prototype objects while the caller
is already getting them and validating them. This introduces a race condition where structure transition happens just before calling these
APIs and we will see different structures which are already validated. This is simply wrong: if we validate one structure, then we should
continue using that and we should put a watchpoint on this structure. We should not reload structures from the prototype again.

We add Concurrently postfix to these functions, and passing structures to these APIs to continue using these structures instead of reloading
it from prototype objects. This eliminate the race condition we had, and this removes the necessity of load-load-fence on watchpoint state
retrieval.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGArrayMode.cpp:

(JSC::DFG::ArrayMode::refine const):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetByValOnString):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileStringCharAtImpl):

  • runtime/JSGlobalObject.h:
  • runtime/JSGlobalObjectInlines.h:

(JSC::JSGlobalObject::objectPrototypeIsSane):
(JSC::JSGlobalObject::arrayPrototypeChainIsSaneConcurrently):
(JSC::JSGlobalObject::stringPrototypeChainIsSaneConcurrently):
(JSC::JSGlobalObject::arrayPrototypeChainIsSane):
(JSC::JSGlobalObject::stringPrototypeChainIsSane):

11:15 PM Changeset in webkit [284589] by Antti Koivisto
  • 4 edits in trunk/LayoutTests

[ iOS ] fast/inline/inline-background-clip-text-multiline.html is image failing
https://bugs.webkit.org/show_bug.cgi?id=231961
<rdar://problem/84418611>

Unreviewed.

Fix the test to not depend on font rendering details.

  • fast/inline/inline-background-clip-text-multiline-expected.html:
  • fast/inline/inline-background-clip-text-multiline.html:
  • platform/ios-wk2/TestExpectations:
5:03 PM Changeset in webkit [284588] by commit-queue@webkit.org
  • 10 edits
    5 adds in trunk

URLParser should reject hosts with C0 control characters or U+007F
https://bugs.webkit.org/show_bug.cgi?id=232034

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

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-origin-expected.txt:
  • web-platform-tests/url/a-element-origin-xhtml-expected.txt:
  • web-platform-tests/url/failure-expected.txt:
  • web-platform-tests/url/resources/urltestdata.json:
  • web-platform-tests/url/url-character-sets.any-expected.txt: Added.
  • web-platform-tests/url/url-character-sets.any.html: Added.
  • web-platform-tests/url/url-character-sets.any.js: Added.

(cp.test):

  • web-platform-tests/url/url-character-sets.any.worker-expected.txt: Added.
  • web-platform-tests/url/url-character-sets.any.worker.html: Added.
  • web-platform-tests/url/url-origin.any-expected.txt:
  • web-platform-tests/url/url-origin.any.worker-expected.txt:
  • web-platform-tests/url/url-setters-stripping.any.js:

Source/WTF:

This matches Chrome and Firefox and was proposed to the standard at
https://github.com/whatwg/url/issues/627

  • wtf/URLParser.cpp:

(WTF::isC0Control):
(WTF::isForbiddenHostCodePoint):

5:02 PM Changeset in webkit [284587] by Russell Epstein
  • 1 copy in tags/Safari-613.1.6

Tag Safari-613.1.6.

5:01 PM Changeset in webkit [284586] by Russell Epstein
  • 1 delete in tags/Safari-613.1.6

Delete tag.

5:00 PM Changeset in webkit [284585] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] ArithAbs should care about INT32_MIN
https://bugs.webkit.org/show_bug.cgi?id=232051
rdar://84338648

Reviewed by Michael Saboff.

ArithAbs (without overflow check) can return negative value if the input is INT32_MIN with Int32Use.

  • dfg/DFGIntegerRangeOptimizationPhase.cpp:
4:51 PM Changeset in webkit [284584] by Russell Epstein
  • 1 edit in branches/safari-613.1.6-branch/Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h

Unreviewed buld fix.

RemoteRenderingBackendProxy.cpp:81:34: error: use of undeclared identifier 'makeWeakPtr'

4:08 PM Changeset in webkit [284583] by Russell Epstein
  • 1 copy in tags/Safari-613.1.6

Tag Safari-613.1.6.

4:07 PM Changeset in webkit [284582] by pvollan@apple.com
  • 5 edits in trunk/Source/WebKit

Launch Services database is not always sent to GPUP
https://bugs.webkit.org/show_bug.cgi?id=232047
<rdar://problem/84480229>

Reviewed by Brent Fulgham.

Currently, the XPC endpoint for receiving the Launch Services database is being sent to GPUP in GPUProcessProxy::addSession.
If GPUP has not finished launching at that point, the endpoint will not be sent on the first page load. This is addressed by
sending the XPC endpoint in GPUProcessProxy::didFinishLaunching, since the XPC connection over which the XPC endpoint is
being sent is available then.

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::didFinishLaunching):
(WebKit::GPUProcessProxy::addSession):

  • UIProcess/GPU/GPUProcessProxy.h:
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToProcess const):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
4:05 PM Changeset in webkit [284581] by Adrian Perez de Castro
  • 2 edits
    1 add in releases/WebKitGTK/webkit-2.32/Source/WebKit

Merge r284451 - Update seccomp filters with latest changes from flatpak
https://bugs.webkit.org/show_bug.cgi?id=231479

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-10-19
Reviewed by Adrian Perez de Castro.

Additionally, let's fix a minor inconsistency in our error-handling code: all but one of
our codepaths carefully free and close resources, but the process is about to crash so
there's not really any reason to do so. The code is slightly simpler if we don't bother.

The seemingly-extraneous include order changes are required to placate the style checker.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::seccompStrerror):
(WebKit::setupSeccomp):

  • UIProcess/Launcher/glib/Syscalls.h: Added.
4:05 PM Changeset in webkit [284580] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.32/Source

Merge r281384 - IndexedDB: crash when triggering IDBOpenRequest completion back on a worker thread
https://bugs.webkit.org/show_bug.cgi?id=229375

Source/WebCore:

Reviewed by Brady Eidson.

Client may dispatch custom events to an IDBRequest, and we should only change request state based on events
created internally.

  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::dispatchEvent):

Source/WTF:

Protect callee in CrossThreadTask if it inherits from ThreadSafeRefCounted<T>.

Reviewed by Brady Eidson.

  • wtf/CrossThreadTask.h:
4:04 PM Changeset in webkit [284579] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.32/Source/WebCore

Merge r279832 - Unreviewed, partial revert of r279661 to address crashes on iOS Debug.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::removeAllEventListeners):

3:34 PM Changeset in webkit [284578] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ macOS ] imported/w3c/web-platform-tests/xhr/event-upload-progress-crossorigin.any.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=223804

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:15 PM Changeset in webkit [284577] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

[TestExpectation] Re-group css-text WPT failures
https://bugs.webkit.org/show_bug.cgi?id=232027

Reviewed by Antti Koivisto.

3:08 PM Changeset in webkit [284576] by Justin Michaud
  • 6 edits in trunk/Source/JavaScriptCore

We should watch isHavingABadTime if we read from the structureCache
https://bugs.webkit.org/show_bug.cgi?id=232019

Reviewed by Yusuke Suzuki.

We should lock the structure cache when we clear it, and the compiler thread should
watch isHavingABadTime in the case that the cache might get cleared.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGConstantFoldingPhase.cpp:

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

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::haveABadTime):

  • runtime/StructureCache.cpp:

(JSC::StructureCache::clear):

  • runtime/StructureCache.h:

(JSC::StructureCache::clear): Deleted.

2:50 PM Changeset in webkit [284575] by commit-queue@webkit.org
  • 25 edits
    2 adds in trunk

macOS key-driven smooth scrolling does not stop when focus changes
https://bugs.webkit.org/show_bug.cgi?id=228302

Patch by Beth Dakin <Beth Dakin> and Dana Estra <destra@apple.com> on 2021-10-20
Reviewed by Simon Fraser.

Source/WebCore:

Call stopKeyboardScrollAnimation() on the old FrameView after changing Frame focus.

  • page/FocusController.cpp:

(WebCore::FocusController::setFocusedFrame):

Call stopKeyboardScrollAnimation() when the window visibility / active state changes.

  • page/Page.cpp:

(WebCore::Page::setActivityState):
(WebCore::Page::stopKeyboardScrollAnimation):

  • page/Page.h:

Plumbing to get to ScrollingEffectsController, which can invoke keyUp.

  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::stopKeyboardScrollAnimation):

  • platform/ScrollAnimator.h:
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::stopKeyboardScrollAnimation):

  • platform/ScrollableArea.h:

Tools:

This patch adds support for rawKeyUp and rawKeyDown to the macOS versions of WKTR and DRT.

  • DumpRenderTree/mac/EventSendingController.mm:

(+[EventSendingController initialize]):
(+[EventSendingController isSelectorExcludedFromWebScript:]):
(+[EventSendingController webScriptNameForSelector:]):
(-[EventSendingController rawKeyDown:withModifiers:withLocation:]):
(-[EventSendingController rawKeyDownWrapper:withModifiers:withLocation:]):
(-[EventSendingController rawKeyUp:withModifiers:withLocation:]):
(-[EventSendingController rawKeyUpWrapper:withModifiers:withLocation:]):

  • WebKitTestRunner/EventSenderProxy.h:
  • WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::createRawKeyDownMessageBody):
(WTR::createRawKeyUpMessageBody):
(WTR::EventSendingController::rawKeyDown):
(WTR::EventSendingController::rawKeyUp):

  • WebKitTestRunner/InjectedBundle/EventSendingController.h:
  • WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm:

(WTR::EventSenderProxy::rawKeyDown):
(WTR::EventSenderProxy::rawKeyUp):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::didReceiveRawKeyDownMessageFromInjectedBundle):
(WTR::TestController::didReceiveRawKeyUpMessageFromInjectedBundle):
(WTR::TestController::didReceiveMessageFromInjectedBundle):
(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:

(WTR::EventSenderProxy::rawKeyDown):
(WTR::EventSenderProxy::rawKeyUp):

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(WTR::EventSenderProxy::rawKeyDown):
(WTR::EventSenderProxy::rawKeyUp):

  • WebKitTestRunner/win/EventSenderProxyWin.cpp:

(WTR::EventSenderProxy::rawKeyDown):
(WTR::EventSenderProxy::rawKeyUp):

  • WebKitTestRunner/wpe/EventSenderProxyWPE.cpp:

(WTR::EventSenderProxy::rawKeyDown):
(WTR::EventSenderProxy::rawKeyUp):

LayoutTests:

EventHandlerDrivenSmoothKeyboardScrollingEnabled keys are WK2 only right now, so skip the new
test in general.

New test that verifies this bug is resolved.

  • fast/scrolling/unfocusing-page-while-keyboard-scrolling-expected.txt: Added.
  • fast/scrolling/unfocusing-page-while-keyboard-scrolling.html: Added.

Do run the test for mac-wk2. rawKeyDown / rawKeyUp are currently not implemented
elsewhere.

  • platform/mac-wk2/TestExpectations:

New support for rawKeyDown in order to simulate holding the key down.

  • resources/ui-helper.js:

(window.UIHelper.rawKeyDown):
(window.UIHelper.rawKeyUp):

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

Fix crash when calling setUsernameForLocalCredentialWithID
https://bugs.webkit.org/show_bug.cgi?id=231986
<rdar://problem/84425279>

Patch by John Pascoe <J Pascoe> on 2021-10-20
Reviewed by David Kilzer.

Using a copy here results in a crash when the NSData deallocs because the
[NSData dataWithBytesNoCopy] was used a buffer that was not allocated with malloc.
This is fixed by instead using [NSData initWithBytes] and RetainPtr.

  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:

(+[_WKWebAuthenticationPanel setUsernameForLocalCredentialWithID:username:]):

2:45 PM Changeset in webkit [284573] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Add missing overflow checks to DFGIntegerRangeOptimizationPhase::isEquivalentTo()
https://bugs.webkit.org/show_bug.cgi?id=232024

Reviewed by Tadeu Zagallo.

Added overflow check before comparing for equality.

  • dfg/DFGIntegerRangeOptimizationPhase.cpp:
2:42 PM Changeset in webkit [284572] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ iOS15 EWS ] http/tests/privateClickMeasurement/attribution-conversion-through-image-redirect-in-new-window.html is crashing.
https://bugs.webkit.org/show_bug.cgi?id=232048.

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
2:39 PM Changeset in webkit [284571] by Russell Epstein
  • 3 edits in branches/safari-613.1.6-branch/Source/WebKit

Cherry-pick r284570. rdar://problem/84479714

Remove com.apple.webkit.adattributiond.plist from build temporarily
https://bugs.webkit.org/show_bug.cgi?id=232045

Reviewed by Tim Horton.

There are some problems with the internal verifiers that will take some time to resolve.
Until they are resolved, don't install the plist and don't tell the network process to connect to the daemon registered by the plist.

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: (WebKit::WebsiteDataStoreConfiguration::WebsiteDataStoreConfiguration):
  • WebKit.xcodeproj/project.pbxproj:

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

2:35 PM Changeset in webkit [284570] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit

Remove com.apple.webkit.adattributiond.plist from build temporarily
https://bugs.webkit.org/show_bug.cgi?id=232045

Reviewed by Tim Horton.

There are some problems with the internal verifiers that will take some time to resolve.
Until they are resolved, don't install the plist and don't tell the network process to connect to the daemon registered by the plist.

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::WebsiteDataStoreConfiguration):

  • WebKit.xcodeproj/project.pbxproj:
2:32 PM Changeset in webkit [284569] by Russell Epstein
  • 16 edits in branches/safari-613.1.6-branch/Source/WebKit

Revert r284079. rdar://problem/84478842

2:26 PM Changeset in webkit [284568] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ BigSure wk1 Debug ] fast/selectors/pseudo-element-inside-any.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=232046.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:13 PM Changeset in webkit [284567] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-autofocus.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=232042

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:07 PM Changeset in webkit [284566] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

The code decoding std::optional<ImagePaintingOptions> can't be compiled by PlayStation due to the ImagePaintingOptions template constructor
https://bugs.webkit.org/show_bug.cgi?id=231980

Reviewed by Ross Kirsling.

PlayStation clang can't compile the following code.

std::optional<ImagePaintingOptions> val;
decoder >> val;

It reports the following error.

include\type_traits:3825:31: error: no member named 'value' in 'std::is_convertible<optional<WebCore::ImagePaintingOptions> &, WebCore::ImagePaintingOptions>'

  • platform/graphics/ImagePaintingOptions.h:

(WebCore::ImagePaintingOptions::ImagePaintingOptions): Use SFINAE
for the first template constructor not to conflict with the second
one.

1:57 PM Changeset in webkit [284565] by Ayumi Kojima
  • 3 edits in trunk/LayoutTests

[ iOS macOS wk2 ]webanimations/marker-opacity-animation-no-effect.html is a flaky image failure.
https://bugs.webkit.org/show_bug.cgi?id=232040

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
1:32 PM Changeset in webkit [284564] by beidson@apple.com
  • 11 edits
    5 adds in trunk/Source/WebKit

Factor out some Notifications-specific messages from WebPageProxy messages
https://bugs.webkit.org/show_bug.cgi?id=232021

Reviewed by Alex Christensen.

In a future patch, there will be a runtime switch where WebContent sometimes sends these Notification
related messages to an objecting in Networking, and othertimes sends them to a WebPageProxy in the UIProcess.

To accomodate this switch, let's split them out into their own Notifications specific object and messages.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • Shared/Notifications/NotificationManagerMessageHandler.h: Added.
  • Shared/Notifications/NotificationManagerMessageHandler.messages.in: Added.
  • UIProcess/Notifications/WebNotificationManagerMessageHandler.cpp: Added.

(WebKit::WebNotificationManagerMessageHandler::WebNotificationManagerMessageHandler):
(WebKit::WebNotificationManagerMessageHandler::showNotification):
(WebKit::WebNotificationManagerMessageHandler::cancelNotification):
(WebKit::WebNotificationManagerMessageHandler::clearNotifications):
(WebKit::WebNotificationManagerMessageHandler::didDestroyNotification):

  • UIProcess/Notifications/WebNotificationManagerMessageHandler.h: Added.
  • UIProcess/WebPageProxy.cpp:

(WebKit::m_notificationManagerMessageHandler):
(WebKit::WebPageProxy::addAllMessageReceivers):
(WebKit::WebPageProxy::removeAllMessageReceivers):
(WebKit::WebPageProxy::launchProcess):
(WebKit::WebPageProxy::swapToProvisionalPage):
(WebKit::WebPageProxy::close):
(WebKit::WebPageProxy::commitProvisionalPage):
(WebKit::m_limitsNavigationsToAppBoundDomains): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/Notifications/WebNotificationManager.cpp:

(WebKit::WebNotificationManager::show):
(WebKit::WebNotificationManager::cancel):
(WebKit::WebNotificationManager::clearNotifications):
(WebKit::WebNotificationManager::didDestroyNotification):

12:55 PM Changeset in webkit [284563] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ iOS15 gpuprocess ] 2 css/color-filter tests are image-only failing.
https://bugs.webkit.org/show_bug.cgi?id=232030.

Unreviewed test gardening.

  • gpu-process/TestExpectations:
12:40 PM Changeset in webkit [284562] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ iOS15 GPUProcess ] Multiple compositing tests are constant image-only failures.
https://bugs.webkit.org/show_bug.cgi?id=232022.

Unreviewed test gardening.

  • gpu-process/TestExpectations:
12:24 PM Changeset in webkit [284561] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ iOS15 gpuprocess ] 2 css/color-filter tests are image-only failing.
https://bugs.webkit.org/show_bug.cgi?id=232030.

Unreviewed test gardening.

  • gpu-process/TestExpectations:
12:01 PM Changeset in webkit [284560] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

Update test expectations for compositing/scrolling/async-overflow-scrolling/overflow-scroll-paint-order-sibling.html.
https://bugs.webkit.org/show_bug.cgi?id=232022.

Unreviewed test gardening.

  • gpu-process/TestExpectations:
11:59 AM Changeset in webkit [284559] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebKitLegacy/ios

WebPDFViewPlaceholder should use a weak delegate
<https://webkit.org/b/231927>

Reviewed by Tim Horton.

  • WebView/WebPDFViewPlaceholder.h:

(WebPDFViewPlaceholder.delegate):

  • Mark property as weak instead of assign.
  • WebView/WebPDFViewPlaceholder.mm:

(WebPDFViewPlaceholder._dataSource):
(WebPDFViewPlaceholder._delegate):

  • Mark instance variables as as _weak to match delegate property and based on comment for _dataSource.
11:56 AM Changeset in webkit [284558] by ddkilzer@apple.com
  • 5 edits in trunk/Source/WebKit

WebKit Objective-C classes should use weak delegates
<https://webkit.org/b/231956>
<rdar://problem/84416233>

Reviewed by Brent Fulgham.

  • UIProcess/API/Cocoa/WKConnection.h:
  • UIProcess/API/Cocoa/WKProcessGroup.h:
  • UIProcess/API/mac/WKScrollViewMac.h:
  • Change delegate property from assign to weak to document that WeakObjCPtr<> is used to store the value.
  • UIProcess/ios/forms/WKFileUploadPanel.h:
  • Change delegate property from assign to weak to make the instance variable weak.
11:51 AM Changeset in webkit [284557] by achristensen@apple.com
  • 6 edits in trunk/Tools

REGRESSION (r284418): [iOS] TestWebKitAPI.HSTS.Basic, TestWebKitAPI.HSTS.CrossOriginRedirect, TestWebKitAPI.HSTS.ThirdParty, and TestWebKitAPI.WebKit.RedirectToPlaintextHTTPSUpgrade timing out
https://bugs.webkit.org/show_bug.cgi?id=232003

Reviewed by Chris Dumez.

I observed that sometimes the framer's nw_framer_input_handler_t is called after calling nw_framer_pass_through_input.
To fix this, I instead call nw_framer_deliver_input_no_copy myself to pass through the data inside my nw_framer_input_handler_t.

  • TestWebKitAPI/Tests/WebKitCocoa/ContentRuleListNotification.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/HSTS.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/Proxy.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:

(TEST):

  • TestWebKitAPI/cocoa/HTTPServer.mm:

(TestWebKitAPI::proxyDefinition):

11:50 AM Changeset in webkit [284556] by commit-queue@webkit.org
  • 2 edits
    1 add in trunk/Tools

Benchmarks harness could fail if pyobjc-core module is upgraded without upgrading other pyobjc-frameworks
https://bugs.webkit.org/show_bug.cgi?id=231983

Patch by Roy Reapor <rreapor@apple.com> on 2021-10-20
Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py:

(OSXBrowserDriver.prepare_env): Use autoinstalled Quartz module
(OSXBrowserDriver._terminate_processes): Use autoinstalled AppKit module

11:42 AM Changeset in webkit [284555] by Ayumi Kojima
  • 3 edits in trunk/LayoutTests

[ iOS macOS wk2 ] imported/w3c/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-four-reports.https.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=232028

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
11:35 AM Changeset in webkit [284554] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ iOS15 GPUProcess ] compositing/shared-backing/sharing-child-contributes-to-overlap.html is a constant image-only failure.
https://bugs.webkit.org/show_bug.cgi?id=232022.

Unreviewed test gardening.

  • gpu-process/TestExpectations:
11:31 AM Changeset in webkit [284553] by Eric Hutchison
  • 1 edit
    1 delete in trunk/LayoutTests

Unreviewed, reverting r284551.

TestExpectations file not recognized

Reverted changeset:

https://commits.webkit.org/r284551

11:19 AM Changeset in webkit [284552] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS Release ] media/media-can-play-mpeg-audio.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=232025

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
11:19 AM Changeset in webkit [284551] by Eric Hutchison
  • 2 adds in trunk/LayoutTests/gpu-process/iOS

Created TestExpectations document for gpuprocess/iOS and updated.
https://bugs.webkit.org/show_bug.cgi?id=232022.

Unreviewed test gardening.

  • gpu-process/iOS/TestExpectations: Added.
10:52 AM Changeset in webkit [284550] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebCore

Remove useless definition from IDBDatabase.idl
https://bugs.webkit.org/show_bug.cgi?id=231997

Reviewed by Chris Dumez.

DOMStringList is also iterable in WebKit now, so we don't need to keep this definition for compatibility (see
https://github.com/w3c/IndexedDB/issues/85#issuecomment-272587319).

Covered by existing test storage/indexeddb/transaction-basics.html, which verifies that DOMStringList can be
argument for IDBDatabase.transaction().

  • Modules/indexeddb/IDBDatabase.idl:
10:51 AM Changeset in webkit [284549] by sihui_liu@apple.com
  • 3 edits in trunk/Source/WebCore

Share code between JSDOMIterator and JSDOMAsyncIterator
https://bugs.webkit.org/show_bug.cgi?id=231437
<rdar://problem/84306323>

Reviewed by Youenn Fablet.

  • bindings/js/JSDOMAsyncIterator.h:

(WebCore::jsPair): Deleted.
(WebCore::iteratorCreate): Deleted.

  • bindings/js/JSFileSystemDirectoryHandleIterator.h:
10:35 AM Changeset in webkit [284548] by commit-queue@webkit.org
  • 4 edits in trunk

Fix percentages on orthogonal replaced children
https://bugs.webkit.org/show_bug.cgi?id=46496

Patch by Rob Buis <rbuis@igalia.com> on 2021-10-20
Reviewed by Darin Adler.

Source/WebCore:

Modify computeReplacedLogicalWidthUsing to make it aware of the orthogonal flow case
when dealing with calc/percentages.

This patch also removes an outdated comment from computeReplacedLogicalHeightUsing.

Test: imported/w3c/web-platform-tests/wpt/css/css-writing-modes/sizing-percentages-replaced-orthogonal-001.html

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeReplacedLogicalWidthUsing const):
(WebCore::RenderBox::computeReplacedLogicalHeightUsing const):

LayoutTests:

10:30 AM Changeset in webkit [284547] by Said Abou-Hallawa
  • 4 edits in trunk/Source/WebKit

[iOS] Ensure the CA transaction has been synchronously committed before snapshotting it
https://bugs.webkit.org/show_bug.cgi?id=230085
<rdar://81800118>

Reviewed by Tim Horton.

Because committing the CA transaction may be an asynchronous operation,
we need to ensure the CALayer is fully updated before snapshotting it.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _snapshotRectAfterScreenUpdates:rectInViewCoordinates:intoImageOfWidth:completionHandler:]):
(-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]):

10:30 AM Changeset in webkit [284546] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS ] imported/w3c/web-platform-tests/html/canvas/element/manual tests, fast/canvas/canvas-createPattern-video-modify.html and media/video-canvas-createPattern.html are failing.
https://bugs.webkit.org/show_bug.cgi?id=231959

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:26 AM Changeset in webkit [284545] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS Debug ] http/tests/xmlhttprequest tests are flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=232017

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:22 AM Changeset in webkit [284544] by Ross Kirsling
  • 18 edits in trunk/Source

Mac CMake build should not need to include iOS headers
https://bugs.webkit.org/show_bug.cgi?id=231998

Reviewed by Alex Christensen.

Source/WebCore:

  • PlatformMac.cmake:
  • platform/ios/WebItemProviderPasteboard.h:

Source/WebCore/PAL:

  • pal/PlatformMac.cmake:

Source/WebKit:

  • GPUProcess/cocoa/GPUConnectionToWebProcessCocoa.mm:
  • PlatformMac.cmake:
  • Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:

(WebKit::RemoteLayerTreeTransaction::encode const):
(WebKit::RemoteLayerTreeTransaction::decode):

  • UIProcess/API/Cocoa/WKWebView.mm:
  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm:
  • UIProcess/Cocoa/UIDelegate.mm:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:
  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.h:
10:18 AM Changeset in webkit [284543] by commit-queue@webkit.org
  • 2 edits in trunk

Add ObjC as supported .clang-format language
https://bugs.webkit.org/show_bug.cgi?id=230401

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-10-20
Reviewed by Jonathan Bedard.

Add ObjC and change few properties useful
for ObjC formatting.

  • .clang-format:
10:14 AM Changeset in webkit [284542] by Antti Koivisto
  • 6 edits in trunk

fast/images/text-recognition/mac/select-rotated-transparent-image-overlay.html is failing
https://bugs.webkit.org/show_bug.cgi?id=232008
rdar://84276269

Reviewed by Alan Bujtas.

Source/WebCore:

Other browsers and WPT tests imported/w3c/web-platform-tests/css/css-pseudo/highlight-painting-003.html
and imported/w3c/web-platform-tests/css/css-pseudo/highlight-painting-004.html agree with our new painting
behavior. Change the test instead of changing the behavior back.

Also fix the legacy line layout to have the same painting behavior.

  • layout/integration/InlineIteratorLine.cpp:

(WebCore::InlineIterator::Line::blockDirectionPointInLine const):

Fix to use selectionTopForHitTesting as the point needs to be within the hittable line.

  • rendering/LegacyRootInlineBox.cpp:

(WebCore::LegacyRootInlineBox::selectionTop const):

For consistency also make the legacy selection painting behavior match.

LayoutTests:

  • fast/block/line-layout/selection-highlight-overlap.html:

Adopt to the updated legacy behavior.

  • fast/images/text-recognition/mac/select-rotated-transparent-image-overlay.html:

Change the test so it isn't affected by the behavior change.

10:11 AM Changeset in webkit [284541] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

Regression (r282211): [ macOS wk2 ] css3/filters/blur-various-radii.html is a flaky image failure.
https://bugs.webkit.org/show_bug.cgi?id=231090

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
9:37 AM Changeset in webkit [284540] by achristensen@apple.com
  • 2 edits in trunk/Tools

Fix iOS build after r284539
https://bugs.webkit.org/show_bug.cgi?id=232003

  • TestWebKitAPI/Tests/WebKitCocoa/HSTS.mm:
9:34 AM Changeset in webkit [284539] by achristensen@apple.com
  • 3 edits in trunk/Tools

Skip timing out tests on iOS while I investigate.
https://bugs.webkit.org/show_bug.cgi?id=232003

These tests are clearly timing out on iOS, but it'll take more than an hour or so to investigate.
Keep the bots green while I look into a better solution.

  • TestWebKitAPI/Tests/WebKitCocoa/ContentRuleListNotification.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/HSTS.mm:
9:04 AM Changeset in webkit [284538] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS ] fast/scrolling/ios/click-events-after-long-press-during-momentum-scroll-in tests are a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=230959

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
8:51 AM Changeset in webkit [284537] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS 15 ] fast/scrolling/ios/scroll-snap-with-relayouts tests are flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=232014

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
8:25 AM Changeset in webkit [284536] by Antti Koivisto
  • 7 edits in trunk/Source

Don't re-evaluate viewport dependent media queries if the viewport doesn't change
https://bugs.webkit.org/show_bug.cgi?id=231949
rdar://77240171

Reviewed by Alan Bujtas.

Source/WebCore:

If there are many viewport dependent rules (some pages have thousands) re-evaluating can take a while.
It is currently done unconditionally before layout.

  • css/MediaQueryEvaluator.cpp:

(WebCore::mediaQueryViewportStateForDocument):

  • css/MediaQueryEvaluator.h:
  • style/StyleScope.cpp:

(WebCore::Style::Scope::evaluateMediaQueriesForViewportChange):

Save the viewport state so we can test if anything that affects media query results has changed since the last time.

  • style/StyleScope.h:

Source/WebKit:

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::handlePreferenceChange):

Remember to signal accessibility settings change on this code path too.

8:24 AM Changeset in webkit [284535] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WebCore

AudioArray should ensure 32byte alignment
https://bugs.webkit.org/show_bug.cgi?id=232011

Reviewed by Eric Carlson.

When enabling libpas on x86[1], we observed occasional test failure in webaudio/AudioNode/tail-processing.html test.
We found that while the input & kernel has the exact same values, vDSP_conv in WebAudio DirectConvolver.cpp generates
slightly different outputs (like a error)! This is because vDSP_conv is switching underlying implementation based on
input & kernel alignments: AVX2 implementation requires 32byte alignment while SSE implementation requires 16byte alignment.
And unfortunately, these implementation has very slightly different results.

Previously we are setting 16byte alignment in bmalloc in AudioArray. But luckily, in many cases, it was getting 32byte
alignment. So we are always taking AVX2 implementation and the result can be identical if the input is the same.
However, by switching to libpas, AudioArray can get 16byte aligned (but 32byte aligned) memory actually, and in that
case, we use different implementation in vDSP_conv. So the result now depends on what alignment the allocated AudioArray gets.
The test is running the same kernel to the same input independently, and comparing the outputs. It should be identical,
however, if one gets 16byte aligned array while the other gets 32byte aligned array, then the result will be different,
which is the observed failure.

We use 32byte alignment, which is our vectorized math's maximum alignment requirement to ensure the result is deterministic
and not depending on the allocated array's alignment.

[1]: https://bugs.webkit.org/show_bug.cgi?id=231815

  • platform/audio/AudioArray.h:

(WebCore::AudioArray::resize):

8:20 AM Changeset in webkit [284534] by Simon Fraser
  • 54 edits in trunk/Source/WebCore

Make ScrollingStateTreeAsTextBehavior an enum class for use with OptionSet<>
https://bugs.webkit.org/show_bug.cgi?id=232002

Reviewed by Alan Bujtas.

Make ScrollingStateTreeAsTextBehavior an enum class, and replace ScrollingStateTreeAsTextBehavior
with OptionSet<ScrollingStateTreeAsTextBehavior>.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::scrollingStateTreeAsText const):
(WebCore::AsyncScrollingCoordinator::scrollingTreeAsText const):

  • page/scrolling/AsyncScrollingCoordinator.h:

(WebCore::AsyncScrollingCoordinator::scrollingStateTreeAsText):
(WebCore::AsyncScrollingCoordinator::scrollingTreeAsText):

  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::scrollingStateTreeAsText const):
(WebCore::ScrollingCoordinator::scrollingTreeAsText const):

  • page/scrolling/ScrollingCoordinator.h:

(WebCore::ScrollingCoordinator::scrollingStateTreeAsText):
(WebCore::ScrollingCoordinator::scrollingTreeAsText):

  • page/scrolling/ScrollingCoordinatorTypes.h:
  • page/scrolling/ScrollingStateFixedNode.cpp:

(WebCore::ScrollingStateFixedNode::dumpProperties const):

  • page/scrolling/ScrollingStateFixedNode.h:
  • page/scrolling/ScrollingStateFrameHostingNode.cpp:

(WebCore::ScrollingStateFrameHostingNode::dumpProperties const):

  • page/scrolling/ScrollingStateFrameHostingNode.h:
  • page/scrolling/ScrollingStateFrameScrollingNode.cpp:

(WebCore::ScrollingStateFrameScrollingNode::dumpProperties const):

  • page/scrolling/ScrollingStateFrameScrollingNode.h:
  • page/scrolling/ScrollingStateNode.cpp:

(WebCore::ScrollingStateNode::dumpProperties const):
(WebCore::ScrollingStateNode::dump const):
(WebCore::ScrollingStateNode::scrollingStateTreeAsText const):

  • page/scrolling/ScrollingStateNode.h:

(WebCore::ScrollingStateNode::scrollingStateTreeAsText):

  • page/scrolling/ScrollingStateOverflowScrollProxyNode.cpp:

(WebCore::ScrollingStateOverflowScrollProxyNode::dumpProperties const):

  • page/scrolling/ScrollingStateOverflowScrollProxyNode.h:
  • page/scrolling/ScrollingStateOverflowScrollingNode.cpp:

(WebCore::ScrollingStateOverflowScrollingNode::dumpProperties const):

  • page/scrolling/ScrollingStateOverflowScrollingNode.h:
  • page/scrolling/ScrollingStatePositionedNode.cpp:

(WebCore::ScrollingStatePositionedNode::dumpProperties const):

  • page/scrolling/ScrollingStatePositionedNode.h:
  • page/scrolling/ScrollingStateScrollingNode.cpp:

(WebCore::ScrollingStateScrollingNode::dumpProperties const):

  • page/scrolling/ScrollingStateScrollingNode.h:
  • page/scrolling/ScrollingStateStickyNode.cpp:

(WebCore::ScrollingStateStickyNode::dumpProperties const):

  • page/scrolling/ScrollingStateStickyNode.h:
  • page/scrolling/ScrollingStateTree.cpp:

(showScrollingStateTree):

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::commitTreeState):
(WebCore::ScrollingTree::scrollingTreeAsText):

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::scrollingTreeAsText):

  • page/scrolling/ScrollingTreeFrameHostingNode.cpp:

(WebCore::ScrollingTreeFrameHostingNode::dumpProperties const):

  • page/scrolling/ScrollingTreeFrameHostingNode.h:
  • page/scrolling/ScrollingTreeFrameScrollingNode.cpp:

(WebCore::ScrollingTreeFrameScrollingNode::dumpProperties const):

  • page/scrolling/ScrollingTreeFrameScrollingNode.h:
  • page/scrolling/ScrollingTreeNode.cpp:

(WebCore::ScrollingTreeNode::dumpProperties const):
(WebCore::ScrollingTreeNode::dump const):

  • page/scrolling/ScrollingTreeNode.h:
  • page/scrolling/ScrollingTreeOverflowScrollingNode.cpp:

(WebCore::ScrollingTreeOverflowScrollingNode::dumpProperties const):

  • page/scrolling/ScrollingTreeOverflowScrollingNode.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::dumpProperties const):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/cocoa/ScrollingTreeFixedNode.h:
  • page/scrolling/cocoa/ScrollingTreeFixedNode.mm:

(WebCore::ScrollingTreeFixedNode::dumpProperties const):

  • page/scrolling/cocoa/ScrollingTreeOverflowScrollProxyNode.h:
  • page/scrolling/cocoa/ScrollingTreeOverflowScrollProxyNode.mm:

(WebCore::ScrollingTreeOverflowScrollProxyNode::dumpProperties const):

  • page/scrolling/cocoa/ScrollingTreePositionedNode.h:
  • page/scrolling/cocoa/ScrollingTreePositionedNode.mm:

(WebCore::ScrollingTreePositionedNode::dumpProperties const):

  • page/scrolling/cocoa/ScrollingTreeStickyNode.h:
  • page/scrolling/cocoa/ScrollingTreeStickyNode.mm:

(WebCore::ScrollingTreeStickyNode::dumpProperties const):

  • page/scrolling/mac/ScrollingCoordinatorMac.mm:

(WebCore::ScrollingCoordinatorMac::commitTreeStateIfNeeded):

  • page/scrolling/nicosia/ScrollingTreeFixedNode.cpp:

(WebCore::ScrollingTreeFixedNode::dumpProperties const):

  • page/scrolling/nicosia/ScrollingTreeFixedNode.h:
  • page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.cpp:

(WebCore::ScrollingTreeOverflowScrollProxyNode::dumpProperties const):

  • page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.h:
  • page/scrolling/nicosia/ScrollingTreePositionedNode.cpp:

(WebCore::ScrollingTreePositionedNode::dumpProperties const):

  • page/scrolling/nicosia/ScrollingTreePositionedNode.h:
  • page/scrolling/nicosia/ScrollingTreeStickyNode.cpp:

(WebCore::ScrollingTreeStickyNode::dumpProperties const):

  • page/scrolling/nicosia/ScrollingTreeStickyNode.h:
8:04 AM Changeset in webkit [284533] by commit-queue@webkit.org
  • 24 edits
    1 copy
    2 adds in trunk

Do not use strerror()
https://bugs.webkit.org/show_bug.cgi?id=231913

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-10-20
Reviewed by Chris Dumez.

Source/bmalloc:

  • libpas/src/libpas/pas_page_malloc.c:

(pas_page_malloc_commit):

Source/JavaScriptCore:

  • API/JSScript.mm:

(-[JSScript writeCache:]):

  • API/tests/testapi.mm:

(resolvePathToScripts):

  • jsc.cpp:
  • runtime/BytecodeCacheError.cpp:

(JSC::BytecodeCacheError::StandardError::message const):

  • tools/FunctionAllowlist.cpp:

(JSC::FunctionAllowlist::FunctionAllowlist):

  • tools/FunctionOverrides.cpp:

(JSC::FunctionOverrides::parseOverridesInFile):

  • wasm/WasmMemory.cpp:

(JSC::Wasm::MemoryHandle::~MemoryHandle):
(JSC::Wasm::Memory::tryCreate):
(JSC::Wasm::Memory::growShared):
(JSC::Wasm::Memory::grow):

Source/WebKit:

  • Platform/IPC/unix/ConnectionUnix.cpp:

(IPC::Connection::readyReadHandler):
(IPC::Connection::sendOutputMessage):

  • Platform/unix/SharedMemoryUnix.cpp:

(WebKit::SharedMemory::allocate):

  • Shared/mac/AuxiliaryProcessMac.mm:

(WebKit::setAndSerializeSandboxParameters):
(WebKit::sandboxDataVaultParentDirectory):
(WebKit::ensureSandboxCacheDirectory):
(WebKit::tryApplyCachedSandbox):
(WebKit::applySandbox):

Source/WTF:

Add a new safeStrerror function that we can use without worrying about thread safety.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/SafeStrerror.cpp: Added.

(WTF::safeStrerror):

  • wtf/SafeStrerror.h: Added.
  • wtf/linux/RealTimeThreads.cpp:

(WTF::RealTimeThreads::promoteThreadToRealTime):

  • wtf/playstation/FileSystemPlayStation.cpp:

(WTF::FileSystemImpl::deleteFile):

  • wtf/posix/FileSystemPOSIX.cpp:

(WTF::FileSystemImpl::deleteFile):

  • wtf/posix/ThreadingPOSIX.cpp:

(WTF::Thread::establishHandle):

  • wtf/threads/Signals.cpp:

(WTF::jscSignalHandler):

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/Tests/WTF/SafeStrerror.cpp: Added.

(TestWebKitAPI::TEST):

8:01 AM Changeset in webkit [284532] by commit-queue@webkit.org
  • 7 edits in trunk

Source/WebKit:
[WebAuthn] Obtain consent to create new credential when platform authenticator in excludedCredentials
https://bugs.webkit.org/show_bug.cgi?id=219813
<rdar://problem/72484635>

Patch by John Pascoe <J Pascoe> on 2021-10-20
Reviewed by Brent Fulgham.

Currently, whenever the platform authenticator is within excludedCredentials during makeCredential we
always return NotAllowedError and merely flash a consent screen. This does not match the spec per Step 3.1
of makeCredential (https://w3c.github.io/webauthn/#sctn-op-make-cred). Instead, we should always obtain consent
and return a different error depending on consent was obtained.

A fixme to add this was inadvertently removed in https://bugs.webkit.org/attachment.cgi?id=393180&action=prettypatch

Added api test TestWebKitAPI.WebAuthenticationPanel.LADuplicateCredentialWithConsent

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticator::makeCredential):

Tools:
[WebAuthn] Obtain consent to create new credential when platform authenticator in excludedCredentials
https://bugs.webkit.org/show_bug.cgi?id=219813
<rdar://problem/72484635>

Patch by John Pascoe <J Pascoe> on 2021-10-20
Reviewed by Brent Fulgham.

Currently, whenever the platform authenticator is within excludedCredentials during makeCredential we
always return NotAllowedError and merely flash a consent screen. This does not match the spec per Step 3.1
of makeCredential (https://w3c.github.io/webauthn/#sctn-op-make-cred). Instead, we should always obtain consent
and return a different error depending on consent was obtained.

This adds a test to confirm a different path is taken whenever consent is obtained.

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST):

LayoutTests:
WebAuthn] Obtain consent to create new credential when platform authenticator in excludedCredentials
https://bugs.webkit.org/show_bug.cgi?id=219813
<rdar://problem/72484635>

Patch by John Pascoe <J Pascoe> on 2021-10-20
Reviewed by Brent Fulgham.

Modify layout tests to reflect different exception returned when consent is provided

  • http/wpt/webauthn/public-key-credential-create-failure-local-silent.https.html:
  • http/wpt/webauthn/public-key-credential-create-failure-local.https.html:
7:49 AM Changeset in webkit [284531] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Suppress a -Wreturn-type warning
https://bugs.webkit.org/show_bug.cgi?id=229681
<rdar://81603387>

Unreviewed.

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-10-20

  • wasm/WasmFormat.h:

(JSC::Wasm::typeToString):

6:52 AM Changeset in webkit [284530] by Alan Bujtas
  • 4 edits in trunk

[LFC][IFC] Sometimes "arbitrary mid work break" does not mean "any position"
https://bugs.webkit.org/show_bug.cgi?id=232001

Reviewed by Antti Koivisto.

Source/WebCore:

Add a partial (and oversimplified) (XB/XA) type of line breaking for word-break: break-all.
This is governed by https://unicode.org/reports/tr14/.
We should really implement something similar to Blink's kBreakAllLineBreakClassTable (which is based on WebKit's lineBreakTable).

  • layout/formattingContexts/inline/InlineContentBreaker.cpp:

(WebCore::Layout::midWordBreak):
(WebCore::Layout::InlineContentBreaker::tryBreakingTextRun const):

LayoutTests:

6:34 AM Changeset in webkit [284529] by Carlos Garcia Campos
  • 8 edits in trunk/Source/WebCore

AX: Build with isolated tree enable is broken since r284075
https://bugs.webkit.org/show_bug.cgi?id=231667
<rdar://problem/84191590>

Reviewed by Andres Gonzalez.

The problem seems to be that AXPropertyValueVariant contains the same type twice (in 64 bit systems) AXID
(size_t -> long unsigned int) and uint64_t -> long unsigned int. That's actually allowed but makes the access
ambiguous. Since uint64_t is only used for SessionID, we can explicitly use SessionID instead.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::sessionID const):

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):
(WebCore::AXIsolatedObject::sessionID const):
(WebCore::AXIsolatedObject::sessionIDAttributeValue const):

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/isolatedtree/AXIsolatedTree.h:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

6:26 AM Changeset in webkit [284528] by youenn@apple.com
  • 34 edits
    30 adds in trunk

Add support for requestVideoFrameCallback API and MediaStreamTrack-based backend support
https://bugs.webkit.org/show_bug.cgi?id=231803

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • web-platform-tests/video-rvfc/META.yml: Added.
  • web-platform-tests/video-rvfc/README.md: Added.
  • web-platform-tests/video-rvfc/idlharness.window-expected.txt: Added.
  • web-platform-tests/video-rvfc/idlharness.window.html: Added.
  • web-platform-tests/video-rvfc/idlharness.window.js: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback-before-xr-session.https-expected.txt: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback-before-xr-session.https.html: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback-dom-expected.txt: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback-dom.html: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback-during-xr-session.https-expected.txt: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback-during-xr-session.https.html: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback-expected.txt: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback-parallel-expected.txt: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback-parallel.html: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback-repeating-expected.txt: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback-repeating.html: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback-webrtc.https-expected.txt: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback-webrtc.https.html: Added.
  • web-platform-tests/video-rvfc/request-video-frame-callback.html: Added.
  • web-platform-tests/video-rvfc/w3c-import.log: Added.

Source/WebCore:

Update WebIDL to expose https://wicg.github.io/video-rvfc/ API.
Put them behind a runtime flag.

Add support for the algorithms, including the integration with the 'update the rendering' algorithm.
Add initial support for video elements backed by MediaStream content.
We expose a limited set of metadata currently, follow-up patches should add support for other video backends and more metadata.
This support should still enable to optimize a bit MediaStreamTrack -> canvas pipelines.

Tests: fast/mediastream/getUserMedia-rvfc.html

imported/w3c/web-platform-tests/video-rvfc/idlharness.window.html
imported/w3c/web-platform-tests/video-rvfc/request-video-frame-callback-before-xr-session.https.html
imported/w3c/web-platform-tests/video-rvfc/request-video-frame-callback-dom.html
imported/w3c/web-platform-tests/video-rvfc/request-video-frame-callback-during-xr-session.https.html
imported/w3c/web-platform-tests/video-rvfc/request-video-frame-callback-parallel.html
imported/w3c/web-platform-tests/video-rvfc/request-video-frame-callback-repeating.html
imported/w3c/web-platform-tests/video-rvfc/request-video-frame-callback-webrtc.https.html
imported/w3c/web-platform-tests/video-rvfc/request-video-frame-callback.html
webrtc/peerConnection-rvfc.html

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:
  • dom/Document.h:
  • html/HTMLMediaElement.h:
  • html/HTMLVideoElement+RequestVideoFrameCallback.idl: Added.
  • html/HTMLVideoElement.cpp:
  • html/HTMLVideoElement.h:
  • html/VideoFrameMetadata.idl: Added.
  • html/VideoFrameRequestCallback.h: Added.
  • html/VideoFrameRequestCallback.idl: Added.
  • page/Page.cpp:
  • page/Page.h:
  • platform/VideoFrameMetadata.h: Added.
  • platform/graphics/MediaPlayer.cpp:
  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

Source/WebKit:

Add temporary getter/setter of rvfc feature flag.

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetRequestVideoFrameCallbackEnabled):
(WKPreferencesGetRequestVideoFrameCallbackEnabled):

  • UIProcess/API/C/WKPreferencesRef.h:

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

Tools:

Disable rvfc on tests by default until we implement rvfc for usual video streaming.
WebRTC tests enable rvfc themselves.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(setWebPreferencesForTestOptions):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

  • TestExpectations:
  • fast/mediastream/getUserMedia-rvfc-expected.txt: Added.
  • fast/mediastream/getUserMedia-rvfc.html: Added.
  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • webrtc/peerConnection-rvfc-expected.txt: Added.
  • webrtc/peerConnection-rvfc.html: Added.
6:14 AM Changeset in webkit [284527] by Carlos Garcia Campos
  • 14 edits in trunk

[WPE] Reenable -fvisibility=hidden and -fvisibility-inlines-hidden
https://bugs.webkit.org/show_bug.cgi?id=222860

Reviewed by Don Olmstead.

.:

  • Source/cmake/OptionsWPE.cmake:

Source/bmalloc:

  • bmalloc/AvailableMemory.h: Export memoryStatus.

Source/WebKit:

  • PlatformWPE.cmake:

Tools:

  • TestRunnerShared/CMakeLists.txt:
  • TestWebKitAPI/PlatformWPE.cmake:
  • TestWebKitAPI/glib/CMakeLists.txt:
  • WebKitTestRunner/CMakeLists.txt:
  • WebKitTestRunner/PlatformWPE.cmake:
3:18 AM Changeset in webkit [284526] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.34/Source/WebKit

Merge r284521 - REGRESSION(r276635): [GTK] local HTML file is downloaded instead of displayed if any application has ever called g_desktop_app_info_set_as_default_for_extension(info, "html")
https://bugs.webkit.org/show_bug.cgi?id=230797

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-10-20
Reviewed by Carlos Garcia Campos.

Let's revert this change. Disabling content sniffing prevents WebKit from distinguishing
between different content types with the same file extension, which is something it needs
to be able to do. In this bug report, it is conflating text/html with
application/x-extension-html, but it could just as well confuse text/html with
application/xhtml+xml, causing rendering issues. I don't think we can remove the content
sniffing.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::didGetFileInfo):

1:26 AM Changeset in webkit [284525] by Carlos Garcia Campos
  • 12 edits
    2 adds in trunk/Source

[GTK][WPE] UserInteractive threads are not Real-time in Linux
https://bugs.webkit.org/show_bug.cgi?id=220115

Reviewed by Michael Catanzaro.

Source/WebKit:

Enable real time threads in the web process only when there's a visible page.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::createWebPage):
(WebKit::WebProcess::removeWebPage):
(WebKit::WebProcess::pageActivityStateDidChange):
(WebKit::WebProcess::platformInitializeProcess): Deleted.

  • WebProcess/glib/WebProcessGLib.cpp:

(WebKit::WebProcess::platformInitializeProcess):

  • WebProcess/playstation/WebProcessPlayStation.cpp:

(WebKit::WebProcess::platformInitializeProcess):

  • WebProcess/win/WebProcessWin.cpp:

(WebKit::WebProcess::platformInitializeProcess):

Source/WTF:

Add RealTimeThreads singleton to register real time threads.

  • wtf/PlatformGTK.cmake:
  • wtf/PlatformJSCOnly.cmake:
  • wtf/PlatformWPE.cmake:
  • wtf/Threading.cpp:

(WTF::Thread::setCurrentThreadIsUserInteractive):

  • wtf/generic/WorkQueueGeneric.cpp:

(WTF::WorkQueueBase::platformInitialize):

  • wtf/linux/RealTimeThreads.cpp: Added.

(WTF::RealTimeThreads::singleton):
(WTF::RealTimeThreads::RealTimeThreads):
(WTF::RealTimeThreads::registerThread):
(WTF::RealTimeThreads::setEnabled):
(WTF::RealTimeThreads::promoteThreadToRealTime):
(WTF::RealTimeThreads::demoteThreadFromRealTime):
(WTF::RealTimeThreads::demoteAllThreadsFromRealTime):
(WTF::isRunningInSandbox):
(WTF::realTimeKitGetProperty):
(WTF::RealTimeThreads::realTimeKitMakeThreadRealTime):
(WTF::RealTimeThreads::scheduleDiscardRealTimeKitProxy):
(WTF::RealTimeThreads::discardRealTimeKitProxyTimerFired):

  • wtf/linux/RealTimeThreads.h: Added.
  • wtf/posix/ThreadingPOSIX.cpp:

(WTF::schedPolicy):
(WTF::Thread::establishHandle):

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

AX: Make indexForVisiblePosition consistent with visiblePositionForIndex
https://bugs.webkit.org/show_bug.cgi?id=231950

Reviewed by Andres Gonzalez.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::indexForVisiblePosition const): Use the same early return checks of
visiblePositionForIndex and remove the requirement of node being the highest editable root.

  • editing/Editing.cpp:

(WebCore::indexForVisiblePosition): Return early if given position is null.

1:13 AM Changeset in webkit [284523] by youenn@apple.com
  • 16 edits
    2 adds in trunk

WebRTC p2p call, VP9-SVC only low layer decoded on receiver side
https://bugs.webkit.org/show_bug.cgi?id=231071
<rdar://problem/83763291>

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

In case VP9 SVC is used, fallback to software decoder for now.

  • Source/webrtc/sdk/WebKit/WebKitDecoder.mm:

Source/WebCore:

Add Internals API to check whether VP9 VTB is used or not.

Test: webrtc/vp9-svc.html

  • Modules/mediastream/PeerConnectionBackend.h:
  • Modules/mediastream/RTCPeerConnection.cpp:
  • Modules/mediastream/RTCPeerConnection.h:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:
  • Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.h:
  • testing/Internals.cpp:
  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • webrtc/vp9-svc-expected.txt: Added.
  • webrtc/vp9-svc.html: Added.
1:08 AM Changeset in webkit [284522] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Avoid null pointer dereference when creating ImageBitmap from a null image.
https://bugs.webkit.org/show_bug.cgi?id=231794

Patch by John Cunningham <johncunningham@apple.com> on 2021-10-20
Reviewed by Said Abou-Hallawa.

If the image is null, we can reject the promise earlier. Default to sRGB when a
BitmapImage's nativeImage is null.

Source/WebCore:

Test: fast/canvas/createImageBitmap-invalid-image-blob-crash.html

  • html/ImageBitmap.cpp:

(WebCore::ImageBitmap::createFromBuffer):

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::colorSpace):

LayoutTests:

  • fast/canvas/createImageBitmap-invalid-image-blob-crash-expected.txt: Added.
  • fast/canvas/createImageBitmap-invalid-image-blob-crash.html: Added.
12:54 AM Changeset in webkit [284521] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

REGRESSION(r276635): [GTK] local HTML file is downloaded instead of displayed if any application has ever called g_desktop_app_info_set_as_default_for_extension(info, "html")
https://bugs.webkit.org/show_bug.cgi?id=230797

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-10-20
Reviewed by Carlos Garcia Campos.

Let's revert this change. Disabling content sniffing prevents WebKit from distinguishing
between different content types with the same file extension, which is something it needs
to be able to do. In this bug report, it is conflating text/html with
application/x-extension-html, but it could just as well confuse text/html with
application/xhtml+xml, causing rendering issues. I don't think we can remove the content
sniffing.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::didGetFileInfo):

12:37 AM WebKitGTK/DependenciesPolicy edited by Fujii Hironori
(diff)
12:23 AM Changeset in webkit [284520] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk/Tools

It should be possible to format C++ code to project style with WebKit tools
https://bugs.webkit.org/show_bug.cgi?id=230397

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-10-20
Reviewed by Jonathan Bedard.

Add capability to run clang-format for lines changed by
a patch.
Supports workflow of:

webkit-patch format -g HEAD
git commit -a --amend --no-edit

  • Scripts/webkitpy/tool/commands/init.py:
  • Scripts/webkitpy/tool/commands/format.py: Added.

(Format):

  • Scripts/webkitpy/tool/steps/init.py:
  • Scripts/webkitpy/tool/steps/formatcppfiles.py: Added.

(_is_formatted):
(_ranges):
(FormatCppFiles):
(FormatCppFiles.options):
(FormatCppFiles.init):
(FormatCppFiles.run):

  • Scripts/webkitpy/tool/steps/options.py:

(Options):

Oct 19, 2021:

11:41 PM Changeset in webkit [284519] by graouts@webkit.org
  • 7 edits in trunk

Support more CSS properties for ::marker
https://bugs.webkit.org/show_bug.cgi?id=231972

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Mark WPT progressions.

  • web-platform-tests/css/css-pseudo/marker-computed-content-expected.txt:
  • web-platform-tests/css/css-pseudo/marker-default-styles-expected.txt:
  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-expected.txt:
  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:

Source/WebCore:

Support additional text properties for ::marker.

  • style/PropertyAllowlist.cpp:

(WebCore::Style::isValidMarkerStyleProperty):

10:16 PM Changeset in webkit [284518] by Ben Nham
  • 31 edits
    2 copies
    1 move in trunk

Add NetworkProcess stubs for push subscriptions
https://bugs.webkit.org/show_bug.cgi?id=231922

Reviewed by Youenn Fablet.

Source/WebCore:

Both PushManager and PushSubscription now send their subscription requests to NetworkProcess
via ServiceWorkerRegistration => ServiceWorkerContainer => SWClientConnection.

  • Headers.cmake:
  • Modules/push-api/PushManager.cpp:

(WebCore::PushManager::subscribe):
(WebCore::PushManager::getSubscription):
(WebCore::PushManager::permissionState):

  • Modules/push-api/PushPermissionState.h:
  • Modules/push-api/PushSubscription.cpp:

(WebCore::PushSubscription::PushSubscription):
(WebCore::PushSubscription::unsubscribe):

  • Modules/push-api/PushSubscription.h:
  • Modules/push-api/PushSubscriptionData.cpp:

(WebCore::PushSubscriptionData::isolatedCopy const):

  • Modules/push-api/PushSubscriptionData.h:

(WebCore::PushSubscriptionData::encode const):
(WebCore::PushSubscriptionData::decode):

  • Modules/push-api/PushSubscriptionOptions.cpp:

(WebCore::PushSubscriptionOptions::PushSubscriptionOptions):
(WebCore::PushSubscriptionOptions::userVisibleOnly const):

  • Modules/push-api/PushSubscriptionOptions.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • testing/Internals.cpp:

(WebCore::Internals::createPushSubscription):

  • testing/Internals.h:
  • testing/Internals.idl:
  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::createPushSubscriptionFromData):
(WebCore::ServiceWorkerContainer::subscribeToPushService):
(WebCore::ServiceWorkerContainer::unsubscribeFromPushService):
(WebCore::ServiceWorkerContainer::getPushSubscription):
(WebCore::ServiceWorkerContainer::getPushPermissionState):

  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::subscribeToPushService):
(WebCore::ServiceWorkerRegistration::unsubscribeFromPushService):
(WebCore::ServiceWorkerRegistration::getPushSubscription):
(WebCore::ServiceWorkerRegistration::getPushPermissionState):

  • workers/service/ServiceWorkerRegistration.h:
  • workers/service/ServiceWorkerRegistration.idl:
  • workers/service/WorkerSWClientConnection.cpp:

(WebCore::WorkerSWClientConnection::~WorkerSWClientConnection):
(WebCore::WorkerSWClientConnection::subscribeToPushService):
(WebCore::WorkerSWClientConnection::unsubscribeFromPushService):
(WebCore::WorkerSWClientConnection::getPushSubscription):
(WebCore::WorkerSWClientConnection::getPushPermissionState):

  • workers/service/WorkerSWClientConnection.h:

Source/WebKit:

Added stubs in NetworkProcess for push subscription-related IPC. Currently the stubs return
that subscribing is unsupported and that there are no active push subscriptions.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::subscribeToPushService):
(WebKit::WebSWServerConnection::unsubscribeFromPushService):
(WebKit::WebSWServerConnection::getPushSubscription):
(WebKit::WebSWServerConnection::getPushPermissionState):

  • NetworkProcess/ServiceWorker/WebSWServerConnection.h:
  • NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
  • WebProcess/Storage/WebSWClientConnection.cpp:

(WebKit::WebSWClientConnection::subscribeToPushService):
(WebKit::WebSWClientConnection::unsubscribeFromPushService):
(WebKit::WebSWClientConnection::getPushSubscription):
(WebKit::WebSWClientConnection::getPushPermissionState):

  • WebProcess/Storage/WebSWClientConnection.h:

LayoutTests:

Modify PushSubscription tests to pass in a ServiceWorkerRegistration.

  • http/wpt/push-api/emptyWorker.js: Renamed from LayoutTests/http/wpt/push-api/pushManager-worker.js.
  • http/wpt/push-api/pushManager.any.js:

(else.promise_test.async test):

  • http/wpt/push-api/pushSubscription.https.any-expected.txt:
  • http/wpt/push-api/pushSubscription.https.any.js:

(promise_test.async test):
(promise_test):
(test): Deleted.

9:49 PM Changeset in webkit [284517] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Fix build break after r284406 if ENABLE_SERVICE_WORKER=OFF
https://bugs.webkit.org/show_bug.cgi?id=231968

Patch by Jigen Zhou <jigen.zhou@sony.com> on 2021-10-19
Reviewed by Don Olmstead.

r284406 made m_isServiceWorkerPage of WebPageProxy not available if !ENABLE(SERVICE_WORKER),
but the change was incomplete and can cause build failure if ENABLE_SERVICE_WORKER=OFF.
This patch avoids accessing m_isServiceWorkerPage if !ENABLE(SERVICE_WORKER) in WebPageProxy
methods isServiceWorkerPage, loadDataWithNavigationShared, and resetStateAfterProcessExited.

  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
8:25 PM Changeset in webkit [284516] by don.olmstead@sony.com
  • 14 edits in trunk/Source

Non-unified build fixes, mid October 2021 edition
https://bugs.webkit.org/show_bug.cgi?id=231915

Unreviewed non-unified build fixes.

Source/WebCore:

  • animation/KeyframeEffectStack.cpp:
  • bindings/js/JSDOMWindowBase.cpp:
  • dom/ActiveDOMObject.cpp:
  • html/DOMFormData.cpp:
  • html/HTMLDialogElement.cpp:
  • html/HTMLOutputElement.cpp:
  • html/ResetInputType.cpp:
  • page/DragController.cpp:
  • page/EventHandler.cpp:
  • rendering/updating/RenderTreeBuilderFirstLetter.cpp:

Source/WebKit:

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementConnection.cpp:
  • WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
8:03 PM Changeset in webkit [284515] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

r284315 can cause build break.
https://bugs.webkit.org/show_bug.cgi?id=231923

Patch by Jigen Zhou <jigen.zhou@sony.com> on 2021-10-19
Reviewed by Michael Catanzaro.

Class 'WebCore::RenderBlockFlow' was forward declared in header file
InlineIteratorLogicalOrderTraversal.h, but template
leafBoxesInLogicalOrder that was added by r284315 has access to RenderBlockFLow's method
style() and can cause build break in our local webkit build.

The build can be fixed when the concreate declaration of class
RenderBlockFlow is included in InlineIteratorLogicalOrderTraversal.h.

  • layout/integration/InlineIteratorLogicalOrderTraversal.h:
5:58 PM Changeset in webkit [284514] by Alan Coon
  • 1 copy in tags/Safari-612.3.1

Tag Safari-612.3.1.

5:40 PM Changeset in webkit [284513] by Tadeu Zagallo
  • 10 edits in trunk/Source/JavaScriptCore

Address post-landing feedback to wasm exceptions
https://bugs.webkit.org/show_bug.cgi?id=231973

Reviewed by Saam Barati.

Address comments left by Saam in https://bugs.webkit.org/show_bug.cgi?id=229681
after the patch landed. This includes deleting some unused code, and renaming a
couple variables and methods, but the biggest change is copying the callee saves
to VMEntry in the llint rethrow.

  • interpreter/Interpreter.cpp:

(JSC::CatchInfo::CatchInfo):
(JSC::UnwindFunctor::operator() const):

  • interpreter/Interpreter.h:

(JSC::CatchInfo::CatchInfo): Deleted.

  • jit/JSInterfaceJIT.h:

(JSC::JSInterfaceJIT::convertCalleeToVM): Deleted.

  • llint/WebAssembly.asm:
  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::ControlData::ControlData):
(JSC::Wasm::B3IRGenerator::ControlData::tryDepth const):
(JSC::Wasm::B3IRGenerator::connectControlAtEntrypoint):
(JSC::Wasm::B3IRGenerator::addLoop):
(JSC::Wasm::B3IRGenerator::addTry):
(JSC::Wasm::B3IRGenerator::preparePatchpointForExceptions):
(JSC::Wasm::B3IRGenerator::emitCatchImpl):
(JSC::Wasm::B3IRGenerator::addDelegateToUnreachable):
(JSC::Wasm::B3IRGenerator::addThrow):
(JSC::Wasm::B3IRGenerator::addRethrow):
(JSC::Wasm::B3IRGenerator::addEndToUnreachable):
(JSC::Wasm::B3IRGenerator::connectControlEntry): Deleted.

  • wasm/WasmCallee.h:

(JSC::Wasm::Callee::llintFunctionCodeBlock const):
(JSC::Wasm::Callee::functionCodeBlock const): Deleted.

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::unifyValuesWithBlock):
(JSC::Wasm::LLIntGenerator::addTry):
(JSC::Wasm::LLIntGenerator::addThrow):
(JSC::Wasm::LLIntGenerator::repatch): Deleted.

  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

  • wasm/WasmOperations.h:
5:30 PM Changeset in webkit [284512] by Ross Kirsling
  • 8 edits in trunk

[CMake] Align OptionsMac with Xcode build
https://bugs.webkit.org/show_bug.cgi?id=231982

Reviewed by Don Olmstead.

.:

  • Source/cmake/OptionsMac.cmake:

Ensure that the listed options (1) are not redundant with the defaults in WebKitFeatures.cmake and
(2) match the options for the Xcode build as closely as possible.

  • Source/cmake/WebKitFeatures.cmake:

Remove an outdated feature, ENABLE_APPLE_PAY_SESSION_V9,
and let ENABLE_MAC_GESTURE_EVENTS be handled by PlatformEnable, since it depends on USE_APPLE_INTERNAL_SDK.

Source/WebCore:

  • PlatformMac.cmake:

Add support for new files.

  • platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:

Fix for r284295 -- ReplayKit is iOS and its headers shouldn't be included on Mac.

Source/WebKit:

  • CMakeLists.txt:

Enable -fobjc-weak to support r284329.

5:16 PM Changeset in webkit [284511] by Ben Nham
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix for non-unified build.

  • Modules/webaudio/RealtimeAnalyser.h:
4:56 PM Changeset in webkit [284510] by Chris Dumez
  • 98 edits
    12 adds
    11 deletes in trunk/LayoutTests

Resync COOP /COEP WPT tests from upstream WPT
https://bugs.webkit.org/show_bug.cgi?id=231746

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Resync COOP /COEP WPT tests from upstream WPT 207e223d74fdc1f1.

  • web-platform-tests/html/cross-origin-embedder-policy/*: Updated.
  • web-platform-tests/html/cross-origin-opener-policy/*: Updated.

LayoutTests:

Resync COOP /COEP WPT tests from upstream WPT 6ccfe6fafab233e.

4:54 PM Changeset in webkit [284509] by Alan Coon
  • 2 edits in branches/safari-613.1.6-branch/Source/WebCore/PAL

Cherry-pick r284494. rdar://problem/84439983

REGRESSION (r284220): [PAL] TCCSPI.h should be a project header, not a private header
<https://webkit.org/b/231977>
<rdar://problem/84425384>

Reviewed by Wenson Hsieh.

  • PAL.xcodeproj/project.pbxproj:
  • Change TCCSPI.h from a private header to a project header. PAL uses a build phase script to install its headers.

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

4:34 PM Changeset in webkit [284508] by Russell Epstein
  • 2 edits in branches/safari-613.1.6-branch/Source/WebKit

Cherry-pick r284489. rdar://problem/84439180

WebAuthn Platform UI callbacks are not guaranteed to happen on the main thread
https://bugs.webkit.org/show_bug.cgi?id=231963
<rdar://84420452>

Patch by Garrett Davidson <garrett_davidson@apple.com> on 2021-10-19
Reviewed by Brent Fulgham.

  • The clearanceHandler is not guaranteed to happen on the main thread, but weakThis.get() needs to happen there.
  • proxy needs to stay alive for the whole transaction, otherwise it will tear down the connection and cancel the request, so explicitly capture it everywhere.
  • Start logging if we get an error from clearanceHandler.

Covered by existing tests.

  • UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm: (WebKit::WebAuthenticatorCoordinatorProxy::performRequest):

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

4:14 PM Changeset in webkit [284507] by ap@apple.com
  • 6 edits in trunk/Source

Eagerly resolve python3 path in Makefiles
https://bugs.webkit.org/show_bug.cgi?id=231979

Reviewed by Jonathan Bedard.

  • DerivedSources.make:
3:48 PM Changeset in webkit [284506] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

canDoFastSpread should also check that the Structure is from the global object we're watching
https://bugs.webkit.org/show_bug.cgi?id=231976
<rdar://84340372>

Reviewed by Keith Miller.

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::canDoFastSpread):

3:37 PM Changeset in webkit [284505] by Adrian Perez de Castro
  • 3 edits in releases/WebKitGTK/webkit-2.34/Source/WebCore

Merge r284239 - [WPE][GTK] Update user agent browser versions
https://bugs.webkit.org/show_bug.cgi?id=231772

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-10-15
Reviewed by Carlos Garcia Campos.

  • platform/UserAgentQuirks.cpp:

(WebCore::UserAgentQuirks::stringForQuirk):

  • platform/glib/UserAgentGLib.cpp:

(WebCore::buildUserAgentString):

3:37 PM Changeset in webkit [284504] by Adrian Perez de Castro
  • 3 edits in releases/WebKitGTK/webkit-2.34/Source/WebCore

Merge r284091 - [GStreamer] Crash in WebCore::MediaPlayerPrivateGStreamer::sourceSetup when loading reddit video
https://bugs.webkit.org/show_bug.cgi?id=231519

Patch by Philippe Normand <pnormand@igalia.com> on 2021-10-13
Reviewed by Xabier Rodriguez-Calvar.

Since this GStreamer commit:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/commit/52bca104e447309898ca8904b3914211ec7d4114

and starting from GStreamer 1.20, the playbin::source-setup signal is emitted before the
source element is added to the pipeline, so this gave us the opportunity to refactor our
code handling the downloadbuffer configuration, using the existing deep-element-added signal
handler.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::sourceSetup):
(WebCore::MediaPlayerPrivateGStreamer::configureDownloadBuffer):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::MediaPlayerPrivateGStreamer::uriDecodeBinElementAddedCallback): Deleted.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
3:37 PM Changeset in webkit [284503] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.34/Source

Merge r284132 - [GTK] Opening emoji chooser crashes UI process with GTK 3.24.30
https://bugs.webkit.org/show_bug.cgi?id=228664

Reviewed by Michael Catanzaro.

Instead of providing a copy of the emoji chooser widget, use GLib's
introspection features and a little sprinkle of knowledge about how
GTK works in order to obtain the type code of the GtkEmojiChooser
widget included with GTK. This ensures that a working widget is
always used, regardless of the current GTK version.

No new tests needed.

  • UIProcess/API/gtk/WebKitEmojiChooser.cpp:

(webkitEmojiChooserNew):
(): Deleted.
(webkitEmojiChooserAddEmoji): Deleted.
(webkitEmojiChooserAddRecentItem): Deleted.
(emojiActivated): Deleted.
(emojiDataHasVariations): Deleted.
(webkitEmojiChooserShowVariations): Deleted.
(emojiLongPressed): Deleted.
(emojiPressed): Deleted.
(emojiPopupMenu): Deleted.
(verticalAdjustmentChanged): Deleted.
(webkitEmojiChooserSetupSectionBox): Deleted.
(scrollToSection): Deleted.
(webkitEmojiChooserSetupSectionButton): Deleted.
(webkitEmojiChooserSetupRecent): Deleted.
(webkitEmojiChooserEnsureEmptyResult): Deleted.
(webkitEmojiChooserSearchChanged): Deleted.
(webkitEmojiChooserSetupFilters): Deleted.
(webkitEmojiChooserSetupEmojiSections): Deleted.
(webkitEmojiChooserInitializeEmojiMaxWidth): Deleted.
(webkitEmojiChooserConstructed): Deleted.
(webkitEmojiChooserShow): Deleted.
(webkit_emoji_chooser_class_init): Deleted.

  • UIProcess/API/gtk/WebKitEmojiChooser.h:
3:37 PM Changeset in webkit [284502] by Adrian Perez de Castro
  • 2 edits
    1 add in releases/WebKitGTK/webkit-2.34/Source/WebKit

Merge r284451 - Update seccomp filters with latest changes from flatpak
https://bugs.webkit.org/show_bug.cgi?id=231479

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-10-19
Reviewed by Adrian Perez de Castro.

Additionally, let's fix a minor inconsistency in our error-handling code: all but one of
our codepaths carefully free and close resources, but the process is about to crash so
there's not really any reason to do so. The code is slightly simpler if we don't bother.

The seemingly-extraneous include order changes are required to placate the style checker.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::seccompStrerror):
(WebKit::setupSeccomp):

  • UIProcess/Launcher/glib/Syscalls.h: Added.
3:35 PM WebKitGTK/2.34.x edited by Adrian Perez de Castro
(diff)
2:53 PM Changeset in webkit [284501] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WTF

Remove old GCC workaround for Allocator
https://bugs.webkit.org/show_bug.cgi?id=231978

Reviewed by Darin Adler.

This is for old GCC. Since our GCC baseline is 8.3.0, this is no longer necessary.

  • wtf/FastMalloc.h:

(WTF::FastAllocator::deallocate):
(WTF::FastAllocator::construct): Deleted.
(WTF::FastAllocator::destroy): Deleted.
(WTF::FastAllocator::max_size const): Deleted.
(WTF::FastAllocator::select_on_container_copy_construction const): Deleted.

2:46 PM Changeset in webkit [284500] by Russell Epstein
  • 1 copy in tags/Safari-613.1.5.2

Tag Safari-613.1.5.2.

2:46 PM Changeset in webkit [284499] by Alan Coon
  • 5 edits
    4 adds in branches/safari-613.1.6-branch

Cherry-pick r284490. rdar://problem/84434069

Regression(r284336): [ iOS 15 ] system-preview/badge.html is image failing
https://bugs.webkit.org/show_bug.cgi?id=231916

Reviewed by Antti Koivisto.
Source/WebCore:

In r284336 I made clip-path not apply to non-RenderBoxes, which disabled it on inlines,
breaking the system-preview/badge.html test.

The spec says it applies to all elements, so this behavior change was incorrect.

Revert back to using calculateLayerBounds() as the fallback rect to use for inlines, and add
tests for this. This rectangle is obviously incorrect (for example, it's affected by text
shadow), but leave it for now until https://github.com/w3c/csswg-drafts/issues/6383 is
resolved.

I also failed to see that computeClipPath() was already computing the reference box
internally, so clean up the code with some comments to make it more clear that the result of
calculateLayerBounds() is used only as the fallback for inlines, as well as for the buffer
bounds for the applyClippingToContext() code path.

Tests: css3/masking/clip-path-on-inline.html

css3/masking/clip-path-on-split-inline.html

  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::computeClipPath const): (WebCore::RenderLayer::setupClipPath):
  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateMaskingLayerGeometry):

LayoutTests:

Tests for clip-path on a single-box inline, and a split inline.

  • css3/masking/clip-path-on-inline-expected.html: Added.
  • css3/masking/clip-path-on-inline.html: Added.
  • css3/masking/clip-path-on-split-inline-expected.html: Added.
  • css3/masking/clip-path-on-split-inline.html: Added.

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

2:44 PM Changeset in webkit [284498] by Jonathan Bedard
  • 6 edits in trunk/Tools

[webkitscmpy] Override http url with ssh url
https://bugs.webkit.org/show_bug.cgi?id=231965
<rdar://problem/84422393>

Reviewed by Ryan Haddad.

  • Tools/Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git): Exclude / from hostname.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py:

(Setup.git): Prompt user to switch to ssh checkout.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/setup_unittest.py:

Canonical link: https://commits.webkit.org/243250@main

2:41 PM Changeset in webkit [284497] by Alan Coon
  • 2 edits
    1 delete in branches/safari-613.1.6-branch/Source/WebKit

Cherry-pick r284495. rdar://problem/84433820

Unreviewed, reverting r284099.
https://bugs.webkit.org/show_bug.cgi?id=231984

Introduced build failure

Reverted changeset:

"[iOS] Stop including 'util.sb' in the WebContent process'
sandbox"
https://bugs.webkit.org/show_bug.cgi?id=231570
https://commits.webkit.org/r284099

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

2:40 PM Changeset in webkit [284496] by Russell Epstein
  • 8 edits in branches/safari-613.1.5-branch/Source

Versioning.

WebKit-7613.1.5.2

2:37 PM Changeset in webkit [284495] by commit-queue@webkit.org
  • 2 edits
    1 delete in trunk/Source/WebKit

Unreviewed, reverting r284099.
https://bugs.webkit.org/show_bug.cgi?id=231984

Introduced build failure

Reverted changeset:

"[iOS] Stop including 'util.sb' in the WebContent process'
sandbox"
https://bugs.webkit.org/show_bug.cgi?id=231570
https://commits.webkit.org/r284099

2:10 PM Changeset in webkit [284494] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore/PAL

REGRESSION (r284220): [PAL] TCCSPI.h should be a project header, not a private header
<https://webkit.org/b/231977>
<rdar://problem/84425384>

Reviewed by Wenson Hsieh.

  • PAL.xcodeproj/project.pbxproj:
  • Change TCCSPI.h from a private header to a project header. PAL uses a build phase script to install its headers.
1:58 PM Changeset in webkit [284493] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

Regression(r283935 - r283938): [ macOS wk1 ] imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-autofocus-multiple-times.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=231918

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
1:46 PM Changeset in webkit [284492] by Ryan Haddad
  • 3 edits in trunk/Tools

[EWS] Move EWS bots to iOS 15 / watchOS 8 / tvOS 15
https://bugs.webkit.org/show_bug.cgi?id=231925

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/config.json:
  • CISupport/ews-build/factories_unittest.py:

(TestExpectedBuildSteps):

1:36 PM Changeset in webkit [284491] by Jonathan Bedard
  • 2 edits in trunk/Tools

[webkitscmpy] Generate commit message template (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=231023
<rdar://problem/83722871>

Unreviewed follow-up fix.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: MarkupSafe is imported as markupsafe.
1:34 PM Changeset in webkit [284490] by Simon Fraser
  • 5 edits
    4 adds in trunk

Regression(r284336): [ iOS 15 ] system-preview/badge.html is image failing
https://bugs.webkit.org/show_bug.cgi?id=231916

Reviewed by Antti Koivisto.
Source/WebCore:

In r284336 I made clip-path not apply to non-RenderBoxes, which disabled it on inlines,
breaking the system-preview/badge.html test.

The spec says it applies to all elements, so this behavior change was incorrect.

Revert back to using calculateLayerBounds() as the fallback rect to use for inlines, and add
tests for this. This rectangle is obviously incorrect (for example, it's affected by text
shadow), but leave it for now until https://github.com/w3c/csswg-drafts/issues/6383 is
resolved.

I also failed to see that computeClipPath() was already computing the reference box
internally, so clean up the code with some comments to make it more clear that the result of
calculateLayerBounds() is used only as the fallback for inlines, as well as for the buffer
bounds for the applyClippingToContext() code path.

Tests: css3/masking/clip-path-on-inline.html

css3/masking/clip-path-on-split-inline.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::computeClipPath const):
(WebCore::RenderLayer::setupClipPath):

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

(WebCore::RenderLayerBacking::updateMaskingLayerGeometry):

LayoutTests:

Tests for clip-path on a single-box inline, and a split inline.

  • css3/masking/clip-path-on-inline-expected.html: Added.
  • css3/masking/clip-path-on-inline.html: Added.
  • css3/masking/clip-path-on-split-inline-expected.html: Added.
  • css3/masking/clip-path-on-split-inline.html: Added.
1:32 PM Changeset in webkit [284489] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

WebAuthn Platform UI callbacks are not guaranteed to happen on the main thread
https://bugs.webkit.org/show_bug.cgi?id=231963
<rdar://84420452>

Patch by Garrett Davidson <garrett_davidson@apple.com> on 2021-10-19
Reviewed by Brent Fulgham.

  • The clearanceHandler is not guaranteed to happen on the main thread, but

weakThis.get() needs to happen there.

  • proxy needs to stay alive for the whole transaction, otherwise it will tear

down the connection and cancel the request, so explicitly capture it everywhere.

  • Start logging if we get an error from clearanceHandler.

Covered by existing tests.

  • UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:

(WebKit::WebAuthenticatorCoordinatorProxy::performRequest):

1:15 PM Changeset in webkit [284488] by Alan Coon
  • 1 copy in tags/Safari-612.2.9.1.22

Tag Safari-612.2.9.1.22.

1:11 PM Changeset in webkit [284487] by Alan Coon
  • 2 edits in branches/safari-612.2.9.1-branch/Source/WebKit

Cherry-pick r283430. rdar://problem/84428809

Use DYLD_FRAMEWORK_PATH instead of DYLD_VERSIONED_FRAMEWORK_PATH on Safari Big Sur
https://bugs.webkit.org/show_bug.cgi?id=231058

Patch by Remy Demarest <rdemarest@apple.com> on 2021-10-01
Reviewed by David Kilzer.

Modify the DYLD environment variable that is used when compiling with staged frameworks.
We want to use DYLD_VERSIONED_FRAMEWORK_PATH to define the search path of the frameworks
for DYLD because this makes launching Safari and its child processes faster. However,
on Apple Silicon Big Sur using that environment variable does not work and results in Safari
loading frameworks from the System folder rather than from the StagedFrameworks/Safari
folder, this is because dyld on M1 does not look up that variable properly. To make sure
we actually load the frameworks from the desired location, we need to use DYLD_FRAMEWORK_PATH
instead, this makes dyld perform more stat() calls than usual to link the frameworks hence
why we prefer the other variable, but this is the only way to workaround the issue in
Big Sur on M1. In Monterey and above, this bug will be fixed in dyld so we only need this
variable before macOS 11.

Override OTHER_LDFLAGS_VERSIONED_FRAMEWORK_PATH_YES based on SDK and architecture to use
DYLD_FRAMEWORK_PATH instead of DYLD_VERSIONED_FRAMEWORK_PATH when building for macOS 11 and arm64.

  • Configurations/BaseTarget.xcconfig:

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

1:08 PM Changeset in webkit [284486] by Alan Coon
  • 8 edits in branches/safari-612.2.9.1-branch/Source

Versioning.

WebKit-7612.2.9.1.22

1:07 PM Changeset in webkit [284485] by Jonathan Bedard
  • 8 edits
    4 adds in trunk/Tools

[webkitscmpy] Generate commit message template
https://bugs.webkit.org/show_bug.cgi?id=231023
<rdar://problem/83722871>

Reviewed by Dewei Zhu.

  • Tools/Scripts/git-webkit: Use prepare-ChangeLog to generate commit messages.
  • Tools/Scripts/hooks/prepare-commit-msg: Added.
  • Tools/Scripts/libraries/webkitscmpy/setup.py: Bump version, add jinja.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:

(Git.init): Add unbound status mock.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/init.py:

(main): Pass hooks to sub-programs.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py:

(Setup.git): iterate through the directory of provided hooks and render with jinja2.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/hooks/prepare-commit-msg: Added.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/setup_unittest.py:

(TestSetup.test_commit_message):
Canonical link: https://commits.webkit.org/243242@main

1:05 PM Changeset in webkit [284484] by Russell Epstein
  • 12 edits
    2 copies
    2 moves
    1 delete in branches/safari-613.1.6-branch

Cherry-pick r284483. rdar://problem/84428759

LayoutTests/imported/w3c:
Origin of opaque blob: URLs ends up as empty string
https://bugs.webkit.org/show_bug.cgi?id=231942

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

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-origin-expected.txt:
  • web-platform-tests/url/a-element-origin-xhtml-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/resources/urltestdata.json:
  • web-platform-tests/url/url-constructor.any-expected.txt:
  • web-platform-tests/url/url-constructor.any.worker-expected.txt:
  • web-platform-tests/url/url-origin.any-expected.txt:
  • web-platform-tests/url/url-origin.any.worker-expected.txt:

Source/WebCore:
Fix leak of CGColorSpaceRef in FilterEffectRendererCoreImage::sharedCIContext()
<https://webkit.org/b/231902>
<rdar://problem/84375203>

Patch by David Kilzer <ddkilzer@apple.com> on 2021-10-19
Reviewed by Wenson Hsieh.

  • platform/graphics/coreimage/FilterEffectRendererCoreImage.mm: (WebCore::FilterEffectRendererCoreImage::sharedCIContext):
  • Use adoptCF() to fix the leak.

Source/WebKit:
REGRESSION (r284079): fast/canvas/gradient-with-clip.html and fast/canvas/gradient-text-with-shadow.html are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=231681
rdar://84202478

Patch by Wenson Hsieh <Wenson Hsieh> on 2021-10-19
Reviewed by Kimmo Kinnunen.

These tests occasionally fail when we time out while waiting for the pixel buffer to be populated underneath
RemoteImageBufferProxy::getPixelBuffer; this happens because the GPU process sometimes halts (and never
resumes) while processing stream messages, and consequently never ends up processing the GetPixelBuffer IPC
stream message that's necessary to populate the shared memory buffer for GetPixelBuffer.

This, in turn, happens when the IPC stream buffer is about to exhaust all available capacity (i.e. the write
cursor is nearing the end of the 2MB buffer), and as a result, we send messages that would normally be encoded
in the IPC stream as out-of-line IPC messages instead, which are received in the GPU process on the IPC thread
and appended to the receive queue corresponding to the destination ID in Connection::processIncomingMessage().

If we happen to have sent RemoteRenderingBackend::CreateImageBuffer(a) right before exhausting capacity and
sending out-of-line messages targeting the RemoteDisplayListRecorder corresponding to the newly created image
buffer a, we'll end up with a race condition where the IPC thread may receive the out-of-line messages meant
for the new remote display list destination *before* the new remote display list has added itself as an IPC
receive queue by calling into StreamServerConnection::startReceivingMessages().

In this particular scenario (where we "lose" the race), Connection::processIncomingMessage will skip past the
early return where it would normally find its corresponding receive queue via m_receiveQueues.get(*message),
and instead falls through to Connection::SyncMessageState::processIncomingMessage(), which will attempt to
dispatch the incoming message to the Connection's client (GPUConnectionToWebProcess). Of course, the
GPUConnectionToWebProcess isn't aware of how to process this incoming message, so it simply gets dropped. By the
time the receive queue is added for the new RemoteDisplayListRecorder, we'll observe a ProcessOutOfStreamMessage
and end up waiting forever for this out-of-line message to be added to the receive queue, but this never ends up
happening because it has already been received and dropped by GPUConnectionToWebProcess.

To address the flaky tests in the short term, we work around this issue by making CreateImageBuffer a sync
message, so we guarantee that any subsequent messages sent to the image buffer's RemoteDisplayListRecorder will
not be dropped. In the (slightly) longer term, we should turn this back into an async stream message, and add a
mechanism to redirect all receiver-less RemoteDisplayListRecorder messages to a separate queue.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp: (WebKit::RemoteRenderingBackend::createImageBuffer):
  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:

Make CreateImageBuffer a synchronous stream message for now.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp: (WebKit::RemoteRenderingBackendProxy::createRemoteImageBuffer):

LayoutTests:
Resync web-platform-tests/reporting from upstream
https://bugs.webkit.org/show_bug.cgi?id=231957

Reviewed by Alex Christensen.

Resync web-platform-tests/reporting from upstream 207e223d74fdc1f1.

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

1:00 PM Changeset in webkit [284483] by Chris Dumez
  • 12 edits
    2 copies
    2 moves
    1 delete in trunk

LayoutTests/imported/w3c:
Origin of opaque blob: URLs ends up as empty string
https://bugs.webkit.org/show_bug.cgi?id=231942

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

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-origin-expected.txt:
  • web-platform-tests/url/a-element-origin-xhtml-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/resources/urltestdata.json:
  • web-platform-tests/url/url-constructor.any-expected.txt:
  • web-platform-tests/url/url-constructor.any.worker-expected.txt:
  • web-platform-tests/url/url-origin.any-expected.txt:
  • web-platform-tests/url/url-origin.any.worker-expected.txt:

Source/WebCore:
Fix leak of CGColorSpaceRef in FilterEffectRendererCoreImage::sharedCIContext()
<https://webkit.org/b/231902>
<rdar://problem/84375203>

Patch by David Kilzer <ddkilzer@apple.com> on 2021-10-19
Reviewed by Wenson Hsieh.

  • platform/graphics/coreimage/FilterEffectRendererCoreImage.mm:

(WebCore::FilterEffectRendererCoreImage::sharedCIContext):

  • Use adoptCF() to fix the leak.

Source/WebKit:
REGRESSION (r284079): fast/canvas/gradient-with-clip.html and fast/canvas/gradient-text-with-shadow.html are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=231681
rdar://84202478

Patch by Wenson Hsieh <Wenson Hsieh> on 2021-10-19
Reviewed by Kimmo Kinnunen.

These tests occasionally fail when we time out while waiting for the pixel buffer to be populated underneath
RemoteImageBufferProxy::getPixelBuffer; this happens because the GPU process sometimes halts (and never
resumes) while processing stream messages, and consequently never ends up processing the GetPixelBuffer IPC
stream message that's necessary to populate the shared memory buffer for GetPixelBuffer.

This, in turn, happens when the IPC stream buffer is about to exhaust all available capacity (i.e. the write
cursor is nearing the end of the 2MB buffer), and as a result, we send messages that would normally be encoded
in the IPC stream as out-of-line IPC messages instead, which are received in the GPU process on the IPC thread
and appended to the receive queue corresponding to the destination ID in Connection::processIncomingMessage().

If we happen to have sent RemoteRenderingBackend::CreateImageBuffer(a) right before exhausting capacity and
sending out-of-line messages targeting the RemoteDisplayListRecorder corresponding to the newly created image
buffer a, we'll end up with a race condition where the IPC thread may receive the out-of-line messages meant
for the new remote display list destination *before* the new remote display list has added itself as an IPC
receive queue by calling into StreamServerConnection::startReceivingMessages().

In this particular scenario (where we "lose" the race), Connection::processIncomingMessage will skip past the
early return where it would normally find its corresponding receive queue via m_receiveQueues.get(*message),
and instead falls through to Connection::SyncMessageState::processIncomingMessage(), which will attempt to
dispatch the incoming message to the Connection's client (GPUConnectionToWebProcess). Of course, the
GPUConnectionToWebProcess isn't aware of how to process this incoming message, so it simply gets dropped. By the
time the receive queue is added for the new RemoteDisplayListRecorder, we'll observe a ProcessOutOfStreamMessage
and end up waiting forever for this out-of-line message to be added to the receive queue, but this never ends up
happening because it has already been received and dropped by GPUConnectionToWebProcess.

To address the flaky tests in the short term, we work around this issue by making CreateImageBuffer a sync
message, so we guarantee that any subsequent messages sent to the image buffer's RemoteDisplayListRecorder will
not be dropped. In the (slightly) longer term, we should turn this back into an async stream message, and add a
mechanism to redirect all receiver-less RemoteDisplayListRecorder messages to a separate queue.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::createImageBuffer):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:

Make CreateImageBuffer a synchronous stream message for now.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::createRemoteImageBuffer):

LayoutTests:
Resync web-platform-tests/reporting from upstream
https://bugs.webkit.org/show_bug.cgi?id=231957

Reviewed by Alex Christensen.

Resync web-platform-tests/reporting from upstream 207e223d74fdc1f1.

12:59 PM Changeset in webkit [284482] by Russell Epstein
  • 12 edits
    2 copies
    2 moves
    1 delete in branches/safari-612-branch

Revert r283931. rdar://problem/83953710

12:56 PM Changeset in webkit [284481] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

Fix leak of CGColorSpaceRef in FilterEffectRendererCoreImage::sharedCIContext()
<https://webkit.org/b/231902>
<rdar://problem/84375203>

Reviewed by Wenson Hsieh.

  • platform/graphics/coreimage/FilterEffectRendererCoreImage.mm:

(WebCore::FilterEffectRendererCoreImage::sharedCIContext):

  • Use adoptCF() to fix the leak.
12:49 PM Changeset in webkit [284480] by Chris Dumez
  • 2 edits in trunk/Source/JavaScriptCore

[clang 13] Suppress sign comparison warnings
https://bugs.webkit.org/show_bug.cgi?id=231188
<rdar://problem/84110570>

Reviewed by Alex Christensen.

  • inspector/remote/socket/RemoteInspectorSocket.cpp:

(Inspector::RemoteInspector::backendCommands const):

12:39 PM Changeset in webkit [284479] by Jonathan Bedard
  • 7 edits in trunk/Tools

[webkitscmpy] Filter approvers by status
https://bugs.webkit.org/show_bug.cgi?id=231843
<rdar://problem/84320934>

Reviewed by Dewei Zhu.

If a project defines statuses for it's contributors, we only want
to allow reviewers to approve changes.

  • Scripts/libraries/webkitscmpy/webkitscmpy/contributor.py:

(Contributor): Add reviewer status.
(Contributor.Mapping.load): Keep track of possible statuses.
(Contributor.Mapping.init): Ditto.
(Contributor.Mapping.add): Ditto.

  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/bitbucket.py:

(BitBucket.PRGenerator.PullRequest): If a project defines a reviewer status, enforce it.

  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:

(GitHub.PRGenerator._contributor): Handle case where no name is defined.
(GitHub.PRGenerator.reviewers): If a project defines a reviewer status, enforce it.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py:
12:28 PM Changeset in webkit [284478] by commit-queue@webkit.org
  • 12 edits in trunk

Origin of opaque blob: URLs ends up as empty string
https://bugs.webkit.org/show_bug.cgi?id=231942

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

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-origin-expected.txt:
  • web-platform-tests/url/a-element-origin-xhtml-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/resources/urltestdata.json:
  • web-platform-tests/url/url-constructor.any-expected.txt:
  • web-platform-tests/url/url-constructor.any.worker-expected.txt:
  • web-platform-tests/url/url-origin.any-expected.txt:
  • web-platform-tests/url/url-origin.any.worker-expected.txt:

Source/WebCore:

It should be "null" instead of "".
This matches Chrome and Firefox.
Covered by a PR to WPT included in this patch.

  • page/SecurityOrigin.cpp:

(WebCore::shouldTreatAsUniqueOrigin):

12:16 PM Changeset in webkit [284477] by Chris Dumez
  • 12 edits
    49 adds in trunk/LayoutTests

Resync web-platform-tests/reporting from upstream
https://bugs.webkit.org/show_bug.cgi?id=231957

Reviewed by Alex Christensen.

Resync web-platform-tests/reporting from upstream 207e223d74fdc1f1.

LayoutTests/imported/w3c:

  • web-platform-tests/reporting/*: Updated.

LayoutTests:

12:09 PM Changeset in webkit [284476] by Wenson Hsieh
  • 8 edits in trunk

REGRESSION (r284079): fast/canvas/gradient-with-clip.html and fast/canvas/gradient-text-with-shadow.html are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=231681
rdar://84202478

Reviewed by Kimmo Kinnunen.

Source/WebKit:

These tests occasionally fail when we time out while waiting for the pixel buffer to be populated underneath
RemoteImageBufferProxy::getPixelBuffer; this happens because the GPU process sometimes halts (and never
resumes) while processing stream messages, and consequently never ends up processing the GetPixelBuffer IPC
stream message that's necessary to populate the shared memory buffer for GetPixelBuffer.

This, in turn, happens when the IPC stream buffer is about to exhaust all available capacity (i.e. the write
cursor is nearing the end of the 2MB buffer), and as a result, we send messages that would normally be encoded
in the IPC stream as out-of-line IPC messages instead, which are received in the GPU process on the IPC thread
and appended to the receive queue corresponding to the destination ID in Connection::processIncomingMessage().

If we happen to have sent RemoteRenderingBackend::CreateImageBuffer(a) right before exhausting capacity and
sending out-of-line messages targeting the RemoteDisplayListRecorder corresponding to the newly created image
buffer a, we'll end up with a race condition where the IPC thread may receive the out-of-line messages meant
for the new remote display list destination *before* the new remote display list has added itself as an IPC
receive queue by calling into StreamServerConnection::startReceivingMessages().

In this particular scenario (where we "lose" the race), Connection::processIncomingMessage will skip past the
early return where it would normally find its corresponding receive queue via m_receiveQueues.get(*message),
and instead falls through to Connection::SyncMessageState::processIncomingMessage(), which will attempt to
dispatch the incoming message to the Connection's client (GPUConnectionToWebProcess). Of course, the
GPUConnectionToWebProcess isn't aware of how to process this incoming message, so it simply gets dropped. By the
time the receive queue is added for the new RemoteDisplayListRecorder, we'll observe a ProcessOutOfStreamMessage
and end up waiting forever for this out-of-line message to be added to the receive queue, but this never ends up
happening because it has already been received and dropped by GPUConnectionToWebProcess.

To address the flaky tests in the short term, we work around this issue by making CreateImageBuffer a sync
message, so we guarantee that any subsequent messages sent to the image buffer's RemoteDisplayListRecorder will
not be dropped. In the (slightly) longer term, we should turn this back into an async stream message, and add a
mechanism to redirect all receiver-less RemoteDisplayListRecorder messages to a separate queue.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::createImageBuffer):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:

Make CreateImageBuffer a synchronous stream message for now.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::createRemoteImageBuffer):

LayoutTests:

Remove the flaky failure entries in test expectations. See WebKit2 ChangeLog for more details.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
11:56 AM Changeset in webkit [284475] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Update test expectations for still-failing CSS web platform tests
https://bugs.webkit.org/show_bug.cgi?id=231964

Unreviewed test gardening.

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-10-19

  • platform/gtk/TestExpectations:
11:54 AM Changeset in webkit [284474] by achristensen@apple.com
  • 3 edits in trunk/Tools

Fix iOS API tests after r284304
https://bugs.webkit.org/show_bug.cgi?id=231829

Part of the original commit that told the tests to continue doing what they were doing before was omitted.
This commits that.

  • TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/PrivateClickMeasurement.mm:

(webViewWithResourceLoadStatisticsEnabledInNetworkProcess):

11:43 AM Changeset in webkit [284473] by wilander@apple.com
  • 3 edits in trunk/LayoutTests

http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=231379
<rdar://problem/83991245>

Reviewed by Chris Dumez.

  • http/tests/resourceLoadStatistics/resources/redirect.py:

Added the response header 'Cache-Control: no-cache, no-store'.
Historically, we've had problems with redirects getting cached
so that they don't hit the network. In this particular case,
the same redirect is being done in different orders and might
fall into the cache trap.

  • platform/mac-wk2/TestExpectations:

Removed [Pass Failure] expectation for sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip.html.

11:41 AM Changeset in webkit [284472] by youenn@apple.com
  • 13 edits in trunk

Guarantee order of WebSocket events in case of being resumed
https://bugs.webkit.org/show_bug.cgi?id=231664

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/websockets/interfaces/WebSocket/close/close-nested-expected.txt:
  • web-platform-tests/websockets/interfaces/WebSocket/readyState/003-expected.txt:

Source/WebCore:

Introduce a WebSocket task source as per spec.
This aligns with https://html.spec.whatwg.org/multipage/web-sockets.html where the user agent is expected to a queue task
when closing handshake is started and so on.

By queuing an event loop task to fire WebSocket events, we ensure ordering of events even in case of resuming, while simplifying the implementation.
This makes it use the event loop which is extra nice if we resolve promises in event listeners.

A follow-up patch should refactor code so that WebSocket::didReceiveMessageError can directly fire the close event without having to wait for a didClose call.

Covered by existing tests.

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::WebSocket):
(WebCore::WebSocket::suspend):
(WebCore::WebSocket::resume):
(WebCore::WebSocket::stop):
(WebCore::WebSocket::dispatchOrQueueEvent):
(WebCore::WebSocket::resumeTimerFired): Deleted.

  • Modules/websockets/WebSocket.h:
  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::send):

  • dom/TaskSource.h:

Source/WebKit:

We no longer need to handle resume/suspend in WebSocketChannel layer since WebSocket will deal with itself by enqueuing a task in the event loop.

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::disconnect):
(WebKit::WebSocketChannel::didConnect):
(WebKit::WebSocketChannel::didReceiveText):
(WebKit::WebSocketChannel::didReceiveBinaryData):
(WebKit::WebSocketChannel::didClose):
(WebKit::WebSocketChannel::didReceiveMessageError):
(WebKit::WebSocketChannel::suspend):
(WebKit::WebSocketChannel::resume):
(WebKit::WebSocketChannel::didSendHandshakeRequest):
(WebKit::WebSocketChannel::didReceiveHandshakeResponse):
(WebKit::WebSocketChannel::enqueueTask): Deleted.

  • WebProcess/Network/WebSocketChannel.h:

LayoutTests:

  • http/tests/websocket/tests/hybi/inspector/send-and-receive.html:

The WebSocket server was racing to close the connection with the User Agent.
The patch queueing a task to fire events is further amplifying this race.
To make the test non flaky, we use an echo server that waits for User Agent to close the connection.

11:40 AM Changeset in webkit [284471] by commit-queue@webkit.org
  • 2 edits in trunk

Add AX team GitHub usernames to contributors.json
https://bugs.webkit.org/show_bug.cgi?id=231966

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-10-19
Reviewed by Chris Fleizach.

  • metadata/contributors.json:

Add Chris Fleizach's and Andres Gonzalez's GitHub usernames. Add Tyler
Wilcock as a contributor. Run validate-committer-lists --canonicalize
to fix some style issues.

11:37 AM Changeset in webkit [284470] by Alan Coon
  • 15 edits
    4 adds in branches/safari-613.1.6-branch

Cherry-pick r284466. rdar://problem/84424869

REGRESSION(r284313): ::marker accelerated animations are broken
https://bugs.webkit.org/show_bug.cgi?id=231906
<rdar://problem/84383279>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

WPT now reflect that we correctly do not animate the opacity property and correctly account for
other ineffective properties on ::marker, such as line-height.

  • web-platform-tests/css/css-pseudo/marker-animate-expected.txt:
  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:

Source/WebCore:

Test: webanimations/marker-opacity-animation-no-effect.html

We incorrectly supported animations for all known CSS properties on a ::marker since we added
support for animation of ::marker, and with r284313 we started returning the correct renderer
for ::marker pseudo-elements which meant that accelerated opacity animations started running
for the first time.

We now correctly ignore disallowed properties for ::marker when animating with those changes.

First, in Style::Resolver::styleForKeyframe(), we pass the relevant allowlist to the MatchResult's
authorDeclarations when adding the keyframe properties.

Then, in KeyframeEffect::isCurrentlyAffectingProperty() we call isValidMarkerStyleProperty() in
case we're being called for a ::marker pseudo-element.

To be able to obtain the allowlist and call isValidMarkerStyleProperty() in those two questions,
we had to refactor the related code into a dedicated PropertyAllowlist file and enum.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::isCurrentlyAffectingProperty const):
  • style/ElementRuleCollector.cpp: (WebCore::Style::ElementRuleCollector::transferMatchedRules):
  • style/ElementRuleCollector.h:
  • style/PropertyAllowlist.cpp: Added. (WebCore::Style::propertyAllowlistForPseudoId): (WebCore::Style::isValidMarkerStyleProperty): (WebCore::Style::isValidCueStyleProperty):
  • style/PropertyAllowlist.h: Added.
  • style/PropertyCascade.cpp: (WebCore::Style::PropertyCascade::addMatch): (WebCore::Style::isValidMarkerStyleProperty): Deleted. (WebCore::Style::isValidCueStyleProperty): Deleted.
  • style/RuleData.cpp: (WebCore::Style::determinePropertyAllowlist): (WebCore::Style::RuleData::RuleData): (WebCore::Style::determinePropertyAllowlistType): Deleted.
  • style/RuleData.h: (WebCore::Style::RuleData::propertyAllowlist const): (): Deleted. (WebCore::Style::RuleData::propertyAllowlistType const): Deleted.
  • style/StyleResolver.cpp: (WebCore::Style::Resolver::styleForKeyframe):

LayoutTests:

Add a new test that checks we do not visually account for an opacity animation on a ::marker
pseudo-element.

  • webanimations/marker-opacity-animation-no-effect-expected.html: Added.
  • webanimations/marker-opacity-animation-no-effect.html: Added.

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

11:15 AM WebKitGTK/Debugging edited by Michael Catanzaro
WebKitGTK+ -> WebKitGTK (diff)
11:14 AM WebKitGTK/Releasing edited by Michael Catanzaro
WebKitGTK+ -> WebKitGTK (diff)
11:14 AM EnvironmentVariables edited by Michael Catanzaro
WebKitGTK+ -> WebKitGTK (diff)
11:13 AM WebKitGtkLayoutTests edited by Michael Catanzaro
WebKitGTK+ -> WebKitGTK (diff)
11:04 AM Changeset in webkit [284469] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS ] http/tests/cache/disk-cache/redirect-chain-limits.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=231630

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
11:00 AM Changeset in webkit [284468] by Ayumi Kojima
  • 3 edits in trunk/LayoutTests

[ iOS ] imported/w3c/web-platform-tests/html/canvas/element/manual tests, fast/canvas/canvas-createPattern-video-modify.html and media/video-canvas-createPattern.html are failing.
https://bugs.webkit.org/show_bug.cgi?id=231959

Unreviewed test gardening.

  • platform/ipad/TestExpectations:
  • platform/mac/TestExpectations:
10:36 AM Changeset in webkit [284467] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Wasm Table can take arbitrary default value
https://bugs.webkit.org/show_bug.cgi?id=231933
rdar://84327812

Reviewed by Robin Morisset.

  • wasm/WasmTable.cpp:

(JSC::Wasm::Table::grow):

10:18 AM Changeset in webkit [284466] by graouts@webkit.org
  • 15 edits
    4 adds in trunk

REGRESSION(r284313): ::marker accelerated animations are broken
https://bugs.webkit.org/show_bug.cgi?id=231906
<rdar://problem/84383279>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

WPT now reflect that we correctly do not animate the opacity property and correctly account for
other ineffective properties on ::marker, such as line-height.

  • web-platform-tests/css/css-pseudo/marker-animate-expected.txt:
  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:

Source/WebCore:

Test: webanimations/marker-opacity-animation-no-effect.html

We incorrectly supported animations for all known CSS properties on a ::marker since we added
support for animation of ::marker, and with r284313 we started returning the correct renderer
for ::marker pseudo-elements which meant that accelerated opacity animations started running
for the first time.

We now correctly ignore disallowed properties for ::marker when animating with those changes.

First, in Style::Resolver::styleForKeyframe(), we pass the relevant allowlist to the MatchResult's
authorDeclarations when adding the keyframe properties.

Then, in KeyframeEffect::isCurrentlyAffectingProperty() we call isValidMarkerStyleProperty() in
case we're being called for a ::marker pseudo-element.

To be able to obtain the allowlist and call isValidMarkerStyleProperty() in those two questions,
we had to refactor the related code into a dedicated PropertyAllowlist file and enum.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::isCurrentlyAffectingProperty const):

  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::transferMatchedRules):

  • style/ElementRuleCollector.h:
  • style/PropertyAllowlist.cpp: Added.

(WebCore::Style::propertyAllowlistForPseudoId):
(WebCore::Style::isValidMarkerStyleProperty):
(WebCore::Style::isValidCueStyleProperty):

  • style/PropertyAllowlist.h: Added.
  • style/PropertyCascade.cpp:

(WebCore::Style::PropertyCascade::addMatch):
(WebCore::Style::isValidMarkerStyleProperty): Deleted.
(WebCore::Style::isValidCueStyleProperty): Deleted.

  • style/RuleData.cpp:

(WebCore::Style::determinePropertyAllowlist):
(WebCore::Style::RuleData::RuleData):
(WebCore::Style::determinePropertyAllowlistType): Deleted.

  • style/RuleData.h:

(WebCore::Style::RuleData::propertyAllowlist const):
(): Deleted.
(WebCore::Style::RuleData::propertyAllowlistType const): Deleted.

  • style/StyleResolver.cpp:

(WebCore::Style::Resolver::styleForKeyframe):

LayoutTests:

Add a new test that checks we do not visually account for an opacity animation on a ::marker
pseudo-element.

  • webanimations/marker-opacity-animation-no-effect-expected.html: Added.
  • webanimations/marker-opacity-animation-no-effect.html: Added.
10:01 AM Changeset in webkit [284465] by commit-queue@webkit.org
  • 6 edits in trunk

Use JSONValues instead of a JSC::VM to parse WKContentRuleLists
https://bugs.webkit.org/show_bug.cgi?id=231704

Patch by Alex Christensen <achristensen@webkit.org> on 2021-10-19
Reviewed by Brady Eidson.

Source/WebCore:

This makes the parser much simpler and easier to see what is going on.
It probably also saves some memory because we don't need to make a VM just to parse JSON.
Covered by existing tests. There are extensive tests for invalid input, and there is only
one change in the error reported: we used to say the top level has to be an object, then
we would say that it has to be an array. JavaScript arrays are objects, but JSON arrays aren't.
Valid input continues to parse the same, and invalid input continues to fail to parse, but the
error is more accurate now.

  • contentextensions/ContentExtensionError.cpp:

(WebCore::ContentExtensions::contentExtensionErrorCategory):

  • contentextensions/ContentExtensionError.h:
  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::getStringList):
(WebCore::ContentExtensions::getDomainList):
(WebCore::ContentExtensions::getTypeFlags):
(WebCore::ContentExtensions::loadTrigger):
(WebCore::ContentExtensions::loadAction):
(WebCore::ContentExtensions::loadRule):
(WebCore::ContentExtensions::loadEncodedRules):
(WebCore::ContentExtensions::parseRuleList):

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::TEST_F):

9:54 AM Changeset in webkit [284464] by Ayumi Kojima
  • 3 edits in trunk/LayoutTests

[ iOS Win ] editing/selection/modal-dialog-select-paragraph.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=231962

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/win/TestExpectations:
9:44 AM Changeset in webkit [284463] by achristensen@apple.com
  • 2 edits in trunk/Tools

Re-disable WebKit.HTTPSProxy API test on iOS
https://bugs.webkit.org/show_bug.cgi?id=231396

Yesterday's attempt at making it not time out does not appear to have worked.

  • TestWebKitAPI/Tests/WebKitCocoa/Proxy.mm:
9:41 AM Changeset in webkit [284462] by ysuzuki@apple.com
  • 2 edits in trunk/Tools

DumpRenderTree should not use WK methods
https://bugs.webkit.org/show_bug.cgi?id=231910

Reviewed by Alex Christensen.

DumpRenderTree functions can be called on WebThread if ios simulator is used.
If we first use WK functions on that, it causes WebKit initialization on non
main thread. We should not mix WK functions with DumpRenderTree.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(dumpFramesAsText):

9:39 AM Changeset in webkit [284461] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS ] fast/inline/inline-background-clip-text-multiline.html is image failing.
https://bugs.webkit.org/show_bug.cgi?id=231961

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
9:37 AM Changeset in webkit [284460] by Chris Dumez
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed build fix.

  • DerivedSources-input.xcfilelist:
9:30 AM Changeset in webkit [284459] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Drop assertion in RegistrationDatabase::importRecords()
https://bugs.webkit.org/show_bug.cgi?id=231960

Reviewed by Alex Christensen.

Drop assertion in RegistrationDatabase::importRecords(). This can happen when deleting service
worker scripts on disk but not clearing the service worker database.
The code properly deal with this so there is no need to crash in debug builds.

  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::RegistrationDatabase::importRecords):

9:24 AM Changeset in webkit [284458] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

Follow-up #2: WebKit::LocalConnection::createCredentialPrivateKey leaks an NSMutableDictionary
<https://webkit.org/b/231814>
<rdar://problem/84307054>

Unreviewed follow-up to address Darin's comment.

  • UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:

(WebKit::LocalConnection::createCredentialPrivateKey const):

  • Use WTFMove() to avoid ref count churn.
9:23 AM Changeset in webkit [284457] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage- tests are failing.
https://bugs.webkit.org/show_bug.cgi?id=231959

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
9:00 AM Changeset in webkit [284456] by fpizlo@apple.com
  • 2 edits in trunk/Source/WTF

StringBuffer should really know that strings might be 8-bit
https://bugs.webkit.org/show_bug.cgi?id=231937

Reviewed by Yusuke Suzuki.

We somehow forgot to change this to use CharType instead of UChar.

  • wtf/text/StringBuffer.h:

(WTF::StringBuffer::resize):

8:38 AM Changeset in webkit [284455] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

AX: Fix broken spec links in AccessibilityObject.cpp and AccessibilityTree.cpp
https://bugs.webkit.org/show_bug.cgi?id=231932

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-10-19
Reviewed by Chris Fleizach.

Fix broken spec links.

  • accessibility/AccessibilityObject.cpp:

(WebCore::initializeRoleMap):
(WebCore::AccessibilityObject::buttonRoleType const):

  • accessibility/AccessibilityTree.cpp:

(WebCore::AccessibilityTree::isTreeValid const):

8:17 AM Changeset in webkit [284454] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebCore

Fix leak of object returned from MTLCreateSystemDefaultDevice()
<https://webkit.org/b/231899>
<rdar://problem/84373621>

Reviewed by Anders Carlsson.

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::platformSupportsMetal):

  • testing/Internals.mm:

(WebCore::Internals::platformSupportsMetal):

  • Use adoptNS() to fix the leak.
8:05 AM WebKitGTK/2.34.x edited by Michael Catanzaro
(diff)
8:05 AM WebKitGTK/2.32.x edited by Michael Catanzaro
(diff)
7:51 AM Changeset in webkit [284453] by Chris Dumez
  • 62 edits in trunk/Source

cachedCGColor() and nsColor() should return smart pointers
https://bugs.webkit.org/show_bug.cgi?id=231909

Reviewed by Tim Horton.

r276283 attempted to make cachedCGColor() and nsColor() thread-safe but the fix was incomplete
since those functions return unretained objects that can be released from the cache on any
other thread. This patch updates cachedCGColor() and nsColor() to return a RetainPtr to address
the issue.

Source/WebCore:

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(AXAttributeStringSetStyle):

  • editing/cocoa/FontAttributesCocoa.mm:

(WebCore::FontAttributes::createDictionary const):

  • editing/cocoa/FontShadowCocoa.mm:

(WebCore::FontShadow::createShadow const):

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::convert):
(HTMLConverter::_colorForElement):
(HTMLConverter::computedAttributesForElement):
(HTMLConverter::_fillInBlock):
(HTMLConverter::_processElement):
(WebCore::editingAttributedString):

  • platform/graphics/Color.h:
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:

(WebCore::LocalSampleBufferDisplayLayer::initialize):

  • platform/graphics/ca/PlatformCALayer.cpp:

(WebCore::PlatformCALayer::drawTextAtPoint const):

  • platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm:

(WebCore::PlatformCAFilters::setFiltersOnLayer):

  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(WebCore::PlatformCALayerCocoa::setBackgroundColor):
(WebCore::PlatformCALayerCocoa::setBorderColor):

  • platform/graphics/cg/ColorCG.cpp:

(WebCore::cachedCGColor):

  • platform/graphics/cg/GradientCG.cpp:

(WebCore::Gradient::createCGGradient):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::setCGFillColor):
(WebCore::setCGShadow):
(WebCore::GraphicsContextCG::didUpdateState):

  • platform/graphics/cocoa/ColorCocoa.h:
  • platform/graphics/cocoa/ColorCocoa.mm:

(WebCore::platformColor):

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::addAttributesForCustomFontPalettes):

  • platform/graphics/cocoa/GraphicsContextCocoa.mm:

(WebCore::drawFocusRingAtTime):
(WebCore::colorForMarkerLineStyle):
(WebCore::GraphicsContextCG::drawDotsForDocumentMarker):

  • platform/graphics/mac/ColorMac.h:
  • platform/graphics/mac/ColorMac.mm:

(WTF::RetainPtr<NSColor>>::createValueForKey):
(WebCore::nsColor):

  • platform/mac/LocalDefaultSystemAppearance.mm:

(WebCore::LocalDefaultSystemAppearance::LocalDefaultSystemAppearance):

  • platform/mac/PlatformPasteboardMac.mm:

(WebCore::PlatformPasteboard::setColor):

  • platform/mac/ScrollbarThemeMac.mm:

(WebCore::ScrollbarThemeMac::setUpOverhangAreaBackground):

  • platform/mac/ThemeMac.mm:

(WebCore::drawCellFocusRingWithFrameAtTime):

  • rendering/RenderThemeMac.mm:

(WebCore::AttachmentLayout::layOutTitle):
(WebCore::AttachmentLayout::layOutSubtitle):

  • testing/cocoa/WebViewVisualIdentificationOverlay.mm:

(-[WebViewVisualIdentificationOverlay initWithWebView:kind:deprecated:]):
(drawPattern):

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:

(WebKit::cgColorFromColor):
(WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView themeColor]):
(-[WKWebView underPageBackgroundColor]):
(-[WKWebView _pageExtendedBackgroundColor]):
(-[WKWebView _sampledPageTopColor]):

  • UIProcess/API/Cocoa/_WKApplicationManifest.mm:

(-[_WKApplicationManifest themeColor]):

  • UIProcess/API/mac/WKView.mm:

(-[WKView underlayColor]):
(-[WKView _pageExtendedBackgroundColor]):

  • UIProcess/API/mac/WKWebViewMac.mm:

(-[WKWebView _underlayColor]):

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

(WebKit::WebViewImpl::updateTextTouchBar):
(WebKit::WebViewImpl::underlayColor const):
(WebKit::WebViewImpl::pageExtendedBackgroundColor const):

  • UIProcess/PDF/WKPDFHUDView.mm:

(-[WKPDFHUDView _setupLayer:]):

  • UIProcess/mac/WebColorPickerMac.mm:

(WebKit::WebColorPickerMac::setSelectedColor):
(WebKit::WebColorPickerMac::showColorPicker):
(-[WKColorPopoverMac setAndShowPicker:withColor:suggestions:]):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::setAccentColor):

  • WebProcess/cocoa/VideoFullscreenManager.mm:

(WebKit::VideoFullscreenManager::enterVideoFullscreenForVideoElement):

Source/WebKitLegacy/mac:

  • DOM/DOMRGBColor.mm:

(-[DOMRGBColor color]):

  • WebView/WebFrame.mm:

(-[WebFrame _bodyBackgroundColor]):

  • WebView/WebView.mm:

(-[WebView updateTextTouchBar]):

7:45 AM Changeset in webkit [284452] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Rename Line::removeCollapsibleContent to removeTrimmableContent
https://bugs.webkit.org/show_bug.cgi?id=231930

Reviewed by Antti Koivisto.

"Trimming" is closer to spec language.

  • layout/formattingContexts/inline/InlineLine.cpp:

(WebCore::Layout::Line::removeTrimmableContent):
(WebCore::Layout::Line::removeCollapsibleContent): Deleted.

  • layout/formattingContexts/inline/InlineLine.h:
  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::close):

7:27 AM Changeset in webkit [284451] by commit-queue@webkit.org
  • 2 edits
    1 add in trunk/Source/WebKit

Update seccomp filters with latest changes from flatpak
https://bugs.webkit.org/show_bug.cgi?id=231479

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-10-19
Reviewed by Adrian Perez de Castro.

Additionally, let's fix a minor inconsistency in our error-handling code: all but one of
our codepaths carefully free and close resources, but the process is about to crash so
there's not really any reason to do so. The code is slightly simpler if we don't bother.

The seemingly-extraneous include order changes are required to placate the style checker.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::seccompStrerror):
(WebKit::setupSeccomp):

  • UIProcess/Launcher/glib/Syscalls.h: Added.
7:25 AM Changeset in webkit [284450] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Unskip passing flex-basis: content + aspect ratio WPT tests
https://bugs.webkit.org/show_bug.cgi?id=231947

Patch by Rob Buis <rbuis@igalia.com> on 2021-10-19
Reviewed by Sergio Villar Senin.

Unskip passing flex-basis: content + aspect ratio WPT tests. These test cases did not work
before because there was no support for flex-basis: content, but since r284440 they pass.

7:17 AM Changeset in webkit [284449] by youenn@apple.com
  • 7 edits in trunk

[ wk2 ] 2 page-cache layout-tests are flakey crashing
https://bugs.webkit.org/show_bug.cgi?id=224558
<rdar://problem/76652825>

Reviewed by Eric Carlson.

Source/WebCore:

Covered by updated test.

  • Modules/mediastream/PeerConnectionBackend.cpp:

srflx candidates can be exposed even in case of filtering enabled.

  • testing/MockLibWebRTCPeerConnection.cpp:

Backend should now handle the mDNS filtering itself.

LayoutTests:

  • fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt: Rebasing after mock changes.
  • platform/mac-wk2/TestExpectations:
  • webrtc/peerconnection-new-candidate-page-cache.html:
6:46 AM Changeset in webkit [284448] by commit-queue@webkit.org
  • 5 edits
    4 adds in trunk

[css-scroll-snap] Triggering a layout during scroll causes jittery scrolling on iOS
https://bugs.webkit.org/show_bug.cgi?id=173887
<rdar://problem/67153673>

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

Source/WebKit:

Tests: fast/scrolling/ios/scroll-snap-with-relayouts-horizontal.html

fast/scrolling/ios/scroll-snap-with-relayouts-vertical.html

Ensure that when the root node is scrolling, it is added to the list of nodes
with an active user scroll. This prevents the web process from resnapping during
layout when the user is actively scrolling.

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView scrollViewWillBeginDragging:]): Call RemoteScrollingCoordinatorProxy::setRootNodeIsInUserScroll
when a scdroll starts and ends.

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h: Added method declaration.
  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::setRootNodeIsInUserScroll): Added setRootNodeIsInUserScroll method.

LayoutTests:

  • fast/scrolling/ios/scroll-snap-with-relayouts-horizontal-expected.txt: Added.
  • fast/scrolling/ios/scroll-snap-with-relayouts-horizontal.html: Added.
  • fast/scrolling/ios/scroll-snap-with-relayouts-vertical-expected.txt: Added.
  • fast/scrolling/ios/scroll-snap-with-relayouts-vertical.html: Added.
6:40 AM Changeset in webkit [284447] by commit-queue@webkit.org
  • 32 edits in trunk

Remove support for some SVG properties
https://bugs.webkit.org/show_bug.cgi?id=227897

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

LayoutTests/imported/w3c:

Adjust test expectations to removed properties.

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:

Source/WebCore:

Remove support for the SVG properties color-profile, color-rendering
and enable-background. We never had support for these apart from parsing
them and they are removed from the SVG2 specification.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json:
  • css/SVGCSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::svgPropertyValue):

  • css/SVGCSSValueKeywords.in:
  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):

  • rendering/style/SVGRenderStyle.cpp:

(WebCore::SVGRenderStyle::diff const):

  • rendering/style/SVGRenderStyle.h:

(WebCore::SVGRenderStyle::setColorInterpolationFilters):
(WebCore::SVGRenderStyle::colorInterpolationFilters const):
(WebCore::SVGRenderStyle::setBitDefaults):
(WebCore::SVGRenderStyle::InheritedFlags::operator== const):
(WebCore::SVGRenderStyle::setColorRendering): Deleted.
(WebCore::SVGRenderStyle::colorRendering const): Deleted.

  • svg/SVGElement.cpp:

(WebCore::createAttributeNameToCSSPropertyIDMap):

  • svg/properties/SVGPropertyAnimatorFactory.h:

(WebCore::SVGPropertyAnimatorFactory::attributeAnimatorCreator):

  • svg/svgattrs.in:

LayoutTests:

Adjust test expectations to removed properties.

  • fast/css/getComputedStyle/computed-style-expected.txt:
  • fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • platform/glib/fast/css/getComputedStyle/computed-style-expected.txt:
  • platform/glib/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • platform/glib/svg/css/getComputedStyle-basic-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
  • platform/ios/fast/css/getComputedStyle/computed-style-expected.txt:
  • platform/ios/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • platform/ios/svg/css/getComputedStyle-basic-expected.txt:
  • platform/mac/fast/css/getComputedStyle/computed-style-expected.txt:
  • platform/mac/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • platform/mac/svg/css/getComputedStyle-basic-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • svg/css/getComputedStyle-basic-expected.txt:
6:20 AM Changeset in webkit [284446] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.34.0

WPE WebKit 2.34.0

6:19 AM Changeset in webkit [284445] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.34

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.34.0 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.34.0.
4:52 AM Changeset in webkit [284444] by youenn@apple.com
  • 12 edits
    2 copies
    2 adds in trunk

getDisplayMedia MediaStreamTrack.applyConstraints behavior regressed in Safari 15
https://bugs.webkit.org/show_bug.cgi?id=231286
<rdar://problem/83930865>

Reviewed by Eric Carlson.

Source/WebKit:

Display tracks are different in that they do not have presets.
Revert back to directly linking the WebProcess track with the remote display source without going through RealtimeVideoSource.
This restores past behavior.
Refactoring of UserMediaCaptureManager to use a single map.
We do not yet support cloning tracks to get different sizes, this should be done as a follow-up.

Covered by fast/mediastream/getDisplayMedia-size.html.

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:
  • WebProcess/cocoa/RemoteCaptureSampleManager.h:
  • WebProcess/cocoa/RemoteRealtimeAudioSource.cpp:
  • WebProcess/cocoa/RemoteRealtimeAudioSource.h:
  • WebProcess/cocoa/RemoteRealtimeDisplaySource.cpp: Added.
  • WebProcess/cocoa/RemoteRealtimeDisplaySource.h: Added.
  • WebProcess/cocoa/RemoteRealtimeVideoSource.cpp:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:
  • WebProcess/cocoa/UserMediaCaptureManager.h:

LayoutTests:

  • fast/mediastream/getDisplayMedia-size-expected.txt: Added.
  • fast/mediastream/getDisplayMedia-size.html: Added.
  • platform/ios/TestExpectations: Added.
4:05 AM Changeset in webkit [284443] by youenn@apple.com
  • 25 edits
    3 copies
    3 moves
    2 adds in trunk

Expose MediaCapabilities to Workers
https://bugs.webkit.org/show_bug.cgi?id=231574

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

Allow running encoding tests in workers as well as in window.

  • web-platform-tests/media-capabilities/decodingInfo.any.worker-expected.txt:
  • web-platform-tests/media-capabilities/encodingInfo.any-expected.txt: Added.
  • web-platform-tests/media-capabilities/encodingInfo.any.html: Added.
  • web-platform-tests/media-capabilities/encodingInfo.any.js: Added.
  • web-platform-tests/media-capabilities/encodingInfo.any.worker-expected.txt: Added.
  • web-platform-tests/media-capabilities/encodingInfo.any.worker.html: Added.
  • web-platform-tests/media-capabilities/encodingInfo-expected: Removed.
  • web-platform-tests/media-capabilities/encodingInfo.html: Removed.
  • web-platform-tests/media-capabilities/idlharness.any.worker-expected.txt:

Source/WebCore:

Expose Media Capabilities to workers by hopping to main thread and using worker responsible document for gathering Media Capabilities, then hopping back to worker.
MediaCapabilities will store the promises when waiting for media capabilities gathering by document.

We remove CustomEnabled since it is not supported in Workers and we are now exposing encoding info for WebRTC anyway.

Tests: imported/w3c/web-platform-tests/media-capabilities/encodingInfo.any.html

imported/w3c/web-platform-tests/media-capabilities/encodingInfo.any.worker.html

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/mediacapabilities/MediaCapabilities.cpp:
  • Modules/mediacapabilities/MediaCapabilities.h:
  • Modules/mediacapabilities/MediaCapabilities.idl:
  • Modules/mediacapabilities/NavigatorMediaCapabilities.cpp:
  • Modules/mediacapabilities/NavigatorMediaCapabilities.h:
  • Modules/mediacapabilities/WorkerNavigator+MediaCapabilities.idl: Added.
  • Modules/mediacapabilities/WorkerNavigatorMediaCapabilities.cpp: Added.
  • Modules/mediacapabilities/WorkerNavigatorMediaCapabilities.h: Added.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/ScriptExecutionContext.cpp:
  • dom/ScriptExecutionContext.h:
  • platform/MediaCapabilitiesDecodingInfo.h:
  • platform/MediaCapabilitiesEncodingInfo.h:
  • platform/MediaCapabilitiesInfo.h:
  • platform/mediacapabilities/AudioConfiguration.h:
  • platform/mediacapabilities/MediaConfiguration.h:
  • platform/mediacapabilities/MediaDecodingConfiguration.h:
  • platform/mediacapabilities/MediaEncodingConfiguration.h:
  • platform/mediacapabilities/VideoConfiguration.h:
4:03 AM Changeset in webkit [284442] by youenn@apple.com
  • 6 edits in trunk

Close peer connection sockets when entering page cache
https://bugs.webkit.org/show_bug.cgi?id=231890

Reviewed by Eric Carlson.

Source/WebKit:

We proactively close all peer connection sockets when entering page cache.
This makes peer connection go to disconnected and then failed state.
Covered by updated tests.

  • WebProcess/Network/webrtc/LibWebRTCSocket.cpp:

LayoutTests:

  • webrtc/peerconnection-page-cache-long.html:
  • webrtc/peerconnection-page-cache.html:
3:21 AM Changeset in webkit [284441] by svillar@igalia.com
  • 2 edits in trunk

Add my github username to contributors.json

Unreviewed.

  • metadata/contributors.json:
3:14 AM Changeset in webkit [284440] by svillar@igalia.com
  • 20 edits in trunk

[css-flexbox] Add flex-basis: content support
https://bugs.webkit.org/show_bug.cgi?id=221479
LayoutTests/imported/w3c:

Reviewed by Javier Fernandez.

Fixed 6 subtest expectations. All of them working fine now.

  • web-platform-tests/css/css-flexbox/parsing/flex-basis-computed-expected.txt:
  • web-platform-tests/css/css-flexbox/parsing/flex-basis-valid-expected.txt:
  • web-platform-tests/css/css-flexbox/parsing/flex-shorthand-expected.txt:

Source/WebCore:

Reviewed by Javier Fernandez.

Add support for the content keyword as a valid value for the flex-basis property.
It indicates an automated size based on the contents of the flex item. It's typically
equivalent to the max-content size but it has some adjustments for aspect ratios,
orthogonal flows and intrinsic sizing constraints.

Apart from adding the parsing support, it required very little adjustments in the
flexbox code after the refactoring in r284359.

This makes WebKit pass all of the flex-basis:content tests in WPT. We're talking
about 6 tests testing the feature and 6 subtests related to parsing.

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue): Handle Content in switch.
(WebCore::CSSPrimitiveValue::init): Initialization for content CSS value.

  • css/CSSProperties.json:
  • css/LengthFunctions.cpp: Replaced LengthOrAuto by LengthSizing.

(WebCore::valueForLength): Handle Content in switch.
(WebCore::floatValueForLength): Ditto.

  • css/LengthFunctions.h:

(WebCore::minimumValueForLength): Ditto.

  • css/calc/CSSCalcValue.cpp:

(WebCore::createCSS): Ditto.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeFlexBasis): Consume CSSValueContent.
(WebCore::CSSPropertyParser::consumeFlex): Ditto.

  • platform/Length.cpp:

(WebCore::operator<<): Added printing support for content.

  • platform/Length.h:

(WebCore::Length::initialize): Added enum for content.
(WebCore::Length::isContent const): New method.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeReplacedLogicalWidthUsing const): Handle content in switch.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::childMainSizeIsDefinite): Treat content as indefinite lenght.
(WebCore::RenderFlexibleBox::childHasComputableAspectRatioAndCrossSizeIsConsideredDefinite):
Flex basis must be either auto or content.
(WebCore::RenderFlexibleBox::computeFlexBaseSizeForChild): Compute flex-basis using max-content
if flex-basis:content is specified.

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertLengthSizing): Handle content in switch.

Source/WebKit:

<rdar://problem/74279369>

Reviewed by Javier Fernandez.

Handle LengthType::Content in encode/decode functions.

  • Shared/WebCoreArgumentCoders.cpp:

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

LayoutTests:

Reviewed by Javier Fernandez.

1:35 AM Changeset in webkit [284439] by Cameron McCormack
  • 66 edits
    22 adds
    2 deletes in trunk

Ensure CanvasRenderingContext2D.drawImage(video) uses the right color space
https://bugs.webkit.org/show_bug.cgi?id=229025
<rdar://problem/81828490>

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Add some new WPTs for drawImage(video).

  • web-platform-tests/html/canvas/element/manual/imagebitmap/createImageBitmap-drawImage.html:
  • web-platform-tests/html/canvas/element/manual/imagebitmap/createImageBitmap-flipY.html:

Updated tests to check that video color space conversion is done
correctly.

  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video-expected.txt: Added.
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html: Added.
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video-expected.txt: Added.
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html: Added.
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js:

(pixelsApproximatelyEqual): Tweaked threshold to pass video tests on iOS.

  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Rec2020-222000000.mp4: Added.
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Rec2020-222000000.webm: Added.
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Rec2020-3FF000000.mp4: Added.
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Rec2020-3FF000000.webm: Added.
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.mp4: Added.
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.webm: Added.
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0100.mp4: Added.
  • web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0100.webm: Added.

Source/WebCore:

When GPU process media handling is disabled (and in the GPU process
when it is handling a NativeImageForCurrentTime message),
MediaPlayer::nativeImageForCurrentTime is used to get the video frame
image. We make this return an image with the right color space on
Apple platforms in PixelBufferConformerCV::createImageFromPixelBuffer.

For now, we avoid using the correct color space when passing
HTMLVideoElements to WebGLRenderingContext.texImage2D. The
specification is unclear about what color space the texture data
should be in, and implementations are currently interoperable in not
converting the RGB color space of the video (such as Rec.601, Rec.709,
etc.) into sRGB. To avoid the conversion, and effectively reinterpret
the video RGB colors as sRGB, we make the ImageBuffer the video is
drawn into have a matching color space, as it's the raw RGB values
from the ImageBuffer that are uploade as the texture.

(An alternative to this could be passing an argument through
nativeImageForCurrentTime and paintCurrentFrameInContext, which says
to avoid doing the conversion from video RGB to sRGB, but that needs a
fair amount of plumbing.)

If https://github.com/KhronosGroup/WebGL/issues/2165 is resolved, the
changes to LRUImageBufferCache in this commit can be reverted, so that
video frames are drawn into sRGB ImageBuffers again. (We'd also need
something to make the copyToPlatformTexture() call in
texImageSourceHelper do the correct color conversion somehow.)

The now differing behavior between CanvasRenderingContext2D.drawImage
and WebGLRenderingContext.texImage2D means that the WebGL conformance
suite textures/misc/texture-corner-case-videos.html test fails, since
it checks for incorrect 2D canvas video frame color conversion.

Tests: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html

imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::colorSpace const): New function that
exposes the color space of the current frame of the video.

  • html/HTMLVideoElement.h:
  • html/ImageBitmap.cpp:

(WebCore::ImageBitmap::createPromise): Create the ImageBuffer in a
color space that matches the video, not always sRGB.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::drawImageIntoBuffer):
(WebCore::WebGLRenderingContextBase::videoFrameToImage): Use an
ImageBuffer whose color space matches the video frame's color space.
(WebCore::WebGLRenderingContextBase::LRUImageBufferCache::imageBuffer):
Add a DestinationColorSpace argument, so that the LRU cache is keyed
off both size and color space.

  • html/canvas/WebGLRenderingContextBase.h:
  • platform/cocoa/CoreVideoSoftLink.cpp:
  • platform/cocoa/CoreVideoSoftLink.h: Add SPIs that let us get or

compute a CGColorSpace from a CVPixelBuffer. Remove
CVImageBufferGetColorSpace, which is unsused.

  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::colorSpace):

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::colorSpace):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::MediaPlayerPrivateAVFoundationCF::colorSpace):

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::colorSpace): Expose the
color space of the current image. While we strictly only need the pixel
buffer to be up to date, we call updateLastImage() since it has the
UpdateSynchronously behavior, and the caller to colorSpace() will use
the image soon anyway.

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

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::colorSpace):

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

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::colorSpace):

  • platform/graphics/cg/ColorSpaceCG.h:
  • platform/graphics/cv/CVUtilities.h:
  • platform/graphics/cv/CVUtilities.mm:

(WebCore::createCGColorSpaceForCVPixelBuffer): New function to produce
a CGColorSpace for a CVPixelBuffer. On macOS, this is stored as an
attachment on the CVPixelBuffer. On iOS, we must call SPI to create a
CGColorSpace based on the other color space information in the
attachments. (It's possible we should cache the results of this
function for a given set of color space attachments, since
CVImageBufferCreateColorSpaceFromAttachments can end up creating a new
CGColorSpace object every time it's called.)

  • platform/graphics/cv/PixelBufferConformerCV.cpp:

(WebCore::PixelBufferConformerCV::createImageFromPixelBuffer): Create
the CGImage in a color space matching the CVPixelBuffer.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::colorSpace):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/holepunch/MediaPlayerPrivateHolePunch.h:
  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::colorSpace):

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
  • platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:

(WebCore::MockMediaPlayerMediaSource::colorSpace):

  • platform/mock/mediasource/MockMediaPlayerMediaSource.h:
  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::drawInternal):

Source/WebKit:

When GPU process media handling is enabled, ctx.drawImage(video)
calls work by sending a NativeImageForCurrentTime message to the GPU
process, which returns an IOSurface around which a CGImage is created.
There's no good way to get the color space off the IOSurface, so we
add a second return argument to NativeImageForCurrentTime to indicate
the color space used.

ImageBitmap creates an ImageBuffer for that image to be painted into,
and for that we also need to know the color space of the video. The
code that sends NativeImageForCurrentTime and then paints the
resulting image into the GraphicsContext is further down. So we add
a separate IPC message that gets the color space of the video's
current frame. (It would be better if we could avoid a second
synchronous IPC message call, but either ImageBitmap's scaling and
cropping code, or the ImageBuffer creation call, would need to be moved
down into MediaPlayerPrivateRemote::paintCurrentFrameInContext, which
doesn't seem like the right place for it.)

  • GPUProcess/media/RemoteImageDecoderAVFProxy.cpp:

(WebKit::RemoteImageDecoderAVFProxy::createFrameImageAtIndex):

  • GPUProcess/media/RemoteImageDecoderAVFProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:

(WebKit::RemoteMediaPlayerProxy::nativeImageForCurrentTime):
(WebKit::RemoteMediaPlayerProxy::colorSpace):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::colorSpace):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:

(WebKit::MediaPlayerPrivateRemote::nativeImageForCurrentTime): Add a
second return argument to NativeImageForCurrentTime to indicate the
color space of the returned IOSurface.
(WebKit::MediaPlayerPrivateRemote::colorSpace): Add a new IPC message to
get the color space of a video's current frame.

Source/WTF:

  • wtf/PlatformHave.h: Add HAVE_CVBUFFERCOPYATTACHMENTS.

LayoutTests:

texture-corner-case-videos.html relies on incorrect color space handling
with drawImage() on a 2D canvas and so now fails.

  • platform/glib/TestExpectations:
  • platform/ios-14/TestExpectations:
  • platform/ios-device/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:

New tests pass only on macOS Monterey+ and iOS 15+.

  • fast/canvas/canvas-createPattern-video-loading-expected.txt:
  • fast/canvas/canvas-createPattern-video-loading.html:
  • fast/canvas/canvas-createPattern-video-modify-expected.txt:
  • fast/canvas/canvas-createPattern-video-modify.html:
  • media/video-canvas-createPattern-expected.txt:
  • media/video-canvas-createPattern.html:
  • media/video-canvas-drawing-output-expected.txt:
  • media/video-canvas-drawing-output.html:
  • media/video-orientation-canvas-expected.txt:
  • media/video-orientation-canvas.html:

Update some tests to check for correctly converted color values.

  • platform/mac/media/video-canvas-createPattern-expected.png: Removed.
  • platform/wpe/media/video-canvas-createPattern-expected.png: Removed.
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/canvas/element/manual/imagebitmap/createImageBitmap-flipY-expected.txt:

An existing failure that changed a bit. This is
https://bugs.webkit.org/show_bug.cgi?id=231001.

1:06 AM Changeset in webkit [284438] by Kyle Piddington
  • 5 edits in trunk/Source/WebCore

Query EGL_BIND_TO_TEXTURE_TARGET_ANGLE to determine 2D/rectangular texture usage
https://bugs.webkit.org/show_bug.cgi?id=231468

Refactor GraphicsContextGLCocoa to hold a reference to
BIND_TO_TEXTURE_TARGET. This refactor is neccesary to support dropping
TEXTURE_RECT support from the Metal backend, as support is incomplete, and unnecessary

Reviewed by Kenneth Russell.

  • Modules/webxr/WebXROpaqueFramebuffer.cpp:

(WebCore::WebXROpaqueFramebuffer::startFrame):

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::drawingBufferTextureTarget):
(WebCore::GraphicsContextGLOpenGL::drawingBufferTextureTargetQueryForDrawingTarget):
(WebCore::GraphicsContextGLOpenGL::EGLDrawingBufferTextureTargetForDrawingTarget):
(WebCore::GraphicsContextGLOpenGL::allocateAndBindDisplayBufferBacking):
(WebCore::GraphicsContextGLOpenGL::bindDisplayBufferBacking):
(WebCore::GraphicsContextGLOpenGL::readCompositedResults):
(WebCore::GraphicsContextGLOpenGL::drawingBufferTextureTargetQuery): Deleted.
(WebCore::GraphicsContextGLOpenGL::EGLDrawingBufferTextureTarget): Deleted.

  • platform/graphics/cv/GraphicsContextGLCVANGLE.cpp:

(WebCore::GraphicsContextGLCVANGLE::GraphicsContextGLCVANGLE):
(WebCore::GraphicsContextGLCVANGLE::copyPixelBufferToTexture):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
Note: See TracTimeline for information about the timeline view.