Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement PerformanceResourceTiming.workerStart in ServiceWorkers #1348

Conversation

youennf
Copy link
Contributor

@youennf youennf commented Jun 7, 2022

729991b

Implement PerformanceResourceTiming.workerStart in ServiceWorkers
https://bugs.webkit.org/show_bug.cgi?id=179377
rdar://problem/35391187

Patch by Youenn Fablet <youennf@gmail.com > on 2022-06-14
Reviewed by Alex Christensen.

Store the time when we are about to either fire the fetch event or run the service worker to fire the fetch event.
To do so, we store it in NetworkResourceLoader and send the value to WebResourceLoader.
In case of process swap, we send it back to the new WebResourceLoader.
WebResourceLoader is then responsible to update the network load metrics when receiving the response/finish load metrics.

Covered by updated tests.

* LayoutTests/http/wpt/service-workers/navigation-timing.https-expected.txt:
* LayoutTests/http/wpt/service-workers/navigation-timing.js:
(event.setTimeout):
* LayoutTests/http/wpt/service-workers/resources/navigation-timing-part-2.html:
* Source/WebCore/page/PerformanceResourceTiming.cpp:
(WebCore::PerformanceResourceTiming::workerStart const):
* Source/WebCore/platform/network/NetworkLoadMetrics.cpp:
(WebCore::NetworkLoadMetrics::updateFromFinalMetrics):
(WebCore::NetworkLoadMetrics::isolatedCopy const):
* Source/WebCore/platform/network/NetworkLoadMetrics.h:
(WebCore::NetworkLoadMetrics::encode const):
(WebCore::NetworkLoadMetrics::decode):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::transferToNewWebProcess):
(WebKit::NetworkResourceLoader::continueWillSendRequest):
(WebKit::NetworkResourceLoader::setWorkerStart):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.h:
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:
(WebKit::ServiceWorkerFetchTask::ServiceWorkerFetchTask):
* Source/WebKit/WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveResponse):
(WebKit::WebResourceLoader::didFinishResourceLoad):
* Source/WebKit/WebProcess/Network/WebResourceLoader.h:
(WebKit::WebResourceLoader::setWorkerStart):
* Source/WebKit/WebProcess/Network/WebResourceLoader.messages.in:

Canonical link: https://commits.webkit.org/251523@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295518 268f45cc-cd09-0410-ab3c-d52691b4dbfc

@youennf youennf self-assigned this Jun 7, 2022
@youennf youennf added WebKit Misc. For miscellaneous bugs in the WebKit framework (and not JavaScriptCore or WebCore). WebKit Nightly Build labels Jun 7, 2022
@youennf youennf marked this pull request as draft June 7, 2022 13:55
@youennf youennf force-pushed the eng/Implement-PerformanceResourceTiming-workerStart-in-ServiceWorkers branch 2 times, most recently from 37d55d9 to 00209cf Compare June 7, 2022 14:02
AndresGonzalezApple and others added 7 commits June 7, 2022 14:09
…solated tree mode.

https://bugs.webkit.org/show_bug.cgi?id=241240

Reviewed by Chris Fleizach and Tyler Wilcock.

This test was flaky in isolated tree mode.

* LayoutTests/accessibility/aria-toggle-button-with-title-expected.txt:
* LayoutTests/accessibility/aria-toggle-button-with-title.html:
* LayoutTests/platform/glib/accessibility/aria-toggle-button-with-title-expected.txt:

Canonical link: https://commits.webkit.org/251360@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295344 268f45cc-cd09-0410-ab3c-d52691b4dbfc
… iOS 16 and macOS Ventura

https://bugs.webkit.org/show_bug.cgi?id=241341
rdar://94446831

Reviewed by Eric Carlson.

Upstream several Live Text and visual intelligence-related features introduced in iOS 16 and macOS
Ventura. These features include:

- Visual translation for images on the page, during webpage translation
- Live Text on paused video elements
- Object lifting support (Copy Subject and Remove Background)
- List and rich text detection using Live Text

* Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml:
* Source/WTF/wtf/PlatformEnable.h:
* Source/WTF/wtf/PlatformHave.h:
* Source/WebCore/PAL/pal/cocoa/VisionKitCoreSoftLink.h:
* Source/WebCore/PAL/pal/cocoa/VisionKitCoreSoftLink.mm:
* Source/WebCore/PAL/pal/spi/cocoa/VisionKitCoreSPI.h:
* Source/WebCore/dom/TextEvent.h:
* Source/WebCore/dom/TextEventInputType.h:
* Source/WebCore/editing/EditAction.cpp:
(WebCore::undoRedoLabel):
* Source/WebCore/editing/EditAction.h:
* Source/WebCore/editing/Editor.cpp:
(WebCore::Editor::handleTextEvent):
(WebCore::Editor::pasteAsFragment):
(WebCore::Editor::replaceSelectionWithFragment):
* Source/WebCore/en.lproj/Localizable.strings:
* Source/WebCore/loader/EmptyClients.cpp:
* Source/WebCore/page/ContextMenuClient.h:
* Source/WebCore/page/ContextMenuController.cpp:
(WebCore::ContextMenuController::contextMenuItemSelected):
(WebCore::ContextMenuController::populate):
(WebCore::ContextMenuController::checkOrEnableIfNeeded const):
* Source/WebCore/page/EventHandler.cpp:
(WebCore::EventHandler::textRecognitionCandidateElement const):
* Source/WebCore/page/ImageAnalysisQueue.cpp:
(WebCore::ImageAnalysisQueue::enqueueAllImages):
(WebCore::ImageAnalysisQueue::resumeProcessing):
(WebCore::ImageAnalysisQueue::clear):
* Source/WebCore/page/ImageAnalysisQueue.h:
* Source/WebCore/platform/ContextMenuItem.cpp:
(WebCore::isValidContextMenuAction):
* Source/WebCore/platform/ContextMenuItem.h:
* Source/WebCore/platform/LocalizedStrings.h:
* Source/WebCore/platform/TextRecognitionOptions.h:
* Source/WebCore/platform/TextRecognitionResult.h:
* Source/WebCore/platform/cocoa/LocalizedStringsCocoa.mm:
(WebCore::contextMenuItemTagCopySubject):
(WebCore::contextMenuItemTitleRemoveBackground):
(WebCore::contextMenuItemTagCopyCroppedImage): Deleted.
(WebCore::contextMenuItemTitleMarkupImage): Deleted.
* Source/WebCore/platform/cocoa/TextRecognitionResultCocoa.mm:
(WebCore::stringForRange):
* Source/WebCore/testing/Internals.h:
* Source/WebKit/Platform/cocoa/ImageAnalysisUtilities.h:
* Source/WebKit/Platform/cocoa/ImageAnalysisUtilities.mm:
(WebKit::languageCodeForLocale):
(WebKit::supportsLiveText):
(WebKit::makeTextRecognitionResult):
(WebKit::shouldLogFullImageTranslationResults):
(WebKit::requestVisualTranslation):
(WebKit::requestBackgroundRemoval):
(WebKit::setUpAdditionalImageAnalysisBehaviors):
(WebKit::imageDataForRemoveBackground):
(WebKit::canStartImageAnalysis): Deleted.
(WebKit::textRecognitionEnhancementsSystemFeatureEnabled): Deleted.
(WebKit::imageAnalysisQueueSystemFeatureEnabled): Deleted.
(WebKit::isImageAnalysisMarkupSystemFeatureEnabled): Deleted.
(WebKit::imageDataForCroppedImageResult): Deleted.
* Source/WebKit/Shared/API/c/WKSharedAPICast.h:
(WebKit::toAPI):
(WebKit::toImpl):
* Source/WebKit/Shared/Cocoa/WebPreferencesDefaultValuesCocoa.mm:
(WebKit::defaultTextRecognitionInVideosEnabled):
(WebKit::defaultVisualTranslationEnabled):
(WebKit::defaultRemoveBackgroundEnabled):
(WebKit::defaultTextRecognitionEnhancementsEnabled): Deleted.
(WebKit::defaultImageAnalysisQueueEnabled): Deleted.
(WebKit::defaultImageAnalysisMarkupEnabled): Deleted.
* Source/WebKit/Shared/WebPreferencesDefaultValues.h:
* Source/WebKit/UIProcess/API/Cocoa/WKMenuItemIdentifiers.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _startImageAnalysis:target:]):
* Source/WebKit/UIProcess/API/Cocoa/_WKElementAction.mm:
(+[_WKElementAction _elementActionWithType:customTitle:assistant:]):
(elementActionTypeToUIActionIdentifier):
(uiActionIdentifierToElementActionType):
* Source/WebKit/UIProcess/Cocoa/WebViewImpl.h:
* Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::requestTextRecognition):
(WebKit::WebViewImpl::beginElementFullscreenVideoExtraction):
(WebKit::WebViewImpl::cancelElementFullscreenVideoExtraction):
(WebKit::WebViewImpl::installImageAnalysisOverlayView):
(WebKit::WebViewImpl::uninstallImageAnalysisOverlayView):
* Source/WebKit/UIProcess/PageClient.h:
(WebKit::PageClient::requestTextRecognition):
* Source/WebKit/UIProcess/WebContextMenuProxy.h:
(WebKit::WebContextMenuProxy::copySubjectResult const):
(WebKit::WebContextMenuProxy::croppedImageResult const): Deleted.
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::contextMenuItemSelected):
(WebKit::WebPageProxy::requestTextRecognition):
(WebKit::WebPageProxy::startVisualTranslation):
(WebKit::WebPageProxy::shouldAllowRemoveBackground):
(WebKit::WebPageProxy::startImageAnalysis): Deleted.
(WebKit::WebPageProxy::shouldAllowImageMarkup): Deleted.
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::requestTextRecognition):
* Source/WebKit/UIProcess/ios/WKActionSheetAssistant.h:
* Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant defaultActionsForLinkSheet:]):
(-[WKActionSheetAssistant defaultActionsForImageSheet:]):
(-[WKActionSheetAssistant handleElementActionWithType:element:needsInteraction:]):
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(canAttemptTextRecognitionForNonImageElements):
(-[WKContentView requestRectsToEvadeForSelectionCommandsWithCompletionHandler:]):
(-[WKContentView removeBackgroundMenu]):
(-[WKContentView doAfterComputingImageAnalysisResultsForBackgroundRemoval:]):
(-[WKContentView prepareSelectionForContextMenuWithLocationInView:completionHandler:]):
(-[WKContentView buildMenuForWebViewWithBuilder:]):
(-[WKContentView _setUpImageAnalysis]):
(-[WKContentView _tearDownImageAnalysis]):
(-[WKContentView requestTextRecognition:imageData:sourceLanguageIdentifier:targetLanguageIdentifier:completionHandler:]):
(-[WKContentView imageAnalysisGestureDidBegin:]):
(-[WKContentView _completeImageAnalysisRequestForContextMenu:requestIdentifier:hasTextResults:]):
(-[WKContentView imageAnalysisGestureDidTimeOut:]):
(-[WKContentView actionSheetAssistantShouldIncludeCopySubjectAction:]):
(-[WKContentView actionSheetAssistant:copySubject:sourceMIMEType:]):
(-[WKContentView beginFullscreenVideoExtraction:playerViewController:]):
(-[WKContentView cancelFullscreenVideoExtraction:]):
(-[WKContentView isFullscreenVideoExtractionEnabled]):
(-[WKContentView beginElementFullscreenVideoExtraction:bounds:]):
(-[WKContentView cancelElementFullscreenVideoExtraction]):
(-[WKContentView installImageAnalysisInteraction:]):
(-[WKContentView uninstallImageAnalysisInteraction]):
(-[WKContentView _shouldAvoidSecurityHeuristicScoreUpdates]):
(-[WKContentView imageAnalysisMarkupMenu]): Deleted.
(-[WKContentView doAfterComputingImageAnalysisResultsForMarkup:]): Deleted.
(-[WKContentView requestTextRecognition:imageData:source:target:completionHandler:]): Deleted.
(-[WKContentView actionSheetAssistantShouldIncludeCopyCroppedImageAction:]): Deleted.
(-[WKContentView actionSheetAssistant:copyCroppedImage:sourceMIMEType:]): Deleted.
* Source/WebKit/UIProcess/mac/PageClientImplMac.h:
* Source/WebKit/UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::requestTextRecognition):
* Source/WebKit/UIProcess/mac/WKSharingServicePickerDelegate.h:
* Source/WebKit/UIProcess/mac/WKSharingServicePickerDelegate.mm:
(-[WKSharingServicePickerDelegate removeBackground]):
(-[WKSharingServicePickerDelegate markupImage]): Deleted.
* Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h:
* Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::appendMarkupItemToControlledImageMenuIfNeeded):
(WebKit::WebContextMenuProxyMac::applyMarkupToControlledImage):
(WebKit::menuItemIdentifier):
(WebKit::WebContextMenuProxyMac::getContextMenuFromItems):
* Source/WebKit/UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::handleContextMenuCopySubject):
(WebKit::WebPageProxy::handleContextMenuCopyCroppedImage): Deleted.
* Source/WebKit/WebProcess/WebCoreSupport/WebContextMenuClient.h:
* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::replaceImageWithMarkupResults):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::requestTextRecognition):
(WebKit::WebPage::startVisualTranslation):
(WebKit::WebPage::shouldAllowRemoveBackground const):
(WebKit::WebPage::startImageAnalysis): Deleted.
(WebKit::WebPage::shouldAllowImageMarkup const): Deleted.
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
* Source/WebKitLegacy/mac/WebCoreSupport/WebContextMenuClient.h:
* Source/WebKitLegacy/mac/WebView/WebHTMLView.mm:
(toTag):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenVideoExtraction.mm:
(swizzledPresentViewController):
(swizzledProcessRequest):
(swizzledSetAnalysis):
(+[FullscreenVideoExtractionWebView create]):
(-[FullscreenVideoExtractionWebView initWithFrame:configuration:]):
(-[FullscreenVideoExtractionWebView loadVideoSource:]):
(-[FullscreenVideoExtractionWebView enterFullscreen]):
(-[FullscreenVideoExtractionWebView exitFullscreen]):
(-[FullscreenVideoExtractionWebView didChangeValueForKey:]):
(-[FullscreenVideoExtractionWebView pause]):
(-[FullscreenVideoExtractionWebView play]):
(-[FullscreenVideoExtractionWebView waitForVideoFrame]):
(-[FullscreenVideoExtractionWebView hasActiveImageAnalysis]):
(-[FullscreenVideoExtractionWebView waitForImageAnalysisToBegin]):
(-[FullscreenVideoExtractionWebView waitForImageAnalysisToEnd]):
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm:
(TestWebKitAPI::createWebViewWithTextRecognitionEnhancements):
(TestWebKitAPI::invokeRemoveBackgroundAction):
(TestWebKitAPI::TEST):
(TestWebKitAPI::invokeImageMarkupAction): Deleted.
* Tools/TestWebKitAPI/cocoa/ImageAnalysisTestingUtilities.h:
* Tools/TestWebKitAPI/cocoa/ImageAnalysisTestingUtilities.mm:
(-[FakeRemoveBackgroundResult initWithImage:cropRect:]):
(-[FakeRemoveBackgroundResult createCGImage]):
(-[FakeRemoveBackgroundResult cropRect]):
(TestWebKitAPI::makeRequestHandler):
(TestWebKitAPI::RemoveBackgroundSwizzler::RemoveBackgroundSwizzler):

