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

Timeline



Feb 13, 2022:

11:30 PM Changeset in webkit [289727] by Fujii Hironori
  • 5 edits
    2 deletes in trunk/LayoutTests

Delete fast/animation/request-animation-frame-disabled.html after RequestAnimationFrameEnabled setting is deleted
https://bugs.webkit.org/show_bug.cgi?id=236569

Reviewed by Ryosuke Niwa.

r288797 (Bug 235866) deleted RequestAnimationFrameEnabled setting.
We no longer need fast/animation/request-animation-frame-disabled.html
which tests disabling the setting.

  • fast/animation/request-animation-frame-disabled-expected.txt: Removed.
  • fast/animation/request-animation-frame-disabled.html: Removed.
  • platform/gtk/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
10:22 PM Changeset in webkit [289726] by Lauro Moura
  • 9 edits in trunk/Source

Unreviewed, non-unified build fixes
https://bugs.webkit.org/show_bug.cgi?id=236577

Source/JavaScriptCore:

  • heap/StructureAlignedMemoryAllocator.cpp: Add missing include.

Source/WebCore:

  • Modules/notifications/NotificationEvent.cpp: Missing include.
  • platform/graphics/ContentTypeUtilities.cpp: Namespace function.

(WebCore::contentTypeMeetsContainerAndCodecTypeRequirements):

  • workers/service/ServiceWorkerGlobalScope.cpp: Missing include.

Source/WebKit:

  • UIProcess/Notifications/ServiceWorkerNotificationHandler.h: Forward

declare.

  • UIProcess/WebProcessProxy.cpp: Missing include.
9:22 PM Changeset in webkit [289725] by ysuzuki@apple.com
  • 2 edits in trunk/Source/bmalloc

Unreviewed, fix Linux build of libpas part 2
https://bugs.webkit.org/show_bug.cgi?id=235347

  • libpas/src/libpas/pas_thread_local_cache.c:

(stop_allocator):

9:14 PM Changeset in webkit [289724] by ysuzuki@apple.com
  • 7 edits in trunk/Source/bmalloc

Unreviewed, fix Linux build of libpas
https://bugs.webkit.org/show_bug.cgi?id=235347

  • libpas/src/libpas/pas_committed_pages_vector.c:

(pas_committed_pages_vector_construct):

  • libpas/src/libpas/pas_committed_pages_vector.h:

(pas_committed_pages_vector_is_committed):

  • libpas/src/libpas/pas_local_view_cache.h:

(pas_local_view_cache_prepare_to_pop):

  • libpas/src/libpas/pas_segregated_heap.c:

(pas_segregated_heap_ensure_allocator_index):

  • libpas/src/libpas/pas_thread_local_cache.c:

(stop_allocator):

  • libpas/src/libpas/pas_try_allocate_primitive.h:

(pas_try_allocate_primitive_impl_casual_case):

7:49 PM Changeset in webkit [289723] by Andres Gonzalez
  • 4 edits in trunk/Source/WebCore

Decouple AXObjectCache handleChildrenChanged and postNotification.
https://bugs.webkit.org/show_bug.cgi?id=234059
<rdar://problem/86247404>

Reviewed by Chris Fleizach.

This fixes ~7 accessibility tests in isolated tree mode.
Also fixes flakiness in accessibility/dialog-showModal.html.

AXObjectCache::handleChildrenChanged was posting an AXChildrenChanged
notification (postNotification), which causes a double deferral of these
notifications, instead of actually handling the notification.
ChildrenChanged notifications should be handled before many other
notifications of property changes since they are DOM mutations, objects
added or removed, before properties in the resulting objects may be
updated. This patch fixes this problem by making handleChildrenChanged
to actually handle the notifications and update the isolated tree.
In addition, handling of the "open" attribute for <dialog> elements now
updates children, which fixes the flakiness observed in the
dialog-showModal.html test.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::handleChildrenChanged):
(WebCore::AXObjectCache::notificationPostTimerFired):
(WebCore::AXObjectCache::deferModalChange):
(WebCore::AXObjectCache::handleAttributeChange):
(WebCore::AXObjectCache::performCacheUpdateTimerFired):

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::collectNodeChangesForSubtree):
Removed alternative fix where we were processing the pending
ChildrenChanged Notifications before updating the isolated tree.

  • accessibility/isolatedtree/AXIsolatedTree.h:
5:52 PM Changeset in webkit [289722] by commit-queue@webkit.org
  • 25 edits
    4 adds
    2 deletes in trunk

Add support for parsing 'subgrid' in grid-template-columns/row
https://bugs.webkit.org/show_bug.cgi?id=236054

Patch by Matt Woodrow <Matt Woodrow> on 2022-02-13
Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

Imported lastest subgrid tests.

  • web-platform-tests/css/css-grid/subgrid/grid-template-computed-nogrid-expected.txt:
  • web-platform-tests/css/css-grid/subgrid/grid-template-computed-nogrid.html:
  • web-platform-tests/css/css-grid/subgrid/grid-template-invalid-expected.txt: Added.
  • web-platform-tests/css/css-grid/subgrid/grid-template-invalid.html:
  • web-platform-tests/css/css-grid/subgrid/grid-template-valid-expected.txt: Added.
  • web-platform-tests/css/css-grid/subgrid/grid-template-valid.html:

Source/WebCore:

Adds support for parsing the 'subgrid' keyword followed by a list of line names for
grid-template-columns/rows.
Adds a new CSSSubgridValue wrapper around CSSValueList to represent this.
Also adds support for converting this into style data in StyleBuilderConverter, and serializing
the specified value for computed value (used when the element specified subgrid but doesn't
have an appropriate grid parent).

Tests: imported/w3c/web-platform-tests/css/css-grid/subgrid/grid-template-invalid.html

imported/w3c/web-platform-tests/css/css-grid/subgrid/grid-template-valid.html

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

(WebCore::OrderedNamedLinesCollector::namedGridLineCount const):
(WebCore::addValuesForNamedGridLinesAtIndex):
(WebCore::populateSubgridLineNameList):
(WebCore::valueForGridTrackList):

  • css/CSSSubgridValue.cpp: Added.

(WebCore::CSSSubgridValue::customCSSText const):
(WebCore::CSSSubgridValue::CSSSubgridValue):

  • css/CSSSubgridValue.h: Added.
  • css/CSSValue.cpp:

(WebCore::CSSValue::equals const):
(WebCore::CSSValue::cssText const):
(WebCore::CSSValue::destroy):

  • css/CSSValue.h:

(WebCore::CSSValue::isSubgridValue const):

  • css/CSSValueKeywords.in:
  • css/parser/CSSParserContext.cpp:

(WebCore::operator==):
(WebCore::add):

  • css/parser/CSSParserContext.h:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeGridLineNames):
(WebCore::consumeSubgridNameRepeatFunction):
(WebCore::consumeGridTrackList):
(WebCore::consumeGridTemplatesRowsOrColumns):
(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::CSSPropertyParser::consumeGridTemplateRowsAndAreasAndColumns):
(WebCore::CSSPropertyParser::consumeGridTemplateShorthand):
(WebCore::CSSPropertyParser::consumeGridShorthand):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::gridSubgridRows const):
(WebCore::RenderStyle::gridSubgridColumns const):
(WebCore::RenderStyle::setGridSubgridRows):
(WebCore::RenderStyle::setGridSubgridColumns):

  • rendering/style/StyleGridData.cpp:

(WebCore::StyleGridData::StyleGridData):

  • rendering/style/StyleGridData.h:

(WebCore::StyleGridData::operator== const):

  • style/StyleBuilderConverter.h:

(WebCore::Style::createGridLineNamesList):
(WebCore::Style::BuilderConverter::createGridTrackList):

  • style/StyleBuilderCustom.h:

Source/WTF:

Adds a new experimental preference for subgrid support, disabled by default.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

Updated TestExpectations to list all the subgrid tests individually, now that we pass a few.

  • TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/css/css-grid/subgrid/grid-template-computed-nogrid-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-grid/subgrid/grid-template-computed-nogrid-expected.txt: Removed.
5:09 PM Changeset in webkit [289721] by beidson@apple.com
  • 72 edits
    1 copy
    6 adds in trunk

Implement ServiceWorkerRegistration.showNotification()
https://bugs.webkit.org/show_bug.cgi?id=22722

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/notifications/idlharness.https.any-expected.txt:
  • web-platform-tests/notifications/idlharness.https.any.serviceworker-expected.txt:

Source/WebCore:

Tests: http/tests/workers/service/shownotification-allowed.html

http/tests/workers/service/shownotification-denied.html

Previously ServiceWorkerRegistration.showNotification(), NotificationEvent, and onnotificationclicked/closed were stubbed out.
This patch hooks them up.

It's largely a plumbing patch, doing the following:

  • Making sure calls to-and-from NotificationClient happen on the correct threads
  • Making sure Notification related classes now understand how to cope with not having an associated WebPage(Proxy)
  • Making sure all of the relevant IPC machinery is in place to handle pageless notifications
  • Adds super useful logging
  • Modules/notifications/Notification.cpp:

(WebCore::Notification::show):
(WebCore::Notification::dispatchShowEvent):
(WebCore::Notification::dispatchClickEvent):
(WebCore::Notification::dispatchCloseEvent):

  • Modules/notifications/NotificationEvent.cpp:

(WebCore::NotificationEvent::create):
(WebCore::NotificationEvent::NotificationEvent):

  • Modules/notifications/NotificationEvent.h:
  • dom/EmptyScriptExecutionContext.h:
  • dom/ScriptExecutionContext.h:
  • page/RuntimeEnabledFeatures.h:
  • workers/WorkerOrWorkletGlobalScope.h:
  • workers/WorkerThread.h:
  • workers/service/ServiceWorkerGlobalScope.cpp:

(WebCore::ServiceWorkerGlobalScope::~ServiceWorkerGlobalScope):
(WebCore::ServiceWorkerGlobalScope::postTaskToFireNotificationEvent):

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

(WebCore::ServiceWorkerRegistration::showNotification):
(WebCore::ServiceWorkerRegistration::getNotifications):

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

(WebCore::ServiceWorkerThread::start):

  • workers/service/context/ServiceWorkerThreadProxy.h:
  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::registrationStoreDatabaseFailedToOpen):
(WebCore::SWServer::addRegistrationFromStore):
(WebCore::SWServer::addRegistration):
(WebCore::SWServer::processPushMessage):

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::getPendingPushMessages):
(WebKit::NetworkProcess::processPushMessage):

  • NetworkProcess/Notifications/NetworkNotificationManager.cpp:

(WebKit::NetworkNotificationManager::getPendingPushMessages):
(WebKit::NetworkNotificationManager::showNotification):

  • NetworkProcess/Notifications/NetworkNotificationManager.h:
  • Platform/Logging.h:
  • Shared/Notifications/NotificationManagerMessageHandler.h:
  • Shared/Notifications/NotificationManagerMessageHandler.messages.in:
  • Sources.txt:
  • UIProcess/API/APINotificationProvider.h:

(API::NotificationProvider::show):

  • UIProcess/API/C/WKNotificationManager.cpp:

(WKNotificationManagerGetSharedServiceWorkerNotificationManager):

  • UIProcess/API/C/WKNotificationManager.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(+[WKWebsiteDataStore _sharedServiceWorkerNotificationManager]):