Canonical link: https://commits.webkit.org/251361@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295346 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241341
rdar://94446831

Rename a couple of strings that I missed in the original upstreaming patch. These tests ran normally
for me on iOS 16 simulator, since these system feature flags were enabled by default; however, iOS
15 relies on these feature flags being enabled for the web view through preferences.

* Tools/TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm:
(-[TestWKWebView waitForImageAnalysisRequests:]):

Also, drive-by-fix a minor grammar error in a logging string.

(TestWebKitAPI::createWebViewWithTextRecognitionEnhancements):

Canonical link: https://commits.webkit.org/251362@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295347 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241354
<rdar://94470932>

Reviewed by Yusuke Suzuki.

Note that we're using the CODEOWNERS file to recommend reviewers. Individual
contributors in WebKit do not "own" components.

* .github/CODEOWNERS: Added.

Canonical link: https://commits.webkit.org/251363@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241317

Patch by Philippe Normand <philn@igalia.com> on 2022-06-07
Reviewed by Adrian Perez de Castro and Xabier Rodriguez-Calvar.

The atexit hook seems problematic for subprocesses, so try to kill the xdg-dbus-proxy process from
the WebKitFlatpak destructor instead.

* Tools/flatpak/flatpakutils.py:
(WebkitFlatpak.__init__):
(WebkitFlatpak):
(WebkitFlatpak.__del__):
(WebkitFlatpak.setup_a11y_proxy):

Canonical link: https://commits.webkit.org/251364@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295349 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241360

Reviewed by Cameron McCormack.

There are 2 reasons for moving it:
1. There are already layering violations where existing code in platform/ is calling into RenderTheme
       to get the contentSizeCategory.
2. For https://bugs.webkit.org/show_bug.cgi?id=237817, I'm going to be adding a new system font cache,
       and the most natural place to put it is in SystemFontDatabase in platform/. This new cache needs
       access to the contentSizeCategory, so contentSizeCategory needs to be in platform/.

This patch adds FontCacheCocoa.mm because the contentSizeCategory stuff is exposed via Objective-C, and
FontCacheCoreText.cpp is a C++ source.

* Source/WebCore/SourcesCocoa.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/graphics/cocoa/FontCacheCocoa.mm: Copied from Source/WebCore/rendering/RenderThemeCocoa.h.
(WebCore::getUIContentSizeCategoryDidChangeNotificationName):
(WebCore::_contentSizeCategory):
(WebCore::contentSizeCategory):
(WebCore::setContentSizeCategory):
* Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontCache::platformInit):
(WebCore::fontWithFamilySpecialCase):
* Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.h:
* Source/WebCore/platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:
(WebCore::SystemFontDatabaseCoreText::createTextStyleFont):
* Source/WebCore/rendering/RenderThemeCocoa.h:
* Source/WebCore/rendering/RenderThemeIOS.h:
* Source/WebCore/rendering/RenderThemeIOS.mm:
(WebCore::attachmentActionFont):
(WebCore::attachmentTitleFont):
(WebCore::attachmentDynamicTypeScaleFactor):
(WebCore::contentSizeCategoryDidChange): Deleted.
(WebCore::RenderThemeIOS::RenderThemeIOS): Deleted.
(WebCore::_contentSizeCategory): Deleted.
(WebCore::RenderThemeIOS::contentSizeCategory const): Deleted.
(WebCore::RenderThemeIOS::setContentSizeCategory): Deleted.
* Source/WebCore/rendering/RenderThemeMac.h:
* Source/WebCore/rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::contentSizeCategory const): Deleted.
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setContentSizeCategory):
* Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::contentSizeCategoryDidChange):
* Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
* Tools/TestWebKitAPI/Tests/ios/TextStyleFontSize.mm:
(TEST):

Canonical link: https://commits.webkit.org/251365@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295351 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241352

Reviewed by Kate Cheney.

Some of the calls to SecTrustEvaluate (in particular the one in ResourceResponseCocoa) are not made
with a corresponding call to SecTrustSetClientAuditToken. As a result, if trustd ends up making a
network request to fulfill that API request (e.g. for OCSP verification), the corresponding network
request is attributed to NetworkProcess rather than the UIProcess. This causes us to receive spurious
network usage regression bugs from the power team claiming that NetworkProcess (rather than UIProcess)
is making extra network requests if we happen to make a request that triggers OCSP verification.

To fix this, we added a call SecTrustSetClientAuditToken in ResourceResponse::platformCertificateInfo.

* Source/WTF/wtf/PlatformHave.h:
* Source/WTF/wtf/spi/cocoa/SecuritySPI.h:
* Source/WebCore/platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::includeCertificateInfo const):
* Source/WebCore/platform/network/ResourceResponseBase.h:
(WebCore::ResourceResponseBase::includeCertificateInfo):
(WebCore::ResourceResponseBase::platformCertificateInfo const):
* Source/WebCore/platform/network/cf/ResourceResponse.h:
* Source/WebCore/platform/network/cf/ResourceResponseCFNet.cpp:
(WebCore::ResourceResponse::platformCertificateInfo const):
* Source/WebCore/platform/network/cocoa/ResourceResponseCocoa.mm:
(WebCore::ResourceResponse::platformCertificateInfo const):
* Source/WebCore/platform/network/soup/ResourceResponse.h:
* Source/WebCore/platform/network/soup/ResourceResponseSoup.cpp:
(WebCore::ResourceResponse::platformCertificateInfo const):
* Source/WebKit/NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::notifyDidReceiveResponse):
* Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(NetworkSessionCocoa::setClientAuditToken):

Canonical link: https://commits.webkit.org/251366@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295357 268f45cc-cd09-0410-ab3c-d52691b4dbfc
@youennf youennf marked this pull request as ready for review June 7, 2022 17:53
karlrackler and others added 15 commits June 7, 2022 18:21
…zing/aspect-ratio/replaced-element-035.html is a flaky image failure

https://bugs.webkit.org/show_bug.cgi?id=241376
<rdar://94548274>

Unreviewed test gardening.

* LayoutTests/platform/mac-wk1/TestExpectations:

Canonical link: https://commits.webkit.org/251367@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295358 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…underline-outside-of-layout-rect-altered.html is a flaky image failure

https://bugs.webkit.org/show_bug.cgi?id=241377
<rdar://94550320>

Unreviewed test gardening.

* LayoutTests/platform/win/TestExpectations:

Canonical link: https://commits.webkit.org/251368@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295359 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241372
rdar://94540740

Reviewed by Tim Horton.

Upstream support for viewport and snapshotting behaviors that are specific to window resizing on
iPad, when Stage Manager is enabled. In particular, this merges the existing `MULTITASKING_MODE`
and `MAC_CATALYST_LIVE_RESIZE` feature flags into a single `UIKIT_RESIZABLE_WINDOWS` flag, which is
used to guard both snapshotting and viewport code.

* Source/WTF/wtf/PlatformHave.h:
* Source/WebKit/Platform/spi/ios/UIKitSPI.h:
* Source/WebKit/Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Source/WebKit/Shared/WebPageCreationParameters.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView dealloc]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.h:
* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView setFrame:]):
(-[WKWebView setBounds:]):
(-[WKWebView _registerForNotifications]):
(-[WKWebView _processWillSwapOrDidExit]):
(-[WKWebView didMoveToWindow]):
(-[WKWebView _isWindowResizingEnabled]):
(-[WKWebView _enhancedWindowingToggled:]):
(-[WKWebView _beginAnimatedResizeWithUpdates:]):
(-[WKWebView _multitaskingModeDidChange:]): Deleted.
* Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:
(-[WKWebView _hasResizeAssertion]):
* Source/WebKit/UIProcess/PageClient.h:
(WebKit::PageClient::hasResizableWindows const):
(WebKit::PageClient::isInMultitaskingMode const): Deleted.
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::setIsWindowResizingEnabled):
(WebKit::WebPageProxy::setIsInMultitaskingMode): Deleted.
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::hasResizableWindows const):
(WebKit::PageClientImpl::isInMultitaskingMode const): Deleted.
* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::isDesktopClassBrowsingRecommended const):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didCommitLoad):
(WebKit::WebPage::setIsWindowResizingEnabled):
(WebKit::WebPage::setIsInMultitaskingMode): Deleted.
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::dynamicViewportSizeUpdate):
(WebKit::WebPage::shouldEnableViewportBehaviorsForResizableWindows const):
(WebKit::WebPage::usesMultitaskingModeViewportBehaviors const): Deleted.

Canonical link: https://commits.webkit.org/251369@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295360 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs..webkit.org/show_bug.cgi?id=241202
rdar://problem/94251413

Patch by Zhifei Fang <facetothefate@gmail.com> on 2022-06-07
Reviewed by Jonathan Bedard.

* Tools/Scripts/hooks/prepare-commit-msg:

Canonical link: https://commits.webkit.org/251370@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295362 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…ping opportunities

https://bugs.webkit.org/show_bug.cgi?id=241375
<rdar://94516475>

Reviewed by Antti Koivisto.