(-[WKWebsiteDataStore _getPendingPushMessages:]):
(-[WKWebsiteDataStore _processPushMessage:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/API/glib/WebKitNotificationProvider.cpp:

(WebKitNotificationProvider::show):

  • UIProcess/API/glib/WebKitNotificationProvider.h:
  • UIProcess/Notifications/ServiceWorkerNotificationHandler.cpp: Added.

(WebKit::ServiceWorkerNotificationHandler::singleton):
(WebKit::ServiceWorkerNotificationHandler::ServiceWorkerNotificationHandler):
(WebKit::ServiceWorkerNotificationHandler::requestSystemNotificationPermission):
(WebKit::ServiceWorkerNotificationHandler::dataStoreForNotificationID):
(WebKit::ServiceWorkerNotificationHandler::showNotification):
(WebKit::ServiceWorkerNotificationHandler::cancelNotification):
(WebKit::ServiceWorkerNotificationHandler::clearNotifications):
(WebKit::ServiceWorkerNotificationHandler::didDestroyNotification):

  • UIProcess/Notifications/ServiceWorkerNotificationHandler.h: Copied from Source/WebKit/UIProcess/Notifications/WebNotificationManagerMessageHandler.h.
  • UIProcess/Notifications/WebNotification.cpp:

(WebKit::WebNotification::WebNotification):

  • UIProcess/Notifications/WebNotification.h:

(WebKit::WebNotification::create):
(WebKit::WebNotification::sourceConnection const):

  • UIProcess/Notifications/WebNotificationManagerMessageHandler.cpp:

(WebKit::WebNotificationManagerMessageHandler::showNotification):

  • UIProcess/Notifications/WebNotificationManagerMessageHandler.h:
  • UIProcess/Notifications/WebNotificationManagerProxy.cpp:

(WebKit::WebNotificationManagerProxy::sharedServiceWorkerManager):
(WebKit::identifierForPagePointer):
(WebKit::WebNotificationManagerProxy::show):
(WebKit::WebNotificationManagerProxy::cancel):
(WebKit::WebNotificationManagerProxy::didDestroyNotification):
(WebKit::WebNotificationManagerProxy::clearNotifications):
(WebKit::WebNotificationManagerProxy::providerDidShowNotification):
(WebKit::dispatchDidClickNotification):
(WebKit::WebNotificationManagerProxy::providerDidClickNotification):
(WebKit::WebNotificationManagerProxy::providerDidCloseNotifications):
(WebKit::WebNotificationManagerProxy::providerDidUpdateNotificationPolicy):
(WebKit::WebNotificationManagerProxy::providerDidRemoveNotificationPolicies):
(WebKit::pageIDsMatch): Deleted.
(WebKit::pageAndNotificationIDsMatch): Deleted.

  • UIProcess/Notifications/WebNotificationManagerProxy.h:
  • UIProcess/Notifications/WebNotificationProvider.cpp:

(WebKit::WebNotificationProvider::show):

  • UIProcess/Notifications/WebNotificationProvider.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::showNotification):

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

(WebKit::WebProcessPool::establishServiceWorkerContextConnectionToNetworkProcess):

  • UIProcess/WebProcessPool.h:

(WebKit::WebProcessPool::sendToAllRemoteWorkerProcesses):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::disableRemoteWorkers):
(WebKit::WebProcessProxy::enableRemoteWorkers):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::showServiceWorkerNotification):
(WebKit::WebsiteDataStore::cancelServiceWorkerNotification):
(WebKit::WebsiteDataStore::clearServiceWorkerNotification):
(WebKit::WebsiteDataStore::didDestroyServiceWorkerNotification):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Notifications/WebNotificationManager.cpp:

(WebKit::WebNotificationManager::sendNotificationMessage):
(WebKit::WebNotificationManager::show):
(WebKit::WebNotificationManager::cancel):
(WebKit::WebNotificationManager::didDestroyNotification):
(WebKit::WebNotificationManager::didShowNotification):
(WebKit::WebNotificationManager::didClickNotification):
(WebKit::WebNotificationManager::didCloseNotifications):
(WebKit::sendNotificationMessage): Deleted.

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

(WebKit::WebNotificationClient::WebNotificationClient):
(WebKit::WebNotificationClient::~WebNotificationClient):
(WebKit::WebNotificationClient::show):
(WebKit::WebNotificationClient::cancel):
(WebKit::WebNotificationClient::notificationObjectDestroyed):
(WebKit::WebNotificationClient::notificationControllerDestroyed):
(WebKit::WebNotificationClient::requestPermission):
(WebKit::WebNotificationClient::checkPermission):

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Tools:

To reliably support testing ServiceWorker notifications, TestRunner needed to actually grant/deny permissions in the UI process
like a proper NotificationProvider would.

It also has to understand showing a notification without an associated WKPage.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::postSimulateWebNotificationClickForServiceWorkerNotifications):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.h:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::grantWebNotificationPermission):
(WTR::TestRunner::denyWebNotificationPermission):
(WTR::TestRunner::simulateWebNotificationClickForServiceWorkerNotifications):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::generatePageConfiguration):
(WTR::TestController::grantNotificationPermission):
(WTR::TestController::denyNotificationPermission):
(WTR::TestController::simulateWebNotificationClickForServiceWorkerNotifications):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/WebNotificationProvider.cpp:

(WTR::WebNotificationProvider::WebNotificationProvider):
(WTR::notificationManagerForPage):
(WTR::WebNotificationProvider::showWebNotification):
(WTR::WebNotificationProvider::addNotificationManager):
(WTR::WebNotificationProvider::notificationPermissions):
(WTR::WebNotificationProvider::setPermission):
(WTR::WebNotificationProvider::simulateWebNotificationClickForServiceWorkerNotifications):
(WTR::WebNotificationProvider::reset):

  • WebKitTestRunner/WebNotificationProvider.h:

LayoutTests:

Test a ServiceWorker showing a notification both when it's allowed and when it's denied.

  • http/tests/workers/service/resources/shownotification-worker.js: Added.

(async const):
(let.messageClients):
(async event):

  • http/tests/workers/service/shownotification-allowed-expected.txt: Added.
  • http/tests/workers/service/shownotification-allowed.html: Added.
  • http/tests/workers/service/shownotification-denied-expected.txt: Added.
  • http/tests/workers/service/shownotification-denied.html: Added.
1:07 PM Changeset in webkit [289720] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix the internal macOS build

Add some missing WebCore namespaces (which are presumably now necessary due to changes in unified source
groupings).

  • UIProcess/mac/DisplayCaptureSessionManager.mm:

(WebKit::alertForWindowSelection):
(WebKit::DisplayCaptureSessionManager::deviceSelectedForTesting):
(WebKit::DisplayCaptureSessionManager::showWindowPicker):
(WebKit::DisplayCaptureSessionManager::showScreenPicker):
(WebKit::DisplayCaptureSessionManager::isAvailable):

12:48 PM Changeset in webkit [289719] by Andres Gonzalez
  • 5 edits in trunk/LayoutTests

Fix for accessibility/image-map1.html in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=236565
<rdar://problem/88874467>

Reviewed by Darin Adler.

Don't use focus manipulation just to retrieve an accessible element,
instead use accessibilityElementById. Updated the outdated code in this
test.

  • accessibility/image-map1-expected.txt:
  • accessibility/image-map1.html:
  • platform/glib/accessibility/image-map1-expected.txt:
  • platform/win/accessibility/image-map1-expected.txt:
12:26 PM Changeset in webkit [289718] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Add comment on how StructureMemoryManager grows the free list when there are no free blocks.
https://bugs.webkit.org/show_bug.cgi?id=236568

Reviewed by Saam Barati.

Also, use uint8_t* rather than rely on the fact that sizeof(MarkedBlock) == 1.

  • heap/StructureAlignedMemoryAllocator.cpp:

(JSC::StructureMemoryManager::tryMallocStructureBlock):

12:22 PM Changeset in webkit [289717] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Make StructureMemoryManager alignment assert a RELEASE_ASSERT
https://bugs.webkit.org/show_bug.cgi?id=236567

Reviewed by Saam Barati.

Also, check the structure base pointer is non-zero.

  • heap/StructureAlignedMemoryAllocator.cpp:

(JSC::StructureMemoryManager::StructureMemoryManager):

10:06 AM Changeset in webkit [289716] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Not all atomic inline level boxes need ideographic baseline when in vertical writing mode
https://bugs.webkit.org/show_bug.cgi?id=236556

Reviewed by Antti Koivisto.

Replaced boxes and orthogonal inline-block containers should use ideographic type of baseline.
(e.g. can't sync baselines coming from orthogonal inline-blocks.)

  • layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:

(WebCore::Layout::LineBoxBuilder::adjustIdeographicBaselineIfApplicable):

9:53 AM Changeset in webkit [289715] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

Unreviewed, gtk buildfix after r289706
https://bugs.webkit.org/show_bug.cgi?id=236563

  • Headers.cmake:
9:41 AM Changeset in webkit [289714] by Alan Bujtas
  • 5 edits in trunk

[LFC][IFC] Take writing direction into account when setting up the root geometry
https://bugs.webkit.org/show_bug.cgi?id=236548

Reviewed by Antti Koivisto.

Source/WebCore:

This fixes cases when the root block container itself is in a vertical writing context.
<div style="writing-mode: vertical-rl">

<div style="display: inline-block; padding: 10px">vertical content</div>

</div>

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::updateFormattingRootGeometryAndInvalidate):

LayoutTests:

  • platform/mac/fast/text/international/bidi-layout-across-linebreak-expected.txt: Progressions.
  • platform/mac/fast/text/international/bidi-override-expected.txt:
8:00 AM Changeset in webkit [289713] by Andres Gonzalez
  • 6 edits
    2 adds in trunk

Expose the correct role, subrole and role description properties for the <dialog> element.
https://bugs.webkit.org/show_bug.cgi?id=236359

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/dialog-properties.html

Elements with role="dialog" are exposed to accessibility clients with
role AXGroup, subrole AXApplicationDialog and role description
"web dialog". This patch implements this behavior for the <dialog>
element.

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::determineAccessibilityRoleFromNode const):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::defaultObjectInclusion const):

LayoutTests:

Tests that these AX properties have the expected values both when the
dialog is shown modal or modeless.

  • accessibility/dialog-properties-expected.txt: Added.
  • accessibility/dialog-properties.html: Added.
6:56 AM Changeset in webkit [289712] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][Integration] Introduce Box::ElementType::IntegrationInlineBlock
https://bugs.webkit.org/show_bug.cgi?id=236554

Reviewed by Antti Koivisto.

This is in preparation for adding vertical baseline support for inline-block boxes with alphabetic baseline.
The integration tree builder constructs Replaced layout boxes for both inline-block and replaced types.
In LineBoxBuilder we need to be able to tell whether a particular inline level box is really a replaced
box or just an inline-block in order to assign the correct type of baseline (alphabetic/ideographic).

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::BoxTree):
(WebCore::LayoutIntegration::BoxTree::buildTree):

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::Box): Let's use the ElementType for the integration root too.

  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::isIntegrationBlockContainer const):
(WebCore::Layout::Box::isIntegrationInlineBlock const):
(WebCore::Layout::Box::setIsAnonymous):
(WebCore::Layout::Box::setIsIntegrationBlockContainer): Deleted.

6:55 AM Changeset in webkit [289711] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Pass in the correct LineDirectionMode value to RenderBoxModelObject::baselinePosition
https://bugs.webkit.org/show_bug.cgi?id=236552

Reviewed by Antti Koivisto.

This is when setting up the BoxGeometry for the atomic inline level boxes.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::updateLayoutBoxDimensions):

6:53 AM Changeset in webkit [289710] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Add missing bidi vertical adjustment when writing mode is not horizontal
https://bugs.webkit.org/show_bug.cgi?id=236551

Reviewed by Antti Koivisto.

Last 2 missing vertical adjustments.

  • layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):

6:48 AM Changeset in webkit [289709] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Baseline value is always logical
https://bugs.webkit.org/show_bug.cgi?id=236549

Reviewed by Antti Koivisto.

Callers expect the baseline value to be always logical.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::firstLineBaseline const):
(WebCore::LayoutIntegration::LineLayout::lastLineBaseline const):

6:39 AM Changeset in webkit [289708] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix build when ATSPI is disabled

  • platform/graphics/PlatformDisplay.cpp: The ATK code also makes use of GUniqueOutPtr, so

include the corresponding header.

6:38 AM Changeset in webkit [289707] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Take writing mode value into account setting vertical margin
https://bugs.webkit.org/show_bug.cgi?id=236538

Reviewed by Antti Koivisto.

Line layout works with logical values.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::horizontalLogicalMargin):
(WebCore::LayoutIntegration::verticalLogicalMargin):
(WebCore::LayoutIntegration::LineLayout::updateLayoutBoxDimensions):
(WebCore::LayoutIntegration::LineLayout::updateInlineBoxDimensions):
(WebCore::LayoutIntegration::logicalMargin): Deleted.

4:21 AM Changeset in webkit [289706] by Antti Koivisto
  • 10 edits
    1 add in trunk/Source/WebCore

[CSS Container Queries] Add separate ContainerQuery and FilteredContainerQuery types
https://bugs.webkit.org/show_bug.cgi?id=236515

Reviewed by Alan Bujtas.