This is a speculative fix to address the overflow issue in rebuildLineForTrailingSoftHyphen, where we assume a non-empty m_wrapOpportunityList vector.

* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp:
(WebCore::Layout::LineBuilder::handleInlineContent):
(WebCore::Layout::LineBuilder::rebuildLineForTrailingSoftHyphen):

Canonical link: https://commits.webkit.org/251371@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295363 268f45cc-cd09-0410-ab3c-d52691b4dbfc
… is a flaky crash

https://bugs.webkit.org/show_bug.cgi?id=241382
<rdar://94559821>

Unreviewed test gardening.

* LayoutTests/platform/win/TestExpectations:

Canonical link: https://commits.webkit.org/251372@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295364 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=240931

Reviewed by Brady Eidson.

* Source/WebKit/CMakeLists.txt:
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp:
(WebKit::WebCookieManager::notifyCookiesDidChange):
* Source/WebKit/Sources.txt:
* Source/WebKit/SourcesGTK.txt:
* Source/WebKit/SourcesWPE.txt:
* Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:
(API::HTTPCookieStore::HTTPCookieStore):
(API::HTTPCookieStore::~HTTPCookieStore):
(API::HTTPCookieStore::cookies):
(API::HTTPCookieStore::cookiesForURL):
(API::HTTPCookieStore::setCookies):
(API::HTTPCookieStore::deleteCookie):
(API::HTTPCookieStore::deleteAllCookies):
(API::HTTPCookieStore::deleteCookiesForHostnames):
(API::HTTPCookieStore::setHTTPCookieAcceptPolicy):
(API::HTTPCookieStore::getHTTPCookieAcceptPolicy):
(API::HTTPCookieStore::flushCookies):
(API::HTTPCookieStore::registerObserver):
(API::HTTPCookieStore::unregisterObserver):
(API::HTTPCookieStore::networkProcessIfExists):
(API::HTTPCookieStore::networkProcessLaunchingIfNecessary):
(API::APIWebCookieManagerProxyObserver::APIWebCookieManagerProxyObserver): Deleted.
(): Deleted.
* Source/WebKit/UIProcess/API/APIHTTPCookieStore.h:
* Source/WebKit/UIProcess/API/C/WKAPICast.h:
* Source/WebKit/UIProcess/API/C/WKContext.cpp:
* Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm:
* Source/WebKit/UIProcess/API/glib/WebKitCookieManager.cpp:
(CookieStoreObserver::CookieStoreObserver):
(_WebKitCookieManagerPrivate::cookieStore const):
(_WebKitCookieManagerPrivate::~_WebKitCookieManagerPrivate):
(webkitCookieManagerCreate):
(webkit_cookie_manager_get_accept_policy):
(webkit_cookie_manager_add_cookie):
(webkit_cookie_manager_get_cookies):
(webkit_cookie_manager_delete_cookie):
(WebCookieManagerProxyObserver::WebCookieManagerProxyObserver): Deleted.
(_WebKitCookieManagerPrivate::cookieManager const): Deleted.
* Source/WebKit/UIProcess/API/soup/HTTPCookieStoreSoup.cpp: Renamed from Source/WebKit/UIProcess/soup/WebCookieManagerProxySoup.cpp.
(API::HTTPCookieStore::setCookiePersistentStorage):
* Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::addSingleCookie):
(WebKit::WebAutomationSession::deleteAllCookies):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::NetworkProcessProxy):
(WebKit::NetworkProcessProxy::cookiesDidChange):
(WebKit::NetworkProcessProxy::flushCookies): Deleted.
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:
* Source/WebKit/UIProcess/WebCookieManagerProxy.cpp: Removed.
* Source/WebKit/UIProcess/WebCookieManagerProxy.h: Removed.
* Source/WebKit/UIProcess/WebCookieManagerProxy.messages.in: Removed.
* Source/WebKit/UIProcess/WebProcessPool.cpp:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::flushCookies): Deleted.
* Source/WebKit/UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp:
(WebKit::WebsiteDataStore::setCookiePersistentStorage):
(WebKit::WebsiteDataStore::setHTTPCookieAcceptPolicy):
* Source/WebKit/UIProcess/soup/WebProcessPoolSoup.cpp:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:

Canonical link: https://commits.webkit.org/251373@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295365 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…moved

https://bugs.webkit.org/show_bug.cgi?id=240978

Reviewed by Andres Gonzalez.

In this patch, we now properly trap user focus inside non-empty modals
that have been DOM moved. This pattern is used in the WAI-ARIA aria-modal
usage example:

https://w3c.github.io/aria-practices/examples/dialog-modal/dialog.html

We do this by re-computing the live and isolated trees when the active
modal changes, since the presence of a modal effects every element on
the page.

This patch also includes several other modal improvements:
  - We no longer sometimes overwrite author manual focus (e.g. via JS)
    with our modal autofocus behavior.

  - We now properly re-compute the active modal when focus changes. This
    is relevant in cases where there are multiple modals, and an author
    changes focus from one to another, making the latter the new active
    modal.

This patch removes m_focusModalNodeTimer in favor of a new function
called focusCurrentModal(), which allows precise and synchronous control
over when modal autofocus happens. The asynchronous nature of the timer
made it hard to prevent overwriting manual author focus (e.g. via JS).

This patch fixes existing tests in ITM:
  - accessibility/aria-modal-multiple-dialogs.html
  - accessibility/ignore-modals-without-any-content.html
  - accessibility/mac/aria-modal-auto-focus.html

And adds a new test:
accessibility/recompute-current-modal-after-aria-modal-element-appears.html

* LayoutTests/accessibility/aria-modal-multiple-dialogs-expected.txt:
* LayoutTests/accessibility/aria-modal-multiple-dialogs.html:
* LayoutTests/accessibility/recompute-current-modal-after-aria-modal-element-appears-expected.txt: Added.
* LayoutTests/accessibility/recompute-current-modal-after-aria-modal-element-appears.html: Added.
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::AXObjectCache):
(WebCore::AXObjectCache::~AXObjectCache):
(WebCore::AXObjectCache::updateCurrentModalNode):
(WebCore::AXObjectCache::updateCurrentModalNodeInternal):
(WebCore::AXObjectCache::modalNode):
(WebCore::AXObjectCache::deferNodeAddedOrRemoved):
(WebCore::AXObjectCache::handleFocusedUIElementChanged):
(WebCore::AXObjectCache::focusCurrentModal):
(WebCore::AXObjectCache::performDeferredCacheUpdate):
(WebCore::AXObjectCache::currentModalNode): Deleted.
(WebCore::AXObjectCache::focusModalNode): Deleted.
(WebCore::AXObjectCache::focusModalNodeTimerFired): Deleted.
(WebCore::AXObjectCache::handleModalChange): Deleted.
* Source/WebCore/accessibility/AXObjectCache.h:
(WebCore::AXObjectCache::AXObjectCache):
(WebCore::AXObjectCache::focusCurrentModal):
(WebCore::AXObjectCache::handleAriaExpandedChange):
(WebCore::AXObjectCache::handleFocusedUIElementChanged):
(WebCore::AXObjectCache::focusModalNodeTimerFired): Deleted.
(WebCore::AXObjectCache::handleModalChange): Deleted.

Canonical link: https://commits.webkit.org/251374@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295366 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…recognition instead

https://bugs.webkit.org/show_bug.cgi?id=241381
rdar://94446831

Reviewed by Tim Horton.

Replace all references to "fullscreen video extraction" with "text recognition in fullscreen video"
instead, to reflect the real purpose of this code. No change in behavior.

* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::didChangePlaybackRate):
(WebKit::WebPageProxy::didChangeCurrentTime):
(WebKit::WebPageProxy::updateFullscreenVideoTextRecognition):
(WebKit::WebPageProxy::fullscreenVideoTextRecognitionTimerFired):
(WebKit::WebPageProxy::updateFullscreenVideoExtraction): Deleted.
(WebKit::WebPageProxy::fullscreenVideoExtractionTimerFired): Deleted.
* Source/WebKit/UIProcess/Cocoa/WebViewImpl.h:
* Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::beginTextRecognitionForVideoInElementFullscreen):
(WebKit::WebViewImpl::cancelTextRecognitionForVideoInElementFullscreen):
(WebKit::WebViewImpl::beginElementFullscreenVideoExtraction): Deleted.
(WebKit::WebViewImpl::cancelElementFullscreenVideoExtraction): Deleted.
* Source/WebKit/UIProcess/PageClient.h:
(WebKit::PageClient::isTextRecognitionInFullscreenVideoEnabled const):
(WebKit::PageClient::beginTextRecognitionForVideoInElementFullscreen):
(WebKit::PageClient::cancelTextRecognitionForVideoInElementFullscreen):
(WebKit::PageClient::isFullscreenVideoExtractionEnabled const): Deleted.
(WebKit::PageClient::beginElementFullscreenVideoExtraction): Deleted.
(WebKit::PageClient::cancelElementFullscreenVideoExtraction): Deleted.
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::m_fullscreenVideoTextRecognitionTimer):
(WebKit::WebPageProxy::didEnterFullscreen):
(WebKit::WebPageProxy::didExitFullscreen):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
(WebKit::WebPageProxy::beginTextRecognitionForVideoInElementFullScreen):
(WebKit::WebPageProxy::cancelTextRecognitionForVideoInElementFullScreen):
(WebKit::m_fullscreenVideoExtractionTimer): Deleted.
(WebKit::WebPageProxy::extractVideoInElementFullScreen): Deleted.
(WebKit::WebPageProxy::cancelVideoExtractionInElementFullScreen): Deleted.
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::beginTextRecognitionForFullscreenVideo):
(WebKit::PageClientImpl::cancelTextRecognitionForFullscreenVideo):
(WebKit::PageClientImpl::isTextRecognitionInFullscreenVideoEnabled const):
(WebKit::PageClientImpl::beginTextRecognitionForVideoInElementFullscreen):
(WebKit::PageClientImpl::cancelTextRecognitionForVideoInElementFullscreen):
(WebKit::PageClientImpl::beginFullscreenVideoExtraction): Deleted.
(WebKit::PageClientImpl::cancelFullscreenVideoExtraction): Deleted.
(WebKit::PageClientImpl::isFullscreenVideoExtractionEnabled const): Deleted.
(WebKit::PageClientImpl::beginElementFullscreenVideoExtraction): Deleted.
(WebKit::PageClientImpl::cancelElementFullscreenVideoExtraction): Deleted.
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView beginTextRecognitionForFullscreenVideo:playerViewController:]):
(-[WKContentView cancelTextRecognitionForFullscreenVideo:]):
(-[WKContentView isTextRecognitionInFullscreenVideoEnabled]):
(-[WKContentView beginTextRecognitionForVideoInElementFullscreen:bounds:]):
(-[WKContentView cancelTextRecognitionForVideoInElementFullscreen]):
(-[WKContentView beginFullscreenVideoExtraction:playerViewController:]): Deleted.
(-[WKContentView cancelFullscreenVideoExtraction:]): Deleted.
(-[WKContentView isFullscreenVideoExtractionEnabled]): Deleted.
(-[WKContentView beginElementFullscreenVideoExtraction:bounds:]): Deleted.
(-[WKContentView cancelElementFullscreenVideoExtraction]): Deleted.
* Source/WebKit/UIProcess/mac/PageClientImplMac.h:
* Source/WebKit/UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::beginTextRecognitionForVideoInElementFullscreen):
(WebKit::PageClientImpl::cancelTextRecognitionForVideoInElementFullscreen):
(WebKit::PageClientImpl::beginElementFullscreenVideoExtraction): Deleted.
(WebKit::PageClientImpl::cancelElementFullscreenVideoExtraction): Deleted.
* Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp:
(WebKit::WebFullScreenManager::WebFullScreenManager):
(WebKit::WebFullScreenManager::handleEvent):
(WebKit::WebFullScreenManager::mainVideoElementTextRecognitionTimerFired):
(WebKit::WebFullScreenManager::scheduleTextRecognitionForMainVideo):
(WebKit::WebFullScreenManager::endTextRecognitionForMainVideoIfNeeded):
(WebKit::WebFullScreenManager::setMainVideoElement):
(WebKit::WebFullScreenManager::mainVideoElementExtractionTimerFired): Deleted.
(WebKit::WebFullScreenManager::scheduleMainVideoElementExtraction): Deleted.
(WebKit::WebFullScreenManager::endMainVideoElementExtractionIfNeeded): Deleted.
* Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::beginTextRecognitionForVideoInElementFullScreen):
(WebKit::WebPage::cancelTextRecognitionForVideoInElementFullScreen):
(WebKit::WebPage::extractVideoInElementFullScreen): Deleted.
(WebKit::WebPage::cancelVideoExtractionInElementFullScreen): Deleted.
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenVideoTextRecognition.mm: Renamed from Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenVideoExtraction.mm.
(swizzledPresentViewController):
(swizzledProcessRequest):
(swizzledSetAnalysis):
(+[FullscreenVideoTextRecognitionWebView create]):
(-[FullscreenVideoTextRecognitionWebView initWithFrame:configuration:]):
(-[FullscreenVideoTextRecognitionWebView loadVideoSource:]):
(-[FullscreenVideoTextRecognitionWebView enterFullscreen]):
(-[FullscreenVideoTextRecognitionWebView exitFullscreen]):
(-[FullscreenVideoTextRecognitionWebView didChangeValueForKey:]):
(-[FullscreenVideoTextRecognitionWebView pause]):
(-[FullscreenVideoTextRecognitionWebView play]):
(-[FullscreenVideoTextRecognitionWebView waitForVideoFrame]):
(-[FullscreenVideoTextRecognitionWebView hasActiveImageAnalysis]):
(-[FullscreenVideoTextRecognitionWebView waitForImageAnalysisToBegin]):
(-[FullscreenVideoTextRecognitionWebView waitForImageAnalysisToEnd]):
(TestWebKitAPI::TEST):