ContainerQuery is just a type alias to MediaQuerySet for now.
FilteredContainerQuery is a ContainerQuery plus name filter (type filter coming later).

  • WebCore.xcodeproj/project.pbxproj:
  • css/ContainerQuery.h: Added.

Move to a file of its own.

  • css/StyleRule.cpp:

(WebCore::StyleRuleContainer::StyleRuleContainer):
(WebCore::StyleRuleContainer::create):

  • css/StyleRule.h:
  • style/ContainerQueryEvaluator.cpp:

(WebCore::Style::ContainerQueryEvaluator::evaluate const):

  • style/ContainerQueryEvaluator.h:
  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::containerQueryMatches):

  • style/ElementRuleCollector.h:
  • style/RuleSet.h:

(WebCore::Style::RuleSet::containerQueryFor const):

  • style/RuleSetBuilder.cpp:

(WebCore::Style::RuleSetBuilder::addChildRules):

Feb 12, 2022:

11:11 PM Changeset in webkit [289705] by ntim@apple.com
  • 2 edits in trunk/LayoutTests

Skip imported/w3c/web-platform-tests/url/toascii.window.html on Catalina/Big Sur

Unreviewed test gardening.

  • platform/mac/TestExpectations:
9:42 PM Changeset in webkit [289704] by commit-queue@webkit.org
  • 2 edits in trunk/Source/bmalloc

Fix typos in libpas docs
https://bugs.webkit.org/show_bug.cgi?id=236550

Patch by Brandon Stewart <Brandon> on 2022-02-12
Reviewed by Yusuke Suzuki.

Fix several typos in libpas documentation.

  • libpas/Documentation.md:
5:18 PM Changeset in webkit [289703] by Jonathan Bedard
  • 2 edits in trunk/Tools

[run-webkit-tests] Do not try and read from /dev/null
https://bugs.webkit.org/show_bug.cgi?id=236528
<rdar://problem/88836868>

Reviewed by Alexey Proskuryakov.

While writing to /dev/null is well defined, reading from it is not. Do not
read from /dev/null.

  • Scripts/webkitpy/layout_tests/servers/websocket_server.py:

(PyWebSocket.init): Delete _wsin.
(PyWebSocket._prepare_config): Ditto.
(PyWebSocket._spawn_process): Use executive.PIPE instead of os.devnull.
(PyWebSocket._stop_running_server): Delete _wsin.

5:05 PM Changeset in webkit [289702] by commit-queue@webkit.org
  • 10 edits
    3 adds in trunk/Source/WebKit

Update preference location used for CaptivePortalMode.
https://bugs.webkit.org/show_bug.cgi?id=236135
<rdar://problem/88486544>

Patch by Gavin Phillips <gavin.p@apple.com> on 2022-02-12
Reviewed by Geoffrey Garen.

  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • UIProcess/API/Cocoa/_WKSystemPreferences.h: Added.
  • UIProcess/API/Cocoa/_WKSystemPreferences.mm: Added.

(+[_WKSystemPreferences isCaptivePortalModeEnabled]):
(+[_WKSystemPreferences setCaptivePortalModeEnabled:]):
(+[_WKSystemPreferences isCaptivePortalModeIgnored:]):
(+[_WKSystemPreferences setCaptivePortalModeIgnored:ignore:]):

  • UIProcess/API/Cocoa/_WKSystemPreferencesInternal.h: Added.
  • UIProcess/Cocoa/PreferenceObserver.mm:

(-[WKUserDefaults findPreferenceChangesAndNotifyForKeys:toValuesForKeys:]):

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::captivePortalModeConfigUpdateCallback):
(WebKit::WebProcessPool::registerNotificationObservers):
(WebKit::WebProcessPool::unregisterNotificationObservers):
(WebKit::isCaptivePortalModeEnabledBySystemIgnoringCaching):
(WebKit::WebProcessPool::notifyPreferencesChanged):

  • UIProcess/WebProcessPool.h:
  • UIProcess/mac/DisplayCaptureSessionManager.h:
  • UIProcess/mac/DisplayCaptureSessionManager.mm:

(WebKit::DisplayCaptureSessionManager::promptForGetDisplayMedia):

  • WebKit.xcodeproj/project.pbxproj:
2:57 PM Changeset in webkit [289701] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[macOS] Use system window and screen picker when available
https://bugs.webkit.org/show_bug.cgi?id=236531
rdar://87111816

Unreviewed build fix.

  • platform/mediastream/mac/ScreenCaptureKitSharingSessionManager.mm:

(WebCore::ScreenCaptureKitSharingSessionManager::takeSharingSessionForFilter):

2:44 PM Changeset in webkit [289700] by ysuzuki@apple.com
  • 4 edits
    2 adds in trunk

WebGL2 AllowShared TypedArray should be accepted
https://bugs.webkit.org/show_bug.cgi?id=232662

Reviewed by Dean Jackson.

Source/WebCore:

Test: webgl/webgl-allow-shared-typed-array.html

TypedArray with [AllowShared] annotation is not handled properly, which results in handling it as Sequence<T>,
invoking iteration protocol to copy them. This patch adds that as the same to [AllowShared] ArrayBuffer / ArrayBufferView.

  • bindings/IDLTypes.h:
  • bindings/js/JSDOMConvertUnion.h:

LayoutTests:

  • webgl/webgl-allow-shared-typed-array-expected.txt: Added.
  • webgl/webgl-allow-shared-typed-array.html: Added.
1:33 PM Changeset in webkit [289699] by ntim@apple.com
  • 4 edits
    1 delete in trunk/LayoutTests

Unreviewed test gardening: imported/w3c/web-platform-tests/url/toascii.window.html

LayoutTests/imported/w3c:

  • web-platform-tests/url/toascii.window-expected.txt:

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/url/toascii.window-expected.txt: Removed.
  • platform/mac/TestExpectations:
11:25 AM Changeset in webkit [289698] by Patrick Angle
  • 11 edits in trunk/Source/WebCore

Web Inspector: [Flexbox] Show item bounds, gaps, and free space in flex overlays
https://bugs.webkit.org/show_bug.cgi?id=236410