Canonical link: https://commits.webkit.org/251375@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295367 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241290

Patch by Youssef Soliman <youssefdevelops@gmail.com> on 2022-06-07
Reviewed by Eric Carlson.

Currently TrackBuffer is just a struct within SourceBufferPrivate,
it makes sense to extract TrackBuffer as its own platform agnostic
class for use in future media players.

* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/graphics/SourceBufferPrivate.cpp:
(WebCore::SourceBufferPrivate::resetTimestampOffsetInTrackBuffers):
(WebCore::SourceBufferPrivate::resetTrackBuffers):
(WebCore::SourceBufferPrivate::updateHighestPresentationTimestamp):
(WebCore::SourceBufferPrivate::updateBufferedFromTrackBuffers):
(WebCore::SourceBufferPrivate::reenqueSamples):
(WebCore::SourceBufferPrivate::seekToTime):
(WebCore::SourceBufferPrivate::clearTrackBuffers):
(WebCore::SourceBufferPrivate::bufferedSamplesForTrackId):
(WebCore::SourceBufferPrivate::fastSeekTimeForMediaTime):
(WebCore::SourceBufferPrivate::updateMinimumUpcomingPresentationTime):
(WebCore::SourceBufferPrivate::trySignalAllSamplesInTrackEnqueued):
(WebCore::SourceBufferPrivate::provideMediaData):
(WebCore::SourceBufferPrivate::reenqueueMediaForTime):
(WebCore::SourceBufferPrivate::reenqueueMediaIfNeeded):
(WebCore::removeSamplesFromTrackBuffer):
(WebCore::SourceBufferPrivate::removeCodedFrames):
(WebCore::SourceBufferPrivate::evictCodedFrames):
(WebCore::SourceBufferPrivate::totalTrackBufferSizeInBytes const):
(WebCore::SourceBufferPrivate::addTrackBuffer):
(WebCore::SourceBufferPrivate::setAllTrackBuffersNeedRandomAccess):
(WebCore::SourceBufferPrivate::didReceiveSample):
(WebCore::roundTowardsTimeScaleWithRoundingMargin): Deleted.
(WebCore::SourceBufferPrivate::TrackBuffer::TrackBuffer): Deleted.
(WebCore::enqueueDiscontinuityBoundary): Deleted.
(WebCore::decodeTimeComparator): Deleted.
* Source/WebCore/platform/graphics/SourceBufferPrivate.h:
* Source/WebCore/platform/graphics/TrackBuffer.cpp: Added.
(WebCore::roundTowardsTimeScaleWithRoundingMargin):
(WebCore::TrackBuffer::create):
(WebCore::TrackBuffer::TrackBuffer):
(WebCore::TrackBuffer::maximumBufferedTime const):
(WebCore::TrackBuffer::addBufferedRange):
(WebCore::TrackBuffer::addSample):
(WebCore::TrackBuffer::updateMinimumUpcomingPresentationTime):
(WebCore::TrackBuffer::reenqueueMediaForTime):
(WebCore::TrackBuffer::findSeekTimeForTargetTime):
(WebCore::TrackBuffer::removeSamples):
(WebCore::decodeTimeComparator):
* Source/WebCore/platform/graphics/TrackBuffer.h: Added.

Canonical link: https://commits.webkit.org/251376@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295368 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=239778

Patch by Mike Wyrzykowski <mwyrzykowski@apple.com> on 2022-06-07
Reviewed by Aditya Keerthi.

In r286869, a change was made to WebCore::DateComponents::toStringForTime as
noted in the changelog:

   The output will use the shortest possible string, omitting seconds or milliseconds when 0, as per
    https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-normalised-local-date-and-time-string

however that broke WebDateTimePicker when seconds or milliseconds is specified yet they are zero.

Since the change to WebCore::DateComponents is to spec, change WebDateTimePicker to handle this behavior
change instead.

* Source/WebKit/UIProcess/mac/WebDateTimePickerMac.mm:
(-[WKDateTimePicker updatePicker:]):
-[NSDataFormatter dateFromString:] will return nil if the format
requires seconds but the seconds is omitted, so try fallback formats
without milliseconds or seconds.

(-[WKDateTimePicker dateFormatFallbackForFormat:]):
Fallback from milliseconds -> seconds -> time without seconds.

Canonical link: https://commits.webkit.org/251377@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295369 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241384
rdar://94558182

Reviewed by Wenson Hsieh.

Upstream new share sheet changes. Remove staging code now that
changes have been in the build for a significant amount of time.

* Source/WTF/wtf/PlatformHave.h:
* Source/WebKit/UIProcess/Cocoa/WKShareSheet.h:
* Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:
(-[WKShareSheet presentWithShareDataArray:inRect:]):
(-[WKShareSheet canShowPickerAsync:]): Deleted.
(-[WKShareSheet showPickerAsync:showRelativeToRect:ofView:completion:]): Deleted.

Canonical link: https://commits.webkit.org/251378@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295370 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…ia-setsize changes

https://bugs.webkit.org/show_bug.cgi?id=241361

Reviewed by Chris Fleizach.

New testcases added to aria-setsize-posinset.html, heading-level.html,
and mac/aria-tree.html to cover these changes.

* LayoutTests/accessibility/aria-setsize-posinset-expected.txt:
* LayoutTests/accessibility/aria-setsize-posinset.html:
Add test case that dynamically changes aria-setsize.
* LayoutTests/accessibility/heading-level-expected.txt:
* LayoutTests/accessibility/heading-level.html:
Add test case that dynamically changes aria-level on an ARIA heading.
* LayoutTests/accessibility/mac/aria-tree-expected.txt:
* LayoutTests/accessibility/mac/aria-tree.html:
Add test case that dynamically changes aria-level on a treeitem.
* LayoutTests/platform/ios/TestExpectations:
Enable heading-level.html on iOS.
* Source/WebCore/accessibility/AXLogger.cpp:
(WebCore::operator<<):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::handleAttributeChange):
(WebCore::AXObjectCache::updateIsolatedTree):
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/accessibility/atspi/AXObjectCacheAtspi.cpp:
(WebCore::AXObjectCache::postPlatformNotification):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::updateNodeProperty):
* Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm
* Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm
Implement AccessibilityUIElement::intValue() so heading-level.html can pass.

Canonical link: https://commits.webkit.org/251379@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295371 268f45cc-cd09-0410-ab3c-d52691b4dbfc
… is created in GPUProcess

https://bugs.webkit.org/show_bug.cgi?id=240810
<rdar://problem/94118129>

Reviewed by Kimmo Kinnunen.

PixelBuffer will be sub-classed to a new class named 'ShareablePixelBuffer'. This
class will be backed by SharedMemory for the pixels.

ImageBufferShareableAllocator will call ShareablePixelBuffer::tryCreate() to
allocate PixelBuffe for software filters when they are applied in GPUProcess.

The plan is to attribute the handle of the underlying SharedMemory to WebProcess.

* Source/WebKit/GPUProcess/graphics/ImageBufferShareableAllocator.cpp:
(WebKit::ImageBufferShareableAllocator::createPixelBuffer const):
* Source/WebKit/GPUProcess/graphics/ShareablePixelBuffer.cpp: Copied from Source/WebKit/GPUProcess/graphics/ImageBufferShareableAllocator.cpp.
(WebKit::ShareablePixelBuffer::tryCreate):
(WebKit::ShareablePixelBuffer::ShareablePixelBuffer):
(WebKit::ShareablePixelBuffer::createScratchPixelBuffer const):
* Source/WebKit/GPUProcess/graphics/ShareablePixelBuffer.h: Added.
(WebKit::ShareablePixelBuffer::data const):
(WebKit::ShareablePixelBuffer::takeData):
* Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp:
* Source/WebKit/Sources.txt:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:

Canonical link: https://commits.webkit.org/251380@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295372 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…sending glyphs when using the GlyphDisplayListCache

https://bugs.webkit.org/show_bug.cgi?id=240497
<rdar://93387615>

Reviewed by Simon Fraser.

The GlyphDisplayListCache is used to record a display list for
frequently painting text content. With GPU Process DOM rendering, there
is significant overhead in sending the contents of these display lists
over IPC. The contents of these display lists don't change if the text
content in the document doesn't change, so we could greatly reduce the
overhead by treating the data inside a display list item for glyph
drawing as a remote resource.

This commit adds:

* a new display list item, DrawDecomposedGlyphs, to represent drawing
  a glyph list resource
* a new class, DecomposedGlyphs, which is the resource type
* a new struct, PositionedGlyphs, to provide a common place for the
  glyph drawing fields (the vector of glyph IDs, the anchor position,
  etc.) to live, so that we don't have duplication between
  DisplayList::DrawGlyphs and DecomposedGlyphs

So that a DrawDecomposedGlyphs command can be replayed from a
GlyphDisplayListCache's in-memory display list and recorded to a
RemoteDisplayListRecorder, the GraphicsContext API gains a new
drawDecomposedGlyphs function.

A new argument to the DisplayList::RecordImpl constructor (and the
DrawGlyphsRecorder) is added to represent how to record drawText
commands:

* DrawGlyphsMode::Normal, which records each GraphicsContext::drawText
  call with a single DrawText command
* DrawGlyphsMode::DeconstructToDrawGlyphsCommands, which ensures
  different text layers get deconstructed into separate DrawText
  commands
* DrawGlyphsMode::DeconstructToDrawDecomposedGlyphsCommands, which
  ensures different text layers get desconstructed into separate
  DrawDecomposedGlyphs commands

FontCascade::displayListForTextRun is updated to use that last value.

Additionally, GlyphDisplayListCache is extended to cache display lists
keyed off TextRun/FontCascade/etc. values. This allows sharing of the same
cached display list between different elements on the page that have the same
text content.

This sharing would not be valid if the two elements have different
values for the color property, and the text contains COLRv0 glyphs that
alternate painting of specific colors and the color fill color, since
the recording would incorrectly record a setFillBrush command
corresponding to the first element's fill color. Rather than extend the
glyph recorder to parameterize the current fill (and stroke) colors, we
detect when outlines are drawn with colors other than the context's
initial colors, and prevent sharing. This is done by checking whether
the recorded display list contains items that aren't known to be safe
for sharing.

Similarly, if the sharing would not be valid if the contains bitmap
images (like those from emoji fonts) or SVG glyphs, both of which are
captured as DrawNativeImage commands, if the text is drawn at different
scales. This is because the size of the images is dependent on the
scale. We detect and prevent reuse across different text runs if the
scale is different, by checking the recorded display list for
DrawNativeImage commands and by storing the context scale on the
GlyphDisplayListCache::Entry.

* LayoutTests/fast/text/glyph-display-lists/glyph-display-list-color-expected.txt:
* LayoutTests/fast/text/glyph-display-lists/glyph-display-list-colr-unshared-expected.txt: Added.
* LayoutTests/fast/text/glyph-display-lists/glyph-display-list-colr-unshared.html: Added.
* LayoutTests/fast/text/glyph-display-lists/glyph-display-list-scaled-unshared-expected.txt: Added.
* LayoutTests/fast/text/glyph-display-lists/glyph-display-list-scaled-unshared.html: Added.
* LayoutTests/fast/text/glyph-display-lists/glyph-display-list-shadow-unshared-expected.txt: Added.
* LayoutTests/fast/text/glyph-display-lists/glyph-display-list-shadow-unshared.html: Added.
* LayoutTests/fast/text/glyph-display-lists/glyph-display-list-shared-expected.txt: Added.
* LayoutTests/fast/text/glyph-display-lists/glyph-display-list-shared.html: Added.
* LayoutTests/fast/text/glyph-display-lists/glyph-display-list-svg-unshared-expected.txt: Added.
* LayoutTests/fast/text/glyph-display-lists/glyph-display-list-svg-unshared.html: Added.
* Source/WTF/wtf/PlatformHave.h:
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/page/MemoryRelease.cpp:
(WebCore::releaseNoncriticalMemory):
* Source/WebCore/platform/graphics/BifurcatedGraphicsContext.cpp:
(WebCore::BifurcatedGraphicsContext::drawDecomposedGlyphs):
* Source/WebCore/platform/graphics/BifurcatedGraphicsContext.h:
* Source/WebCore/platform/graphics/DecomposedGlyphs.cpp: Added.
(WebCore::DecomposedGlyphs::create):
(WebCore::DecomposedGlyphs::DecomposedGlyphs):
(WebCore::m_renderingResourceIdentifier):
* Source/WebCore/platform/graphics/DecomposedGlyphs.h: Added.
(WebCore::DecomposedGlyphs::positionedGlyphs const):
(WebCore::DecomposedGlyphs::bounds const):
(WebCore::DecomposedGlyphs::addObserver):
(WebCore::DecomposedGlyphs::removeObserver):
(WebCore::DecomposedGlyphs::renderingResourceIdentifier const):
* Source/WebCore/platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::displayListForTextRun const):
* Source/WebCore/platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::drawDecomposedGlyphs):
* Source/WebCore/platform/graphics/GraphicsContext.h:
(WebCore::GraphicsContext::drawGlyphsAndCacheResources):
(WebCore::GraphicsContext::drawGlyphsAndCacheFont): Deleted.
* Source/WebCore/platform/graphics/NullGraphicsContext.h:
* Source/WebCore/platform/graphics/PositionedGlyphs.cpp: Copied from Source/WebCore/platform/graphics/win/DrawGlyphsRecorderWin.cpp.
(WebCore::PositionedGlyphs::computeBounds const):
* Source/WebCore/platform/graphics/PositionedGlyphs.h: Added.
(WebCore::PositionedGlyphs::PositionedGlyphs):
(WebCore::PositionedGlyphs::encode const):
(WebCore::PositionedGlyphs::decode):
* Source/WebCore/platform/graphics/TextRun.cpp:
(WebCore::operator<<):
* Source/WebCore/platform/graphics/TextRun.h:
(WebCore::TextRun::TextRun):
(WebCore::TextRun::isHashTableEmptyValue const):
(WebCore::TextRun::isHashTableDeletedValue const):
(WebCore::TextRun::isolatedCopy const):
* Source/WebCore/platform/graphics/TextRunHash.h: Added.
(WebCore::add):
(WebCore::TextRun::operator== const):
(WebCore::TextRunHash::hash):
(WebCore::TextRunHash::equal):
(WTF::HashTraits<WebCore::TextRun>::isDeletedValue):
(WTF::HashTraits<WebCore::TextRun>::isEmptyValue):
(WTF::HashTraits<WebCore::TextRun>::constructDeletedValue):
(WTF::HashTraits<WebCore::TextRun>::emptyValue):
* Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:
(WebCore::GraphicsContextCairo::drawDecomposedGlyphs):
* Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.h:
* Source/WebCore/platform/graphics/coretext/DrawGlyphsRecorderCoreText.cpp:
(WebCore::DrawGlyphsRecorder::createInternalContext):
(WebCore::DrawGlyphsRecorder::updateCTM):
(WebCore::DrawGlyphsRecorder::recordDrawGlyphs):
* Source/WebCore/platform/graphics/displaylists/DisplayList.cpp:
(WebCore::DisplayList::DisplayList::description const):
(WebCore::DisplayList::DisplayList::append):
* Source/WebCore/platform/graphics/displaylists/DisplayList.h:
(WebCore::DisplayList::DisplayList::cacheDecomposedGlyphs):
* Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:
(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::safeCopy const):
* Source/WebCore/platform/graphics/displaylists/DisplayListItemType.cpp:
(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):
* Source/WebCore/platform/graphics/displaylists/DisplayListItemType.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::DrawGlyphs::DrawGlyphs):
(WebCore::DisplayList::m_bounds):
(WebCore::DisplayList::DrawGlyphs::apply const):
(WebCore::DisplayList::DrawDecomposedGlyphs::apply const):
(WebCore::DisplayList::operator<<):
(WebCore::DisplayList::dumpItem):
(WebCore::DisplayList::dumpItemHandle):
(WebCore::DisplayList::DrawGlyphs::computeBounds): Deleted.
* Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::DrawGlyphs::localAnchor const):
(WebCore::DisplayList::DrawGlyphs::anchorPoint const):
(WebCore::DisplayList::DrawGlyphs::glyphs const):
(WebCore::DisplayList::DrawGlyphs::encode const):
(WebCore::DisplayList::DrawGlyphs::decode):
(WebCore::DisplayList::DrawDecomposedGlyphs::DrawDecomposedGlyphs):
(WebCore::DisplayList::DrawDecomposedGlyphs::fontIdentifier const):
(WebCore::DisplayList::DrawDecomposedGlyphs::decomposedGlyphsIdentifier const):
(WebCore::DisplayList::DrawDecomposedGlyphs::globalBounds const):
(WebCore::DisplayList::DrawDecomposedGlyphs::localBounds const):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::Recorder):
(WebCore::DisplayList::Recorder::shouldDeconstructDrawGlyphs const):
(WebCore::DisplayList::Recorder::drawGlyphs):
(WebCore::DisplayList::Recorder::drawDecomposedGlyphs):
(WebCore::DisplayList::Recorder::drawGlyphsAndCacheResources):
(WebCore::DisplayList::Recorder::drawGlyphsAndCacheFont): Deleted.
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp:
(WebCore::DisplayList::RecorderImpl::RecorderImpl):
(WebCore::DisplayList::RecorderImpl::recordDrawDecomposedGlyphs):
(WebCore::DisplayList::RecorderImpl::recordResourceUse):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp:
(WebCore::DisplayList::applyDrawDecomposedGlyphs):
(WebCore::DisplayList::Replayer::applyItem):
(WebCore::DisplayList::Replayer::replay):
* Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:
(WebCore::DisplayList::LocalResourceHeap::add):
* Source/WebCore/platform/graphics/harfbuzz/DrawGlyphsRecorderHarfBuzz.cpp:
(WebCore::DrawGlyphsRecorder::drawGlyphs):
* Source/WebCore/platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:
(Nicosia::CairoOperationRecorder::drawDecomposedGlyphs):
* Source/WebCore/platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h:
* Source/WebCore/platform/graphics/win/DrawGlyphsRecorderWin.cpp:
(WebCore::DrawGlyphsRecorder::drawGlyphs):
* Source/WebCore/platform/text/TextDirection.h:
(WebCore::operator<<):
* Source/WebCore/platform/text/TextFlags.cpp:
(WebCore::operator<<):
* Source/WebCore/platform/text/TextFlags.h:
(WebCore::ExpansionBehavior::operator== const):
* Source/WebCore/rendering/GlyphDisplayListCache.cpp: Added.
(WebCore::canShareDisplayListWithItem):
(WebCore::add):
(WebCore::GlyphDisplayListCacheKeyTranslator::hash):
(WebCore::GlyphDisplayListCacheKeyTranslator::equal):
(WebCore::GlyphDisplayListCache::singleton):
(WebCore::GlyphDisplayListCache::clear):
(WebCore::GlyphDisplayListCache::size const):
(WebCore::GlyphDisplayListCache::sizeInBytes const):
(WebCore::GlyphDisplayListCache::get):
(WebCore::GlyphDisplayListCache::getIfExists):
(WebCore::GlyphDisplayListCache::remove):
(WebCore::GlyphDisplayListCache::canShareDisplayList):
(WebCore::GlyphDisplayListCacheEntry::~GlyphDisplayListCacheEntry):
* Source/WebCore/rendering/GlyphDisplayListCache.h:
(WebCore::GlyphDisplayListCacheEntry::create):
(WebCore::GlyphDisplayListCacheEntry::operator== const):
(WebCore::GlyphDisplayListCacheEntry::displayList):
(WebCore::GlyphDisplayListCacheEntry::GlyphDisplayListCacheEntry):
(WebCore::add):
(WebCore::GlyphDisplayListCacheEntryHash::hash):
(WebCore::GlyphDisplayListCacheEntryHash::equal):
(WebCore::GlyphDisplayListCache::get):
(WebCore::GlyphDisplayListCache::getIfExists):
(WebCore::GlyphDisplayListCache::remove):
(WebCore::GlyphDisplayListCache::singleton): Deleted.
(WebCore::GlyphDisplayListCache::clear): Deleted.
(WebCore::GlyphDisplayListCache::size const): Deleted.
(WebCore::GlyphDisplayListCache::sizeInBytes const): Deleted.
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
* Source/WebCore/rendering/TextPainter.cpp:
(WebCore::TextPainter::clearGlyphDisplayLists): Deleted.
* Source/WebCore/rendering/TextPainter.h:
(WebCore::TextPainter::setGlyphDisplayListIfNeeded):
(WebCore::TextPainter::removeGlyphDisplayList):
(WebCore::TextPainter::glyphDisplayListIfExists):
* Source/WebCore/testing/Internals.cpp:
(WebCore::toDisplayListFlags):
(WebCore::Internals::displayListForElement):
(WebCore::Internals::replayDisplayListForElement):
(WebCore::Internals::cachedGlyphDisplayListsForTextNode):
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:
* Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:
(WebKit::QualifiedResourceHeap::add):
(WebKit::QualifiedResourceHeap::getDecomposedGlyphs const):
(WebKit::QualifiedResourceHeap::removeDecomposedGlyphs):
(WebKit::QualifiedResourceHeap::checkInvariants const):
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::drawDecomposedGlyphs):
(WebKit::RemoteDisplayListRecorder::drawDecomposedGlyphsWithQualifiedIdentifiers):
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::cacheFontWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::cacheDecomposedGlyphs):
(WebKit::RemoteRenderingBackend::cacheDecomposedGlyphsWithQualifiedIdentifier):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp:
(WebKit::RemoteResourceCache::cacheDecomposedGlyphs):
(WebKit::RemoteResourceCache::cachedDecomposedGlyphs const):
(WebKit::RemoteResourceCache::releaseRemoteResource):
* Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h:
* Source/WebKit/Scripts/webkit/messages.py:
* Source/WebKit/Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<DecomposedGlyphs>::encode):
(IPC::ArgumentCoder<DecomposedGlyphs>::decode):
* Source/WebKit/Shared/WebCoreArgumentCoders.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::RemoteDisplayListRecorderProxy):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawDecomposedGlyphs):
(WebKit::RemoteDisplayListRecorderProxy::recordResourceUse):
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::cacheDecomposedGlyphs):
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:
(WebKit::RemoteResourceCacheProxy::~RemoteResourceCacheProxy):
(WebKit::RemoteResourceCacheProxy::recordDecomposedGlyphsUse):
(WebKit::RemoteResourceCacheProxy::releaseDecomposedGlyphs):
(WebKit::RemoteResourceCacheProxy::clearDecomposedGlyphsMap):
(WebKit::RemoteResourceCacheProxy::remoteResourceCacheWasDestroyed):
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:

Canonical link: https://commits.webkit.org/251381@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295373 268f45cc-cd09-0410-ab3c-d52691b4dbfc
szewai and others added 25 commits June 13, 2022 18:20
https://bugs.webkit.org/show_bug.cgi?id=241427

Reviewed by Geoffrey Garen.

We want ProcessStateMonitor to be started when application is in background and to be stopped when application is in
foreground. In r294405, we start/stop ProcessStateMonitor on receiving UIApplicationDidEnterBackgroundNotification and
UIApplicationWillEnterForegroundNotification notifications. However, UIApplicationWillEnterForegroundNotification can be
sent later than UISceneWillEnterForegroundNotification. In ApplicationStateTracke, we start creating foreground activity
for web process on receiving UISceneWillEnterForegroundNotification. At this time,
UIApplicationWillEnterForegroundNotification may not be received yet and ProcessStateMonitor may still be
working. ProcessStateMonitor may forbid creating new activity after it sets process shouldSuspend (see r294405), so we
need to make sure ProcessStateMonitor is stopped before starting new foreground activity.

To achieve that, we now decide when to start/stop ProcessStateMonitor with ApplicationStateTracker. We start
ProcessStateMonitor when all trackers are in the background, and stop it when at least one tracker is in foreground.

* Source/WebKit/UIProcess/ApplicationStateTracker.mm:
(WebKit::allApplicationStateTrackers):
(WebKit::updateApplicationBackgroundState):
(WebKit::ApplicationStateTracker::ApplicationStateTracker):
(WebKit::ApplicationStateTracker::~ApplicationStateTracker):
(WebKit::ApplicationStateTracker::applicationDidEnterBackground):
(WebKit::ApplicationStateTracker::applicationWillEnterForeground):
* Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::setProcessesShouldSuspend):
* Source/WebKit/UIProcess/ProcessAssertion.h:
* Source/WebKit/UIProcess/WebProcessPool.h:
* Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm:
(-[WKProcessAssertionBackgroundTaskManager _releaseBackgroundTask]):
(-[WKProcessAssertionBackgroundTaskManager setProcessStateMonitorEnabled:]):
(WebKit::ProcessAndUIAssertion::setProcessStateMonitorEnabled):
* Source/WebKit/UIProcess/ios/ProcessStateMonitor.mm:
(WebKit::ProcessStateMonitor::checkRemainingRunTime):
* Source/WebKit/UIProcess/ios/WebProcessProxyIOS.mm:
(WebKit::WebProcessProxy::platformInitialize):

Canonical link: https://commits.webkit.org/251498@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295493 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…ranslate-and-rotate-properties-accelerated.html is a flaky image failure

https://bugs.webkit.org/show_bug.cgi?id=230863
<rdar://83593809>

Patch by Antoine Quint <graouts@apple.com> on 2022-06-13
Reviewed by Dean Jackson.

Use the tried and true technique of waiting for animations to be ready and three animation frames
to ensure all accelerated animations have been committed.

* LayoutTests/platform/mac-wk1/TestExpectations:
* LayoutTests/webanimations/resources/wait-until-animations-are-committed.js:

Canonical link: https://commits.webkit.org/251499@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295494 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…nimation.html is a flaky image failure

https://bugs.webkit.org/show_bug.cgi?id=239794
<rdar://92365628>

Patch by Antoine Quint <graouts@apple.com> on 2022-06-13
Reviewed by Dean Jackson.

Typically we wait 3 frames before considering an accelerated animation was committed.
Additionally, locally I could reproduce the issue prior to this patch but not with it.

* LayoutTests/platform/mac/TestExpectations:
* LayoutTests/webanimations/accelerated-animation-after-forward-filling-animation.html:

Canonical link: https://commits.webkit.org/251500@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295495 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241298

Reviewed by Alexey Proskuryakov.

Switch the default value of the --use-workspace flag, and add a warning
message indicating that non-workspace Xcode builds are deprecated.

Add product dependencies and disable SDK metadata parsing in tools
projects, to prevent watchOS/tvOS workspace builds from thinking we are
linking against system WebKit.

Add an aggregate "MiniBrowser (Platform filters)" target, which builds
MiniBrowser.app iff the workspace is building for a Mac destination.

* Source/ThirdParty/libwebrtc/Configurations/DebugRelease.xcconfig: Fix
  an sdk xcconfig setting.
* Tools/DumpRenderTree/mac/Configurations/DumpRenderTreeLibrary.xcconfig:
  Set DISABLE_SDK_METADATA_PARSING.
* Tools/DumpRenderTree/mac/Configurations/LayoutTestHelper.xcconfig: Set
  DISABLE_SDK_METADATA_PARSING.
* Tools/MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj: Create the
  aggregate target mentioned above.
* Tools/MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj:
  Link MobileMiniBrowser.framework against WebKit.
* Tools/Scripts/build-webkit: Switch --use-workspace default.
* Tools/TestWebKitAPI/Configurations/InjectedBundle.xcconfig: Set
  DISABLE_SDK_METADATA_PARSING.
* Tools/TestWebKitAPI/Configurations/TestWTFLibrary.xcconfig: Set
  DISABLE_SDK_METADATA_PARSING.
* Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig: Set
  DISABLE_SDK_METADATA_PARSING.
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add
  WebKit product dependency.
* Tools/WebKitTestRunner/Configurations/InjectedBundle.xcconfig: Add
  DISABLE_SDK_METADATA_PARSING.
* Tools/WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig: Add
  DISABLE_SDK_METADATA_PARSING.
* WebKit.xcworkspace/xcshareddata/xcschemes/All Modules.xcscheme:
  Replace MiniBrowser.app with the aggregate target.
* WebKit.xcworkspace/xcshareddata/xcschemes/All Tools.xcscheme: Replace
  MiniBrowser.app with the aggregate target.

Canonical link: https://commits.webkit.org/251501@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295496 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241553

Reviewed by Alexey Proskuryakov.

* Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj:

Canonical link: https://commits.webkit.org/251502@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295497 268f45cc-cd09-0410-ab3c-d52691b4dbfc
… elements

https://bugs.webkit.org/show_bug.cgi?id=232842
rdar://85426197

Reviewed by Simon Fraser.

Consider this SVG as an example:

<svg>
    <filter id="blur">
        <feGaussianBlur stdDeviation="5"/>
    </filter>
    <circle ... filter="url(#blur)"/>
    <rect ... filter="url(#blur)"/>
</svg>

The renderers of the <circle> and the <rect> elements ask the renderer of the
<filter> element, i.e. RenderSVGResourceFilter to applyResource(). In this
function a new SVGFilter is created for each target renderer. A new entry
{ target_renderer, FilterData } is added to
RenderSVGResourceFilter::m_rendererFilterDataMap.

While building the SVGFilter, a new FilterEffect is created for every target
renderer and an entry { primitive_renderer, effect } is added to
SVGFilterBuilder::m_effectRenderer.

Suppose 'stdDeviation' of <feGaussianBlur> has been changed, this is the
current workflow:

    SVGFEGaussianBlurElement::svgAttributeChanged() will call
    SVGFilterPrimitiveStandardAttributes::primitiveAttributeChanged() which
    will call RenderSVGResourceFilterPrimitive::primitiveAttributeChanged().
    The last one will call RenderSVGResourceFilter::primitiveAttributeChanged()
    and pass itself as an argument.

    RenderSVGResourceFilter::primitiveAttributeChanged() will loop through
    all the entries in m_rendererFilterDataMap and get the FilterData. And
    then it gets the effect given the key primitive renderer from
    FilterData::SVGFilterBuilder::m_effectRenderer. Having this effect, its
    setFilterEffectAttribute() will be called.

This workflow is cumbersome since it was mainly done this way because the result
FilterImage was stored with the FilterEffect. But since the  result FilterImage
was moved out of the FilterEffect, we do not need to create a new FilterEffect
for every target renderer. The same FilterEffect can be shared among all the
target renderers.

This is the new workflow for dynamically updating the FilterEffect attributes:

    No need to create a separate FilterEffect for every SVGFilter (or target
    renderer). A shared FilterEffect can be used instead. This will be
    SVGFilterPrimitiveStandardAttributes::m_effect.

    SVGFEGaussianBlurElement::svgAttributeChanged() will call
    SVGFilterPrimitiveStandardAttributes::primitiveAttributeChanged() which
    will call SVGFEGaussianBlurElement::setFilterEffectAttribute() if m_effect
    is not null. setFilterEffectAttribute() will return true if it needs to
    be repainted. RenderSVGResourceFilterPrimitive::markFilterEffectForRepaint()
    will be called then.

    RenderSVGResourceFilterPrimitive::markFilterForInvalidation() will call
    RenderSVGResourceFilter::markFilterForRepaint() if effect is not null which
    will clear the result FilterImage of this effect and all other FilterImages
    which takes the result FilterImage of this effect as an input.

    If svgAttributeChanged() finds out it needs to rebuild the entire SVGFilter,
    it will call SVGFilterPrimitiveStandardAttributes::markFilterEffectForRebuild()
    which will call RenderSVGResourceFilterPrimitive::markFilterEffectForRebuild()
    and sets SVGFilterPrimitiveStandardAttributes::m_effect to nullptr.
    RenderSVGResourceFilterPrimitive::markFilterEffectForRebuild() will call
    RenderSVGResourceFilter::markFilterForRebuild() which will clear
    RenderSVGResourceFilter::m_rendererFilterDataMap. This will force rebuilding
    the SVGFilter for all renderers.