Reviewed by Devin Rousso.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::flexibleBoxRendererBeganLayoutImpl):
(WebCore::InspectorInstrumentation::flexibleBoxRendererWrappedToNextLineImpl):
(WebCore::InspectorInstrumentation::instrumentingAgents):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::flexibleBoxRendererBeganLayout):
(WebCore::InspectorInstrumentation::flexibleBoxRendererWrappedToNextLine):

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorDOMAgent::reset):
(WebCore::InspectorDOMAgent::flexibleBoxRendererBeganLayout):
(WebCore::InspectorDOMAgent::flexibleBoxRendererWrappedToNextLine):
(WebCore::InspectorDOMAgent::flexibleBoxRendererCachedItemsAtStartOfLine):

  • inspector/agents/InspectorDOMAgent.h:
  • Add instrumentation points specifically for flexbox renderers to keep track of which items start a new line

inside flex containers. The start of the first line is not recorded because it will always be zero.

(WebCore::InspectorDOMAgent::didCreateFrontendAndBackend):

  • Force a layout of the document to ensure that our collection of flexbox line starts is correctly populated

when attaching an inspector, since without an inspector this information is not kept beyond layout.

  • inspector/InspectorOverlay.cpp:

(WebCore::drawLayoutPattern):

  • Generalize drawLayoutHatching to support different line styles in order to support the new stippling fill.
  • In order to support "flipping" the pattern we now use a rectangle encompassing the provided quad as the edges

we follow for filling the pattern (the existing clipping ensures that the final product is still within the
quad). This also resolves an issue that could occur in transformed containers (non-rectangular) where the
spacing was inconsistent at different rotations/perspectives.

(WebCore::drawLayoutStippling):

  • A new dot-pattern effect similar to hatching, but using small dots to fill the space instead.

(WebCore::drawLayoutHatching):

  • Updated to use the new generic drawLayoutPattern helper.

(WebCore::InspectorOverlay::drawFlexOverlay):
(WebCore::InspectorOverlay::buildFlexOverlay):

  • Handle iterating through the flex children to show their bounds as well as the spacing/gaps between them.

Almost all this work is done in relative terms, like leading/trailing/cross-axis/main-axis to make it easier to
reason about what should happen for different writing modes, text direction, flex direction, and flex wrapping.
To accomplish this coordinates of children are read through special corrected* helper functions that take in
to account the determined direction, main-axis reversal, and cross axis-reversal from all of the relevant
properties. This means there are only 8 (23) actual permutations of flex layout (since the layout inside each
individual child is irrelevant here). Throughout we are working with flex children frames that are relative to
their parent, which saves us from having to deal with transforms until after we have constructed most of our
overlay representation, only needing to be passed through childQuadToRootQuad before being added to the
appropriate part of the highlight object.

  • inspector/InspectorOverlay.h:

(WebCore::InspectorOverlay::Highlight::FlexHighlightOverlay::encode const):
(WebCore::InspectorOverlay::Highlight::FlexHighlightOverlay::decode):

  • rendering/RenderBox.h:

(WebCore::RenderBox::marginBox const):

  • Add a way to get the entire margin box instead of its individual components.
  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::layoutFlexItems):

  • rendering/RenderFlexibleBox.h:
  • Make getting the computed inter-item and inter-line gap public so we can use them in the overlay.
  • Add instrumentation calls to keep track of the indexes of items that start a new line during layout when an

Inspector is attached.

  • platform/LayoutUnit.h:

(WebCore::operator!=):

10:16 AM Changeset in webkit [289697] by jer.noble@apple.com
  • 33 edits
    11 adds in trunk

Add settings to restrict media containers and codecs when in Captive Portal mode
https://bugs.webkit.org/show_bug.cgi?id=236245

Reviewed by Eric Carlson.

Source/WebCore:

Tests: media/media-allowed-codecs.html

media/media-allowed-containers.html
media/media-source/media-source-allowed-codecs.html
media/media-source/media-source-allowed-containers.html

Add settings at the WebCore level to optionally declare a list of container types,
video codecs, audio codecs, and caption formats to allow when loading media through
HTMLMediaElement and MediaSource.

There are some cases where the codec ID, typically a four-character-code embedded
in the container itself, does not match the RFC4281 codec string. Notably, this is the case
with "mp4a.40" and 'aac '. So the settings must include both the codec ID and the codec
type in string form.

Query these lists in HTMLMediaElement::canPlayType() and MediaSource::isTypeSupported()
and reject ContentTypes which do not conform to the allowed types.

Query these lists in MediaSource::changeType() to disallow switching to an unsupported
ContentType.

If these lists are set, pass them into AVURLAsset as creation options.

When a new AVAssetTrack is loaded, query these lists and if the track's type does not
conform to the allowed types, synthesize an error and block further loading.

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::isTypeSupported):

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::changeType):
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveInitializationSegment):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::canPlayType const):
(WebCore::HTMLMediaElement::allowedMediaContainerTypes const):
(WebCore::HTMLMediaElement::allowedMediaCodecTypes const):
(WebCore::HTMLMediaElement::allowedMediaVideoCodecTypes const):
(WebCore::HTMLMediaElement::allowedMediaAudioCodecTypes const):
(WebCore::HTMLMediaElement::allowedMediaCaptionFormatTypes const):

  • html/HTMLMediaElement.h:
  • page/SettingsBase.cpp:

(WebCore::SettingsBase::setAllowedMediaContainerTypes):
(WebCore::SettingsBase::setAllowedMediaVideoCodecTypes):
(WebCore::SettingsBase::setAllowedMediaAudioCodecTypes):
(WebCore::SettingsBase::setAllowedMediaCaptionFormatTypes):

  • page/SettingsBase.h:

(WebCore::SettingsBase::setAllowedMediaContainerTypes):
(WebCore::SettingsBase::allowedMediaContainerTypes const):
(WebCore::SettingsBase::setAllowedMediaVideoCodecTypes):
(WebCore::SettingsBase::allowedMediaVideoCodecTypes const):
(WebCore::SettingsBase::setAllowedMediaAudioCodecTypes):
(WebCore::SettingsBase::allowedMediaAudioCodecTypes const):
(WebCore::SettingsBase::setAllowedMediaCaptionFormatTypes):
(WebCore::SettingsBase::allowedMediaCaptionFormatTypes const):

  • platform/graphics/ContentTypeUtilities.cpp: Added.

(WebCore::contentTypesToCodecs):
(WebCore::contentTypeMeetsContainerAndCodecTypeRequirements):

  • platform/graphics/ContentTypeUtilities.h: Added.
  • platform/graphics/FourCC.h:

(WebCore::FourCC::encode const):
(WebCore::FourCC::decode):

  • platform/graphics/MediaPlayer.cpp:

(WebCore::nullOptionalStringVector):
(WebCore::nullOptionalFourCCVector):
(WebCore::MediaPlayer::nextBestMediaEngine):
(WebCore::MediaPlayer::allowedMediaContainerTypes const):
(WebCore::MediaPlayer::allowedMediaVideoCodecTypes const):
(WebCore::MediaPlayer::allowedMediaAudioCodecTypes const):
(WebCore::MediaPlayer::allowedMediaCaptionFormatTypes const):

  • platform/graphics/MediaPlayer.h:

(WebCore::MediaEngineSupportParameters::encode const):
(WebCore::MediaEngineSupportParameters::decode):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:

(WebCore::MediaPlayerPrivateAVFoundation::loadingMetadata const):

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

(WebCore::contentTypesToCodecs): Deleted.

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):
(WebCore::MediaPlayerPrivateAVFoundationObjC::allTracksArePlayable const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::trackIsPlayable const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::assetStatus const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::supportsTypeAndCodecs):
(WebCore::assetTrackMetadataKeyNames):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::setAllowedMediaContainerTypes):
(WebCore::InternalSettings::setAllowedMediaVideoCodecTypes):
(WebCore::InternalSettings::setAllowedMediaAudioCodecTypes):
(WebCore::InternalSettings::setAllowedMediaCaptionFormatTypes):

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

Source/WebCore/PAL:

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

Source/WebKit:

RemoteMediaPlayerManager caches the results of supportsTypeAndCodecs() calls, which
is problematic when those results can change due to a change in settings. So enforce
the allowed codec and containers settings at the RemoteMediaPlayerManager level. Also,
pass those settings across the GPU process boundary via RemoteMediaPlayerProxyConfiguration.

Drive-by fix: refactor RemoteMediaPlayerProxyConfiguration::decode() so as not to require
re-declaring the types of every ivar, and greatly simplify the implementation.

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxyConfiguration.h:

(WebKit::RemoteMediaPlayerProxyConfiguration::encode const):
(WebKit::RemoteMediaPlayerProxyConfiguration::decode):

  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::createRemoteMediaPlayer):
(WebKit::RemoteMediaPlayerManager::supportsTypeAndCodecs):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Source/WTF:

  • Scripts/Preferences/WebPreferences.yaml:

LayoutTests:

  • media/media-allowed-codecs-expected.txt: Added.
  • media/media-allowed-codecs.html: Added.
  • media/media-allowed-containers-expected.txt: Added.
  • media/media-allowed-containers.html: Added.
  • media/media-source/media-source-allowed-codecs-expected.txt: Added.
  • media/media-source/media-source-allowed-codecs.html: Added.
  • media/media-source/media-source-allowed-containers-expected.txt: Added.
  • media/media-source/media-source-allowed-containers.html: Added.
8:08 AM Changeset in webkit [289696] by eric.carlson@apple.com
  • 17 edits
    3 adds in trunk/Source

[macOS] Use system window and screen picker when available
https://bugs.webkit.org/show_bug.cgi?id=236531
rdar://87111816

Reviewed by Jer Noble.

Source/WebCore:

Tested manually.

  • SourcesCocoa.txt: Add new files.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • en.lproj/Localizable.strings: Update prompts.
  • platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:

(WebCore::DisplayCaptureSourceCocoa::capturerConfigurationChanged): Allow a capturer
to notify the source of a configuration change.

  • platform/mediastream/cocoa/DisplayCaptureSourceCocoa.h:

(WebCore::CapturerObserver::capturerConfigurationChanged):

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

(-[WebCoreScreenCaptureKitHelper stream:didStopWithError:]): Forward delegate callbacks
to the capture source.
(-[WebCoreScreenCaptureKitHelper sessionDidEnd:]): Ditto.
(-[WebCoreScreenCaptureKitHelper sessionDidChangeContent:]): Ditto.
(-[WebCoreScreenCaptureKitHelper pickerCanceledForSession:]): Ditto.
(WebCore::ScreenCaptureKitCaptureSource::sessionDidChangeContent): React to a
reconfiguration.
(WebCore::ScreenCaptureKitCaptureSource::sessionDidEnd):
(WebCore::ScreenCaptureKitCaptureSource::startContentStream): Use the sharing
session manager when available.
(WebCore::ScreenCaptureKitCaptureSource::intrinsicSize const): Get the size from
the content when possible.

  • platform/mediastream/mac/ScreenCaptureKitSharingSessionManager.h: Added.

(WebCore::ScreenCaptureKitSharingSessionManager::SharingSessionObserver::operator== const):

  • platform/mediastream/mac/ScreenCaptureKitSharingSessionManager.mm: Added.

(-[WebDisplayMediaPromptHelper initWithCallback:]):
(-[WebDisplayMediaPromptHelper disconnect]):
(-[WebDisplayMediaPromptHelper startObservingSession:]):
(-[WebDisplayMediaPromptHelper stopObservingSession:]):
(-[WebDisplayMediaPromptHelper sessionDidEnd:]):
(-[WebDisplayMediaPromptHelper sessionDidChangeContent:]):
(-[WebDisplayMediaPromptHelper pickerCanceledForSession:]):
(WebCore::ScreenCaptureKitSharingSessionManager::isAvailable):
(WebCore::ScreenCaptureKitSharingSessionManager::singleton):
(WebCore::ScreenCaptureKitSharingSessionManager::ScreenCaptureKitSharingSessionManager):
(WebCore::ScreenCaptureKitSharingSessionManager::~ScreenCaptureKitSharingSessionManager):
(WebCore::ScreenCaptureKitSharingSessionManager::pickerCanceledForSession):
(WebCore::ScreenCaptureKitSharingSessionManager::sessionDidEnd):
(WebCore::ScreenCaptureKitSharingSessionManager::sessionDidChangeContent):
(WebCore::ScreenCaptureKitSharingSessionManager::showWindowPicker):
(WebCore::ScreenCaptureKitSharingSessionManager::showScreenPicker):
(WebCore::ScreenCaptureKitSharingSessionManager::promptForGetDisplayMedia):
(WebCore::ScreenCaptureKitSharingSessionManager::takeSharingSessionForFilter):

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/mac/ScreenCaptureKitSoftLink.h:
  • pal/mac/ScreenCaptureKitSoftLink.mm:
  • pal/spi/mac/ScreenCaptureKitSPI.h: Added.