* Source/WebCore/platform/graphics/filters/FEDropShadow.cpp:
(WebCore::FEDropShadow::setStdDeviationX):
(WebCore::FEDropShadow::setStdDeviationY):
(WebCore::FEDropShadow::setDx):
(WebCore::FEDropShadow::setDy):
(WebCore::FEDropShadow::setShadowColor):
(WebCore::FEDropShadow::setShadowOpacity):
* Source/WebCore/platform/graphics/filters/FEDropShadow.h:
(WebCore::FEDropShadow::setStdDeviationX): Deleted.
(WebCore::FEDropShadow::setStdDeviationY): Deleted.
(WebCore::FEDropShadow::setDx): Deleted.
(WebCore::FEDropShadow::setDy): Deleted.
(WebCore::FEDropShadow::setShadowColor): Deleted.
(WebCore::FEDropShadow::setShadowOpacity): Deleted.
* Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp:
(WebCore::FEGaussianBlur::setStdDeviationX):
(WebCore::FEGaussianBlur::setStdDeviationY):
(WebCore::FEGaussianBlur::setEdgeMode):
* Source/WebCore/platform/graphics/filters/FEGaussianBlur.h:
* Source/WebCore/platform/graphics/filters/FEOffset.cpp:
(WebCore::FEOffset::setDx):
(WebCore::FEOffset::setDy):
* Source/WebCore/platform/graphics/filters/FEOffset.h:
* Source/WebCore/rendering/CSSFilter.cpp:
(WebCore::createReferenceFilter):
* Source/WebCore/rendering/svg/RenderSVGResourceContainer.h:
* Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):
(WebCore::RenderSVGResourceFilter::markFilterForRepaint):
(WebCore::RenderSVGResourceFilter::markFilterForRebuild):
(WebCore::RenderSVGResourceFilter::primitiveAttributeChanged): Deleted.
* Source/WebCore/rendering/svg/RenderSVGResourceFilter.h:
* Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.cpp:
(WebCore::RenderSVGResourceFilterPrimitive::styleDidChange):
(WebCore::RenderSVGResourceFilterPrimitive::markFilterEffectForRepaint):
(WebCore::RenderSVGResourceFilterPrimitive::markFilterEffectForRebuild):
* Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.h:
* Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp:
(WebCore::writeSVGResourceContainer):
* Source/WebCore/svg/SVGFEBlendElement.cpp:
(WebCore::SVGFEBlendElement::setFilterEffectAttribute):
(WebCore::SVGFEBlendElement::createFilterEffect const):
(WebCore::SVGFEBlendElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFEBlendElement.h:
* Source/WebCore/svg/SVGFEColorMatrixElement.cpp:
(WebCore::SVGFEColorMatrixElement::isInvalidValuesLength const):
(WebCore::SVGFEColorMatrixElement::setFilterEffectAttribute):
(WebCore::SVGFEColorMatrixElement::svgAttributeChanged):
(WebCore::SVGFEColorMatrixElement::createFilterEffect const):
(WebCore::SVGFEColorMatrixElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFEColorMatrixElement.h:
* Source/WebCore/svg/SVGFEComponentTransferElement.cpp:
(WebCore::SVGFEComponentTransferElement::svgAttributeChanged):
(WebCore::SVGFEComponentTransferElement::createFilterEffect const):
(WebCore::SVGFEComponentTransferElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFEComponentTransferElement.h:
* Source/WebCore/svg/SVGFECompositeElement.cpp:
(WebCore::SVGFECompositeElement::setFilterEffectAttribute):
(WebCore::SVGFECompositeElement::svgAttributeChanged):
(WebCore::SVGFECompositeElement::createFilterEffect const):
(WebCore::SVGFECompositeElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFECompositeElement.h:
* Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp:
(WebCore::SVGFEConvolveMatrixElement::setFilterEffectAttribute):
(WebCore::SVGFEConvolveMatrixElement::svgAttributeChanged):
(WebCore::SVGFEConvolveMatrixElement::createFilterEffect const):
(WebCore::SVGFEConvolveMatrixElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFEConvolveMatrixElement.h:
* Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:
(WebCore::SVGFEDiffuseLightingElement::setFilterEffectAttribute):
(WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged):
(WebCore::SVGFEDiffuseLightingElement::createFilterEffect const):
(WebCore::SVGFEDiffuseLightingElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFEDiffuseLightingElement.h:
* Source/WebCore/svg/SVGFEDisplacementMapElement.cpp:
(WebCore::SVGFEDisplacementMapElement::setFilterEffectAttribute):
(WebCore::SVGFEDisplacementMapElement::svgAttributeChanged):
(WebCore::SVGFEDisplacementMapElement::createFilterEffect const):
(WebCore::SVGFEDisplacementMapElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFEDisplacementMapElement.h:
* Source/WebCore/svg/SVGFEDropShadowElement.cpp:
(WebCore::SVGFEDropShadowElement::svgAttributeChanged):
(WebCore::SVGFEDropShadowElement::setFilterEffectAttribute):
(WebCore::SVGFEDropShadowElement::createFilterEffect const):
(WebCore::SVGFEDropShadowElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFEDropShadowElement.h:
* Source/WebCore/svg/SVGFEFloodElement.cpp:
(WebCore::SVGFEFloodElement::setFilterEffectAttribute):
(WebCore::SVGFEFloodElement::createFilterEffect const):
(WebCore::SVGFEFloodElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFEFloodElement.h:
* Source/WebCore/svg/SVGFEGaussianBlurElement.cpp:
(WebCore::SVGFEGaussianBlurElement::svgAttributeChanged):
(WebCore::SVGFEGaussianBlurElement::setFilterEffectAttribute):
(WebCore::SVGFEGaussianBlurElement::createFilterEffect const):
(WebCore::SVGFEGaussianBlurElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFEGaussianBlurElement.h:
* Source/WebCore/svg/SVGFEImageElement.cpp:
(WebCore::SVGFEImageElement::svgAttributeChanged):
(WebCore::SVGFEImageElement::createFilterEffect const):
(WebCore::SVGFEImageElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFEImageElement.h:
* Source/WebCore/svg/SVGFEMergeElement.cpp:
(WebCore::SVGFEMergeElement::childrenChanged):
(WebCore::SVGFEMergeElement::createFilterEffect const):
(WebCore::SVGFEMergeElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFEMergeElement.h:
* Source/WebCore/svg/SVGFEMorphologyElement.cpp:
(WebCore::SVGFEMorphologyElement::setFilterEffectAttribute):
(WebCore::SVGFEMorphologyElement::svgAttributeChanged):
(WebCore::SVGFEMorphologyElement::createFilterEffect const):
(WebCore::SVGFEMorphologyElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFEMorphologyElement.h:
* Source/WebCore/svg/SVGFEOffsetElement.cpp:
(WebCore::SVGFEOffsetElement::svgAttributeChanged):
(WebCore::SVGFEOffsetElement::setFilterEffectAttribute):
(WebCore::SVGFEOffsetElement::createFilterEffect const):
(WebCore::SVGFEOffsetElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFEOffsetElement.h:
* Source/WebCore/svg/SVGFESpecularLightingElement.cpp:
(WebCore::SVGFESpecularLightingElement::setFilterEffectAttribute):
(WebCore::SVGFESpecularLightingElement::createFilterEffect const):
(WebCore::SVGFESpecularLightingElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFESpecularLightingElement.h:
* Source/WebCore/svg/SVGFETileElement.cpp:
(WebCore::SVGFETileElement::createFilterEffect const):
(WebCore::SVGFETileElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFETileElement.h:
* Source/WebCore/svg/SVGFETurbulenceElement.cpp:
(WebCore::SVGFETurbulenceElement::setFilterEffectAttribute):
(WebCore::SVGFETurbulenceElement::createFilterEffect const):
(WebCore::SVGFETurbulenceElement::filterEffect const): Deleted.
* Source/WebCore/svg/SVGFETurbulenceElement.h:
* Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::SVGFilterPrimitiveStandardAttributes::filterEffect):
(WebCore::SVGFilterPrimitiveStandardAttributes::primitiveAttributeChanged):
(WebCore::SVGFilterPrimitiveStandardAttributes::markFilterEffectForRebuild):
(WebCore::SVGFilterPrimitiveStandardAttributes::setFilterEffectAttribute): Deleted.
* Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:
(WebCore::SVGFilterPrimitiveStandardAttributes::setFilterEffectAttribute):
(WebCore::SVGFilterPrimitiveStandardAttributes::primitiveAttributeChanged): Deleted.
* Source/WebCore/svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::create):
* Source/WebCore/svg/graphics/filters/SVGFilter.h:
* Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:
(WebCore::SVGFilterBuilder::buildFilterExpression):
* Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:
(WebCore::SVGFilterBuilder::effectByRenderer): Deleted.

Canonical link: https://commits.webkit.org/251503@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295498 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241544
rdar://94649789

Patch by Youenn Fablet <youennf@gmail.com> on 2022-06-13
Reviewed by Eric Carlson.

* Source/WebCore/platform/cocoa/SharedVideoFrameInfo.mm:
(WebCore::SharedVideoFrameInfo::writePixelBuffer):

Canonical link: https://commits.webkit.org/251504@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295499 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…ng color referenced by CSS variable

https://bugs.webkit.org/show_bug.cgi?id=241558

Reviewed by Devin Rousso.

The patch for https://bugs.webkit.org/show_bug.cgi?id=241055 introduced an option
to prevent changing color formats when interacting with an inline color swatch.

The value of the `preventChangingColorFormats` option kept as an instance property of `WI.InlineSwatch`.
This is then referenced in the callback passed to `createCodeMirrorColorTextMarkers()`. The
callback doesn't share the same scope, so an exception is raied when calling `this._preventChangingColorFormats`.

This patch ensures the value of the instance property is captured in the scope of the callback passed.

* Source/WebInspectorUI/UserInterface/Views/InlineSwatch.js:
(WI.InlineSwatch.prototype._swatchElementClicked.switch.case.WI.InlineSwatch.Type.Variable.optionsForType):
(WI.InlineSwatch.prototype._swatchElementClicked):

Canonical link: https://commits.webkit.org/251505@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295500 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…k should check weakThis before using this

https://bugs.webkit.org/show_bug.cgi?id=241557

Reviewed by Youenn Fablet.

* Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
(WebCore::IDBServer::UniqueIDBDatabaseConnection::abortTransactionWithoutCallback):

Canonical link: https://commits.webkit.org/251506@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295501 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…collection instead of on current stage when using Stage Manager

https://bugs.webkit.org/show_bug.cgi?id=241521
rdar://91964707

Reviewed by Devin Rousso.

For Stage Manager, the Web Inspector window should appear in the same workspace as the active Safari window. Currently
the best way to accomplish this without negatively impacting our fullscreen behavior is to appear as if we are a
preferences window with a toolbar and NSWindowToolbarStylePreference. By hiding the toolbar, there is no visual or
functional change to Web Inspector, and we now get classified as an auxiliary window only in Stage Manager.

* Source/WebKit/UIProcess/Inspector/mac/WebInspectorUIProxyMac.mm:
(WebKit::WebInspectorUIProxy::createFrontendWindow):
* Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.mm:
(-[WebInspectorWindowController window]):

Canonical link: https://commits.webkit.org/251507@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295502 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html is a flaky crash

https://bugs.webkit.org/show_bug.cgi?id=241572
<rdar://95059414>

Unreviewed test gardening.

* LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/251508@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295503 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…updateScrollViewForTransaction:]

https://bugs.webkit.org/show_bug.cgi?id=241563
<rdar://94621991>

Reviewed by Wenson Hsieh.

Protect against a null root scrolling node.

* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView _updateScrollViewForTransaction:]):

Canonical link: https://commits.webkit.org/251509@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295504 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241565
rdar://95040155

Reviewed by Brent Fulgham.

Authenticators will time out operations after so many seconds of
waiting for user interaction, returning an error of
CTAP2_ERR_USER_ACTION_TIMEOUT. This patch handles that error
by reissuing the request, instead of letting it go to U2F fallback
and failing there with "no credentials found."

Tested with a Yubikey 5c.

* Source/WebCore/Modules/webauthn/fido/FidoConstants.cpp:
(fido::isCtapDeviceResponseCode):
* Source/WebCore/Modules/webauthn/fido/FidoConstants.h:
* Source/WebKit/UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:
(WebKit::CtapAuthenticator::continueMakeCredentialAfterResponseReceived):
(WebKit::CtapAuthenticator::continueGetAssertionAfterResponseReceived):

Canonical link: https://commits.webkit.org/251511@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295506 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241569

Patch by Youssef Soliman <youssefdevelops@gmail.com> on 2022-06-13
Reviewed by Jer Noble.

When the a PiP window is resized, a resize event should be emitted from
the window object, not just the <video> element.

* Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp:
(WebCore::HTMLVideoElementPictureInPicture::pictureInPictureWindowResized):
* Source/WebCore/Modules/pictureinpicture/PictureInPictureWindow.cpp:
(WebCore::PictureInPictureWindow::create):
(WebCore::PictureInPictureWindow::PictureInPictureWindow):
(WebCore::PictureInPictureWindow::setSize):
* Source/WebCore/Modules/pictureinpicture/PictureInPictureWindow.h:
* Source/WebCore/Modules/pictureinpicture/PictureInPictureWindow.idl:

Canonical link: https://commits.webkit.org/251512@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295507 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…ceResponse’

https://bugs.webkit.org/show_bug.cgi?id=241579

Reviewed by Michael Catanzaro.

Fix WPE compilation.

* Source/WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.h: include missing header.

Canonical link: https://commits.webkit.org/251513@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295508 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241518

Reviewed by Yusuke Suzuki.

jsc.cpp's module loader was written without any accommodation for Windows, so:
1. On Windows, recognize C:\foo as an absolute path and .\foo and ..\foo as dotted relative paths (allowing '/' too).
2. On all platforms, stop misusing the URL(base, relative) constructor. This isn't the way to add file:/// to an abspath.

This ensures that module tests are able to run well on Windows.

* Source/JavaScriptCore/jsc.cpp:
(isAbsolutePath): Added.
(isDottedRelativePath): Added.
(absoluteFileURL): Renamed from `absolutePath`.
(GlobalObject::moduleLoaderImportModule):
(GlobalObject::moduleLoaderResolve):
(JSC_DEFINE_HOST_FUNCTION):
(computeFilePath):
(runWithOptions):

Canonical link: https://commits.webkit.org/251514@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295509 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241573
<rdar://95038696>

Reviewed by Wenson Hsieh.

The function CGSSetDenyWindowServerConnections has not been declared.

* Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:
* Source/WebKit/Shared/Cocoa/AuxiliaryProcessCocoa.mm:

Canonical link: https://commits.webkit.org/251515@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295510 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…wser

https://bugs.webkit.org/show_bug.cgi?id=241353

Reviewed by Alex Christensen.

Do not keep strong reference to WebPageProxy in the async IPC callback, instead
use WeakPtr to let the page be destroyed if necessary, otherwise the page may
keep its process pool alive after the page was closed.

* Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp: exposed a couple of internal
methods for testing the behavior.
(webkitWebViewForceRepaintForTesting):
(webkitSetCachedProcessSuspensionDelayForTesting):
* Source/WebKit/UIProcess/API/glib/WebKitWebViewInternal.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::forceRepaint): replaced strong reference in the callback with
a weak one.
* Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:
(testNoWebProcessLeakAfterWebKitWebContextDestroy): new test that makes sure that outstanding
async IPC callbacks are run when page and its context are destroyed.
(beforeAll):
* Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:
(WebViewTest::waitUntilLoadFinished):
* Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:

Canonical link: https://commits.webkit.org/251516@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295511 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241567

Reviewed by Tim Nguyen and Simon Fraser.

Import of revision d70634c.

* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/resources/import-expectations.json:
* LayoutTests/imported/w3c/resources/resource-files.json:
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-1-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-1-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-1.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-2-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-2-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-clip-2.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1a-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1a.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1b-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1b.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1c-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1c.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1d-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-1d.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2a-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2a.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2b-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2b.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2c-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-composite-2c.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1a-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1a.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1b-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1b.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1c-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1c.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1d-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-1d.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-2-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-2-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-2.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3a-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3a.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3b-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3b.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3c-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3c.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3d-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3d.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3e-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3e.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3f-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3f.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3g-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3g.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3h-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3h.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3i-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-3i.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-4a-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-4a.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-4b-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-4b.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-5-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-5-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-5.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-6-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-6-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-6.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-clip-exclude-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-data-url-image-expected.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-a-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-a.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-b-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-b.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-c-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-c.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-d-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-d.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-to-mask-type-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-to-mask-type-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-to-mask-type.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1a-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1a.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1b-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1b.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1c-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1c.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1d-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1d.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1e-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1e.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-1-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-1-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-1.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-2-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-2-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-2.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-3-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-3-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-origin-3.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1a-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1a.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1b-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1b.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1c-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-1c.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-2-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-2a-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-2a.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-2b-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-2b.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-3-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-3a-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-3a.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-3b-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-3b.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4a-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4a.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4b-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4b.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4c-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4c.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4d-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-4d.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-5-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-5-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-5.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-6-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-6-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-6.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-7-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-7-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-position-7.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-1-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-1-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-1.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-2-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-2-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-2.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-3-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-3-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-repeat-3.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-auto-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-auto.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-length-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-length-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-length.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-percent-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-percent.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-auto.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-clip-border-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-clip-border-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-clip-border.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-clip-padding-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-clip-padding-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-clip-padding.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-position-fifty-fifty-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-position-fifty-fifty-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-position-fifty-fifty.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-contain.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-cover-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-cover-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-cover.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-auto-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-auto.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-length-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-length-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-length.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-percent-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-percent-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length-percent.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-length.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-auto-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-auto.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-length-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-length.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-percent-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-percent-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-percent-stretch-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-percent-stretch-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-percent-stretch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent-percent.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-size-percent.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/50x100-opaque-blue.svg: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/50x50-opaque-blue.svg: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-100x100.png: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-100x100.svg: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-100x50-transparent-100x50.png: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-100x50-transparent-100x50.svg: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/blue-luminance-100x100.svg: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/green-100x100.png: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/green-100x100.svg: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/green-luminance-100x100.svg: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/mask-half-transparent-100x100.svg: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/red-100x100.png: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/red-100x100.svg: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/red-luminance-100x100.svg: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/transparent-100x50-blue-100x50.png: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/transparent-100x50-blue-100x50.svg: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/support/w3c-import.log:
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/w3c-import.log:
* LayoutTests/platform/gtk/TestExpectations:
* LayoutTests/platform/ios/TestExpectations:

Canonical link: https://commits.webkit.org/251517@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295512 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241582

Reviewed by Myles C. Maxfield.

In r295476 RenderThemePlayStation::system implementation was removed but the declaration was still
present.

* Source/WebCore/rendering/RenderThemePlayStation.h:

Canonical link: https://commits.webkit.org/251518@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295513 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…e part of the reflection isn't painted

https://bugs.webkit.org/show_bug.cgi?id=241257

Reviewed by Don Olmstead.

If an element has both a mask image and reflection, the mask should be
applied both for the reflection and the real layers. However,
TextureMapper was using a single intermediate surface for painting the
reflection and the real layers.
1. Painting the reflection layer
2. Applying the mask to the reflection layer
3. Painting the real layer
4. Applying the mask to the real layer
In the step#4, if the mask layer is larger than the element rect, the
mask was unexpectedly applied to the part of the reflection.

The reflection and the real layers should be painted and masked
separately using intermediate surfaces. If the element has opacity,
they should have another intermediate surface to blend together with
the destination.

* LayoutTests/compositing/reflections/mask-and-reflection-expected.html: Added.
* LayoutTests/compositing/reflections/mask-and-reflection.html: Added.
* Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:
(WebCore::TextureMapperLayer::shouldBlend const):
(WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica):
(WebCore::TextureMapperLayer::paintUsingOverlapRegions):
(WebCore::TextureMapperLayer::paintSelfChildrenFilterAndMask):
(WebCore::TextureMapperLayer::paintIntoSurface):
(WebCore::TextureMapperLayer::paintWithIntermediateSurface):
(WebCore::TextureMapperLayer::paintSelfAndChildrenWithIntermediateSurface):
(WebCore::TextureMapperLayer::paintSelfChildrenReplicaFilterAndMask):
(WebCore::TextureMapperLayer::paintRecursive):
(WebCore::TextureMapperLayer::setMaskLayer):
* Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:

Canonical link: https://commits.webkit.org/251519@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295514 268f45cc-cd09-0410-ab3c-d52691b4dbfc
…-media-controls/skip-back-support/skip-back-support-button-click.html is a flaky crash

https://bugs.webkit.org/show_bug.cgi?id=241572
rdar://problem/95059414

Reviewed by Cameron McCormack.

In bug 241455 it was incorrectly assumed that checking that the IPCHandle was null
was a sufficient test to check the validity of the reply. However, this ignore the
fact that the IPC decoder will assert if the size isn't valid.
So rather than returning a Handle directly, we return an optional<Handle> instead.

Covered by the existing test.

* LayoutTests/platform/mac-wk2/TestExpectations:
* Source/WebKit/GPUProcess/media/RemoteMediaResourceManager.cpp:
(WebKit::RemoteMediaResourceManager::dataReceived):
* Source/WebKit/GPUProcess/media/RemoteMediaResourceManager.h:
* Source/WebKit/GPUProcess/media/RemoteMediaResourceManager.messages.in:
* Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp:
(WebKit::RemoteSourceBufferProxy::append):
* Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.h:
* Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.messages.in:
* Source/WebKit/WebProcess/GPU/media/RemoteMediaResourceProxy.cpp:
(WebKit::RemoteMediaResourceProxy::dataReceived):
* Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:
(WebKit::SourceBufferPrivateRemote::append):

Canonical link: https://commits.webkit.org/251520@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295515 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241581

Reviewed by Simon Fraser.

* Source/WebCore/platform/graphics/TextRun.h:
(WebCore::TextRun::isolatedCopy const):

Canonical link: https://commits.webkit.org/251521@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295516 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=241577
<rdar://problem/95074247>

Reviewed by Simon Fraser.

After r295498, all the methods of SVGFilterBuilder became static. So this patch
removes it and moves its methods to SVGFilter.

-- colorInterpolationForElement() will be moved to SVGElement::colorInterpolation().
-- effectGeometryFlagsForElement() will be moved to
   SVGFilterPrimitiveStandardAttributes::effectGeometryFlags().
-- FilterData::boundaries is removed. It is set in RenderSVGResourceFilter::
   applyResource() and used only in RenderSVGResourceFilter::postApplyResource()
   where we check '!isEmpty()'. This check can be replaced by checking if filter
   is not nullptr.
-- FilterData::scale is removed since it is not used.
-- FilterData::sourceGraphicBuffer and FilterData::drawingRegion are renamed
   sourceImage and sourceImageRect respectively to match the named of the inputs
   of GraphicsContext::drawFilteredImageBuffer().

* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/rendering/CSSFilter.cpp:
(WebCore::calculateReferenceFilterOutsets):
* Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):
(WebCore::RenderSVGResourceFilter::postApplyResource):
(WebCore::RenderSVGResourceFilter::drawingRegion const):
* Source/WebCore/rendering/svg/RenderSVGResourceFilter.h:
* Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp:
(WebCore::writeSVGResourceContainer):
* Source/WebCore/svg/SVGElement.cpp:
(WebCore::SVGElement::colorInterpolation const):
* Source/WebCore/svg/SVGElement.h:
* Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::SVGFilterPrimitiveStandardAttributes::effectGeometryFlags const):
* Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:
* Source/WebCore/svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::create):
(WebCore::buildFilterEffectsGraph):
(WebCore::SVGFilter::buildExpression):
(WebCore::buildFilterPrimitivesGraph):
(WebCore::SVGFilter::calculateOutsets):
* Source/WebCore/svg/graphics/filters/SVGFilter.h:
* Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp: Removed.
* Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h: Removed.

Canonical link: https://commits.webkit.org/251522@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295517 268f45cc-cd09-0410-ab3c-d52691b4dbfc
@youennf youennf added the merge-queue Applied to send a pull request to merge-queue label Jun 14, 2022
https://bugs.webkit.org/show_bug.cgi?id=179377
rdar://problem/35391187

Patch by Youenn Fablet <youennf@gmail.com> on 2022-06-14
Reviewed by Alex Christensen.

Store the time when we are about to either fire the fetch event or run the service worker to fire the fetch event.
To do so, we store it in NetworkResourceLoader and send the value to WebResourceLoader.
In case of process swap, we send it back to the new WebResourceLoader.
WebResourceLoader is then responsible to update the network load metrics when receiving the response/finish load metrics.

Covered by updated tests.

* LayoutTests/http/wpt/service-workers/navigation-timing.https-expected.txt:
* LayoutTests/http/wpt/service-workers/navigation-timing.js:
(event.setTimeout):
* LayoutTests/http/wpt/service-workers/resources/navigation-timing-part-2.html:
* Source/WebCore/page/PerformanceResourceTiming.cpp:
(WebCore::PerformanceResourceTiming::workerStart const):
* Source/WebCore/platform/network/NetworkLoadMetrics.cpp:
(WebCore::NetworkLoadMetrics::updateFromFinalMetrics):
(WebCore::NetworkLoadMetrics::isolatedCopy const):
* Source/WebCore/platform/network/NetworkLoadMetrics.h:
(WebCore::NetworkLoadMetrics::encode const):
(WebCore::NetworkLoadMetrics::decode):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::transferToNewWebProcess):
(WebKit::NetworkResourceLoader::continueWillSendRequest):
(WebKit::NetworkResourceLoader::setWorkerStart):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.h:
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:
(WebKit::ServiceWorkerFetchTask::ServiceWorkerFetchTask):
* Source/WebKit/WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveResponse):
(WebKit::WebResourceLoader::didFinishResourceLoad):
* Source/WebKit/WebProcess/Network/WebResourceLoader.h:
(WebKit::WebResourceLoader::setWorkerStart):
* Source/WebKit/WebProcess/Network/WebResourceLoader.messages.in:

Canonical link: https://commits.webkit.org/251523@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295518 268f45cc-cd09-0410-ab3c-d52691b4dbfc
@webkit-early-warning-system webkit-early-warning-system merged commit 729991b into WebKit:main Jun 14, 2022
@webkit-early-warning-system
Copy link
Collaborator

Committed r295518 (251523@main): https://commits.webkit.org/251523@main

Reviewed commits have been landed. Closing PR #1348 and removing active labels.

@webkit-early-warning-system webkit-early-warning-system removed the merge-queue Applied to send a pull request to merge-queue label Jun 14, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
WebKit Misc. For miscellaneous bugs in the WebKit framework (and not JavaScriptCore or WebCore).
Projects
None yet