Source/WebKit:

  • Platform/spi/Cocoa/SafeBrowsingSPI.h:
  • UIProcess/mac/DisplayCaptureSessionManager.mm:

(WebKit::DisplayCaptureSessionManager::alertForGetDisplayMedia): Update prompt strings.
(WebKit::DisplayCaptureSessionManager::showWindowPicker): Use capture session
manager when available.
(WebKit::DisplayCaptureSessionManager::showScreenPicker): Ditto.

Source/WTF:

  • wtf/PlatformHave.h: Define HAVE_SC_CONTENT_SHARING_SESSION.
7:48 AM Changeset in webkit [289695] by Adrian Perez de Castro
  • 2 edits in trunk/Source/JavaScriptCore

[CMake] REGRESSION(r289611): Debug builds fail linking binaries with ld.lld
https://bugs.webkit.org/show_bug.cgi?id=236506

Reviewed by Yusuke Suzuki.

  • jit/ThunkGenerators.cpp: Use .previous in inline assembler for thunks in order to ensure

that mixed emission of assembler code and variable definitions correctly puts each of them
in their rightful sections in the output object code.

7:42 AM Changeset in webkit [289694] by commit-queue@webkit.org
  • 10 edits in trunk

Invoke mouse hover delegate callback on iOS
https://bugs.webkit.org/show_bug.cgi?id=233018

Patch by Kevin Turner <kevin_turner@apple.com> on 2022-02-12
Reviewed by Tim Horton.

Source/WebKit:

Allow mouseDidMoveOverElement: callbacks on iOS with pointer support.

Test: iOSMouseSupport.MouseDidMoveOverElement

  • Shared/API/Cocoa/_WKHitTestResult.h:
  • Shared/API/Cocoa/_WKHitTestResult.mm:
  • Shared/API/Cocoa/_WKHitTestResultInternal.h:
  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::mouseDidMoveOverElement):
Convert the modifier flags from the hover event to UIKeyModifierFlags if not on macOS.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/iOSMouseSupport.mm:

(-[MouseSupportUIDelegate _webView:mouseDidMoveOverElement:withFlags:userInfo:]):
(-[MouseSupportUIDelegate setMouseDidMoveOverElementHandler:]):
(TEST):

7:34 AM Changeset in webkit [289693] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk

Suppress style invalidation when matching :checked
https://bugs.webkit.org/show_bug.cgi?id=235910

Patch by Rob Buis <rbuis@igalia.com> on 2022-02-12
Reviewed by Antti Koivisto.

Source/WebCore:

Suppress style invalidation when matching :checked for option elements.

Test: fast/selectors/has-select-option-crash.html

  • css/SelectorCheckerTestFunctions.h:

(WebCore::isChecked):

  • html/HTMLOptionElement.cpp:

(WebCore::HTMLOptionElement::selected const):
(WebCore::HTMLOptionElement::setSelectedState):

  • html/HTMLOptionElement.h:
  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::updateListItemSelectedStates):
(WebCore::HTMLSelectElement::recalcListItems const):

  • html/HTMLSelectElement.h:

LayoutTests:

  • fast/selectors/has-select-option-crash-expected.txt: Added.
  • fast/selectors/has-select-option-crash.html: Added.
7:29 AM Changeset in webkit [289692] by Cameron McCormack
  • 3 edits in trunk/Source/WebCore

Make WidgetHierarchyUpdatesSuspensionScope cheaper if it has nothing to do
https://bugs.webkit.org/show_bug.cgi?id=236486

Reviewed by Simon Fraser.

With content that does a lot of DOM manipulation, we can create and
destroy a WidgetHierarchyUpdatesSuspensionScope on the stack many times.
When this object has nothing to do, it calls an out of line function.
This patch pulls out the check for whether it needs to call
moveWidgets() into the inline destructor.

This is a 1% saving on the jQuery-TodoMVC subtest of Speedometer 2,
though the effect on the top line score is minimal.

  • rendering/RenderWidget.cpp:

(WebCore::WidgetHierarchyUpdatesSuspensionScope::moveWidgets):

  • rendering/RenderWidget.h:

(WebCore::WidgetHierarchyUpdatesSuspensionScope::~WidgetHierarchyUpdatesSuspensionScope):
(WebCore::WidgetHierarchyUpdatesSuspensionScope::scheduleWidgetToMove):

7:08 AM Changeset in webkit [289691] by Cameron McCormack
  • 2 edits in trunk/Source/WebCore

Look up InputTypeFactoryMap with an ASCII lowercase string instead of using a ASCIICaseInsensitiveHash
https://bugs.webkit.org/show_bug.cgi?id=236532

Reviewed by Myles C. Maxfield.

InputType::create looks up the InputTypeFactoryMap based on the
AtomString value of the <input type> attribute. The HashMap uses an
ASCIICaseInsensitiveHash, but the AtomStrings stored in the map are all
ASCII lowercase to begin with. This means that we spend time doing an
ASCII case insensitive hash computation on the query string. Most
content already supplies an ASCII lowercase type value, so it's less
work to ASCII lowercase the type value and then look up the HashMap
using the regular hash for AtomStrings (i.e., pulling the hash out of
AtomString).

Doing this is a 0.5% improvement on a couple of Speedometer 2 subtests,
and a 0.1% improvement to the overall score.

  • html/InputType.cpp:

(WebCore::InputType::create):

6:20 AM Changeset in webkit [289690] by aakash_jain@apple.com
  • 12 edits in trunk/Tools

Unreviewed, reverting r289687.
https://bugs.webkit.org/show_bug.cgi?id=236539

broke commit queue

Reverted changeset:

"git-webkit setup should allow changing the credentials"
https://bugs.webkit.org/show_bug.cgi?id=235297
https://commits.webkit.org/r289687

Patch by Commit Queue <commit-queue@webkit.org> on 2022-02-12

Note: See TracTimeline for information about the timeline view.