Timeline



Feb 9, 2021:

9:46 PM Changeset in webkit [272638] by ysuzuki@apple.com
  • 9 edits
    3 adds in trunk

[JSC] C++ iteration should support fast iterator protocol
https://bugs.webkit.org/show_bug.cgi?id=221526

Reviewed by Alexey Shvayka.

JSTests:

  • microbenchmarks/map-constructor.js: Added.

(test):

  • stress/map-constructor-hole-throw.js: Added.

(shouldBe):
(shouldThrow):
(values.proto.return):
(Map.prototype):

Source/JavaScriptCore:

This patch adds fast iteration protocol support in C++ iteration (forEachIterable).
In JS, we have op_iterator_open / op_iterator_next to iterate array quickly.
But we do not use this feature in C++ forEachIterable. In this patch we integrate
the same (or a bit more efficient since we can avoid creating JSArrayIterator) mechanism
so that iteration in C++ gets faster for normal arrays.

We observed 1.9x faster in Map creation with arrays.

ToT Patched

map-constructor 35.7446+-0.2354 18.7516+-0.4534 definitely 1.9062x faster

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::iteratorEntries):

  • runtime/CommonSlowPaths.cpp:

(JSC::iteratorOpenTryFastImpl):

  • runtime/IteratorOperations.cpp:

(JSC::iteratorClose):
(JSC::prepareForFastArrayIteration):

  • runtime/IteratorOperations.h:

(JSC::forEachInIterable):

  • runtime/JSArrayIterator.h:
9:22 PM Changeset in webkit [272637] by achristensen@apple.com
  • 9 edits in trunk/Source/WebKit

Use CompletionHandler instead of ApplicationManifestCallback
https://bugs.webkit.org/show_bug.cgi?id=221627

Reviewed by Chris Dumez.

  • UIProcess/API/C/WKPage.cpp:

(WKPageGetApplicationManifest_b):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _getApplicationManifestWithCompletionHandler:]):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::getApplicationManifest):
(WebKit::WebPageProxy::applicationManifestCallback): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::getApplicationManifest):
(WebKit::WebPage::didFinishLoadingApplicationManifest):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
9:21 PM Changeset in webkit [272636] by achristensen@apple.com
  • 15 edits in trunk/Source/WebKit

Use CompletionHandler instead of DataCallback
https://bugs.webkit.org/show_bug.cgi?id=221639

Reviewed by Chris Dumez.

  • UIProcess/API/C/WKFrame.cpp:

(WKFrameGetMainResourceData):
(WKFrameGetResourceData):
(WKFrameGetWebArchive):

  • UIProcess/API/C/WKPage.cpp:

(WKPageGetSelectionAsWebArchiveData):
(WKPageDrawPagesToPDF):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView createWebArchiveDataWithCompletionHandler:]):
(-[WKWebView _getMainResourceDataWithCompletionHandler:]):

  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::getWebArchive):
(WebKit::WebFrameProxy::getMainResourceData):
(WebKit::WebFrameProxy::getResourceData):

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

(WebKit::CompletionHandler<void):
(WebKit::WebPageProxy::getContentsAsMHTMLData):
(WebKit::WebPageProxy::getSelectionAsWebArchiveData):
(WebKit::WebPageProxy::getMainResourceDataOfFrame):
(WebKit::WebPageProxy::getResourceDataFromFrame):
(WebKit::WebPageProxy::getWebArchiveOfFrame):
(WebKit::WebPageProxy::drawPagesToPDF):
(WebKit::WebPageProxy::dataCallback): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/WKPrintingView.mm:

(-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::getContentsAsMHTMLData):
(WebKit::WebPage::getSelectionAsWebArchiveData):
(WebKit::WebPage::getMainResourceDataOfFrame):
(WebKit::WebPage::getResourceDataFromFrame):
(WebKit::WebPage::getWebArchiveOfFrame):
(WebKit::WebPage::drawPagesToPDF):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
8:35 PM Changeset in webkit [272635] by achristensen@apple.com
  • 10 edits in trunk/Source/WebKit

Use CompletionHandler instead of PrintFinishedCallback
https://bugs.webkit.org/show_bug.cgi?id=221643

Reviewed by Chris Dumez.

  • UIProcess/API/gtk/WebKitPrintOperation.cpp:

(webkitPrintOperationPrintPagesForFrame):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::drawPagesForPrinting):
(WebKit::WebPageProxy::printFinishedCallback): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::drawPagesForPrinting):
(WebKit::WebPage::didFinishPrintOperation): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:

(WebKit::WebPrintOperationGtk::printDone):

  • WebProcess/WebPage/gtk/WebPrintOperationGtk.h:
7:43 PM Changeset in webkit [272634] by Lauro Moura
  • 4 edits
    2 moves
    2 deletes in trunk/LayoutTests

[GLIB] Rebaseline table tests after r272100 and garden some a11 failures.

Unreviewed test gardening.

  • platform/glib/TestExpectations:

Updates after r272100.

  • platform/glib/fast/table/005-expected.txt: Renamed from LayoutTests/platform/gtk/fast/table/005-expected.txt.
  • platform/glib/tables/mozilla/bugs/bug1224-expected.txt: Renamed from LayoutTests/platform/gtk/tables/mozilla/bugs/bug1224-expected.txt.
  • platform/wpe/fast/table/005-expected.txt: Removed.
  • platform/wpe/tables/mozilla/bugs/bug1224-expected.txt: Removed.
  • platform/wpe/tables/mozilla/bugs/bug32205-3-expected.txt:
  • platform/wpe/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
7:30 PM Changeset in webkit [272633] by eric.carlson@apple.com
  • 3 edits in trunk/Source/WebCore

REGRESSION: (r272458): [BigSur Debug] ASSERTION FAILED: m_haveAddedMediaUsageManagerSession in WebCore::MediaElementSession::updateMediaUsageIfChanged()
https://bugs.webkit.org/show_bug.cgi?id=221634
<rdar://problem/74161017>

Reviewed by Ryosuke Niwa.

No new tests, this fixes an assertion in an existing test.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::MediaElementSession):
(WebCore::MediaElementSession::addMediaUsageManagerSessionIfNecessary):
(WebCore::MediaElementSession::inActiveDocumentChanged):
(WebCore::MediaElementSession::updateMediaUsageIfChanged):
(WebCore::MediaElementSession::addedMediaUsageManagerSessionIfNecessary): Deleted.

  • html/MediaElementSession.h:
7:24 PM Changeset in webkit [272632] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebCore

[GTK] Export additional methods of SourceBufferPrivate to support hidden visibility
https://bugs.webkit.org/show_bug.cgi?id=221625

Reviewed by Michael Catanzaro.

Add additional WEBCORE_EXPORTs to SourceBufferPrivate that were found when linking GTK with
hidden visibility turned on.

  • platform/graphics/SourceBufferPrivate.h:

(WebCore::SourceBufferPrivate::removeCodedFrames):

6:24 PM Changeset in webkit [272631] by Devin Rousso
  • 3 edits in trunk/Source/WebKit

Unreviewed, build fix after r272630

  • UIProcess/ios/WKActionSheetAssistant.h:
  • UIProcess/ios/WKActionSheetAssistant.mm:
6:06 PM Changeset in webkit [272630] by Devin Rousso
  • 33 edits
    2 copies
    18 moves
    13 adds in trunk

[iOS] Add support for the language/subtitle tracks button using UIMenu
https://bugs.webkit.org/show_bug.cgi?id=221594
<rdar://problem/74129129>

Reviewed by Eric Carlson and Wenson Hsieh.

Source/WebCore:

Tests: media/modern-media-controls/tracks-support/ios/tracks-support-auto-text-track.html

media/modern-media-controls/tracks-support/ios/tracks-support-click-track-in-contextmenu.html
media/modern-media-controls/tracks-support/ios/tracks-support-hidden-tracks.html
media/modern-media-controls/tracks-support/ios/tracks-support-off-text-track.html
media/modern-media-controls/tracks-support/ios/tracks-support-show-contextmenu-then-double-click-on-tracks-button.html
media/modern-media-controls/tracks-support/ios/tracks-support-text-track-selected-via-media-api.html
media/modern-media-controls/tracks-support/mac/tracks-support-auto-text-track.html
media/modern-media-controls/tracks-support/mac/tracks-support-click-track-in-panel.html
media/modern-media-controls/tracks-support/mac/tracks-support-hidden-tracks.html
media/modern-media-controls/tracks-support/mac/tracks-support-off-text-track.html
media/modern-media-controls/tracks-support/mac/tracks-support-show-and-populate-panel.html
media/modern-media-controls/tracks-support/mac/tracks-support-show-panel-after-dragging-controls.html
media/modern-media-controls/tracks-support/mac/tracks-support-show-panel-fullscreen.html
media/modern-media-controls/tracks-support/mac/tracks-support-show-panel-then-double-click-on-tracks-button.html
media/modern-media-controls/tracks-support/mac/tracks-support-text-track-selected-via-media-api.html

  • page/MediaControlsContextMenuItem.h: Added.

(WebCore::MediaControlsContextMenuItem::encode const):
(WebCore::MediaControlsContextMenuItem::decode):
Simple POD object for sending data from the WebProcess to the UIProcess for the UIMenu.

  • Modules/modern-media-controls/media/tracks-support.js:

(TracksSupport.prototype.buttonWasPressed):
(TracksSupport.prototype.syncControl):

  • Modules/mediacontrols/MediaControlsHost.idl:
  • Modules/mediacontrols/MediaControlsHost.h:
  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::showMediaControlsContextMenu): Added.

  • page/ChromeClient.h:

(WebCore::ChromeClient::showMediaControlsContextMenu):
Provide a host hook for generating and sending the UIMenu data. When a UIAction is
selected or the menu is dismissed, the relevant MediaControlsContextMenuItem::ID is sent
back as the response to the async message and is used to perform the action related to the
type of the object (e.g. AudioTrack, TextTrack, etc.) that was previously associated
with that MediaControlsContextMenuItem::ID.

  • en.lproj/Localizable.strings:
  • platform/LocalizedStrings.h:
  • platform/LocalizedStrings.cpp:

(WebCore::textTrackSubtitlesText): Deleted.
Add localizable strings for "Languages" and "Subtitles" headers/submenus.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

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

(WebKit::WebChromeClient::showMediaControlsContextMenu): Added.

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

(WebKit::WebPage::showMediaControlsContextMenu): Added.

  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::showMediaControlsContextMenu): Added.
Send the given MediaControlsContextMenuItems to the UIProcess for the UIMenu.

  • UIProcess/PageClient.h:

(WebKit::PageClient::showMediaControlsContextMenu): Added.

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

(WebKit::PageClientImpl::showMediaControlsContextMenu): Added.

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

(-[WKContentView actionSheetAssistantDidShowContextMenu:]): Added.
(-[WKContentView actionSheetAssistantDidDismissContextMenu:]): Added.
(-[WKContentView _showMediaControlsContextMenu:items:completionHandler:]): Added.
(-[WKContentView _contentsOfUserInterfaceItem:]):
Pass the given MediaControlsContextMenuItems to the WKActionSheetAssistant.

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

(-[WKActionSheetAssistant dealloc]):
(-[WKActionSheetAssistant _removeContextMenuInteractions]): Added.
(-[WKActionSheetAssistant _ensureDataDetectorContextMenuInteraction]): Added.
(-[WKActionSheetAssistant _ensureMediaControlsContextMenuInteraction]): Added.
(-[WKActionSheetAssistant hasContextMenuInteraction]):
(-[WKActionSheetAssistant showDataDetectorsUIForPositionInformation:]):
(-[WKActionSheetAssistant _uiMenuElementsForMediaControlContextMenuItems:]): Added.
(-[WKActionSheetAssistant showMediaControlsContextMenu:items:completionHandler:]): Added.
(-[WKActionSheetAssistant contextMenuInteraction:configurationForMenuAtLocation:]):
(-[WKActionSheetAssistant contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]):
(-[WKActionSheetAssistant contextMenuInteraction:willDisplayMenuForConfiguration:animator:]): Added.
(-[WKActionSheetAssistant contextMenuInteraction:willEndForConfiguration:animator:]):
(-[WKActionSheetAssistant _contextMenuInteraction:overrideSuggestedActionsForConfiguration:]):
(-[WKActionSheetAssistant _contentsOfContextMenuItem:]): Added.
(-[WKActionSheetAssistant currentlyAvailableActionTitles]): Added.
(-[WKActionSheetAssistant currentlyAvailableMediaControlsContextMenuItems]): Added.
(-[WKActionSheetAssistant currentAvailableActionTitles]): Deleted.
(-[WKActionSheetAssistant removeContextMenuInteraction]): Deleted.
(-[WKActionSheetAssistant ensureContextMenuInteraction]): Deleted.
Instead of assuming that the only UIContextMenuInteraction is for data detectors, check
the given interaction to see if it's the data detector interaction before doing any work.
This allows the media controls UIContextMenuInteraction to exist side-by-side and use the
WKActionSheetAssistant as its delegate too (especially since it's not possible for both
contextmenus to be active at the same time). Present the media controls contextmenu without
a preview (it uses an empty UIView for proper sizing) at the location provided. Selecting
a UIAction will send the MediaControlsContextMenuItem::ID back to the WebProcess.
Also add support for

  • UIScriptController.prototype.contentsOfUserInterfaceItem
  • UIScriptController.prototype.didShowContextMenuCallback
  • UIScriptController.prototype.didDismissContextMenuCallback

for usage in the added LayoutTests/media/modern-media-controls/tracks-support/ios/ tests.

Source/WTF:

  • Scripts/Preferences/WebPreferences.yaml:

Create a MediaControlsContextMenusEnabled setting for guarding an IDL hook to WK2 only.

Tools:

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::rectForMenuAction const):
In addition to looking at the active UICalloutBar (if it exists), walk the view hierarchy
looking for any UILabel that contains the given text and use that as the rect to tap.
While this isn't the most confident/consistent approach, UIKit doesn't have anything like
UICalloutBar for contextmenu interactions, and this is only used inside WKTR (which has no
other UI outside than the page), so it's expected that callers know what they're doing.

LayoutTests:

  • media/modern-media-controls/resources/media-controls-utils.js:

(getTracksContextMenu): Added.

  • media/modern-media-controls/tracks-support/ios/tracks-support-auto-text-track.html: Added.
  • media/modern-media-controls/tracks-support/ios/tracks-support-auto-text-track-expected.txt: Added.
  • media/modern-media-controls/tracks-support/ios/tracks-support-click-track-in-contextmenu.html: Added.
  • media/modern-media-controls/tracks-support/ios/tracks-support-click-track-in-contextmenu-expected.txt: Added.
  • media/modern-media-controls/tracks-support/ios/tracks-support-hidden-tracks.html: Added.
  • media/modern-media-controls/tracks-support/ios/tracks-support-hidden-tracks-expected.txt: Added.
  • media/modern-media-controls/tracks-support/ios/tracks-support-off-text-track.html: Added.
  • media/modern-media-controls/tracks-support/ios/tracks-support-off-text-track-expected.txt: Added.
  • media/modern-media-controls/tracks-support/ios/tracks-support-show-contextmenu-then-double-click-on-tracks-button.html: Added.
  • media/modern-media-controls/tracks-support/ios/tracks-support-show-contextmenu-then-double-click-on-tracks-button-expected.txt: Added.
  • media/modern-media-controls/tracks-support/ios/tracks-support-text-track-selected-via-media-api.html: Added.
  • media/modern-media-controls/tracks-support/ios/tracks-support-text-track-selected-via-media-api-expected.txt: Added.

Duplicate existing TracksSupport tests to test for similar results but using the new iOS path.

  • media/modern-media-controls/tracks-support/mac/tracks-support-auto-text-track.html: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-auto-text-track.html.
  • media/modern-media-controls/tracks-support/mac/tracks-support-auto-text-track-expected.txt: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-auto-text-track-expected.txt.
  • media/modern-media-controls/tracks-support/mac/tracks-support-click-track-in-panel.html: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-click-track-in-panel.html.
  • media/modern-media-controls/tracks-support/mac/tracks-support-click-track-in-panel-expected.txt: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-click-track-in-panel-expected.txt.
  • media/modern-media-controls/tracks-support/mac/tracks-support-hidden-tracks.html: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-hidden-tracks.html.
  • media/modern-media-controls/tracks-support/mac/tracks-support-hidden-tracks-expected.txt: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-hidden-tracks-expected.txt.
  • media/modern-media-controls/tracks-support/mac/tracks-support-off-text-track.html: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-off-text-track.html.
  • media/modern-media-controls/tracks-support/mac/tracks-support-off-text-track-expected.txt: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-off-text-track-expected.txt.
  • media/modern-media-controls/tracks-support/mac/tracks-support-show-and-populate-panel.html: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-show-and-populate-panel.html.
  • media/modern-media-controls/tracks-support/mac/tracks-support-show-and-populate-panel-expected.txt: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-show-and-populate-panel-expected.txt.
  • media/modern-media-controls/tracks-support/mac/tracks-support-show-panel-after-dragging-controls.html: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls.html.
  • media/modern-media-controls/tracks-support/mac/tracks-support-show-panel-after-dragging-controls-expected.txt: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls-expected.txt.
  • media/modern-media-controls/tracks-support/mac/tracks-support-show-panel-fullscreen.html: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen.html.
  • media/modern-media-controls/tracks-support/mac/tracks-support-show-panel-fullscreen-expected.txt: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen-expected.txt.
  • media/modern-media-controls/tracks-support/mac/tracks-support-show-panel-then-double-click-on-tracks-button.html: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-show-panel-then-double-click-on-tracks-button.html.
  • media/modern-media-controls/tracks-support/mac/tracks-support-show-panel-then-double-click-on-tracks-button-expected.txt: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-show-panel-then-double-click-on-tracks-button-expected.txt.
  • media/modern-media-controls/tracks-support/mac/tracks-support-text-track-selected-via-media-api.html: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-text-track-selected-via-media-api.html.
  • media/modern-media-controls/tracks-support/mac/tracks-support-text-track-selected-via-media-api-expected.txt: Renamed from LayoutTests/media/modern-media-controls/tracks-support/tracks-support-text-track-selected-via-media-api-expected.txt.
  • platform/mac/TestExpectations:

Moved existing TracksSupport tests to a mac subfolder so they can be skipped on iOS.

5:52 PM Changeset in webkit [272629] by Chris Dumez
  • 18 edits
    2 adds in trunk/Source/WebKit

Make sure we are no longer show the previous page when running a JS prompt
https://bugs.webkit.org/show_bug.cgi?id=215782
<rdar://problem/67698601>

Reviewed by Simon Fraser.

Make sure we are no longer show the previous page when running a JS prompt.
If we have not yet done a layer tree commit since the last load commit, then
we are likely still showing the previous page. If we are asked to run a JS
prompt / alert / confirm at this point, it would be confusing to still show
the previous page. In order to address the issue, we now make the view blank
in such scenario (ideally, we'd have painted the new page but this is
currently not a trivial thing to do).

To make the view blank, the approach chosen was to add a blank overlay view
on top of the content. This overlay view gets taken down as soon as we
paint the view again.

  • SourcesCocoa.txt:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _hasBlankOverlay]):
(-[WKWebView _setHasBlankOverlay:]):

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/Cocoa/PageClientImplCocoa.h:
  • UIProcess/Cocoa/PageClientImplCocoa.mm:

(WebKit::PageClientImplCocoa::setHasBlankOverlay):

  • UIProcess/Cocoa/WKBlankOverlayView.h: Added.
  • UIProcess/Cocoa/WKBlankOverlayView.mm: Added.

(-[WKBlankOverlayView initWithFrame:]):

  • UIProcess/PageClient.h:

(WebKit::PageClient::setHasBlankOverlay):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didFirstLayerTreeCommitAfterCommittingLoad):
(WebKit::WebPageProxy::makeViewBlankIfUnpaintedSinceLastLoadCommit):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::runJavaScriptAlert):
(WebKit::WebPageProxy::runJavaScriptConfirm):
(WebKit::WebPageProxy::runJavaScriptPrompt):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::didCommitLayerTree):

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::didUpdateRenderingAfterCommittingLoad):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didCommitLoad):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::updateRendering):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::didUpdateRendering):

5:29 PM Changeset in webkit [272628] by achristensen@apple.com
  • 12 edits in trunk/Source/WebKit

Use CompletionHandler instead of ImageCallback
https://bugs.webkit.org/show_bug.cgi?id=221626

Reviewed by Chris Dumez.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):

  • UIProcess/API/Cocoa/_WKThumbnailView.mm:

(-[_WKThumbnailView requestSnapshot]):

  • UIProcess/API/ios/WKWebViewIOS.mm:

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

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

(WebKit::WebPageProxy::drawRectToImage):
(WebKit::WebPageProxy::takeSnapshot):
(WebKit::WebPageProxy::imageCallback): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/WKPrintingView.mm:

(-[WKPrintingView _drawPreview:]):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::takeSnapshot):
(WebKit::WebPage::drawRectToImage):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
5:28 PM Changeset in webkit [272627] by achristensen@apple.com
  • 12 edits in trunk/Source/WebKit

Use CompletionHandler instead of UnsignedCallback
https://bugs.webkit.org/show_bug.cgi?id=221631

Reviewed by Chris Dumez.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::characterIndexForPoint):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::replaceMatches):
(WebKit::WebPageProxy::characterIndexForPointAsync):
(WebKit::WebPageProxy::unsignedCallback): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView selectTextWithGranularity:atPoint:completionHandler:]):
(-[WKContentView beginSelectionInDirection:completionHandler:]):
(-[WKContentView updateSelectionWithExtentPoint:completionHandler:]):
(-[WKContentView updateSelectionWithExtentPoint:withBoundary:completionHandler:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::beginSelectionInDirection):
(WebKit::WebPageProxy::updateSelectionWithExtentPoint):
(WebKit::WebPageProxy::updateSelectionWithExtentPointAndBoundary):

  • UIProcess/mac/WKTextFinderClient.mm:

(-[WKTextFinderClient replaceMatches:withString:inSelectionOnly:resultCollector:]):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::replaceMatches):
(WebKit::WebPage::characterIndexForPointAsync):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::beginSelectionInDirection):
(WebKit::WebPage::updateSelectionWithExtentPointAndBoundary):
(WebKit::WebPage::updateSelectionWithExtentPoint):

5:19 PM Changeset in webkit [272626] by Andres Gonzalez
  • 7 edits in trunk

Descendants of row and column headers should expose the aria-sort attribute.
https://bugs.webkit.org/show_bug.cgi?id=221590

Reviewed by Chris Fleizach.

Source/WebCore:

Tests:
accessibility/aria-sort.html
accessibility/ios-simulator/aria-sort-ios.html

Walk up the accessibility hierarchy to check for an inherited aria-sort
attribute present in a row or column header ancestor.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::sortDirection const):

LayoutTests:

Expanded this test to include the case where the header contains a child
element that must also expose the aria-sort attribute inherited from its
parent.

  • accessibility/aria-sort-expected.txt:
  • accessibility/aria-sort.html:
  • accessibility/ios-simulator/aria-sort-ios-expected.txt:
  • accessibility/ios-simulator/aria-sort-ios.html:
5:18 PM Changeset in webkit [272625] by Peng Liu
  • 21 edits
    9 adds in trunk/Source

[GPUP] Run ImageDecoderAVFObjC in the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=221317

Reviewed by Jer Noble.

Source/WebCore:

Modify ImageDecoder and ImageDecoderAVFObjC classes in order to run ImageDecoderAVFObjC
in the GPU process.

  • Add install/reset factory methods to ImageDecoder class.
  • Add a struct FrameInfo.
  • Export some methods of ImageDecoderAVFObjC to WebKit.
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/ImageDecoder.cpp:

(WebCore::platformRegisterFactories):
(WebCore::installedFactories):
(WebCore::ImageDecoder::installFactory):
(WebCore::ImageDecoder::resetFactories):
(WebCore::ImageDecoder::clearFactories):
(WebCore::ImageDecoder::create):
(WebCore::ImageDecoder::supportsMediaType):

  • platform/graphics/ImageDecoder.h:

(WebCore::ImageDecoder::FrameInfo::encode const):
(WebCore::ImageDecoder::FrameInfo::decode):

  • platform/graphics/ImageDecoderIdentifier.h: Added.
  • platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.h:

(WebCore::ImageDecoderAVFObjC::hasTrack const):

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

(WebCore::ImageDecoderAVFObjC::frameInfos const):
(WebCore::ImageDecoderAVFObjC::createFrameImageAtIndex):

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

(WebCore::WebCoreDecompressionSession::ensureDecompressionSessionForSample):
Update the attribute so that we can create an IOSurface from a decoded frame.

Source/WebKit:

This patch adds the support to run ImageDecoderAVFObjC in the GPU process when the
"GPU Process: Media" preference is on. The RemoteImageDecoderAVF running in the Web
process forwards video data to the RemoteImageDecoderAVFProxy running in the GPU process,
which parses the data and returns frame information ("hasAlpha" and "duration") to the
Web process. RemoteImageDecoderAVFProxy will generate (decode) frames (images) after
receiving requests from RemoteImageDecoderAVF. The decoded frames are transferred to
the Web process through IOSurfaces, and the frames will be cached in the Web process.

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

(WebKit::GPUConnectionToWebProcess::imageDecoderAVFProxy):
(WebKit::GPUConnectionToWebProcess::dispatchMessage):
(WebKit::GPUConnectionToWebProcess::dispatchSyncMessage):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/media/RemoteImageDecoderAVFProxy.cpp: Added.

(WebKit::RemoteImageDecoderAVFProxy::RemoteImageDecoderAVFProxy):
(WebKit::RemoteImageDecoderAVFProxy::createDecoder):
(WebKit::RemoteImageDecoderAVFProxy::deleteDecoder):
(WebKit::RemoteImageDecoderAVFProxy::encodedDataStatusChanged):
(WebKit::RemoteImageDecoderAVFProxy::setExpectedContentSize):
(WebKit::RemoteImageDecoderAVFProxy::setData):
(WebKit::RemoteImageDecoderAVFProxy::createFrameImageAtIndex):

  • GPUProcess/media/RemoteImageDecoderAVFProxy.h: Added.
  • GPUProcess/media/RemoteImageDecoderAVFProxy.messages.in: Added.
  • Scripts/webkit/messages.py:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/media/RemoteImageDecoderAVF.cpp: Added.

(WebKit::RemoteImageDecoderAVF::RemoteImageDecoderAVF):
(WebKit::RemoteImageDecoderAVF::~RemoteImageDecoderAVF):
(WebKit::RemoteImageDecoderAVF::gpuProcessConnection const):
(WebKit::RemoteImageDecoderAVF::canDecodeType):
(WebKit::RemoteImageDecoderAVF::supportsMediaType):
(WebKit::RemoteImageDecoderAVF::encodedDataStatus const):
(WebKit::RemoteImageDecoderAVF::setEncodedDataStatusChangeCallback):
(WebKit::RemoteImageDecoderAVF::size const):
(WebKit::RemoteImageDecoderAVF::frameCount const):
(WebKit::RemoteImageDecoderAVF::repetitionCount const):
(WebKit::RemoteImageDecoderAVF::uti const):
(WebKit::RemoteImageDecoderAVF::filenameExtension const):
(WebKit::RemoteImageDecoderAVF::frameSizeAtIndex const):
(WebKit::RemoteImageDecoderAVF::frameIsCompleteAtIndex const):
(WebKit::RemoteImageDecoderAVF::frameMetadataAtIndex const):
(WebKit::RemoteImageDecoderAVF::frameDurationAtIndex const):
(WebKit::RemoteImageDecoderAVF::frameHasAlphaAtIndex const):
(WebKit::RemoteImageDecoderAVF::frameAllowSubsamplingAtIndex const):
(WebKit::RemoteImageDecoderAVF::frameBytesAtIndex const):
(WebKit::RemoteImageDecoderAVF::createFrameImageAtIndex):
(WebKit::RemoteImageDecoderAVF::setExpectedContentSize):
(WebKit::RemoteImageDecoderAVF::setData):
(WebKit::RemoteImageDecoderAVF::clearFrameBufferCache):
(WebKit::RemoteImageDecoderAVF::encodedDataStatusChanged):

  • WebProcess/GPU/media/RemoteImageDecoderAVF.h: Added.
  • WebProcess/GPU/media/RemoteImageDecoderAVFManager.cpp: Added.

(WebKit::RemoteImageDecoderAVFManager::createImageDecoder):
(WebKit::RemoteImageDecoderAVFManager::deleteRemoteImageDecoder):
(WebKit::RemoteImageDecoderAVFManager::RemoteImageDecoderAVFManager):
(WebKit::RemoteImageDecoderAVFManager::~RemoteImageDecoderAVFManager):
(WebKit::RemoteImageDecoderAVFManager::supplementName):
(WebKit::RemoteImageDecoderAVFManager::gpuProcessConnection const):
(WebKit::RemoteImageDecoderAVFManager::setUseGPUProcess):
(WebKit::RemoteImageDecoderAVFManager::encodedDataStatusChanged):

  • WebProcess/GPU/media/RemoteImageDecoderAVFManager.h: Added.
  • WebProcess/GPU/media/RemoteImageDecoderAVFManager.messages.in: Added.
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp: Fix unified build failures.
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h: Ditto.
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::setUseGPUProcessForMedia):

5:04 PM Changeset in webkit [272624] by Alan Coon
  • 1 copy in tags/Safari-612.1.2.6

Tag Safari-612.1.2.6.

4:56 PM Changeset in webkit [272623] by Alan Coon
  • 8 edits in branches/safari-612.1.2-branch/Source

Versioning.

WebKit-7612.1.2.6

4:38 PM Changeset in webkit [272622] by rniwa@webkit.org
  • 7 edits in trunk/Source/WebCore

Reduce the overhead of HTMLDocumentParser in innerHTML setter
https://bugs.webkit.org/show_bug.cgi?id=221596

Reviewed by Simon Fraser.

This patch reduces the overhead of HTMLDocumentParser for innerHTML.
This appears to be ~0.5% Speedometer progression.

No new tests since there should be no observable behavior differences.

  • dom/ScriptableDocumentParser.h:

(WebCore::ScriptableDocumentParser:isWaitingForScripts): Removed since this abstract
virtual function is only used in HTMLDocumentParser.

  • html/FTPDirectoryDocument.cpp:

(WebCore::FTPDirectoryDocument::isWaitingForScripts): Removed. There are no scripts
in ftp directory document but there is no need to override it here.

  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::pumpTokenizer): Exit early when we're parsing a fragment
to avoid accessing the scheduler, preloader, and document loader for various things
since they're all irrelevant for fragment parsing.
(WebCore::HTMLDocumentParser::isWaitingForScripts const): Return false immediately when
parsing a document fragment as a fast path.

  • html/parser/HTMLDocumentParser.h:
  • xml/parser/XMLDocumentParser.cpp:

(WebCore::XMLDocumentParser::isWaitingForScripts const): Removed. Unused.

  • xml/parser/XMLDocumentParser.h:
4:34 PM Changeset in webkit [272621] by ysuzuki@apple.com
  • 5 edits in trunk/Source/WTF

REGRESSION(r269017): Speedometer2 1% regression
https://bugs.webkit.org/show_bug.cgi?id=221640

Reviewed by Mark Lam.

Reverting r269017, r269478, and r272095 because of Speedometer2 ~1% regression.

  • wtf/HashTable.h:

(WTF::KeyTraits>::inlineLookup):
(WTF::KeyTraits>::lookupForWriting):
(WTF::KeyTraits>::fullLookupForWriting):
(WTF::KeyTraits>::addUniqueForInitialization):
(WTF::KeyTraits>::add):

  • wtf/HashTraits.h:
  • wtf/MetaAllocator.cpp:

(WTF::MetaAllocator::addFreeSpace):

  • wtf/MetaAllocator.h:
4:22 PM Changeset in webkit [272620] by Russell Epstein
  • 1 copy in tags/Safari-611.1.14.1.1

Tag Safari-611.1.14.1.1.

4:21 PM Changeset in webkit [272619] by Russell Epstein
  • 1 copy in tags/Safari-611.1.14.0.1

Tag Safari-611.1.14.0.1.

4:15 PM Changeset in webkit [272618] by Chris Dumez
  • 25 edits in trunk

Rename SecurityOrigin's canAccess() to isSameOriginDomain() to match HTML specification naming
https://bugs.webkit.org/show_bug.cgi?id=221630

Reviewed by Geoffrey Garen.

Rename SecurityOrigin's canAccess() to isSameOriginDomain() to match HTML specification naming:

Source/WebCore:

  • bindings/js/JSDOMBindingSecurity.cpp:

(WebCore::canAccessDocument):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::canAccessFromCurrentOrigin):
(WebCore::ScriptController::executeJavaScriptURL):

  • dom/Document.cpp:

(WebCore::canAccessAncestor):
(WebCore::Document::supportsPaintTiming const):
(WebCore::Document::domTimerAlignmentInterval const):
(WebCore::Document::isNavigationBlockedByThirdPartyIFrameRedirectBlocking):
(WebCore::Document::initContentSecurityPolicy):
(WebCore::Document::requestAnimationFrame):
(WebCore::Document::updateIntersectionObservations):

  • dom/Element.cpp:

(WebCore::Element::focus):

  • dom/SecurityContext.cpp:

(WebCore::SecurityContext::isSecureTransitionTo const):

  • dom/UserGestureIndicator.cpp:

(WebCore::UserGestureToken::UserGestureToken):

  • html/HTMLFormControlElement.cpp:

(WebCore::shouldAutofocus):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::canLoadURL const):

  • loader/DocumentLoader.cpp:

(WebCore::shouldUseActiveServiceWorkerFromParent):

  • loader/DocumentWriter.cpp:

(WebCore::canReferToParentFrameEncoding):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::dispatchBeforeUnloadEvent):

  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::preconnectIfNeeded):

  • loader/ResourceLoadInfo.cpp:

(WebCore::ContentExtensions::ResourceLoadInfo::isThirdParty const):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::alert):
(WebCore::DOMWindow::confirmForBindings):
(WebCore::DOMWindow::prompt):
(WebCore::DOMWindow::isSameSecurityOriginAsMainFrame const):
(WebCore::DOMWindow::crossDomainAccessErrorMessage):
(WebCore::DOMWindow::isInsecureScriptAccess):

  • page/FrameView.cpp:

(WebCore::FrameView::safeToPropagateScrollToParent const):

  • page/Location.cpp:

(WebCore::Location::reload):

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::isSameOriginDomain const):
(WebCore::SecurityOrigin::canReceiveDragData const):
(WebCore::SecurityOrigin::canAccess const): Deleted.

  • page/SecurityOrigin.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::wouldTaintOrigin const):

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitSrcWouldTaintOrigin):

  • platform/network/cocoa/WebCoreNSURLSession.mm:

(-[WebCoreNSURLSession wouldTaintOrigin:]):

  • rendering/RenderWidget.cpp:

(WebCore::RenderWidget::paintContents):

Tools:

  • TestWebKitAPI/Tests/WebCore/SecurityOrigin.cpp:

(TestWebKitAPI::TEST_F):

3:06 PM Changeset in webkit [272617] by Devin Rousso
  • 7 edits in trunk/Source

[Cocoa] rename ENGINEERING_BUILD to ENABLE_DEVELOPER_MODE to match other platforms
https://bugs.webkit.org/show_bug.cgi?id=221621

Reviewed by Michael Catanzaro.

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebCore:

(WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):

3:04 PM Changeset in webkit [272616] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Change release log to mention IOSurface
https://bugs.webkit.org/show_bug.cgi?id=221629

Reviewed by Tim Horton.

It's more memorable to search logs for "IOSurface".

  • platform/graphics/cocoa/IOSurface.mm:

(WebCore::IOSurface::IOSurface):

2:51 PM Changeset in webkit [272615] by achristensen@apple.com
  • 2 edits in trunk/Tools

Fix Catalina build.
https://bugs.webkit.org/show_bug.cgi?id=221431

  • TestWebKitAPI/Tests/WebKitCocoa/MediaSession.mm:

(TestWebKitAPI::TEST_F):

2:48 PM Changeset in webkit [272614] by Jonathan Bedard
  • 2 edits in trunk

AX: introduction.md broken architecture.png link
https://bugs.webkit.org/show_bug.cgi?id=221607
<rdar://problem/74140397>

Reviewed by Sam Weinig.

  • Introduction.md: webkit2-process-architecture.png Moved to resources.
2:12 PM Changeset in webkit [272613] by Ryan Haddad
  • 5 edits
    1 copy
    1 add in trunk/LayoutTests

Unreviewed, reverting r272426.

Caused test failures / flakiness

Reverted changeset:

"Remove GPUProcess flag in MediaRecorder tests"
https://bugs.webkit.org/show_bug.cgi?id=221401
https://trac.webkit.org/changeset/272426

2:07 PM Changeset in webkit [272612] by Ryan Haddad
  • 7 edits in trunk

Fix warning introduced by r272580
https://bugs.webkit.org/show_bug.cgi?id=221612

JSTests:

Unreviewd, update test262/config.yaml

Patch by Caio Lima <Caio Lima> on 2021-02-09

  • test262/config.yaml:

Since class-methods-private also includes private accessors tests,
we should enable it only after https://bugs.webkit.org/show_bug.cgi?id=194435
gets closed.

Source/JavaScriptCore:

Unreviewed build fixes.

Patch by Caio Lima <Caio Lima> on 2021-02-09

  • bytecode/CheckPrivateBrandVariant.cpp:
  • bytecode/CheckPrivateBrandVariant.h:
  • bytecode/SetPrivateBrandVariant.cpp:
  • bytecode/SetPrivateBrandVariant.h:
2:05 PM Changeset in webkit [272611] by eric.carlson@apple.com
  • 19 edits in trunk/Source

[macOS] Add internal preference to control how AVOutputContext is allocated
https://bugs.webkit.org/show_bug.cgi?id=221583
<rdar://73830632>

Reviewed by Jer Noble.

Source/WebCore:

No new tests, this can only be tested manually.

  • Modules/airplay/WebMediaSessionManager.cpp:

(WebCore::WebMediaSessionManager::showPlaybackTargetPicker):

  • Modules/airplay/WebMediaSessionManagerClient.h:

(WebCore::WebMediaSessionManagerClient::alwaysOnLoggingAllowed const):
(WebCore::WebMediaSessionManagerClient::useiTunesAVOutputContext const):
(WebCore::WebMediaSessionManagerClient::alwaysOnLoggingAllowed): Deleted.

  • platform/graphics/MediaPlaybackTargetPicker.cpp:

(WebCore::MediaPlaybackTargetPicker::showPlaybackTargetPicker):

  • platform/graphics/MediaPlaybackTargetPicker.h:
  • platform/graphics/avfoundation/objc/AVOutputDeviceMenuControllerTargetPicker.h:
  • platform/graphics/avfoundation/objc/AVOutputDeviceMenuControllerTargetPicker.mm:

(WebCore::AVOutputDeviceMenuControllerTargetPicker::showPlaybackTargetPicker):

  • platform/graphics/avfoundation/objc/AVPlaybackTargetPicker.h:
  • platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.h:
  • platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.mm:

(WebCore::AVRoutePickerViewTargetPicker::outputContextInternal):
(WebCore::AVRoutePickerViewTargetPicker::showPlaybackTargetPicker):

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

(WebCore::MediaPlaybackTargetPickerMac::showPlaybackTargetPicker):

  • platform/mock/MediaPlaybackTargetPickerMock.cpp:

(WebCore::MediaPlaybackTargetPickerMock::showPlaybackTargetPicker):

  • platform/mock/MediaPlaybackTargetPickerMock.h:

Source/WebKit:

  • UIProcess/WebPageProxy.h:
  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::useiTunesAVOutputContext const):

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:
1:52 PM Changeset in webkit [272610] by Martin Robinson
  • 37 edits in trunk

Implement scroll-snap-stop for scroll snapping
https://bugs.webkit.org/show_bug.cgi?id=197744
<rdar://problem/50708356>

LayoutTests/imported/w3c:

Reviewed by Simon Fraser.

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • web-platform-tests/css/css-scroll-snap/inheritance-expected.txt:
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-computed-expected.txt:
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-valid-expected.txt:
  • web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change-expected.txt:
  • web-platform-tests/css/css-scroll-snap/scroll-snap-stop-expected.txt:
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-on-root-element-expected.txt:
  • web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:

Source/WebCore:

Reviewed by Simon Fraser.

No new tests. This is tested by existing, imported WPT tests:

imported/w3c/web-platform-tests/css/css-scroll-snap/inheritance-expected.txt:
imported/w3c/web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-computed-expected.txt:
imported/w3c/web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-valid-expected.txt:
imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change-expected.txt:
imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-expected.txt:
imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-snap-type-on-root-element-expected.txt:

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle): Add support the new CSS property.

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::operator ScrollSnapAxisAlignType const): Ditto.
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue): Ditto.
(WebCore::CSSPrimitiveValue::operator ScrollSnapStop const): ditto.

  • css/CSSProperties.json: Ditto.
  • css/parser/CSSPropertyParser.cpp:

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

  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::indicesOfNearestSnapOffsets): Update to accept SnapOffset instead of a raw
value.
(WebCore::findFirstSnapStopOffsetBetweenOriginAndDestination): Added this helper which looks
between the scroll origin and destination to find a candidate scroll offset with ScrollSnapStop::Always.
This offset will always be chosen for directional scrolls.
(WebCore::closestSnapOffsetWithOffsetsAndRanges): Use new helper to find offsets with ScrollSnapStop::Always.
(WebCore::computeAxisProximitySnapOffsetRanges): Deal with SnapOffset instead of raw values.
(WebCore::updateSnapOffsetsForScrollableArea): Ditto.
(WebCore::convertOffsetInfo): Ditto.

  • page/scrolling/ScrollSnapOffsetsInfo.h:

(WebCore::ScrollSnapOffsetsInfo::offsetsForAxis const): Ditto.
(WebCore::operator<<): Consolidated all TextStream implementations here instead of repeating
them throughout the code.

  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::setScrollSnapOffsetInfo): Set the scroll snap offset info all at once.
(WebCore::ScrollableArea::clearSnapOffsets): We no longer clear horizontal and vertical offsets separately.
(WebCore::ScrollableArea::nearestActiveSnapPoint): Access the offset value.

  • platform/ScrollableArea.h:
  • platform/cocoa/ScrollController.mm:

(WebCore::ScrollController::setNearestScrollSnapIndexForAxisAndOffset): Ditto.

  • platform/cocoa/ScrollSnapAnimatorState.h:

(WebCore::ScrollSnapAnimatorState::snapOffsetsForAxis const): Deal with SnapOffsets instead of raw values.
(WebCore::ScrollSnapAnimatorState::setSnapOffsetsAndPositionRangesForAxis): Ditto.

  • platform/cocoa/ScrollSnapAnimatorState.mm:
  • rendering/RenderLayerModelObject.cpp:

(WebCore::RenderLayerModelObject::styleDidChange): Update scroll snap information when the scroll-snap-stop
property changes. Also ensure that we update everything for FrameView's instead of only some properties.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::initialScrollSnapStop): Added for new CSS property.
(WebCore::RenderStyle::scrollSnapStop const): Ditto.
(WebCore::RenderStyle::setScrollSnapStop): Ditto.

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

(WebCore::operator<<): Ditto.

  • rendering/style/RenderStyleConstants.h:
  • rendering/style/StyleRareNonInheritedData.h:
  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertScrollSnapStop): Ditto.

  • testing/Internals.cpp:

(WebCore::appendOffsets): Handle the case where we are printing an offset with ScrollSnapStop::Always.

Source/WebKit:

Reviewed by Simon Fraser.

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: Add encoding and decoding support

for the SnapOffset struct.
(ArgumentCoder<SnapOffset<float>>::encode):
(ArgumentCoder<SnapOffset<float>>::decode):

  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm: Update to use SnapOffset struct.

(WebKit::RemoteScrollingCoordinatorProxy::shouldSnapForMainFrameScrolling const):
(WebKit::RemoteScrollingCoordinatorProxy::hasActiveSnapPoint const):
(WebKit::RemoteScrollingCoordinatorProxy::nearestActiveContentInsetAdjustedSnapOffset const):

LayoutTests:

Reviewed by Simon Fraser.

  • platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
1:51 PM Changeset in webkit [272609] by Jonathan Bedard
  • 3 edits in trunk/LayoutTests

[LayoutTests] Convert xmlhttprequest php to Python (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=220995
<rdar://problem/73630008>

Unreviewed test fix.

  • http/tests/media/user-gesture-preserved-across-xmlhttprequest.html: Lengthen timeouts, Python is slightly slower than PHP.
  • http/tests/xmlhttprequest/resources/download-with-delay.py: Match iteration behavior to PHP script.
1:30 PM Changeset in webkit [272608] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Deny mach-lookup to the distributed notifications service
https://bugs.webkit.org/show_bug.cgi?id=221604
<rdar://problem/69169123>

Reviewed by Brent Fulgham.

Deny mach-lookup to the distributed notifications service in the WebContent process on macOS.

  • WebProcess/com.apple.WebProcess.sb.in:
1:21 PM Changeset in webkit [272607] by Chris Dumez
  • 131 edits
    6 adds in trunk

Disallow alert/confirm/prompt in cross-origin-domain subframes
https://bugs.webkit.org/show_bug.cgi?id=221568

Reviewed by Geoff Garen.

Source/WebCore:

Disallow alert/confirm/prompt in cross-origin-domain subframes as per the latest HTML specification:

Tests: http/tests/security/cross-origin-js-prompt-forbidden.html

http/tests/security/same-origin-different-domain-js-prompt-forbidden.html

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::alert):
(WebCore::DOMWindow::confirmForBindings):
(WebCore::DOMWindow::prompt):

  • page/SecurityOrigin.cpp:
  • page/SecurityOrigin.h:

LayoutTests:

Add layout test coverage and update existing tests to stop using alert() in cross-origin iframes.

  • fast/events/popup-blocked-from-unique-frame-via-window-open-named-sibling-frame-expected.txt:
  • fast/events/popup-blocked-from-unique-frame-via-window-open-named-sibling-frame.html:
  • fast/events/popup-when-select-change-expected.txt:
  • fast/events/popup-when-select-change.html:
  • fast/events/resize-subframe-expected.txt:
  • fast/events/resize-subframe.html:
  • fast/forms/autofocus-in-sandbox-with-allow-scripts-expected.txt:
  • fast/forms/autofocus-in-sandbox-with-allow-scripts.html:
  • fast/frames/resources/navigate-top-by-name-to-fail.html:
  • fast/frames/sandboxed-iframe-navigation-top-by-name-denied-expected.txt:
  • http/tests/cookies/resources/third-party-cookie-relaxing-iframe.html:
  • http/tests/cookies/third-party-cookie-relaxing-expected.txt:
  • http/tests/history/cross-origin-replace-history-object-child-expected.txt:
  • http/tests/history/cross-origin-replace-history-object-expected.txt:
  • http/tests/history/resources/cross-origin-replaces-history-object-child-iframe.html:
  • http/tests/history/resources/cross-origin-replaces-history-object-iframe.html:
  • http/tests/plugins/resources/third-party-cookie-accept-policy-iframe.html:
  • http/tests/plugins/third-party-cookie-accept-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/embed-redirect-allowed-expected.txt:
  • http/tests/security/contentSecurityPolicy/embed-redirect-allowed2-expected.txt:
  • http/tests/security/contentSecurityPolicy/frame-src-cross-origin-load-expected.txt:
  • http/tests/security/contentSecurityPolicy/iframe-allowed-when-loaded-via-javascript-url-expected.txt:
  • http/tests/security/contentSecurityPolicy/iframe-inside-csp-expected.txt:
  • http/tests/security/contentSecurityPolicy/iframe-redirect-allowed-by-child-src-expected.txt:
  • http/tests/security/contentSecurityPolicy/iframe-redirect-allowed-by-child-src2-expected.txt:
  • http/tests/security/contentSecurityPolicy/iframe-redirect-allowed-by-frame-src-expected.txt:
  • http/tests/security/contentSecurityPolicy/iframe-redirect-allowed-by-frame-src2-expected.txt:
  • http/tests/security/contentSecurityPolicy/object-redirect-allowed-expected.txt:
  • http/tests/security/contentSecurityPolicy/object-redirect-allowed2-expected.txt:
  • http/tests/security/contentSecurityPolicy/resources/alert-fail.html:
  • http/tests/security/contentSecurityPolicy/resources/alert-fail.js:

(catch):

  • http/tests/security/contentSecurityPolicy/resources/alert-pass.html:
  • http/tests/security/contentSecurityPolicy/resources/alert-pass.js:

(catch):

  • http/tests/security/contentSecurityPolicy/resources/sandbox.php:
  • http/tests/security/contentSecurityPolicy/resources/sandboxed-eval.php:
  • http/tests/security/contentSecurityPolicy/sandbox-allow-scripts-in-http-header-control-expected.txt:
  • http/tests/security/contentSecurityPolicy/sandbox-allow-scripts-in-http-header-expected.txt:
  • http/tests/security/contentSecurityPolicy/sandbox-report-only-expected.txt:
  • http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-nested-upgrades-expected.txt:
  • http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrades-mixed-content-expected.txt:
  • http/tests/security/cross-origin-js-prompt-forbidden-expected.txt: Added.
  • http/tests/security/cross-origin-js-prompt-forbidden.html: Added.
  • http/tests/security/dataURL/resources/foreign-domain-data-url-accessor-iframe.html:
  • http/tests/security/dataURL/resources/foreign-domain-data-url-accessor-opened-frame.html:
  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-subframe-expected.txt:
  • http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-window-open-expected.txt:
  • http/tests/security/mixedContent/resources/frame-with-insecure-websocket.html:
  • http/tests/security/mixedContent/websocket/insecure-websocket-in-iframe-expected.txt:
  • http/tests/security/resources/cross-origin-js-prompt-forbidden.html: Added.
  • http/tests/security/same-origin-different-domain-js-prompt-forbidden-expected.txt: Added.
  • http/tests/security/same-origin-different-domain-js-prompt-forbidden.html: Added.
  • http/tests/security/xssAuditor/base-href-control-char-expected.txt:
  • http/tests/security/xssAuditor/base-href-direct-expected.txt:
  • http/tests/security/xssAuditor/base-href-expected.txt:
  • http/tests/security/xssAuditor/base-href-null-char-expected.txt:
  • http/tests/security/xssAuditor/base-href-safe-expected.txt:
  • http/tests/security/xssAuditor/base-href-safe2-expected.txt:
  • http/tests/security/xssAuditor/base-href-safe3-expected.txt:
  • http/tests/security/xssAuditor/base-href-scheme-relative-expected.txt:
  • http/tests/security/xssAuditor/cached-frame-expected.txt:
  • http/tests/security/xssAuditor/cached-frame.html:
  • http/tests/security/xssAuditor/cookie-injection-expected.txt:
  • http/tests/security/xssAuditor/data-urls-work-expected.txt:
  • http/tests/security/xssAuditor/data-urls-work.html:
  • http/tests/security/xssAuditor/dom-write-innerHTML-expected.txt:
  • http/tests/security/xssAuditor/dom-write-innerHTML.html:
  • http/tests/security/xssAuditor/form-action-expected.txt:
  • http/tests/security/xssAuditor/formaction-on-button-expected.txt:
  • http/tests/security/xssAuditor/formaction-on-input-expected.txt:
  • http/tests/security/xssAuditor/javascript-link-safe-expected.txt:
  • http/tests/security/xssAuditor/javascript-link-safe.html:
  • http/tests/security/xssAuditor/property-escape-noquotes-expected.txt:
  • http/tests/security/xssAuditor/property-escape-noquotes-tab-slash-chars-expected.txt:
  • http/tests/security/xssAuditor/property-escape-noquotes-tab-slash-chars.html:
  • http/tests/security/xssAuditor/property-escape-noquotes.html:
  • http/tests/security/xssAuditor/property-inject-expected.txt:
  • http/tests/security/xssAuditor/property-inject.html:
  • http/tests/security/xssAuditor/resources/base-href/really-safe-script.js:
  • http/tests/security/xssAuditor/resources/base-href/safe-script.js:
  • http/tests/security/xssAuditor/resources/echo-intertag.pl:
  • http/tests/security/xssAuditor/resources/javascript-link-safe.html:
  • http/tests/security/xssAuditor/resources/nph-cached.pl:
  • http/tests/security/xssAuditor/resources/safe-script-noquotes.js:
  • http/tests/security/xssAuditor/resources/safe-script.js:
  • http/tests/security/xssAuditor/resources/script-tag-safe2.html:
  • http/tests/security/xssAuditor/script-tag-near-start-expected.txt:
  • http/tests/security/xssAuditor/script-tag-near-start.html:
  • http/tests/security/xssAuditor/script-tag-safe2-expected.txt:
  • http/tests/security/xssAuditor/script-tag-safe2.html:
  • http/tests/security/xssAuditor/script-tag-safe3-expected.txt:
  • http/tests/security/xssAuditor/script-tag-safe3.html:
  • http/tests/security/xssAuditor/script-tag-src-redirect-safe-expected.txt:
  • http/tests/security/xssAuditor/script-tag-with-injected-comment-expected.txt:
  • http/tests/security/xssAuditor/script-tag-with-injected-comment.html:
  • http/tests/security/xssAuditor/script-tag-with-source-same-host-expected.txt:
  • platform/wk2/http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-nested-upgrades-expected.txt:
1:18 PM Changeset in webkit [272606] by achristensen@apple.com
  • 10 edits in trunk/Source/WebKit

Use CompletionHandler instead of ComputedPagesCallback
https://bugs.webkit.org/show_bug.cgi?id=221619

Reviewed by Chris Dumez.

  • UIProcess/API/C/WKPage.cpp:

(WKPageComputePagesForPrinting):

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

(WebKit::WebPageProxy::computePagesForPrinting):
(WebKit::WebPageProxy::computedPagesCallback): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/WKPrintingView.mm:

(-[WKPrintingView _askPageToComputePageRects]):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::computePagesForPrinting):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
1:17 PM Changeset in webkit [272605] by achristensen@apple.com
  • 9 edits in trunk/Source/WebKit

Use CompletionHandler instead of NowPlayingInfoCallback
https://bugs.webkit.org/show_bug.cgi?id=221617

Reviewed by Chris Dumez.

  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _requestActiveNowPlayingSessionInfo:]):

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::requestActiveNowPlayingSessionInfo):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestActiveNowPlayingSessionInfo): Deleted.
(WebKit::WebPageProxy::nowPlayingInfoCallback): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::requestActiveNowPlayingSessionInfo):

  • WebProcess/WebPage/WebPage.messages.in:
1:01 PM Changeset in webkit [272604] by Russell Epstein
  • 2 edits in trunk/Source/WebKitLegacy/mac

Unreviewed build fix. Reapply r272500.

Permission request API for MediaKeySystem access support
https://bugs.webkit.org/show_bug.cgi?id=221187

Unreviewed build fix for macCatalyst.

Patch by Ryan Haddad <Ryan Haddad> on 2021-02-08

  • WebCoreSupport/WebMediaKeySystemClient.h: Add a check for ENABLE(ENCRYPTED_MEDIA).
12:58 PM Changeset in webkit [272603] by achristensen@apple.com
  • 18 edits
    4 adds in trunk

Synthesize range responses if needed in WebCoreNSURLSession
https://bugs.webkit.org/show_bug.cgi?id=221072

Reviewed by Geoff Garen.

Source/WebCore:

When we make a media request with a Range HTTP header field and the server doesn't respond with a 206 with Content-Range header field,
until now we would just fail to play the video. In order to successfully play these videos, I introduce the RangeResponseGenerator class,
which will receive the data for a request for such a video and feed the data into WebCoreNSURLSession as the requested ranges are received.
Seeking is problematic, but at least we will try our best to play the video.

I added API tests that try to play a video that didn't play before using a server that doesn't support range requests. Manual verification is also necessary.

  • Sources.txt:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/PlatformMediaResourceLoader.h:

(WebCore::PlatformMediaResource::setClient):

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

(WebCore::PlatformResourceMediaLoader::create):

  • platform/network/ParsedRequestRange.cpp: Added.

(WebCore::ParsedRequestRange::parse):

  • platform/network/ParsedRequestRange.h: Added.

(WebCore::ParsedRequestRange::begin const):
(WebCore::ParsedRequestRange::end const):
(WebCore::ParsedRequestRange::ParsedRequestRange):

  • platform/network/cocoa/RangeResponseGenerator.h: Added.
  • platform/network/cocoa/RangeResponseGenerator.mm: Added.

(WebCore::RangeResponseGenerator::Data::Data):
(WebCore::RangeResponseGenerator::Data::TaskData::TaskData):
(WebCore::synthesizedResponseForRange):
(WebCore::RangeResponseGenerator::removeTask):
(WebCore::RangeResponseGenerator::giveResponseToTaskIfBytesInRangeReceived):
(WebCore::RangeResponseGenerator::expectedContentLengthFromData):
(WebCore::RangeResponseGenerator::giveResponseToTasksWithFinishedRanges):
(WebCore::RangeResponseGenerator::willHandleRequest):
(WebCore::RangeResponseGenerator::willSynthesizeRangeResponses):

  • platform/network/cocoa/WebCoreNSURLSession.h:
  • platform/network/cocoa/WebCoreNSURLSession.mm:

(-[WebCoreNSURLSession rangeResponseGenerator]):
(-[WebCoreNSURLSession dataTaskWithURL:]):
(WebCore::WebCoreNSURLSessionDataTaskClient::dataSent):
(WebCore::WebCoreNSURLSessionDataTaskClient::responseReceived):
(WebCore::WebCoreNSURLSessionDataTaskClient::shouldCacheResponse):
(WebCore::WebCoreNSURLSessionDataTaskClient::dataReceived):
(WebCore::WebCoreNSURLSessionDataTaskClient::redirectReceived):
(WebCore::WebCoreNSURLSessionDataTaskClient::accessControlCheckFailed):
(WebCore::WebCoreNSURLSessionDataTaskClient::loadFailed):
(WebCore::WebCoreNSURLSessionDataTaskClient::loadFinished):
(-[WebCoreNSURLSessionDataTask _restart]):
(-[WebCoreNSURLSessionDataTask _finish]):
(-[WebCoreNSURLSessionDataTask resource:sentBytes:totalBytesToBeSent:]):
(-[WebCoreNSURLSessionDataTask resource:receivedResponse:completionHandler:]):
(-[WebCoreNSURLSessionDataTask resource:shouldCacheResponse:]):
(-[WebCoreNSURLSessionDataTask resource:receivedData:length:]):
(-[WebCoreNSURLSessionDataTask resource:receivedRedirect:request:completionHandler:]):
(-[WebCoreNSURLSessionDataTask _resource:loadFinishedWithError:metrics:]):
(-[WebCoreNSURLSessionDataTask resource:accessControlCheckFailedWithError:]):
(-[WebCoreNSURLSessionDataTask resource:loadFailedWithError:]):
(-[WebCoreNSURLSessionDataTask resourceFinished:metrics:]):
(-[WebCoreNSURLSessionDataTask initWithSession:identifier:URL:]): Deleted.

Source/WebKit:

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::requestResource):

Tools:

  • TestWebKitAPI/Tests/WebCore/ParsedContentRange.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:

(TestWebKitAPI::clientCertServer):

  • TestWebKitAPI/Tests/WebKitCocoa/MediaLoading.mm:

(TestWebKitAPI::testVideoBytes):
(TestWebKitAPI::runVideoTest):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/HTTPServer.h:

(TestWebKitAPI::HTTPResponse::HTTPResponse):
(TestWebKitAPI::HTTPServer::HTTPResponse::HTTPResponse): Deleted.

  • TestWebKitAPI/cocoa/HTTPServer.mm:

(TestWebKitAPI::HTTPServer::RequestData::RequestData):
(TestWebKitAPI::appendToVector):
(TestWebKitAPI::HTTPServer::parsePath):
(TestWebKitAPI::HTTPServer::respondToRequests):
(TestWebKitAPI::HTTPResponse::bodyFromString):
(TestWebKitAPI::HTTPResponse::serialize):

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

[LFC][IFC] Disable BIDI processing for modern line layout
https://bugs.webkit.org/show_bug.cgi?id=221615

Reviewed by Sam Weinig.

This was added in preparation for BIDI content support but we are not there yet. Let's just disable it for now.

  • layout/integration/LayoutIntegrationInlineContentBuilder.cpp:

(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayLineRuns const):

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

[LFC][Integration] Style change on an inline box should trigger invalidation
https://bugs.webkit.org/show_bug.cgi?id=221573

Reviewed by Antti Koivisto.

Invalidate the line layout path when the inline box (RenderInline) needs layout.
e.g. the font-family property change in imported/w3c/web-platform-tests/css/css-fonts/generic-family-keywords-001.html
(This is sadly a full invalidation at this point.)

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::styleDidChange):

12:21 PM Changeset in webkit [272600] by Peng Liu
  • 22 edits
    3 deletes in trunk

[GPUP] Test media/track/audio-track-add-remove.html crashes on debug bots
https://bugs.webkit.org/show_bug.cgi?id=221595

Reviewed by Eric Carlson.

Source/WebKit:

Under stress tests, instances of RemoteAudioTrackProxy, RemoteTextTrackProxy, and
RemoteVideoTrackProxy might be destroyed in the GPU process when an IPC message
comes and leads to an assertion failure.

To fix the assertion failure, this patches removes three IPC message receivers in
the GPU process:

  • RemoteAudioTrackProxy
  • RemoteTextTrackProxy
  • RemoteVideoTrackProxy

Instead of using these three message receivers, this patch adds three new IPC messages
to RemoteMediaPlayerProxy:

  • AudioTrackSetEnabled
  • TextTrackSetMode
  • VideoTrackSetSelected

No new tests, fixing following tests:

  • media/track/audio-track-add-remove.html
  • media/track/audio-track.html
  • CMakeLists.txt:
  • DerivedSources.make:
  • GPUProcess/media/RemoteAudioTrackProxy.cpp:

(WebKit::RemoteAudioTrackProxy::RemoteAudioTrackProxy):
(WebKit::RemoteAudioTrackProxy::~RemoteAudioTrackProxy):

  • GPUProcess/media/RemoteAudioTrackProxy.h:
  • GPUProcess/media/RemoteAudioTrackProxy.messages.in: Removed.
  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::audioTrackSetEnabled):
(WebKit::RemoteMediaPlayerProxy::videoTrackSetSelected):
(WebKit::RemoteMediaPlayerProxy::textTrackSetMode):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • GPUProcess/media/RemoteTextTrackProxy.cpp:

(WebKit::RemoteTextTrackProxy::RemoteTextTrackProxy):
(WebKit::RemoteTextTrackProxy::~RemoteTextTrackProxy):

  • GPUProcess/media/RemoteTextTrackProxy.h:
  • GPUProcess/media/RemoteTextTrackProxy.messages.in: Removed.
  • GPUProcess/media/RemoteVideoTrackProxy.cpp:

(WebKit::RemoteVideoTrackProxy::RemoteVideoTrackProxy):
(WebKit::RemoteVideoTrackProxy::~RemoteVideoTrackProxy):

  • GPUProcess/media/RemoteVideoTrackProxy.h:
  • GPUProcess/media/RemoteVideoTrackProxy.messages.in: Removed.
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/media/AudioTrackPrivateRemote.cpp:

(WebKit::AudioTrackPrivateRemote::AudioTrackPrivateRemote):
(WebKit::AudioTrackPrivateRemote::setEnabled):

  • WebProcess/GPU/media/AudioTrackPrivateRemote.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::addRemoteAudioTrack):
(WebKit::MediaPlayerPrivateRemote::addRemoteTextTrack):
(WebKit::MediaPlayerPrivateRemote::addRemoteVideoTrack):

  • WebProcess/GPU/media/TextTrackPrivateRemote.cpp:

(WebKit::TextTrackPrivateRemote::TextTrackPrivateRemote):
(WebKit::TextTrackPrivateRemote::setMode):

  • WebProcess/GPU/media/TextTrackPrivateRemote.h:
  • WebProcess/GPU/media/VideoTrackPrivateRemote.cpp:

(WebKit::VideoTrackPrivateRemote::VideoTrackPrivateRemote):
(WebKit::VideoTrackPrivateRemote::setSelected):

  • WebProcess/GPU/media/VideoTrackPrivateRemote.h:

(WebKit::VideoTrackPrivateRemote::create):

LayoutTests:

  • gpu-process/TestExpectations:
12:14 PM Changeset in webkit [272599] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix build with the latest SDK.

  • UIProcess/ios/forms/WKFormColorControl.mm:

(-[WKColorPicker selectColor:]):

11:53 AM Changeset in webkit [272598] by Russell Epstein
  • 19 edits in branches/safari-611.1.14.0-branch/Source

Cherry-pick r272550. rdar://problem/74151949

Make the UserContentController for ServiceWorker pages be non-optional.
<rdar://problem/71434565> and https://bugs.webkit.org/show_bug.cgi?id=221503

Reviewed by Alex Christensen.
Source/WebCore:

  • loader/EmptyClients.cpp: (WebCore::pageConfigurationWithEmptyClients):
  • page/Page.cpp: (WebCore::Page::Page):
  • page/PageConfiguration.cpp: (WebCore::PageConfiguration::PageConfiguration):
  • page/PageConfiguration.h:

Source/WebKit:

Normal Pages always have a UserContentProvider, even if they just create an empty default one.

Same should be true for ServiceWorkers.

  • Shared/ServiceWorkerInitializationData.cpp: (WebKit::ServiceWorkerInitializationData::decode):
  • Shared/ServiceWorkerInitializationData.h:
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::userContentControllerIdentifierForServiceWorkers): (WebKit::WebProcessPool::createWebPage):
  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::enableServiceWorkers):
  • UIProcess/WebProcessProxy.h:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp: (WebKit::m_userContentController): (WebKit::m_userAgent): Deleted.
  • WebProcess/Storage/WebSWContextManagerConnection.h:
  • WebProcess/WebPage/WebPage.cpp: (WebKit::m_limitsNavigationsToAppBoundDomains):

Source/WebKitLegacy/mac:

  • WebView/WebView.mm: (-[WebView _commonInitializationWithFrameName:groupName:]):

Source/WebKitLegacy/win:

  • WebView.cpp: (WebView::initWithFrame):

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

11:25 AM Changeset in webkit [272597] by Aditya Keerthi
  • 24 edits
    2 adds
    2 deletes in trunk

[iOS][FCR] Use UIColorPickerViewController for color inputs
https://bugs.webkit.org/show_bug.cgi?id=221572
<rdar://problem/72183130>

Reviewed by Sam Weinig.

Source/WebCore:

  • html/HTMLInputElement.h:

Export function so it can be called from WebKit layer.

Source/WebKit:

UIColorPickerViewController was added in iOS 14, while WebKit still
uses a custom color picker. To stay consistent with the rest of the
platform, this patch drops the custom color picker and adopts
UIColorPickerViewController for <input type=color> on iOS.

Test: fast/forms/ios/choose-color-from-color-picker.html

  • Platform/spi/ios/UIKitSPI.h:

Added SPI declarations for _UISheetPresentationController and
UIColorPickerViewController.

  • Shared/FocusedElementInformation.cpp:

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

  • Shared/FocusedElementInformation.h:

Added colorValue member to avoid parsing the input's value
in the UIProcess.

  • SourcesCocoa.txt:
  • UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:
  • UIProcess/API/ios/WKWebViewTestingIOS.mm:

(-[WKWebView setSelectedColorForColorPicker:]):

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

(-[WKContentView _shouldShowAutomaticKeyboardUIIgnoringInputMode]):
(-[WKContentView _elementTypeRequiresAccessoryView:]):

The new color picker does not appear as a keyboard input view.

(-[WKContentView updateFocusedElementValueAsColor:]):
(-[WKContentView setSelectedColorForColorPicker:]):

  • UIProcess/ios/forms/WKFormColorControl.h:
  • UIProcess/ios/forms/WKFormColorControl.mm:

(-[WKColorPicker initWithView:]):
(-[WKColorPicker selectColor:]):

Note that the delegate method is not called when programmatically
setting the selected color.

(-[WKColorPicker focusedElementSuggestedColors]):

Suggested colors from a <datalist> element are displayed in the
favorites view.

(-[WKColorPicker updateColorPickerState]):
(-[WKColorPicker configurePresentation]):

On iPad, the color picker is displayed a popover. On iPhone, the picker
is displayed as a half-sheet, and can be dragged up into a fullscreen
view.

(-[WKColorPicker controlBeginEditing]):
(-[WKColorPicker controlEndEditing]):
(-[WKColorPicker presentationControllerDidDismiss:]):
(-[WKColorPicker colorPickerViewControllerDidSelectColor:]):
(-[WKColorPicker colorPickerViewControllerDidFinish:]):
(-[WKFormColorControl initWithView:]):
(-[WKFormColorControl selectColor:]):

  • UIProcess/ios/forms/WKFormColorPicker.h: Removed.
  • UIProcess/ios/forms/WKFormColorPicker.mm: Removed.
  • UIProcess/ios/forms/WKFormSelectPicker.h:

Build fix.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getFocusedElementInformation):

Tools:

Added UIScriptController hooks to simulate selecting a color on the
new color picker.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.h:

(WTR::UIScriptController::setSelectedColorForColorPicker):

  • WebKitTestRunner/ios/UIScriptControllerIOS.h:
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::setSelectedColorForColorPicker):

LayoutTests:

Added a test which displays the new color picker and verifies that
selecting a color updates the corresponding input's value.

  • fast/forms/color/color-input-activate-crash.html:

Replaced call to activateElementAndWaitForInputSession with
activateElement and ensurePresentationUpdate, since tapping on a
color input no longer presents a keyboard input view.

  • fast/forms/ios/choose-color-from-color-picker-expected.txt: Added.
  • fast/forms/ios/choose-color-from-color-picker.html: Added.
  • resources/ui-helper.js:

(UIHelper.setSelectedColorForColorPicker):

10:50 AM Changeset in webkit [272596] by Russell Epstein
  • 19 edits in branches/safari-611.1.14.1-branch/Source

Cherry-pick r272550. rdar://problem/74146102

Make the UserContentController for ServiceWorker pages be non-optional.
<rdar://problem/71434565> and https://bugs.webkit.org/show_bug.cgi?id=221503

Reviewed by Alex Christensen.
Source/WebCore:

  • loader/EmptyClients.cpp: (WebCore::pageConfigurationWithEmptyClients):
  • page/Page.cpp: (WebCore::Page::Page):
  • page/PageConfiguration.cpp: (WebCore::PageConfiguration::PageConfiguration):
  • page/PageConfiguration.h:

Source/WebKit:

Normal Pages always have a UserContentProvider, even if they just create an empty default one.

Same should be true for ServiceWorkers.

  • Shared/ServiceWorkerInitializationData.cpp: (WebKit::ServiceWorkerInitializationData::decode):
  • Shared/ServiceWorkerInitializationData.h:
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::userContentControllerIdentifierForServiceWorkers): (WebKit::WebProcessPool::createWebPage):
  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::enableServiceWorkers):
  • UIProcess/WebProcessProxy.h:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp: (WebKit::m_userContentController): (WebKit::m_userAgent): Deleted.
  • WebProcess/Storage/WebSWContextManagerConnection.h:
  • WebProcess/WebPage/WebPage.cpp: (WebKit::m_limitsNavigationsToAppBoundDomains):

Source/WebKitLegacy/mac:

  • WebView/WebView.mm: (-[WebView _commonInitializationWithFrameName:groupName:]):

Source/WebKitLegacy/win:

  • WebView.cpp: (WebView::initWithFrame):

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

10:50 AM Changeset in webkit [272595] by Russell Epstein
  • 3 edits in branches/safari-611.1.14.1-branch/Source/WebCore

Cherry-pick r272439. rdar://problem/74146132

[Cocoa] CRASH in MediaPlayerPrivateMediaSourceAVFObjC::removeAudioRenderer()
https://bugs.webkit.org/show_bug.cgi?id=221490
<rdar://73966316>

Reviewed by Eric Carlson.

Add null-checks to every use of player() in SourceBufferPrivateAVFObjC.

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: (WebCore::SourceBufferPrivateAVFObjC::didParseInitializationData): (WebCore::SourceBufferPrivateAVFObjC::willProvideContentKeyRequestInitializationDataForTrackID): (WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID): (WebCore::SourceBufferPrivateAVFObjC::appendCompleted): (WebCore::SourceBufferPrivateAVFObjC::destroyParser): (WebCore::SourceBufferPrivateAVFObjC::destroyRenderers): (WebCore::SourceBufferPrivateAVFObjC::readyState const): (WebCore::SourceBufferPrivateAVFObjC::setReadyState): (WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled): (WebCore::SourceBufferPrivateAVFObjC::flushVideo): (WebCore::SourceBufferPrivateAVFObjC::enqueueSample): (WebCore::SourceBufferPrivateAVFObjC::bufferWasConsumed): (WebCore::SourceBufferPrivateAVFObjC::setDecompressionSession): (WebCore::SourceBufferPrivateAVFObjC::player const):

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

10:50 AM Changeset in webkit [272594] by Russell Epstein
  • 3 edits
    1 add in branches/safari-611.1.14.1-branch

Cherry-pick r271571. rdar://problem/74146017

[JSC] FTL OSR entry FlushFormat array is reversed
https://bugs.webkit.org/show_bug.cgi?id=220695
<rdar://problem/72930932>

Reviewed by Mark Lam.

JSTests:

  • stress/ftl-osr-entry-order-reverse.js: Added. (shouldThrow): (foo):

Source/JavaScriptCore:

After r268783, FlushFormat array is erroneously sorted in reversed order.
This patch fixes that.

  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::lower):

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

10:44 AM Changeset in webkit [272593] by Russell Epstein
  • 3 edits
    1 add in branches/safari-611.1.14.0-branch

Cherry-pick r271571. rdar://problem/74145979

[JSC] FTL OSR entry FlushFormat array is reversed
https://bugs.webkit.org/show_bug.cgi?id=220695
<rdar://problem/72930932>

Reviewed by Mark Lam.

JSTests:

  • stress/ftl-osr-entry-order-reverse.js: Added. (shouldThrow): (foo):

Source/JavaScriptCore:

After r268783, FlushFormat array is erroneously sorted in reversed order.
This patch fixes that.

  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::lower):

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

10:38 AM Changeset in webkit [272592] by achristensen@apple.com
  • 19 edits in trunk/Source/WebKit

Use CompletionHandler instead of DrawToPDFCallback
https://bugs.webkit.org/show_bug.cgi?id=220120

Reviewed by Chris Dumez.

Along the way I made all asynchronous message replies use 8 fewer bytes by using the destination ID for the listener ID
instead of encoding 0 as the destination ID and then encoding the listener ID. This was needed in order to make implementing
waitForAsyncCallbackAndDispatchImmediately possible, which looks at the destination IDs of incoming messages.
I also made it so that if we are just snapshotting the first page, we don't send a synchronous message because we already know the page count:
1!

  • Platform/IPC/Connection.cpp:

(IPC::Connection::dispatchMessage):

  • Platform/IPC/Connection.h:

(IPC::Connection::sendWithAsyncReply):
(IPC::Connection::waitForAndDispatchImmediately):
(IPC::Connection::waitForAsyncCallbackAndDispatchImmediately):

  • Platform/IPC/HandleMessage.h:

(IPC::handleMessageAsync):
(IPC::handleMessageAsyncWantsConnection):

  • Platform/IPC/JSIPCBinding.cpp:

(IPC::jsValueForDecodedArgumentValue):

  • Platform/IPC/JSIPCBinding.h:
  • Platform/IPC/MessageSender.h:

(IPC::MessageSender::sendWithAsyncReply):

  • Scripts/webkit/messages.py:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView createPDFWithConfiguration:completionHandler:]):

  • UIProcess/AuxiliaryProcessProxy.h:

(WebKit::AuxiliaryProcessProxy::sendWithAsyncReply):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::drawToPDF):
(WebKit::WebPageProxy::getLoadDecisionForIcon):
(WebKit::WebPageProxy::drawToPDFCallback): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _processDidExit]):
(-[WKContentView _wk_pageCountForPrintFormatter:]):
(-[WKContentView _waitForDrawToPDFCallback]):
(-[WKContentView _wk_printedDocument]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::computePagesForPrintingAndDrawToPDF):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::drawToPDF):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::computePagesForPrintingiOS):
(WebKit::WebPage::drawToPDFiOS):
(WebKit::WebPage::computePagesForPrintingAndDrawToPDF): Deleted.

10:35 AM Changeset in webkit [272591] by Russell Epstein
  • 8 edits in branches/safari-611.1.14.0-branch/Source

Versioning.

WebKit-7611.1.14.0.1

10:34 AM Changeset in webkit [272590] by Russell Epstein
  • 8 edits in branches/safari-611.1.14.1-branch/Source

Versioning.

WebKit-7611.1.14.1.1

10:33 AM Changeset in webkit [272589] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[Mac] Connect MediaSession with MediaRemote and NowPlaying
https://bugs.webkit.org/show_bug.cgi?id=221431
<rdar://problem/74000363>

Unreviewed, fix a layout test assert.

  • Modules/mediasession/MediaSession.cpp:

(WebCore::platformCommandForMediaSessionAction): Map "skipad" to "nexttrack".
(WebCore::MediaSession::setActionHandler): Don't try to register media session actions
for which there is no platform command.

10:20 AM Changeset in webkit [272588] by Russell Epstein
  • 1 copy in branches/safari-611.1.14.1-branch

New branch.

10:19 AM Changeset in webkit [272587] by Russell Epstein
  • 1 copy in branches/safari-611.1.14.0-branch

New branch.

10:03 AM Changeset in webkit [272586] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[macOS] Deny mach-lookup to the fonts service
https://bugs.webkit.org/show_bug.cgi?id=221610
<rdar://problem/69168609>

Reviewed by Brent Fulgham.

By setting the Info.plist key CTIgnoreUserFonts to true, mach-lookup to the fonts service in the WebContent process can
be denied on macOS.

No new tests, covered by existing tests.

  • WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-OSX.plist:
  • WebProcess/com.apple.WebProcess.sb.in:
10:03 AM Changeset in webkit [272585] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Deny mach-lookup to the service 'com.apple.trustd.agent'
https://bugs.webkit.org/show_bug.cgi?id=221611
<rdar://problem/68935818>

Reviewed by Brent Fulgham.

Deny mach-lookup to the service 'com.apple.trustd.agent' in the WebContent process on macOS.

  • WebProcess/com.apple.WebProcess.sb.in:
9:57 AM Changeset in webkit [272584] by Wenson Hsieh
  • 6 edits
    2 adds in trunk

REGRESSION (r271660): Unable to interact with page after long-pressing image on images.google.com
https://bugs.webkit.org/show_bug.cgi?id=221584
<rdar://problem/74073581>

Reviewed by Andy Estes.

Source/WebKit:

After long pressing on an image with an active touchend event listener, it's possible to sometimes get stuck in
a state where further interaction with the page is impossible, due to all gesture recognizers (except for the
touchend deferral gestures) remaining in either Failed or Ended state.

When presenting the context menu with a long press, the touch event gesture transitions to Failed state due to
the active touch being cancelled. Normally, this invokes -_webTouchEventsRecognized: with all touch points
being released, which allows us to "lift" the deferred gesture gate by failing any deferring gesture recognizers
that are still in Possible state (i.e. deferring native gestures).

However, it's possible for touch deferring gestures (in particular, the touchend deferrer) introduced in r271660
to end (i.e. call -touchesEnded:withEvent:) before the touch event gesture gets a chance to call
-_webTouchEventsRecognized:. In this scenario, the touch end deferral gesture remains in Possible state, and
prevents the touch event gesture from subsequently firing its action (-_webTouchEventsRecognized:), presumably
because UIKit is waiting for all other gestures in the same subgraph as the touch event gesture recognizer to
Fail.

This effectively results in a gesture "deadlock", since the web touch event gesture recognizer won't call
-_webTouchEventsRecognized: until the touch end deferring gesture has failed, and the touch end deferring
gesture won't fail until -_webTouchEventsRecognized: is called. To fix this, we restore a bit of logic that
was removed with r271193, such that we allow our deferring gesture recognizers to transition to Failed state
underneath -touchesEnded:withEvent:, as long it's [1] not actively deferring any native gestures, and [2] the
web touch event gesture has already failed, so we aren't expecting a subsequent call to
-_webTouchEventsRecognized: until the deferring gesture has failed.

Note that this check for the touch event gesture recognizer's state (condition [2] above) is necessary to
prevent the touchend deferring gesture from failing prematurely (i.e. right before we're about to dispatch
preventable touchend events).

Test: fast/events/touch/ios/tap-after-long-press-on-image.html

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _isTouchStartDeferringGesture:]):
(-[WKContentView _isTouchEndDeferringGesture:]):
(-[WKContentView deferringGestureRecognizer:didEndTouchesWithEvent:]):

Add a delegate hook when a deferring gesture's ends touches; use this hook in WKContentView to "lift" the
gesture gate if needed, in the case where the touch event gesture recognizer has already failed and we can't
expect -_webTouchEventsRecognized: to be called with all touch points released.

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

Add a missing call to -[WKWebView _didDismissContextMenu] here to make UIHelper.waitForContextMenuToHide()
actually work with image and link context menus in WebKitTestRunner.

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

(-[WKDeferringGestureRecognizer touchesEnded:withEvent:]):

LayoutTests:

Add a new layout test that (sometimes) exercises the problem. Given the nature of the bug, it doesn't seem
possible to write a test that reproduces the bug 100% of the time. See WebKit ChangeLog for more details.

  • fast/events/touch/ios/tap-after-long-press-on-image-expected.txt: Added.
  • fast/events/touch/ios/tap-after-long-press-on-image.html: Added.
  • resources/ui-helper.js:

(UIHelper.EventStreamBuilder.prototype.wait):

Add a helper to simply increment the time offset when building an event stream.

9:47 AM Changeset in webkit [272583] by youenn@apple.com
  • 3 edits
    2 adds in trunk

MediaStream-backed video elements should not compute the mediaType based on track muted states
https://bugs.webkit.org/show_bug.cgi?id=221601

Reviewed by Eric Carlson.

Source/WebCore:

In case of entering background, two things happen:

  • video elements get paused
  • local video capture track gets muted

When entering foreground:

  • video element should resume but did not as the local video track was muted and video element was considered as an audio element.
  • local video capture track gets unmuted but this is too late.

To fix this, compute hasVideo/hasAudio based on available tracks, no matter their active state.

Test: fast/mediastream/MediaStream-video-element-enter-background.html

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

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::hasVideo const):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::hasAudio const):

LayoutTests:

  • fast/mediastream/MediaStream-video-element-enter-background-expected.txt: Added.
  • fast/mediastream/MediaStream-video-element-enter-background.html: Added.
9:36 AM Changeset in webkit [272582] by commit-queue@webkit.org
  • 15 edits
    14 adds
    14 deletes in trunk/LayoutTests

[LayoutTests] Convert http/tests/inspector/ convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=221140
<rdar://problem/73758592>

Patch by Chris Gambrell <Chris Gambrell> on 2021-02-09
Reviewed by Jonathan Bedard.

  • http/tests/inspector/network/beacon-type.html:
  • http/tests/inspector/network/fetch-response-body-304.html:
  • http/tests/inspector/network/fetch-response-body.html:
  • http/tests/inspector/network/intercept-request-properties-expected.txt:
  • http/tests/inspector/network/intercept-request-properties.html:
  • http/tests/inspector/network/ping-type.html:
  • http/tests/inspector/network/resource-mime-type.html:
  • http/tests/inspector/network/resource-request-headers.html:
  • http/tests/inspector/network/resource-sizes-network.html:
  • http/tests/inspector/network/resource-timing.html:
  • http/tests/inspector/network/resources/404.php: Removed.
  • http/tests/inspector/network/resources/404.py: Added.
  • http/tests/inspector/network/resources/basic-auth.php: Removed.
  • http/tests/inspector/network/resources/basic-auth.py: Added.
  • http/tests/inspector/network/resources/beacon.php: Removed.
  • http/tests/inspector/network/resources/beacon.py: Added.
  • http/tests/inspector/network/resources/delay.php: Removed.
  • http/tests/inspector/network/resources/delay.py: Added.
  • http/tests/inspector/network/resources/echo.php: Removed.
  • http/tests/inspector/network/resources/echo.py: Added.
  • http/tests/inspector/network/resources/fetch-cachable.php: Removed.
  • http/tests/inspector/network/resources/fetch-cachable.py: Added.
  • http/tests/inspector/network/resources/gzipped-lorem-no-content-length.php: Removed.
  • http/tests/inspector/network/resources/gzipped-lorem-no-content-length.py: Added.
  • http/tests/inspector/network/resources/gzipped-lorem.php: Removed.
  • http/tests/inspector/network/resources/gzipped-lorem.py: Added.
  • http/tests/inspector/network/resources/intercept-echo.php: Removed.
  • http/tests/inspector/network/resources/intercept-echo.py: Added.
  • http/tests/inspector/network/resources/json.php: Removed.
  • http/tests/inspector/network/resources/json.py: Added.
  • http/tests/inspector/network/resources/ping.php: Removed.
  • http/tests/inspector/network/resources/ping.py: Added.
  • http/tests/inspector/network/resources/redirect.php: Removed.
  • http/tests/inspector/network/resources/redirect.py: Added.
  • http/tests/inspector/network/resources/x-frame-options.php: Removed.
  • http/tests/inspector/network/resources/x-frame-options.py: Added.
  • http/tests/inspector/network/x-frame-options-expected.txt:
  • http/tests/inspector/network/x-frame-options.html:
  • http/tests/inspector/network/xhr-response-body.html:
  • http/tests/inspector/page/get-cookies.html:
  • http/tests/inspector/page/resources/set-cookie.php: Removed.
  • http/tests/inspector/page/resources/set-cookie.py: Added.
9:35 AM Changeset in webkit [272581] by Jonathan Bedard
  • 7 edits in trunk/Tools

[webkitscmpy] Correctly parse branch commits
https://bugs.webkit.org/show_bug.cgi?id=221609
<rdar://problem/74142906>

Rubber-stamped by Aakash Jain.

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

(Git.commit): Only respect the last revision in a commit message.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/git-repo.json: Make one commit similar

to a cherry-pick.

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

(GitHub.commit): Only respect the last revision in a commit message.

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

(TestFind.test_hash): Change commit being tested since original commit would
resolve a revision.

8:39 AM BuildBot edited by aakash_jain@apple.com
(diff)
8:30 AM Changeset in webkit [272580] by Caio Lima
  • 102 edits
    2 copies
    34 adds in trunk

[ESNext] Implement private methods
https://bugs.webkit.org/show_bug.cgi?id=194434

Reviewed by Filip Pizlo.

JSTests:

  • stress/private-brand-installed-after-super-call-from-arrow-function.js: Added.
  • stress/private-brand-installed-after-super-call-from-eval.js: Added.
  • stress/private-method-brand-check.js: Added.
  • stress/private-method-change-attribute-from-branded-structure.js: Added.
  • stress/private-method-change-prototype-from-branded-structure.js: Added.
  • stress/private-method-check-private-brand-ic.js: Added.
  • stress/private-method-check-structure-miss.js: Added.
  • stress/private-method-comparison.js: Added.
  • stress/private-method-delete-property-from-branded-structure.js: Added.
  • stress/private-method-extends-brand-check.js: Added.
  • stress/private-method-get-and-call.js: Added.
  • stress/private-method-invalid-multiple-brand-installation.js: Added.
  • stress/private-method-invalidate-compiled-with-constant-symbol.js: Added.
  • stress/private-method-nested-class.js: Added.
  • stress/private-method-on-sealed-objects.js: Added.
  • stress/private-method-on-uncacheable-dictionary.js: Added.
  • stress/private-method-polymorphic-with-constant-symbol.js: Added.
  • stress/private-method-set-brand-should-have-write-barrier.js: Added.
  • stress/private-method-untyped-use.js: Added.
  • stress/private-method-with-uncacheable-dictionary-transition.js: Added.
  • stress/private-methods-inline-cache.js: Added.
  • stress/private-methods-megamorphic-ic.js: Added.
  • stress/private-methods-on-proxy.js: Added.
  • stress/private-methods-poly-ic-multiple-classes.js: Added.
  • stress/private-methods-poly-ic-single-class.js: Added.
  • stress/private-names-available-on-direct-eval.js: Added.
  • test262/config.yaml:

Source/JavaScriptCore:

This patch is adding support to private methods following the
specification on https://tc39.es/proposal-private-methods/.
This is introducing a new way to declare private methods on
class syntax. Private methods are only accessible within
classes they were declared, and only can be called from
objects that are instance of these classes.
To guarantee such rules, the proposal presents the concept of
Brand Check. During class evaluation, if a private method is present,
a brand is installed in this class. Every instance of such class
then gets this brand installed during [[Construct]] operation. It
means that an object can have multiple brands (e.g when there is also
private methods declared on super class). Before accessing a private
method, there is a check to validate if the target of the call has the
brand of callee method.
The brand check mechanism is implemented using a @privateBrand
stored on class scope. Here is a representation of how this mechanism
works:

`
class C {

#m() { return 3; }
method() { return this.#m(); }

}

let c = new C();
console.log(c.method()); prints 3
`

Generated bytecode for the following representation:
`
{ class lexical scope

const @privateBrand = @createPrivateSymbol();
const #m = function () { return 3; }
C.prototype.method = function() {

@check_private_brand(this, @privateBrand);
return #m.call(this);

}
C = function() {

@set_private_brand(this, @privateBrand);

}

}

let c = new C();
console.log(c.method()); prints 3
`

# Resolving correct brand to check

In the case of shadowing or nested scope, we need to emit brand
checks to the right private brand. See code below:

`
class C {

#m() { return 3; }
method() { return this.#m();}

A = class {

#m2() { return 3; }
foo(o) { return o.#m(); }

}

}
`

The call of "#m" in foo refers to "C::#m". In such case, we need to
check C's private brand, instead of A's private brand.
To perform the proper check, we first resolve scope of "#m" and then
check the private brand of this scope (the scope where the private
method and brand are stored is the same).
So the bytecode to lookup the right brand is:

`
mov loc9, arg1
resolve_scope loc10, "#m"
get_from_scope loc11, loc10, "@privateBrand"
check_private_brand loc9, loc11
get_from_scope loc11, loc10, "#m"
setup call frame
call loc11, ...
...
`

# Brand check mechanism

We are introducing in this patch 2 new bytecodes to allow brand check
of objects: op_set_brand and op_check_brand.
op_set_brand sets a new brand in an object, so we can perform the brand
check later when accessing private methods. This operations throws when
trying to add the same brand twice in an Object.
op_check_brand checks if the given object contains the brand we are
looking for. It traverses the brand chain to verify if the brand is
present, and throws TypeError otherwise.

We are also introducing a subclass for Structure called BrandedStructure.
It is used to store brands and to allow brand check mechanism. BrandedStructure
stores a brand and a parent pointer to another BrandedStructure that allow
us traverse the brand chain. With BrandedStructure, we can then
infer that a given object has the brand we are looking for just
checking its structureId. This is a very good optimization, since we can
reduce most of brand checks to structure checks.

We created a new kind of transition called SetBrand that happens when
op_set_brand is executed. This allow us to cache such kind of
trasitions on trasition table using the key `<brand->uid, 0,
TransitionKind::SetBrand>`. During this transition, we take previous
structure and apply one of the following rules:

  1. If it's a BrandedStructure, we then set it to m_parentBrand, to allow proper brand chain check.
  1. If it's not a BrandedStructure, we set m_parentBrand to nullptr, meaning that this is the first brand being added to the object with this structure.

For now, we are using the flag isBrandedStructure to identify that a
given Structure is a BrandedStructure. This is done to avoid changes
on places where we are checking for vm.structureStructure().
However, if we ever need space on Structure, this flag is a good
candidate to be deleted and we can move to a solution that uses
vm.brandedStructureStructure();

# JIT Support

This patch also includes initial JIT support for set_private_brand
and check_private_brand. On Baseline JIT, we are using
JITPravateBrandAccessGenerator to support IC for both operands.
On DFGByteCodeParser we are trying to inline brand access whenever
possible, and fallbacking to SetPrivateBrand and
CheckPrivateBrand otherwise. Those nodes are not being optimized at
their full potential, but the code generated by them is also relying on
JITPrivateBrandAccessGenerator to have IC support for both DFG and
FTL. During DFG parsing, we try to reduce those access to CheckIsConstant
and CheckStructure (with PutStructure for set_private_brand cases)
based on available profiled data. This is meant to make brand checks
almost free on DFG/FTL tiers when we have a single evaluation of a
class, since the CheckIsConstant can be eliminated by the constant-folded
scope load, and the CheckStructure is very likely to be redundant
to any other CheckStructure that can be performed on receiver
when we have a finite structure set.
For instance, when we have a brand check on a path-of-no-return to
a GetByOffset sequence on the same receiver, the CheckStructure
for the brand check will enable CSE of the CheckStructure that
would happen for that GetByOffset. Such design is possible because brand
checks supports polymorphic access very similr to what we have for
GetByOffset sequences.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • builtins/BuiltinExecutables.cpp:

(JSC::BuiltinExecutables::createDefaultConstructor):
(JSC::BuiltinExecutables::createExecutable):

  • builtins/BuiltinExecutables.h:

We are adding a new parameter PrivateBrandRequirement to propagate
when a default constructor needs to emit code to setup private brand
on instances.

  • builtins/BuiltinNames.h:

Adding @privateBrand that we use to store private brand on
class's scope.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::createCheckPrivateBrand):
(JSC::AccessCase::createSetPrivateBrand):
(JSC::AccessCase::requiresIdentifierNameMatch const):
(JSC::AccessCase::requiresInt32PropertyCheck const):
(JSC::AccessCase::needsScratchFPR const):
(JSC::AccessCase::forEachDependentCell const):
(JSC::AccessCase::doesCalls const):
(JSC::AccessCase::canReplace const):
(JSC::AccessCase::dump const):
(JSC::AccessCase::generateWithGuard):
(JSC::AccessCase::generateImpl):

  • bytecode/AccessCase.h:

(JSC::AccessCase::structure const):
(JSC::AccessCase::newStructure const):

  • bytecode/BytecodeList.rb:
  • bytecode/BytecodeUseDef.cpp:

(JSC::computeUsesForBytecodeIndexImpl):
(JSC::computeDefsForBytecodeIndexImpl):

  • bytecode/CheckPrivateBrandStatus.cpp: Added.

(JSC::CheckPrivateBrandStatus::appendVariant):
(JSC::CheckPrivateBrandStatus::computeForBaseline):
(JSC::CheckPrivateBrandStatus::CheckPrivateBrandStatus):
(JSC::CheckPrivateBrandStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::CheckPrivateBrandStatus::computeFor):
(JSC::CheckPrivateBrandStatus::slowVersion const):
(JSC::CheckPrivateBrandStatus::merge):
(JSC::CheckPrivateBrandStatus::filter):
(JSC::CheckPrivateBrandStatus::singleIdentifier const):
(JSC::CheckPrivateBrandStatus::visitAggregate):
(JSC::CheckPrivateBrandStatus::markIfCheap):
(JSC::CheckPrivateBrandStatus::finalize):
(JSC::CheckPrivateBrandStatus::dump const):

  • bytecode/CheckPrivateBrandStatus.h: Added.
  • bytecode/CheckPrivateBrandVariant.cpp: Added.

(JSC::CheckPrivateBrandVariant::CheckPrivateBrandVariant):
(JSC::CheckPrivateBrandVariant::~CheckPrivateBrandVariant):
(JSC::CheckPrivateBrandVariant::attemptToMerge):
(JSC::CheckPrivateBrandVariant::markIfCheap):
(JSC::CheckPrivateBrandVariant::finalize):
(JSC::CheckPrivateBrandVariant::visitAggregate):
(JSC::CheckPrivateBrandVariant::dump const):
(JSC::CheckPrivateBrandVariant::dumpInContext const):

  • bytecode/CheckPrivateBrandVariant.h: Added.

(JSC::CheckPrivateBrandVariant::structureSet const):
(JSC::CheckPrivateBrandVariant::structureSet):
(JSC::CheckPrivateBrandVariant::identifier const):
(JSC::CheckPrivateBrandVariant::overlaps):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::finalizeLLIntInlineCaches):

  • bytecode/ExecutableInfo.h:

(JSC::ExecutableInfo::ExecutableInfo):
(JSC::ExecutableInfo::privateBrandRequirement const):

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::regenerate):
(WTF::printInternal):

  • bytecode/RecordedStatuses.cpp:

(JSC::RecordedStatuses::operator=):
(JSC::RecordedStatuses::addCheckPrivateBrandStatus):
(JSC::RecordedStatuses::addSetPrivateBrandStatus):
(JSC::RecordedStatuses::visitAggregate):
(JSC::RecordedStatuses::markIfCheap):

  • bytecode/RecordedStatuses.h:

(JSC::RecordedStatuses::forEachVector):

  • bytecode/SetPrivateBrandStatus.cpp: Added.

(JSC::SetPrivateBrandStatus::appendVariant):
(JSC::SetPrivateBrandStatus::computeForBaseline):
(JSC::SetPrivateBrandStatus::SetPrivateBrandStatus):
(JSC::SetPrivateBrandStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::SetPrivateBrandStatus::computeFor):
(JSC::SetPrivateBrandStatus::slowVersion const):
(JSC::SetPrivateBrandStatus::merge):
(JSC::SetPrivateBrandStatus::filter):
(JSC::SetPrivateBrandStatus::singleIdentifier const):
(JSC::SetPrivateBrandStatus::visitAggregate):
(JSC::SetPrivateBrandStatus::markIfCheap):
(JSC::SetPrivateBrandStatus::finalize):
(JSC::SetPrivateBrandStatus::dump const):

  • bytecode/SetPrivateBrandStatus.h: Added.
  • bytecode/SetPrivateBrandVariant.cpp: Added.

(JSC::SetPrivateBrandVariant::SetPrivateBrandVariant):
(JSC::SetPrivateBrandVariant::~SetPrivateBrandVariant):
(JSC::SetPrivateBrandVariant::attemptToMerge):
(JSC::SetPrivateBrandVariant::markIfCheap):
(JSC::SetPrivateBrandVariant::finalize):
(JSC::SetPrivateBrandVariant::visitAggregate):
(JSC::SetPrivateBrandVariant::dump const):
(JSC::SetPrivateBrandVariant::dumpInContext const):

  • bytecode/SetPrivateBrandVariant.h: Added.

(JSC::SetPrivateBrandVariant::oldStructure const):
(JSC::SetPrivateBrandVariant::newStructure const):
(JSC::SetPrivateBrandVariant::identifier const):
(JSC::SetPrivateBrandVariant::overlaps):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::reset):

  • bytecode/StructureStubInfo.h:
  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::privateBrandRequirement const):

  • bytecode/UnlinkedCodeBlockGenerator.h:

(JSC::UnlinkedCodeBlockGenerator::privateBrandRequirement const):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::generateUnlinkedFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

  • bytecode/UnlinkedFunctionExecutable.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):

We changed BytecodeGenerator for FunctionNode and EvalNode to
propagate parentScope PrivateNameEnvironment. These environments stores
private name entries that are visible into the scope of the
function/eval.
This is required to identify the kind of access a private name is
referring to, since it can be a private field or a private method.

(JSC::BytecodeGenerator::instantiateLexicalVariables):
(JSC::BytecodeGenerator::emitGetPrivateName):
(JSC::BytecodeGenerator::emitCreatePrivateBrand):

The process to create a private brand is as follows:

  1. Create a PrivateSymbol using @createPrivateSymbol.
  2. Store this symbol into a given scope (i.e class lexical scope) on @privateBrand variable.

(JSC::BytecodeGenerator::emitInstallPrivateBrand):
(JSC::BytecodeGenerator::emitGetPrivateBrand):

We added m_privateNamesStack to BytecodeGenerator to represent the
scope chain of available private names while generating bytecode.

(JSC::BytecodeGenerator::emitCheckPrivateBrand):
(JSC::BytecodeGenerator::isPrivateMethod):
(JSC::BytecodeGenerator::pushPrivateAccessNames):
(JSC::BytecodeGenerator::popPrivateAccessNames):
(JSC::BytecodeGenerator::getAvailablePrivateAccessNames):
(JSC::BytecodeGenerator::emitNewDefaultConstructor):
(JSC::BytecodeGenerator::emitNewClassFieldInitializerFunction):
(JSC::BytecodeGenerator::emitDirectGetByVal): Deleted.

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::privateBrandRequirement const):
(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::makeFunction):

This change is required to properly propagate PrivateBrandRequirement
to arrow functions that can potentially call super().

  • bytecompiler/NodesCodegen.cpp:

(JSC::PropertyListNode::emitDeclarePrivateFieldNames):
(JSC::PropertyListNode::emitBytecode):
(JSC::PropertyListNode::emitPutConstantProperty):
(JSC::BaseDotNode::emitGetPropertyValue):

Adding support to properly access private method. Since we store
private methods on class lexical scope, we need a different set of
instructions to access a private method.

(JSC::BaseDotNode::emitPutProperty):

In the case of we trying to write in a private method, we need to
throw a TypeError according to specification
(https://tc39.es/proposal-private-methods/#sec-privatefieldset).

(JSC::FunctionCallValueNode::emitBytecode):
(JSC::PostfixNode::emitDot):
(JSC::PrefixNode::emitDot):
(JSC::ClassExprNode::emitBytecode):

  • debugger/DebuggerCallFrame.cpp:

(JSC::DebuggerCallFrame::evaluateWithScopeExtension):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGClobbersExitState.cpp:

(JSC::DFG::clobbersExitState):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGGraph.h:
  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::link):

  • dfg/DFGJITCompiler.h:

(JSC::DFG::JITCompiler::addPrivateBrandAccess):

  • dfg/DFGMayExit.cpp:
  • dfg/DFGNode.h:

(JSC::DFG::Node::hasCheckPrivateBrandStatus):
(JSC::DFG::Node::checkPrivateBrandStatus):
(JSC::DFG::Node::hasSetPrivateBrandStatus):
(JSC::DFG::Node::setPrivateBrandStatus):

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

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCheckPrivateBrand):
(JSC::DFG::SpeculativeJIT::compileSetPrivateBrand):

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

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGStoreBarrierInsertionPhase.cpp:
  • dfg/DFGVarargsForwardingPhase.cpp:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compilePrivateBrandAccess):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckPrivateBrand):
(JSC::FTL::DFG::LowerDFGToB3::compileSetPrivateBrand):

  • interpreter/Interpreter.cpp:

(JSC::eval):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):
(JSC::JIT::link):

  • jit/JIT.h:
  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITPrivateBrandAccessGenerator::JITPrivateBrandAccessGenerator):
(JSC::JITPrivateBrandAccessGenerator::generateFastPath):
(JSC::JITPrivateBrandAccessGenerator::finalize):

  • jit/JITInlineCacheGenerator.h:

(JSC::JITPrivateBrandAccessGenerator::JITPrivateBrandAccessGenerator):
(JSC::JITPrivateBrandAccessGenerator::slowPathJump const):

  • jit/JITOperations.cpp:

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

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

(JSC::JIT::emit_op_set_private_brand):
(JSC::JIT::emitSlow_op_set_private_brand):
(JSC::JIT::emit_op_check_private_brand):
(JSC::JIT::emitSlow_op_check_private_brand):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_set_private_brand):
(JSC::JIT::emitSlow_op_set_private_brand):
(JSC::JIT::emit_op_check_private_brand):
(JSC::JIT::emitSlow_op_check_private_brand):

  • jit/Repatch.cpp:

(JSC::tryCacheCheckPrivateBrand):
(JSC::repatchCheckPrivateBrand):
(JSC::tryCacheSetPrivateBrand):
(JSC::repatchSetPrivateBrand):
(JSC::resetCheckPrivateBrand):
(JSC::resetSetPrivateBrand):

  • jit/Repatch.h:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • parser/Nodes.cpp:

(JSC::FunctionMetadataNode::FunctionMetadataNode):

  • parser/Nodes.h:

(JSC::BaseDotNode::isPrivateMember const):
(JSC::BaseDotNode::isPrivateField const): Deleted.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseMemberExpression):

  • parser/Parser.h:

(JSC::Scope::declarePrivateMethod):
(JSC::Scope::declarePrivateField):
(JSC::Parser<LexerType>::parse):
(JSC::parse):
(JSC::Scope::declarePrivateName): Deleted.

  • parser/ParserModes.h:
  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createDotAccess):

  • parser/VariableEnvironment.cpp:

(JSC::VariableEnvironment::declarePrivateMethod):

  • parser/VariableEnvironment.h:

(JSC::VariableEnvironmentEntry::isPrivateField const):
(JSC::VariableEnvironmentEntry::isPrivateMethod const):
(JSC::VariableEnvironmentEntry::setIsPrivateField):
(JSC::VariableEnvironmentEntry::setIsPrivateMethod):
(JSC::PrivateNameEntry::isMethod const):
(JSC::PrivateNameEntry::isPrivateMethodOrAcessor const):
(JSC::VariableEnvironment::addPrivateName):
(JSC::VariableEnvironment::declarePrivateField):
(JSC::VariableEnvironment::declarePrivateMethod):
(JSC::VariableEnvironment::privateNameEnvironment const):
(JSC::VariableEnvironment::hasPrivateMethodOrAccessor const):
(JSC::VariableEnvironment::addPrivateNamesFrom):
(JSC::VariableEnvironmentEntry::isPrivateName const): Deleted.
(JSC::VariableEnvironmentEntry::setIsPrivateName): Deleted.
(JSC::VariableEnvironment::declarePrivateName): Deleted.

  • runtime/CachedTypes.cpp:

(JSC::CachedCodeBlockRareData::encode):
(JSC::CachedCodeBlockRareData::decode const):
(JSC::CachedFunctionExecutableRareData::encode):
(JSC::CachedFunctionExecutableRareData::decode const):
(JSC::CachedFunctionExecutable::privateBrandRequirement const):
(JSC::CachedCodeBlock::derivedContextType const):
(JSC::CachedFunctionExecutable::encode):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
(JSC::CachedCodeBlock::needsClassFieldInitializer const): Deleted.

  • runtime/CodeCache.cpp:

(JSC::generateUnlinkedCodeBlockImpl):
(JSC::generateUnlinkedCodeBlock):
(JSC::generateUnlinkedCodeBlockForDirectEval):
(JSC::CodeCache::getUnlinkedGlobalFunctionExecutable):

  • runtime/CodeCache.h:
  • runtime/DirectEvalExecutable.cpp:

(JSC::DirectEvalExecutable::create):
(JSC::DirectEvalExecutable::DirectEvalExecutable):

  • runtime/DirectEvalExecutable.h:
  • runtime/EvalExecutable.cpp:

(JSC::EvalExecutable::EvalExecutable):

  • runtime/EvalExecutable.h:

(JSC::EvalExecutable::executableInfo const):
(JSC::EvalExecutable::privateBrandRequirement const):

  • runtime/ExceptionHelpers.cpp:

(JSC::createInvalidPrivateNameError):

  • runtime/IndirectEvalExecutable.cpp:

(JSC::IndirectEvalExecutable::IndirectEvalExecutable):

  • runtime/JSObject.h:
  • runtime/JSObjectInlines.h:

(JSC::JSObject::checkPrivateBrand):
(JSC::JSObject::setPrivateBrand):

  • runtime/JSScope.cpp:

(JSC::JSScope::collectClosureVariablesUnderTDZ):

  • runtime/JSScope.h:
  • runtime/ModuleProgramExecutable.h:
  • runtime/Options.cpp:

(JSC::Options::recomputeDependentOptions):

  • runtime/OptionsList.h:
  • runtime/ProgramExecutable.h:
  • runtime/Structure.cpp:

(JSC::Structure::materializePropertyTable):
(JSC::BrandedStructure::BrandedStructure):
(JSC::BrandedStructure::create):
(JSC::BrandedStructure::checkBrand):
(JSC::Structure::setBrandTransitionFromExistingStructureImpl):
(JSC::Structure::setBrandTransitionFromExistingStructureConcurrently):
(JSC::Structure::setBrandTransition):

  • runtime/Structure.h:

(JSC::Structure::finishCreation):

  • runtime/StructureInlines.h:

(JSC::Structure::create):
(JSC::Structure::forEachPropertyConcurrently):

  • runtime/StructureTransitionTable.h:
  • runtime/SymbolTable.cpp:

(JSC::SymbolTable::cloneScopePart):

  • runtime/SymbolTable.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
7:03 AM Changeset in webkit [272579] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] canUseForText should also check if the space glyph comes from the primary font
https://bugs.webkit.org/show_bug.cgi?id=221592

Reviewed by Antti Koivisto.

Currently all the glyphs in the content have to come from the primary font, including the space.
(see fast/text/multiple-feature-properties.html)

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForText):

6:56 AM Changeset in webkit [272578] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Remove misleading TextUtil::fixedPitchWidth
https://bugs.webkit.org/show_bug.cgi?id=221581

Reviewed by Antti Koivisto.

Fonts lie about being monospaced. see webkit.org/b/162546

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::width):
(WebCore::Layout::TextUtil::fixedPitchWidth): Deleted.

  • layout/inlineformatting/text/TextUtil.h:
6:53 AM Changeset in webkit [272577] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Allow icecream toolchain override in flatpakutils
https://bugs.webkit.org/show_bug.cgi?id=221605

Patch by Daniel Kolesa <Daniel Kolesa> on 2021-02-09
Reviewed by Philippe Normand.

This allows the user to specify a custom icecream toolchain.
Usually you will not want to do this, but it is useful e.g. when
you have a machine in your cluster that does not have a compiler
in the SDK. You can either force the whole version string by using
ICECC_VERSION_OVERRIDE, or append to the original string with
ICECC_VERSION_APPEND.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.run_in_sandbox):

6:08 AM Changeset in webkit [272576] by Lauro Moura
  • 2 edits in trunk/Tools

[GLIB] Geolocation API tests are flaky timeout instead of failure

Unreviewed test gardening.

  • TestWebKitAPI/glib/TestExpectations.json:
6:03 AM Changeset in webkit [272575] by Philippe Normand
  • 2 edits in trunk/Source/WebKit

Unreviewed, tvOS build fix after r272573

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestUserMediaPermissionForSpeechRecognition): That ifdef was
updated by mistake in r272573.

5:12 AM Changeset in webkit [272574] by Philippe Normand
  • 16 edits
    4 adds in trunk

[GLib] Permission request API for MediaKeySystem access support
https://bugs.webkit.org/show_bug.cgi?id=221199

Reviewed by Carlos Garcia Campos.

Source/WebKit:

Expose a new Permission Request object to the public WPE and GTK APIs, allowing the
application to defer the decision of using a given EME MediaKeySystem to the user's
approval.

Covered by new API test.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • UIProcess/API/glib/WebKitMediaKeySystemPermissionRequest.cpp: Added.

(webkitMediaKeySystemPermissionRequestAllow):
(webkitMediaKeySystemPermissionRequestDeny):
(webkit_permission_request_interface_init):
(webkitMediaKeySystemPermissionRequestDispose):
(webkit_media_key_system_permission_request_class_init):
(webkitMediaKeySystemPermissionRequestCreate):
(webkit_media_key_system_permission_get_name):

  • UIProcess/API/glib/WebKitMediaKeySystemPermissionRequestPrivate.h: Added.
  • UIProcess/API/glib/WebKitUIClient.cpp:
  • UIProcess/API/gtk/WebKitAutocleanups.h:
  • UIProcess/API/gtk/WebKitMediaKeySystemPermissionRequest.h: Added.
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
  • UIProcess/API/gtk/webkit2.h:
  • UIProcess/API/wpe/WebKitMediaKeySystemPermissionRequest.h: Added.
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:
  • UIProcess/API/wpe/docs/wpe-docs.sgml:

Tools:

Added basic support for MediaKeySystem permission request to the GTK MiniBrowser, and a GLib
API unit-test as well.

  • MiniBrowser/gtk/BrowserTab.c:

(permissionRequestDialogResponse):
(decidePermissionRequest):
(browser_tab_class_init):

  • TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:

(testWebViewMediaKeySystemPermissionRequests):
(beforeAll):

  • TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:

(WebViewTest::initializeWebView):

4:46 AM Changeset in webkit [272573] by Philippe Normand
  • 38 edits
    19 adds in trunk

Permission request API for MediaKeySystem access support
https://bugs.webkit.org/show_bug.cgi?id=221187

Reviewed by Jer Noble.

Source/WebCore:

Support for user permission requesting when access to an EME MediaKeySystem is being
requested by the page. This is similar to the mediaDevices access guards.

Existing test media/encrypted-media/mock-MediaKeySystemAccess.html was updated to cover this
new code path and WPE/GTK API tests as well.

  • CMakeLists.txt:
  • Headers.cmake:
  • Modules/encryptedmedia/MediaKeySystemClient.h: Added.
  • Modules/encryptedmedia/MediaKeySystemController.cpp: Added.

(WebCore::MediaKeySystemController::supplementName):
(WebCore::MediaKeySystemController::MediaKeySystemController):
(WebCore::MediaKeySystemController::~MediaKeySystemController):
(WebCore::provideMediaKeySystemTo):
(WebCore::MediaKeySystemController::logRequestMediaKeySystemDenial):

  • Modules/encryptedmedia/MediaKeySystemController.h: Added.

(WebCore::MediaKeySystemController::client const):
(WebCore::MediaKeySystemController::from):
(WebCore::MediaKeySystemController::requestMediaKeySystem):
(WebCore::MediaKeySystemController::cancelMediaKeySystemRequest):

  • Modules/encryptedmedia/MediaKeySystemRequest.cpp: Added.

(WebCore::MediaKeySystemRequest::create):
(WebCore::MediaKeySystemRequest::MediaKeySystemRequest):
(WebCore::MediaKeySystemRequest::~MediaKeySystemRequest):
(WebCore::MediaKeySystemRequest::topLevelDocumentOrigin const):
(WebCore::MediaKeySystemRequest::start):
(WebCore::MediaKeySystemRequest::allow):
(WebCore::MediaKeySystemRequest::deny):
(WebCore::MediaKeySystemRequest::stop):
(WebCore::MediaKeySystemRequest::activeDOMObjectName const):
(WebCore::MediaKeySystemRequest::document const):

  • Modules/encryptedmedia/MediaKeySystemRequest.h: Added.

(WebCore::MediaKeySystemRequest::setAllowCallback):
(WebCore::MediaKeySystemRequest::identifier const):
(WebCore::MediaKeySystemRequest::keySystem const):

  • Modules/encryptedmedia/NavigatorEME.cpp:

(WebCore::NavigatorEME::requestMediaKeySystemAccess):

Source/WebKit:

Add new IPC and C API exposing MediaKeySystem access permissions to the UIProcess. At least
GTK/WPE would like to have API for asking permission to the user when EME's MediaKeyAccess
is being requested by a page. On Apple platforms the permission is granted by default until
a decision is made about supporting this in their APIUIClient.

  • CMakeLists.txt:
  • Headers.cmake:
  • Platform/Logging.h:
  • Shared/API/APIObject.h:
  • Shared/API/c/WKBase.h:
  • Sources.txt:
  • UIProcess/API/APIUIClient.h:

(API::UIClient::decidePolicyForMediaKeySystemPermissionRequest):

  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKMediaKeySystemPermissionCallback.cpp: Added.

(WKMediaKeySystemPermissionCallbackGetTypeID):
(WKMediaKeySystemPermissionCallbackComplete):

  • UIProcess/API/C/WKMediaKeySystemPermissionCallback.h: Added.
  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/MediaKeySystemPermissionRequest.h: Added.

(WebKit::MediaKeySystemPermissionRequest::create):
(WebKit::MediaKeySystemPermissionRequest::complete):
(WebKit::MediaKeySystemPermissionRequest::keySystem const):
(WebKit::MediaKeySystemPermissionRequest::MediaKeySystemPermissionRequest):
(WebKit::MediaKeySystemPermissionCallback::create):
(WebKit::MediaKeySystemPermissionCallback::complete):
(WebKit::MediaKeySystemPermissionCallback::MediaKeySystemPermissionCallback):

  • UIProcess/MediaKeySystemPermissionRequestManagerProxy.cpp: Added.

(WebKit::MediaKeySystemPermissionRequestManagerProxy::MediaKeySystemPermissionRequestManagerProxy):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::~MediaKeySystemPermissionRequestManagerProxy):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::invalidatePendingRequests):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::denyRequest):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::grantRequest):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::createRequestForFrame):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::logChannel const):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::logger const):

  • UIProcess/MediaKeySystemPermissionRequestManagerProxy.h: Added.

(WebKit::MediaKeySystemPermissionRequestManagerProxy::page const):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::denyRequest):

  • UIProcess/MediaKeySystemPermissionRequestProxy.cpp: Added.

(WebKit::MediaKeySystemPermissionRequestProxy::MediaKeySystemPermissionRequestProxy):
(WebKit::MediaKeySystemPermissionRequestProxy::allow):
(WebKit::MediaKeySystemPermissionRequestProxy::deny):
(WebKit::MediaKeySystemPermissionRequestProxy::invalidate):
(WebKit::MediaKeySystemPermissionRequestProxy::doDefaultAction):

  • UIProcess/MediaKeySystemPermissionRequestProxy.h: Added.

(WebKit::MediaKeySystemPermissionRequestProxy::create):
(WebKit::MediaKeySystemPermissionRequestProxy::isPending const):
(WebKit::MediaKeySystemPermissionRequestProxy::mediaKeySystemID const):
(WebKit::MediaKeySystemPermissionRequestProxy::mainFrameID const):
(WebKit::MediaKeySystemPermissionRequestProxy::frameID const):
(WebKit::MediaKeySystemPermissionRequestProxy::topLevelDocumentSecurityOrigin):
(WebKit::MediaKeySystemPermissionRequestProxy::topLevelDocumentSecurityOrigin const):
(WebKit::MediaKeySystemPermissionRequestProxy::keySystem const):

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

(WebKit::WebPageProxy::requestMediaKeySystemPermissionForFrame):
(WebKit::WebPageProxy::mediaKeySystemPermissionRequestManager):
(WebKit::WebPageProxy::requestMediaKeySystemPermissionByDefaultAction):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/EncryptedMedia/MediaKeySystemPermissionRequestManager.cpp: Added.

(WebKit::MediaKeySystemPermissionRequestManager::MediaKeySystemPermissionRequestManager):
(WebKit::MediaKeySystemPermissionRequestManager::startMediaKeySystemRequest):
(WebKit::MediaKeySystemPermissionRequestManager::sendMediaKeySystemRequest):
(WebKit::MediaKeySystemPermissionRequestManager::cancelMediaKeySystemRequest):
(WebKit::MediaKeySystemPermissionRequestManager::mediaKeySystemWasGranted):
(WebKit::MediaKeySystemPermissionRequestManager::mediaKeySystemWasDenied):

  • WebProcess/EncryptedMedia/MediaKeySystemPermissionRequestManager.h: Added.
  • WebProcess/WebCoreSupport/WebMediaKeySystemClient.cpp: Added.

(WebKit::WebMediaKeySystemClient::WebMediaKeySystemClient):
(WebKit::WebMediaKeySystemClient::pageDestroyed):
(WebKit::WebMediaKeySystemClient::requestMediaKeySystem):
(WebKit::WebMediaKeySystemClient::cancelMediaKeySystemRequest):

  • WebProcess/WebCoreSupport/WebMediaKeySystemClient.h: Added.

(WebKit::WebMediaKeySystemClient::~WebMediaKeySystemClient):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains):
(WebKit::WebPage::mediaKeySystemWasGranted):
(WebKit::WebPage::mediaKeySystemWasDenied):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::mediaKeySystemPermissionRequestManager):

  • WebProcess/WebPage/WebPage.messages.in:

Tools:

Add support for setting the permission request response from the TestRunner, for usage within layout tests.

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

(WTR::TestRunner::setIsMediaKeySystemPermissionGranted):

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

(WTR::decidePolicyForMediaKeySystemPermissionRequest):
(WTR::TestController::completeMediaKeySystemPermissionCheck):
(WTR::TestController::setIsMediaKeySystemPermissionGranted):
(WTR::TestController::createWebViewWithOptions):

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

Add basic coverage support for overriding the MediaKeySystem permission answer and thus have
the promise rejection tested in this case.

  • media/encrypted-media/mock-MediaKeySystemAccess-expected.txt:
  • media/encrypted-media/mock-MediaKeySystemAccess.html:
2:34 AM Changeset in webkit [272572] by Manuel Rego Casasnovas
  • 6 edits
    5 adds in trunk

Allow sending modifier keys in test_driver.send_keys()
https://bugs.webkit.org/show_bug.cgi?id=221466

Reviewed by Carlos Garcia Campos.

LayoutTests/imported/w3c:

Created new test that checks that modifier keys can be sent by test_driver.send_keys()
and properly handled on "keydown" event.

  • web-platform-tests/resources/testdriver-vendor.js: Add modifier keys' codes.
  • web-platform-tests/uievents/keyboard/modifier-keys-expected.txt: Added.
  • web-platform-tests/uievents/keyboard/modifier-keys.html: Added.

Tools:

  • WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:

(WTR::getGDKKeySymForKeyRef): Add support for meta key.

LayoutTests:

Add specific -expected.txt file for Mac platform. Meta key is detected differently than in other platforms,
also event.ctrlKey and other are not being set from the test (they work fine when checking that manually).

  • platform/ios/TestExpectations: Skip test as it's timing out in iOS.
  • platform/mac/imported/w3c/web-platform-tests/uievents/keyboard/modifier-keys-expected.txt: Added.
2:30 AM Changeset in webkit [272571] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Rename XRWebGLLayer m_IscompositionDisabled to m_IscompositionEnabled
https://bugs.webkit.org/show_bug.cgi?id=221599

Patch by Imanol Fernandez <imanol> on 2021-02-09
Reviewed by Sergio Villar Senin.

The spec agreed to rename this to avoid double negations in code.
See https://github.com/immersive-web/webxr/pull/1172.

  • Modules/webxr/WebXRWebGLLayer.cpp:

(WebCore::WebXRWebGLLayer::create):
(WebCore::WebXRWebGLLayer::WebXRWebGLLayer):

  • Modules/webxr/WebXRWebGLLayer.h:
2:02 AM Changeset in webkit [272570] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] Make JSON.parse faster by using table for fast string parsing
https://bugs.webkit.org/show_bug.cgi?id=221593

Reviewed by Ryosuke Niwa and Geoffrey Garen.

We use Latin1 table for quickly checking whether a character is safe for the fast path string parsing in JSON.
This offers 1-3% improvement in Kraken json-parse-financial test.

  • parser/Lexer.cpp:

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

  • runtime/LiteralParser.cpp:

(JSC::LiteralParser<CharType>::Lexer::lex):
(JSC::isSafeStringCharacter):
(JSC::LiteralParser<CharType>::Lexer::lexString):

  • runtime/LiteralParser.h:

Feb 8, 2021:

10:54 PM Changeset in webkit [272569] by commit-queue@webkit.org
  • 6 edits in trunk

Make auto && <ratio> use content box-sizing
https://bugs.webkit.org/show_bug.cgi?id=221527

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

Source/WebCore:

Make auto && <ratio> aspect-ratio use content box-sizing as specified:
https://drafts.csswg.org/css-sizing-4/#valdef-aspect-ratio-auto--ratio

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::availableLogicalHeightForPercentageComputation const):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeLogicalHeight const):
(WebCore::RenderBox::availableLogicalHeightUsing const):
(WebCore::RenderBox::computePositionedLogicalHeightUsing const):
(WebCore::RenderBox::computeLogicalWidthFromAspectRatio const):
(WebCore::RenderBox::computeMinMaxLogicalWidthFromAspectRatio const):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::boxSizingForAspectRatio const):

LayoutTests:

Enable some tests that pass now.

10:51 PM Changeset in webkit [272568] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Move layout_test_runner.Worker._update_test_input to LayoutTestRunner
https://bugs.webkit.org/show_bug.cgi?id=221577

Patch by Sam Sneddon <Sam Sneddon> on 2021-02-08
Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:

(LayoutTestRunner.run_tests):
(LayoutTestRunner._update_test_input):
(Worker.handle):
(Worker._run_test):
(Worker._update_test_input): Deleted.

  • Scripts/webkitpy/layout_tests/controllers/manager.py:

(Manager._run_tests):

9:37 PM Changeset in webkit [272567] by Simon Fraser
  • 3 edits
    2 adds in trunk

REGRESSION (r269458): yahoo.com social / comments bar shows as transparent when scrolling page
https://bugs.webkit.org/show_bug.cgi?id=221582
Source/WebCore:

<rdar://problem/73795359>

Reviewed by Tim Horton.

Fix some copypasta in r269458 that resulted in scrolling state fixed nodes failing to get
the right dirty bits after attach, resulting bad viewport constraint data.

Test: scrollingcoordinator/fixed-node-reattach.html

  • page/scrolling/ScrollingStateFixedNode.cpp:

(WebCore::ScrollingStateFixedNode::applicableProperties const):

LayoutTests:

Reviewed by Tim Horton.

  • scrollingcoordinator/fixed-node-reattach-expected.html: Added.
  • scrollingcoordinator/fixed-node-reattach.html: Added.
7:30 PM Changeset in webkit [272566] by Patrick Angle
  • 10 edits
    2 adds in trunk

Web Inspector: Add CSS.setLayoutContextTypeChangedMode for getting information about all layout contexts
https://bugs.webkit.org/show_bug.cgi?id=221449

Source/JavaScriptCore:

Reviewed by Devin Rousso.

Added CSS.setLayoutContextTypeChangedMode command and CSS.LayoutContextTypeChangedMode enum for controlling
if the frontend should be informed of all layout context type changes, or if only currently instrumented nodes
should be observed.

  • inspector/protocol/CSS.json:

Source/WebCore:

Reviewed by Devin Rousso.

Test: inspector/css/setLayoutContextTypeChangedMode.html

Backend support for changing the LayoutContextTypeChangedMode.

  • inspector/agents/InspectorCSSAgent.cpp:

(WebCore::pushChildrenNodesToFrontendIfLayoutContextTypePresent):

  • Recursively pushes children node paths to the frontend if a LayoutContextType exists for the node, which

allows the frontend to have a complete picture of the layout contexts in the document.
(WebCore::InspectorCSSAgent::setLayoutContextTypeChangedMode):

  • If the mode is changed to All, then make sure any node with a LayoutContextType inside any document is

sent to the frontend.
(WebCore::InspectorCSSAgent::nodeLayoutContextTypeChanged):

  • If the LayoutContextTypeChangedMode is All, inform the frontend of the node when it changes layout

context, even if the node was not previously instrumented.

  • inspector/agents/InspectorCSSAgent.h:

Source/WebInspectorUI:

Reviewed by Devin Rousso.

  • UserInterface/Controllers/CSSManager.js:
  • Added CSS.LayoutContextTypeChangedMode enum values.

(WI.CSSManager.prototype.set layoutContextTypeChangedMode):

  • UserInterface/Controllers/DOMManager.js:

(WI.DOMManager.prototype.nodesWithLayoutContextType):

  • Added ability to get all instrumented nodes of a specific layout context type.
  • UserInterface/Views/LayoutDetailsSidebarPanel.js:

(WI.LayoutDetailsSidebarPanel.prototype.attached):
(WI.LayoutDetailsSidebarPanel.prototype.detached):

  • Change the LayoutContextTypeChangedMode when showing/hiding the Layout panel.

LayoutTests:

Reviewed by Devin Rousso

Added layout tests for CSS.setLayoutContextTypeChangedMode command.

  • inspector/css/setLayoutContextTypeChangedMode-expected.txt: Added.
  • inspector/css/setLayoutContextTypeChangedMode.html: Added.
6:47 PM Changeset in webkit [272565] by Stephanie Lewis
  • 2 edits in trunk/Tools

<rdar://problem/70402593> Motionmark failed to start webserver

Reviewed by Dewei Zhu.

  • Scripts/webkitpy/benchmark_runner/benchmark_builder.py:

(BenchmarkBuilder.enter):

6:17 PM Changeset in webkit [272564] by commit-queue@webkit.org
  • 16 edits
    4 deletes in trunk

Unreviewed, reverting r272485.
https://bugs.webkit.org/show_bug.cgi?id=221588

Required revisions were reversed

Reverted changeset:

"[GLib] Permission request API for MediaKeySystem access
support"
https://bugs.webkit.org/show_bug.cgi?id=221199
https://trac.webkit.org/changeset/272485

5:47 PM Changeset in webkit [272563] by eric.carlson@apple.com
  • 2 edits in trunk/Tools

[Mac] Connect MediaSession with MediaRemote and NowPlaying
https://bugs.webkit.org/show_bug.cgi?id=221431
<rdar://problem/74000363>

Unreviewed build fix for macOS Catalina.

  • TestWebKitAPI/Tests/WebKitCocoa/MediaSession.mm:

(TestWebKitAPI::TEST_F): Add compile guards for Catalina.

5:45 PM Changeset in webkit [272562] by don.olmstead@sony.com
  • 7 edits in trunk/Source/WebCore

[CMake] Cleanup ENABLE_ENCRYPTED_MEDIA build
https://bugs.webkit.org/show_bug.cgi?id=221578

Reviewed by Michael Catanzaro.

Move missing shared files in platform/encryptedmedia to the Sources.txt. Update the XCode
project to reflect them moving to the unified build.

Move common configuration into the root CMakeLists.txt. Cleanup the related platform CMake
code to reflect the updated build.

  • CMakeLists.txt:
  • PlatformMac.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/GStreamer.cmake:
  • platform/gamepad/mac/HIDGamepad.cpp: Unrelated unified build fix
4:43 PM Changeset in webkit [272561] by commit-queue@webkit.org
  • 40 edits
    17 deletes in trunk

Unreviewed, reverting r272480, r272481, and r272500.
https://bugs.webkit.org/show_bug.cgi?id=221586

Caused assertion failure seen with EME tests

Reverted changesets:

"Permission request API for MediaKeySystem access support"
https://bugs.webkit.org/show_bug.cgi?id=221187
https://trac.webkit.org/changeset/272480

"Unreviewed, build fix after r272480"
https://trac.webkit.org/changeset/272481

"Permission request API for MediaKeySystem access support"
https://bugs.webkit.org/show_bug.cgi?id=221187
https://trac.webkit.org/changeset/272500

4:32 PM Changeset in webkit [272560] by aakash_jain@apple.com
  • 1 edit
    2 adds in trunk/Tools

[build.webkit.org] Add HTML file that translates a builder name and number pair to a valid Buildbot URL
https://bugs.webkit.org/show_bug.cgi?id=221579

Reviewed by Ryosuke Niwa.

  • CISupport/build-webkit-org/public_html/builders: Added.
  • CISupport/build-webkit-org/public_html/builders/index.html: Added.
4:32 PM Changeset in webkit [272559] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Crash with remote layer tree logging
https://bugs.webkit.org/show_bug.cgi?id=221580

Reviewed by Tim Horton.

Null-check animation.timingFunction when dumping remote layer tree animations.

  • WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:

(WebKit::operator<<):

4:22 PM Changeset in webkit [272558] by commit-queue@webkit.org
  • 11 edits in trunk/Source/WebKit

Use CompletionHandler instead of BoolCallback
https://bugs.webkit.org/show_bug.cgi?id=221575
<rdar://problem/74058604>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-02-08
Reviewed by Chris Dumez.

This makes the code more modern, and it makes our fuzzers better at reasoning what the boolean value is going to be used for.
It should also fix a rare crash involving BoolCallback by completely removing it.

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

(WebKit::WebPageProxy::handlePreventableTouchEvent):
(WebKit::WebPageProxy::handleUnpreventableTouchEvent):
(WebKit::WebPageProxy::boolCallback): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::touchEventWithoutCallback):
(WebKit::EventDispatcher::touchEvent):
(WebKit::EventDispatcher::dispatchTouchEvents):

  • WebProcess/WebPage/EventDispatcher.h:
  • WebProcess/WebPage/EventDispatcher.messages.in:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::touchEventSync):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::dispatchAsynchronousTouchEvents):
(WebKit::WebPage::cancelAsynchronousTouchEvents):

3:53 PM Changeset in webkit [272557] by don.olmstead@sony.com
  • 3 edits in trunk/Source/WebCore

Fix MSVC build with ENCRYPTED_MEDIA enabled
https://bugs.webkit.org/show_bug.cgi?id=177803
<rdar://problem/34920322>

Reviewed by Alex Christensen.

MSVC has a bug of a outer lambda's captured this can't be used as
a lambda capture initializer of an inner lambda.

  • Modules/encryptedmedia/MediaKeySession.cpp:

(WebCore::MediaKeySession::generateRequest):
(WebCore::MediaKeySession::load):
(WebCore::MediaKeySession::update):
(WebCore::MediaKeySession::close):
(WebCore::MediaKeySession::remove):

  • platform/encryptedmedia/clearkey/CDMClearKey.cpp:

(WebCore::CDMInstanceSessionClearKey::requestLicense):
(WebCore::CDMInstanceSessionClearKey::updateLicense):
(WebCore::CDMInstanceSessionClearKey::removeSessionData):

3:37 PM Changeset in webkit [272556] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Make getStartEndListChildren check renderers
https://bugs.webkit.org/show_bug.cgi?id=221388

Patch by Rob Buis <rbuis@igalia.com> on 2021-02-08
Reviewed by Alex Christensen.

Source/WebCore:

Require the list to have non-null renderers for start
and end.

Test: editing/execCommand/insert-nested-lists-crash.html

  • editing/ModifySelectionListLevel.cpp:

(WebCore::getStartEndListChildren):

LayoutTests:

Add test for this.

  • editing/execCommand/insert-nested-lists-crash-expected.txt: Added.
  • editing/execCommand/insert-nested-lists-crash.html: Added.
3:34 PM Changeset in webkit [272555] by Russell Epstein
  • 2 edits in branches/safari-612.1.3-branch/Source/WebKitLegacy/mac

Cherry-pick r272500. rdar://problem/74116538

Permission request API for MediaKeySystem access support
https://bugs.webkit.org/show_bug.cgi?id=221187

Unreviewed build fix for macCatalyst.

  • WebCoreSupport/WebMediaKeySystemClient.h: Add a check for ENABLE(ENCRYPTED_MEDIA).

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

3:21 PM Changeset in webkit [272554] by Alan Coon
  • 1 copy in tags/Safari-611.1.15

Tag Safari-611.1.15.

3:13 PM Changeset in webkit [272553] by Russell Epstein
  • 8 edits in branches/safari-612.1.3-branch/Source

Versioning.

WebKit-7612.1.3

3:10 PM Changeset in webkit [272552] by Russell Epstein
  • 1 copy in branches/safari-612.1.3-branch

New branch.

3:06 PM Changeset in webkit [272551] by Russell Epstein
  • 8 edits in trunk/Source

Versioning.

WebKit-7612.1.4

2:55 PM Changeset in webkit [272550] by beidson@apple.com
  • 19 edits in trunk/Source

Make the UserContentController for ServiceWorker pages be non-optional.
<rdar://problem/71434565> and https://bugs.webkit.org/show_bug.cgi?id=221503

Reviewed by Alex Christensen.
Source/WebCore:

  • loader/EmptyClients.cpp:

(WebCore::pageConfigurationWithEmptyClients):

  • page/Page.cpp:

(WebCore::Page::Page):

  • page/PageConfiguration.cpp:

(WebCore::PageConfiguration::PageConfiguration):

  • page/PageConfiguration.h:

Source/WebKit:

Normal Pages always have a UserContentProvider, even if they just create an empty default one.

Same should be true for ServiceWorkers.

  • Shared/ServiceWorkerInitializationData.cpp:

(WebKit::ServiceWorkerInitializationData::decode):

  • Shared/ServiceWorkerInitializationData.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::userContentControllerIdentifierForServiceWorkers):
(WebKit::WebProcessPool::createWebPage):

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

(WebKit::WebProcessProxy::enableServiceWorkers):

  • UIProcess/WebProcessProxy.h:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::m_userContentController):
(WebKit::m_userAgent): Deleted.

  • WebProcess/Storage/WebSWContextManagerConnection.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains):

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):

Source/WebKitLegacy/win:

  • WebView.cpp:

(WebView::initWithFrame):

2:23 PM Changeset in webkit [272549] by Said Abou-Hallawa
  • 6 edits in trunk

A Pattern with an SVG image is not rendered correctly
https://bugs.webkit.org/show_bug.cgi?id=221550

Reviewed by Simon Fraser.

Source/WebCore:

Implement SVGImage::nativeImage() and nativeImageForCurrentFrame() for
all platforms. This will make Pattern::createPlatformPattern() creates
CGPatternRef with a valid CGImageRef.

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::nativeImageForCurrentFrame):
(WebCore::SVGImage::nativeImage):

  • svg/graphics/SVGImage.h:

LayoutTests:

  • imported/blink/svg/canvas/canvas-draw-pattern-size-expected.html:

Change the expected result to not use the pattern in its drawing.

  • imported/blink/svg/canvas/canvas-draw-pattern-size.html:

Use a rectangle instead of a circle to avoid differences with the expected
result due to the edge smoothing.

2:04 PM Changeset in webkit [272548] by Jonathan Bedard
  • 126 edits
    1 move
    61 adds
    58 deletes in trunk/LayoutTests

[LayoutTests] Convert xmlhttprequest php to Python
https://bugs.webkit.org/show_bug.cgi?id=220995
<rdar://problem/73630008>

Reviewed by Alex Christensen.

  • http/tests/local/formdata/resources/send-form-data-common.js:

(sendFormData):

  • http/tests/local/formdata/send-form-data-constructed-from-form-expected.txt:
  • http/tests/local/formdata/send-form-data-constructed-from-form-using-open-panel-expected.txt:
  • http/tests/local/formdata/send-form-data-constructed-from-form-using-open-panel.html:
  • http/tests/local/formdata/send-form-data-constructed-from-form.html:
  • http/tests/local/formdata/send-form-data-with-empty-blob-filename.html:
  • http/tests/local/formdata/send-form-data-with-empty-file-filename-using-open-panel.html:
  • http/tests/local/formdata/send-form-data-with-empty-file-filename.html:
  • http/tests/media/user-gesture-preserved-across-xmlhttprequest.html:
  • http/tests/resources/init.py: Added.
  • http/tests/resources/portabilityLayer.py: Added.

(setState):
(getState):

  • http/tests/resources/reset-temp-file.py: Added.
  • http/tests/xmlhttprequest/XMLHttpRequestException.html:
  • http/tests/xmlhttprequest/abort-should-cancel-load-expected.txt:
  • http/tests/xmlhttprequest/abort-should-cancel-load.html:
  • http/tests/xmlhttprequest/access-control-allow-lists-starting-with-comma.html:
  • http/tests/xmlhttprequest/access-control-and-redirects-async-expected.txt:
  • http/tests/xmlhttprequest/access-control-and-redirects-async.html:
  • http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-invalidation-by-header.html:
  • http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-invalidation-by-method.html:
  • http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-timeout.html:
  • http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache.html:
  • http/tests/xmlhttprequest/access-control-preflight-async-header-denied-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-async-header-denied.html:
  • http/tests/xmlhttprequest/access-control-preflight-async-method-denied-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-async-method-denied.html:
  • http/tests/xmlhttprequest/access-control-preflight-async-not-supported-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-async-not-supported.html:
  • http/tests/xmlhttprequest/access-control-preflight-credential-async.html:
  • http/tests/xmlhttprequest/access-control-preflight-credential-sync.html:
  • http/tests/xmlhttprequest/access-control-preflight-headers-async.html:
  • http/tests/xmlhttprequest/access-control-preflight-headers-sync.html:
  • http/tests/xmlhttprequest/access-control-preflight-not-successful-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-not-successful.html:
  • http/tests/xmlhttprequest/access-control-preflight-request-header-lowercase.html:
  • http/tests/xmlhttprequest/access-control-preflight-sync-header-denied-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-sync-header-denied.html:
  • http/tests/xmlhttprequest/access-control-preflight-sync-method-denied-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-sync-method-denied.html:
  • http/tests/xmlhttprequest/access-control-preflight-sync-not-supported-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-sync-not-supported.html:
  • http/tests/xmlhttprequest/access-control-response-with-body-sync.html:
  • http/tests/xmlhttprequest/access-control-response-with-body.html:
  • http/tests/xmlhttprequest/access-control-response-with-expose-headers.html:
  • http/tests/xmlhttprequest/auth-reject-protection-space.html:
  • http/tests/xmlhttprequest/authorization-header.html:
  • http/tests/xmlhttprequest/basic-auth-credentials-escaping.html:
  • http/tests/xmlhttprequest/basic-auth-default.html:
  • http/tests/xmlhttprequest/basic-auth-load-URL-with-consecutive-slashes.html:
  • http/tests/xmlhttprequest/basic-auth-nopassword.html:
  • http/tests/xmlhttprequest/basic-auth-nouser.html:
  • http/tests/xmlhttprequest/basic-auth-responseURL-expected.txt:
  • http/tests/xmlhttprequest/basic-auth-responseURL.html:
  • http/tests/xmlhttprequest/basic-auth.html:
  • http/tests/xmlhttprequest/chunked-progress-event-expectedLength.html:
  • http/tests/xmlhttprequest/connection-error-sync.html:
  • http/tests/xmlhttprequest/cors-non-standard-safelisted-headers-should-trigger-preflight-expected.txt:
  • http/tests/xmlhttprequest/cors-non-standard-safelisted-headers-should-trigger-preflight.html:
  • http/tests/xmlhttprequest/cross-origin-authorization-with-embedder.html:
  • http/tests/xmlhttprequest/cross-origin-authorization.html:
  • http/tests/xmlhttprequest/cross-origin-cookie-storage.html:
  • http/tests/xmlhttprequest/cross-origin-no-authorization-expected.txt:
  • http/tests/xmlhttprequest/cross-origin-no-authorization.html:
  • http/tests/xmlhttprequest/cross-origin-no-credential-prompt-expected.txt:
  • http/tests/xmlhttprequest/cross-origin-no-credential-prompt.html:
  • http/tests/xmlhttprequest/cross-origin-preflight-get.html:
  • http/tests/xmlhttprequest/cross-origin-redirect-responseURL.html:
  • http/tests/xmlhttprequest/detaching-frame-2.html:
  • http/tests/xmlhttprequest/digest-auth.html:
  • http/tests/xmlhttprequest/failed-auth-expected.txt:
  • http/tests/xmlhttprequest/failed-auth.html:
  • http/tests/xmlhttprequest/gzip-content-type.html:
  • http/tests/xmlhttprequest/head-redirection.html:
  • http/tests/xmlhttprequest/logout.html:
  • http/tests/xmlhttprequest/navigation-should-abort.html:
  • http/tests/xmlhttprequest/null-auth.php: Removed.
  • http/tests/xmlhttprequest/null-auth.py: Added.
  • http/tests/xmlhttprequest/onabort-event.html:
  • http/tests/xmlhttprequest/onabort-progressevent-attributes.html:
  • http/tests/xmlhttprequest/onloadend-event-after-error.html:
  • http/tests/xmlhttprequest/onloadend-event-after-sync-requests.html:
  • http/tests/xmlhttprequest/origin-exact-matching-expected.txt:
  • http/tests/xmlhttprequest/overridemimetype-headers-received-state-force-shiftjis.html:
  • http/tests/xmlhttprequest/post-blob-content-type-async-expected.txt:
  • http/tests/xmlhttprequest/post-blob-content-type-sync-expected.txt:
  • http/tests/xmlhttprequest/post-blob-content-type-tests.js:
  • http/tests/xmlhttprequest/re-login-async.html:
  • http/tests/xmlhttprequest/re-login.html:
  • http/tests/xmlhttprequest/redirect-cors-origin-null.html:
  • http/tests/xmlhttprequest/redirect-credentials-responseURL-expected.txt:
  • http/tests/xmlhttprequest/redirect-credentials-responseURL.html:
  • http/tests/xmlhttprequest/redirect-cross-origin-tripmine-expected.txt:
  • http/tests/xmlhttprequest/redirect-cross-origin-tripmine.html:
  • http/tests/xmlhttprequest/redirections-and-user-headers.html:
  • http/tests/xmlhttprequest/remember-bad-password-expected.txt:
  • http/tests/xmlhttprequest/remember-bad-password.html:
  • http/tests/xmlhttprequest/resources/access-control-allow-lists.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-allow-lists.py: Added.
  • http/tests/xmlhttprequest/resources/access-control-allow-with-body.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-allow-with-body.py: Added.
  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-invalidation.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-invalidation.py: Added.

(fail):

  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-timeout.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-timeout.py: Added.

(fail):

  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache.py: Added.

(fail):

  • http/tests/xmlhttprequest/resources/access-control-preflight-denied-xsrf.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-preflight-denied-xsrf.py: Added.

(fail):

  • http/tests/xmlhttprequest/resources/access-control-preflight-redirect.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-preflight-redirect.py: Added.
  • http/tests/xmlhttprequest/resources/access-control-preflight-request-header-lowercase.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-preflight-request-header-lowercase.py: Added.
  • http/tests/xmlhttprequest/resources/access-control-response-with-expose-headers.php: Removed.
  • http/tests/xmlhttprequest/resources/access-control-response-with-expose-headers.py: Added.
  • http/tests/xmlhttprequest/resources/basic-auth-default/dir1/basic-auth.php: Removed.
  • http/tests/xmlhttprequest/resources/basic-auth-default/dir1/basic-auth.py: Added.
  • http/tests/xmlhttprequest/resources/basic-auth-default/dir2/basic-auth.php: Removed.
  • http/tests/xmlhttprequest/resources/basic-auth-default/dir2/basic-auth.py: Added.
  • http/tests/xmlhttprequest/resources/basic-auth-default/dir2/catch.php: Removed.
  • http/tests/xmlhttprequest/resources/basic-auth-default/dir2/catch.py: Added.
  • http/tests/xmlhttprequest/resources/basic-auth-nouserpass/basic-auth-nouserpass.php: Removed.
  • http/tests/xmlhttprequest/resources/basic-auth-nouserpass/basic-auth-nouserpass.py: Added.
  • http/tests/xmlhttprequest/resources/basic-auth/access-control-auth-basic.php: Removed.
  • http/tests/xmlhttprequest/resources/basic-auth/access-control-auth-basic.py: Added.
  • http/tests/xmlhttprequest/resources/basic-auth/basic-auth.php: Removed.
  • http/tests/xmlhttprequest/resources/basic-auth/basic-auth.py: Added.
  • http/tests/xmlhttprequest/resources/big-response.php: Removed.
  • http/tests/xmlhttprequest/resources/big-response.py: Added.
  • http/tests/xmlhttprequest/resources/chunked-transfer.php: Removed.
  • http/tests/xmlhttprequest/resources/chunked-transfer.py: Added.
  • http/tests/xmlhttprequest/resources/cors-preflight-safelisted-headers-responder.php: Removed.
  • http/tests/xmlhttprequest/resources/cors-preflight-safelisted-headers-responder.py: Added.
  • http/tests/xmlhttprequest/resources/cross-origin-authorization.php: Removed.
  • http/tests/xmlhttprequest/resources/cross-origin-authorization.py: Added.
  • http/tests/xmlhttprequest/resources/cross-origin-check-cookies.php: Removed.
  • http/tests/xmlhttprequest/resources/cross-origin-check-cookies.py: Added.
  • http/tests/xmlhttprequest/resources/cross-origin-no-authorization.php: Removed.
  • http/tests/xmlhttprequest/resources/cross-origin-no-authorization.py: Added.
  • http/tests/xmlhttprequest/resources/cross-origin-preflight-get.php: Removed.
  • http/tests/xmlhttprequest/resources/cross-origin-preflight-get.py: Added.
  • http/tests/xmlhttprequest/resources/cross-origin-preset-authorization-frame.html:
  • http/tests/xmlhttprequest/resources/cross-origin-set-cookies.php: Removed.
  • http/tests/xmlhttprequest/resources/cross-origin-set-cookies.py: Added.
  • http/tests/xmlhttprequest/resources/custom-headers.php: Removed.
  • http/tests/xmlhttprequest/resources/custom-headers.py: Added.
  • http/tests/xmlhttprequest/resources/download-header-with-delay.php: Removed.
  • http/tests/xmlhttprequest/resources/download-header-with-delay.py: Added.
  • http/tests/xmlhttprequest/resources/download-with-delay.php: Removed.
  • http/tests/xmlhttprequest/resources/download-with-delay.py: Added.
  • http/tests/xmlhttprequest/resources/echo-auth.php: Removed.
  • http/tests/xmlhttprequest/resources/echo-auth.py: Added.
  • http/tests/xmlhttprequest/resources/echo-host.php: Removed.
  • http/tests/xmlhttprequest/resources/echo-host.py: Added.
  • http/tests/xmlhttprequest/resources/echo-request-method.php: Removed.
  • http/tests/xmlhttprequest/resources/echo-request-method.py: Added.
  • http/tests/xmlhttprequest/resources/echo-user-agent.php: Removed.
  • http/tests/xmlhttprequest/resources/echo-user-agent.py: Added.
  • http/tests/xmlhttprequest/resources/empty-content-type.php: Removed.
  • http/tests/xmlhttprequest/resources/empty-content-type.py: Added.
  • http/tests/xmlhttprequest/resources/endlessxml.php: Removed.
  • http/tests/xmlhttprequest/resources/endlessxml.py: Added.
  • http/tests/xmlhttprequest/resources/frame-load-to-cancel.html:
  • http/tests/xmlhttprequest/resources/get-content.php: Removed.
  • http/tests/xmlhttprequest/resources/get-content.py: Added.
  • http/tests/xmlhttprequest/resources/get_method.php: Removed.
  • http/tests/xmlhttprequest/resources/get_method.py: Added.
  • http/tests/xmlhttprequest/resources/gzip-lorem.php: Removed.
  • http/tests/xmlhttprequest/resources/gzip-lorem.py: Added.
  • http/tests/xmlhttprequest/resources/headers.php: Removed.
  • http/tests/xmlhttprequest/resources/headers.py: Added.
  • http/tests/xmlhttprequest/resources/infinite-loop.php: Removed.
  • http/tests/xmlhttprequest/resources/infinite-loop.py: Added.
  • http/tests/xmlhttprequest/resources/logout/resource.php: Removed.
  • http/tests/xmlhttprequest/resources/logout/resource.py: Added.
  • http/tests/xmlhttprequest/resources/multipart-post-echo-filenames.php: Removed.
  • http/tests/xmlhttprequest/resources/multipart-post-echo-filenames.py: Added.
  • http/tests/xmlhttprequest/resources/multipart-post-echo.php: Removed.
  • http/tests/xmlhttprequest/resources/multipart-post-echo.py: Added.
  • http/tests/xmlhttprequest/resources/no-authenticate-header-401.php: Removed.
  • http/tests/xmlhttprequest/resources/no-authenticate-header-401.py: Added.
  • http/tests/xmlhttprequest/resources/no-custom-header.php: Removed.
  • http/tests/xmlhttprequest/resources/no-custom-header.py: Added.
  • http/tests/xmlhttprequest/resources/not-ascii-status.php: Removed.
  • http/tests/xmlhttprequest/resources/not-ascii-status.py: Added.
  • http/tests/xmlhttprequest/resources/origin-exact-matching-iframe.html:
  • http/tests/xmlhttprequest/resources/print-headers.php: Removed.
  • http/tests/xmlhttprequest/resources/print-headers.py: Added.
  • http/tests/xmlhttprequest/resources/print-referer.php: Removed.
  • http/tests/xmlhttprequest/resources/print-referer.py: Added.
  • http/tests/xmlhttprequest/resources/re-login/resource.php: Removed.
  • http/tests/xmlhttprequest/resources/re-login/resource.py: Added.
  • http/tests/xmlhttprequest/resources/redirect-cors-origin-null-pass.php: Removed.
  • http/tests/xmlhttprequest/resources/redirect-cors-origin-null-pass.py: Added.
  • http/tests/xmlhttprequest/resources/redirect-cors-origin-null.php: Removed.
  • http/tests/xmlhttprequest/resources/redirect-cors-origin-null.py: Added.
  • http/tests/xmlhttprequest/resources/redirect-cors.php: Removed.
  • http/tests/xmlhttprequest/resources/redirect-cors.py: Added.
  • http/tests/xmlhttprequest/resources/redirect-cross-origin-tripmine.php: Removed.
  • http/tests/xmlhttprequest/resources/redirect-cross-origin-tripmine.py: Added.
  • http/tests/xmlhttprequest/resources/redirect_methods.php: Removed.
  • http/tests/xmlhttprequest/resources/redirect_methods.py: Added.
  • http/tests/xmlhttprequest/resources/remember-bad-password/count-failures.php: Removed.
  • http/tests/xmlhttprequest/resources/remember-bad-password/count-failures.py: Added.
  • http/tests/xmlhttprequest/resources/status-404-without-body.php: Removed.
  • http/tests/xmlhttprequest/resources/status-404-without-body.py: Added.
  • http/tests/xmlhttprequest/resources/url-with-credentials/authenticate.php: Removed.
  • http/tests/xmlhttprequest/resources/url-with-credentials/authenticate.py: Added.
  • http/tests/xmlhttprequest/resources/url-with-credentials/authorize.php: Removed.
  • http/tests/xmlhttprequest/resources/url-with-credentials/authorize.py: Added.
  • http/tests/xmlhttprequest/resources/xmlhttprequest-in-unload.html:
  • http/tests/xmlhttprequest/resources/xmlhttprequest-mimetype-mixed-case.php: Removed.
  • http/tests/xmlhttprequest/resources/xmlhttprequest-mimetype-mixed-case.py: Added.
  • http/tests/xmlhttprequest/response-access-on-error.html:
  • http/tests/xmlhttprequest/response-special-characters.html:
  • http/tests/xmlhttprequest/simple-sync.html:
  • http/tests/xmlhttprequest/unauthorized-without-authenticate-header.html:
  • http/tests/xmlhttprequest/url-with-credentials.html:
  • http/tests/xmlhttprequest/workers/resources/endless-response.php: Removed.
  • http/tests/xmlhttprequest/workers/resources/endless-response.py: Added.
  • http/tests/xmlhttprequest/workers/resources/endless-sync-xhr.js:
  • http/tests/xmlhttprequest/xhr-user-agent.html:
  • http/tests/xmlhttprequest/xmlhttprequest-50ms-download-dispatch.html:
  • http/tests/xmlhttprequest/xmlhttprequest-abort-readyState-shouldDispatchEvent.html:
  • http/tests/xmlhttprequest/xmlhttprequest-check-get-readystate-for-404-without-body.html:
  • http/tests/xmlhttprequest/xmlhttprequest-contenttype-empty.html:
  • http/tests/xmlhttprequest/xmlhttprequest-mimetype-mixed-case.html:
  • http/tests/xmlhttprequest/xmlhttprequest-onProgress-open-should-zero-length.html:
  • http/tests/xmlhttprequest/xmlhttprequest-open-method-allowed.html:
  • http/tests/xmlhttprequest/xmlhttprequest-open-method-case-insensitive.html:
  • http/tests/xmlhttprequest/xmlhttprequest-responseURL.html:
  • http/tests/xmlhttprequest/xmlhttprequest-sync-no-timers.html:
  • http/tests/xmlhttprequest/xmlhttprequest-test-custom-headers.html:
  • http/tests/xmlhttprequest/xmlhttprequest-test-send-flag.html:
  • imported/blink/http/tests/security/mixedContent/resources/frame-with-insecure-sync-xhr-post.html:
  • platform/mac-wk1/http/tests/xmlhttprequest/access-control-preflight-not-successful-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/cross-origin-no-authorization-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/post-blob-content-type-async-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/post-blob-content-type-sync-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/redirect-cross-origin-tripmine-expected.txt:
  • platform/win/http/tests/xmlhttprequest/access-control-preflight-not-successful-expected.txt:
  • platform/win/http/tests/xmlhttprequest/cross-origin-no-authorization-expected.txt:
  • platform/win/http/tests/xmlhttprequest/redirect-cross-origin-tripmine-expected.txt:
1:46 PM Changeset in webkit [272547] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[Mac] Connect MediaSession with MediaRemote and NowPlaying
https://bugs.webkit.org/show_bug.cgi?id=221431
<rdar://problem/74000363>

Unreviewed, fix the NowPlayingInfo encoder after r272445.

  • platform/audio/NowPlayingInfo.h:

(WebCore::NowPlayingInfo::encode const): Update the encoder for new fields added.

1:40 PM Changeset in webkit [272546] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Prevent WebProcess to re-enter on sync IPC to the GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=221566
<rdar://problem/74108466>

Reviewed by Ryosuke Niwa.

Prevent WebProcess to re-enter on sync IPC to the GPUProcess, similarly to what we already
do for sync IPC to other processes (Network, UI).

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::GPUConnectionToWebProcess):

1:26 PM Changeset in webkit [272545] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

Unreviewed. Tentative build fix for WPE/GTK after r272504.

Somehow r272504 went green in gtk/wpe EWS but failed in post commit
bots.

Remove the WebCore prefix to follow the include scheme used in other
mediastream module files.

  • Modules/mediastream/STUNMessageParsing.cpp:
1:25 PM Changeset in webkit [272544] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

[Cocoa] Encrypted media segments should generate a parser error if no encrypted media handler is present.
https://bugs.webkit.org/show_bug.cgi?id=221496

Reviewed by Eric Carlson.

The WebM format reader does not support encrypted media parsing, so the parser must generate an error rather
than continuing to parse encrypted media data.

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::OnElementEnd):
(WebCore::SourceBufferParserWebM::OnTrackEntry):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:
1:24 PM Changeset in webkit [272543] by Alan Coon
  • 3 edits
    1 add in branches/safari-611-branch

Cherry-pick r271570. rdar://problem/74105714

[JSC] GenericArguments<Type>::defineOwnProperty's assumption about error is not correct
https://bugs.webkit.org/show_bug.cgi?id=220693
<rdar://problem/72929171>

Reviewed by Mark Lam.

JSTests:

  • stress/freeze-invokes-out-of-memory.js: Added. (shouldThrow):

Source/JavaScriptCore:

Any function taking JSGlobalObject* can cause out-of-memory error potentially. And we have a way to invoke it.
But GenericArguments<Type>::defineOwnProperty didn't assume OutOfMemory error. This patch fixes it.

  • runtime/GenericArgumentsInlines.h: (JSC::GenericArguments<Type>::defineOwnProperty):

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

1:24 PM Changeset in webkit [272542] by Alan Coon
  • 4 edits in branches/safari-611-branch

Cherry-pick r270664. rdar://problem/74105714

Align DefineOwnProperty? method of mapped arguments object with the spec
https://bugs.webkit.org/show_bug.cgi?id=219750

Reviewed by Yusuke Suzuki.

JSTests:

  • test262/expectations.yaml: Mark 5 test cases as passing.

Source/JavaScriptCore:

This patch reimplements DefineOwnProperty? method to resemble the spec [1] as
closely as possible, aligning JSC with V8 and SpiderMonkey on remaining test262 cases.

Unlike the spec [2], JSC doesn't materialize mapped indices with initial values,
so putDirectIndex() is performed on the first call to handle incomplete descriptors.

Even though there is a possibility to avoid JSObject storage puts for a handful of
super rare descriptors, it's not worth the increased complexity.

[1]: https://tc39.es/ecma262/#sec-arguments-exotic-objects-defineownproperty-p-desc
[2]: https://tc39.es/ecma262/#sec-createmappedargumentsobject (step 15.b)

  • runtime/GenericArgumentsInlines.h: (JSC::GenericArguments<Type>::defineOwnProperty):

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

1:24 PM Changeset in webkit [272541] by Alan Coon
  • 46 edits in branches/safari-611-branch

Cherry-pick r272345. rdar://problem/74032500

[WebAuthn] Allow one user gesture free prompt for each navigation
https://bugs.webkit.org/show_bug.cgi?id=220897
<rdar://problem/73541303>

Reviewed by Brent Fulgham.

Source/WebCore:

  • Modules/webauthn/AuthenticatorCoordinator.cpp: (WebCore::AuthenticatorCoordinator::resetUserGestureRequirement):
  • Modules/webauthn/AuthenticatorCoordinator.h:
  • Modules/webauthn/AuthenticatorCoordinatorClient.h:
  • page/Quirks.cpp:
  • page/Quirks.cpp.h:
  • replay/UserInputBridge.cpp: (WebCore::UserInputBridge::loadRequest): (WebCore::UserInputBridge::reloadFrame): Adds the ability to reset the user gesture requirement flag for user initiated reloads and quirks.

Source/WebKit:

This is a quirk that only allows certain websites.

Covered by existing tests.

  • UIProcess/WebAuthentication/AuthenticatorManager.cpp: (WebKit::AuthenticatorManager::filterTransports const): (WebKit::AuthenticatorManager::runPanel): (WebKit::AuthenticatorManager::runPresenter): Cancel the whole WebAuthn operation if no user gesture is indicated.
  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp: (WebKit::WebAuthenticatorCoordinator::makeCredential): (WebKit::WebAuthenticatorCoordinator::getAssertion):
  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.h: Set a boolean to indicate a free coupon for each navigation.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm: (TestWebKitAPI::TEST):

LayoutTests:

  • http/wpt/webauthn/ctap-hid-failure.https-expected.txt:
  • http/wpt/webauthn/ctap-hid-success.https-expected.txt:
  • http/wpt/webauthn/ctap-nfc-failure.https-expected.txt:
  • http/wpt/webauthn/idl.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-hid-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-local-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-nfc.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-u2f-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-u2f.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-nfc.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-u2f.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-hid-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-local-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-nfc.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-u2f-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-u2f.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-success-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-success-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-success-nfc.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-success-u2f.https-expected.txt:

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

1:24 PM Changeset in webkit [272540] by Alan Coon
  • 21 edits in branches/safari-611-branch

Cherry-pick r272184. rdar://problem/74032500

[WebAuthn] Optimize _WKWebAuthenticationPanelDelegate for native API
https://bugs.webkit.org/show_bug.cgi?id=221125
<rdar://problem/71509141>

Reviewed by Brent Fulgham.

Source/WebKit:

This patch mainly does the following few things:

  1. It connects the new SPI with the existing mock testing infrastructure such that we can mock test it.
  2. It adds a new mode in AuthenticatorManager to connect it to the new _WKWebAuthenticationPanelDelegate object.
  3. It adss a new SPI to _WKWebAuthenticationPanelDelegate: -[panel:requestLAContextForUserVerificationWithCompletionHandler:], and adds a new method within _WKWebAuthenticationAssertionResponse to accept an LAContext from the caller to unlock the keychain.
  4. It enables -[_WKWebAuthenticationPanel cancel] to use the new cancel method.

Covered by API tests.

  • UIProcess/API/APIWebAuthenticationAssertionResponse.h: Accepts a LAContext object.
  • UIProcess/API/APIWebAuthenticationPanel.cpp: (API::WebAuthenticationPanel::WebAuthenticationPanel): (API::WebAuthenticationPanel::handleRequest): (API::WebAuthenticationPanel::cancel const): (API::WebAuthenticationPanel::setMockConfiguration):
  • UIProcess/API/APIWebAuthenticationPanel.h:
  • UIProcess/API/APIWebAuthenticationPanelClient.h: (API::WebAuthenticationPanelClient::requestLAContextForUserVerification const): Adds new SPI and mocking.
  • UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponse.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponse.mm: (-[_WKWebAuthenticationAssertionResponse setLAContext:]): Accepts a LAContext object.
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm: (-[_WKWebAuthenticationPanel setMockConfiguration:]):
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanelForTesting.h: Adds new SPI and mocking.
  • UIProcess/WebAuthentication/AuthenticatorManager.cpp: (WebKit::AuthenticatorManager::handleRequest): (WebKit::AuthenticatorManager::enableModernWebAuthentication): (WebKit::AuthenticatorManager::enableNativeSupport): (WebKit::AuthenticatorManager::authenticatorAdded): (WebKit::AuthenticatorManager::requestLAContextForUserVerification): (WebKit::AuthenticatorManager::runPresenter): (WebKit::AuthenticatorManager::dispatchPanelClientCall const):
  • UIProcess/WebAuthentication/AuthenticatorManager.h: Adds a new mode to power the native API.
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.h:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm: (WebKit::WebAuthenticationPanelClient::WebAuthenticationPanelClient): (WebKit::WebAuthenticationPanelClient::requestLAContextForUserVerification const): Accepts a LAContext object.
  • UIProcess/WebAuthentication/Mock/MockLocalConnection.h:
  • UIProcess/WebAuthentication/Mock/MockLocalConnection.mm: (WebKit::MockLocalConnection::verifyUser): Adds new mocking functions.
  • UIProcess/WebAuthentication/WebAuthenticationRequestData.h: Adds the new weak panel.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm: (-[TestWebAuthenticationPanelDelegate panel:selectAssertionResponse:source:completionHandler:]): (-[TestWebAuthenticationPanelDelegate panel:requestLAContextForUserVerificationWithCompletionHandler:]): (TestWebKitAPI::WebCore::reset): (TestWebKitAPI::TEST):

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

1:24 PM Changeset in webkit [272539] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/JavaScriptCore

Cherry-pick r271767. rdar://problem/74105427

Obj-C API should do correct type checks when using a 32-bit address space
https://bugs.webkit.org/show_bug.cgi?id=220880
<rdar://72370334>

Reviewed by Tadeu Zagallo.

  • API/JSValue.mm: (-[JSValue isNull]): (-[JSValue isBoolean]): (-[JSValue isNumber]): (-[JSValue isString]):

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

1:24 PM Changeset in webkit [272538] by Alan Coon
  • 6 edits in branches/safari-611-branch

Cherry-pick r270665. rdar://problem/74105427

Removing unnecessary locking from JSValue API functions
https://bugs.webkit.org/show_bug.cgi?id=219723

Reviewed by Filip Pizlo.

PerformanceTests:

Print an error message when benchmarks fail to run and add option to change
the configuration used to build the benchmarks.

  • APIBench/api-bench:

Source/JavaScriptCore:

Remove the unnecessary locking from the JSValueIs* and JSValueMake* API functions
that only work on primitives. Also remove the unnecessary method dispatching and
call from the -[JSValue is*] methods.

This improves the APIBench score by another ~8% since these are such common operations.
Here are the results: (Baseline includes https://bugs.webkit.org/show_bug.cgi?id=219663)

CURRENT_API: Baseline Change
----------------------------------------
RichardsMostlyC: 74ms 60ms
RichardsMostlyObjC: 304ms 300ms
RichardsMostlySwift: 305ms 293ms
RichardsSomeC: 97ms 77ms
RichardsSomeObjC: 158ms 159ms
RichardsSomeSwift: 202ms 198ms

UPCOMING_API: Baseline Change
----------------------------------------
RichardsMostlyC: 23ms 19ms
RichardsMostlyObjC: 282ms 282ms
RichardsMostlySwift: 280ms 282ms
RichardsSomeC: 95ms 76ms
RichardsSomeObjC: 157ms 156ms
RichardsSomeSwift: 202ms 197ms
----------------------------------------
Score: 33.6404 36.4006

  • API/APICast.h: (toRef):
  • API/JSValue.mm: (-[JSValue isUndefined]): (-[JSValue isNull]): (-[JSValue isBoolean]): (-[JSValue isNumber]): (-[JSValue isString]): (-[JSValue isObject]): (-[JSValue isSymbol]):
  • API/JSValueRef.cpp: (JSValueGetType): (JSValueIsUndefined): (JSValueIsNull): (JSValueIsBoolean): (JSValueIsNumber): (JSValueIsString): (JSValueIsObject): (JSValueIsSymbol): (JSValueMakeUndefined): (JSValueMakeNull): (JSValueMakeBoolean): (JSValueMakeNumber):

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

1:04 PM Changeset in webkit [272537] by Alan Coon
  • 6 edits
    2 adds in branches/safari-611-branch

Cherry-pick r272422. rdar://problem/74033021

Make sure click attribution is processed in case of redirected kept alive loads
https://bugs.webkit.org/show_bug.cgi?id=221453
<rdar://problem/70896640>

Reviewed by John Wilander.

Source/WebCore:

Test: http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive.html

  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::addSubresourceLoader): Update assertion to cope with keep alive fetches which are similar to beacon/ping loads.

Source/WebKit:

  • NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest): Move the click attribution processing before kept alive check.

LayoutTests:

  • http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive-expected.txt: Added.
  • http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive.html: Added.
  • http/tests/privateClickMeasurement/resources/redirectToConversion.php:

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

1:04 PM Changeset in webkit [272536] by Alan Coon
  • 9 edits in branches/safari-611-branch

Cherry-pick r272376. rdar://problem/74032694

REGRESSION(r267763) Network process launches earlier than before
https://bugs.webkit.org/show_bug.cgi?id=221384
<rdar://problem/73507706>

Patch by Alex Christensen <achristensen@apple.com> on 2021-02-04
Reviewed by Chris Dumez.

Source/WebKit:

Before r267763 we could have an app launch, allocate a WKWebView, and set _resourceLoadStatisticsEnabled
all without having a network process launch.

When setting _resourceLoadStatisticsEnabled, we don't need to launch a network process if we haven't already
because when we do, WebsiteDataStore::parameters will send the correct value. I added a test that verifies this doesn't
launch the network process if it hasn't already been launched.

We also don't need to update the process assertion or the process suspension state if there is no network process.

sendNetworkProcessXPCEndpointToWebProcess is also called when opening Safari on iOS and would be the next thing to
unnecessarily launch the network process during app initialization. I manually verified that if we add an early return
if there is no network process yet, we do send the XPC endpoint to the web process when the network process does launch
through the call site in sendNetworkProcessXPCEndpointToAllWebProcesses.

I verified on my phone that this is the minimal change needed for Safari on iOS to not launch the network process before
application:didFinishLaunchingWithOptions: is called as it did before r267763.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::updateProcessSuppressionState):
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::updateProcessAssertions):
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: (WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToWebProcess):
  • UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
  • UIProcess/WebsiteData/WebsiteDataStore.h: (WebKit::WebsiteDataStore::networkProcessIfExists):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm: (TEST):

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

1:03 PM Changeset in webkit [272535] by Alan Coon
  • 15 edits
    2 adds in branches/safari-611-branch

Cherry-pick r272368. rdar://problem/74032667

[macOS] Selecting a date on datetime-local inputs unexpectedly adds second and millisecond fields
https://bugs.webkit.org/show_bug.cgi?id=221350
<rdar://problem/73943517>

Reviewed by Devin Rousso.

Source/WebCore:

Currently, when setting the value of a datetime-local input using the
picker, the length of the current value of the input is used to determine
whether or not to return a value with second/millisecond precision.

This is approach is incorrect, since the value could be empty, while the
step attribute can specify second/millisecond precision. To fix, ensure
the DateTimeChooserParameters knows whether the input has second and
millisecond fields. That information can then be used by the UIProcess
to return a correctly formatted value to the WebProcess.

Test: fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-choose-value-from-picker.html

  • html/BaseDateAndTimeInputType.cpp: (WebCore::BaseDateAndTimeInputType::handleDOMActivateEvent): (WebCore::BaseDateAndTimeInputType::didChangeValueFromControl): (WebCore::BaseDateAndTimeInputType::setupDateTimeChooserParameters):

Moved this method from HTMLInputElement to the input type, since it is
specific to date/time input types, and to leverage the existing
shouldHaveSecondField and shouldHaveMillisecondField methods when
building the DateTimeChooserParameters.

  • html/BaseDateAndTimeInputType.h:
  • html/HTMLInputElement.cpp:
  • html/HTMLInputElement.h:
  • platform/DateTimeChooserParameters.h:

Added hasSecondField and hasMillisecondField members, so that the UIProcess
knows whether or not to return a string that contains seconds/milliseconds.

(WebCore::DateTimeChooserParameters::encode const):
(WebCore::DateTimeChooserParameters::decode):

Source/WebKit:

  • UIProcess/mac/WebDateTimePickerMac.mm: (-[WKDateTimePicker updatePicker:]): (-[WKDateTimePicker dateFormatStringForType:]):

Do not use the length of the value to determine whether or seconds and
milliseconds should be present, since the value can be empty.

Instead, use the new information in DateTimeChooserParameters, matching
the visual appearance of the input.

Tools:

Added a method to UIScriptController to simulate selecting a date using
the presented date picker.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.h: (WTR::UIScriptController::chooseDateTimePickerValue):
  • WebKitTestRunner/mac/UIScriptControllerMac.h:
  • WebKitTestRunner/mac/UIScriptControllerMac.mm: (WTR::UIScriptControllerMac::chooseDateTimePickerValue):

LayoutTests:

Added a test to to verify that the presence of seconds and milliseconds
in the value of a datetime-local input after selecting a date using the
picker matches the configuration.

  • fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-choose-value-from-picker-expected.txt: Added.
  • fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-choose-value-from-picker.html: Added.
  • resources/ui-helper.js: (window.UIHelper.chooseDateTimePickerValue):

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

1:03 PM Changeset in webkit [272534] by Alan Coon
  • 7 edits in branches/safari-611-branch/Source

Cherry-pick r272353. rdar://problem/74105476

[Cocoa] WebM audio goes out-of-sync or stops playing after a seek
https://bugs.webkit.org/show_bug.cgi?id=221354
<rdar://73471690>

Reviewed by Eric Carlson.

Source/WebCore:

Add a new flag to MediaSample indicating whether the sample has any information about whether
it is an sync-sample or not, and expose that through a new method hasSyncInfo().

Drive-by Fix: Force all video samples to contain a sample attachments dictionary, whether or
not the sample is sync.

Drive-by Fix #2: SampleMap does an equality comparison for flags() == MediaSample::IsSync.
This breaks as soon as any sample has both IsSync and any other flag. Replace with a specific
call to isSync() instead.

  • platform/MediaSample.h:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm: (WebCore::doesCMSampleBufferHaveSyncInfo): (WebCore::MediaSampleAVFObjC::flags const):
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp: (WebCore::SourceBufferParserWebM::VideoTrackData::createSampleBuffer):

Source/WebKit:

The MTPluginFormatReader will attempt to determine whether an audio sample needs priming frames
by querying for, among other things, its "syncInfo". Previously, we had just presumed all samples
without a sample attachment dictionary were sync samples, and reported them as such from
MediaSampleCursor, but this causes the format reader plugin to walk backwards all the way to the
beginning of the audio track looking for priming samples. Instead, since the sample in question
has no sync info (it was synthesized by MediaSample), return kCMBaseObjectError_ValueNotAvailable
in this case, which causes the plugin format reader to assume all samples are both sync and do
not require explicit priming frames.

  • Shared/mac/MediaFormatReader/MediaSampleCursor.cpp: (WebKit::MediaSampleCursor::getSampleTiming const): (WebKit::MediaSampleCursor::getSyncInfo const):

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

1:03 PM Changeset in webkit [272533] by Alan Coon
  • 3 edits in branches/safari-611-branch/Source/JavaScriptCore

Cherry-pick r272349. rdar://problem/74104450

[JSC] Insert PhantomLocal just before SetLocal for |this| to ensure liveness
https://bugs.webkit.org/show_bug.cgi?id=221353
<rdar://problem/70373862>

Reviewed by Saam Barati.

Let's consider the following case before SSA conversion.

BB#0:

SetArgumentDefinitely(this)
...

@a: SomethingFun()

MoveHint(@a, this)
SetLocal(@a, this)
Jump #1

BB#1:

...
ExitOK (this point)
...

@b: SomethingFun()

MoveHint(@b, this)
SetLocal(@b, this)
...

BB#2: (Catch entry point)

...

@c: SetArgumentDefinitely(this)

...
Jump #1

We have two entry points. And BB#0 sets @a to |this| while BB#2 does not update |this|, so it is using @c.
We have several patterns we can store |this|: arrow functions' |this| loading, derived constructors' |this| update. So we can see
SetLocal(@x, this) at arbitrary code points in CodeBlocks having them.

The problem is that DFG strongly assumed that |this| is initialized in the root basic block only once. So usually, we do not insert Flush/PhantomLocal for |this|.
But this is problematic when we can store |this| at arbitrary basic blocks since we do not properly insert Flush/PhantomLocal(this) in BB#1's just before Store.

Not inserting that in the above case makes |this| dead in BB#1's head liveness. Then we do not properly insert Phi(BB#0, BB#2) for |this|.
This is OK for non |this| locals since literally that local is not used at all in BB#1. But |this| is special since it is always live in bytecode.
So, OSR availability will be broken in the above graph: at ExitOK place, |this| must be live in bytecode. But |this| is pointing ConflictingFlush since
BB#0 says @a and BB#2 says @c while we do not have Phi.

The problem is that we do not keep liveness of |this| properly in BB#1. When setting a new |this|, we insert PhantomLocal to keep liveness so that appropriate Phi
will be inserted when two predecessors have different DFG nodes for |this|, and this graph can appear in arrow functions, derived constructors, and code with catch.

  • dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::setArgument):
  • dfg/DFGVariableAccessDataDump.cpp: (JSC::DFG::VariableAccessDataDump::dump const):

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

1:03 PM Changeset in webkit [272532] by Alan Coon
  • 9 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r272346. rdar://problem/74105218

PCM: earliestTimeToSend should be treated as an independent time value, not relative to timeOfAdClick
https://bugs.webkit.org/show_bug.cgi?id=221303
<rdar://problem/73902668>

Reviewed by John Wilander.

r270136 assumed that PCM's earliestTimeToSend attribute was the
difference between timeOfAdClick and when the attribution should be
sent. As a result, it began each new browser session by adjusting
this value based on the amount of time the session was closed.
In reality, earliestTimeToSend is a raw secondsSinceEpoch() value, so we don't
need any adjustment after a new session.

No new tests, this is covered by
http/tests/privateClickMeasurement/expired-attribution-report-gets-sent-on-session-start.html
now that the corresponding test SPI has been updated.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::createTableQueries): (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore): (WebKit::ResourceLoadStatisticsDatabaseStore::createSchema): (WebKit::ResourceLoadStatisticsDatabaseStore::destroyStatements): (WebKit::ResourceLoadStatisticsDatabaseStore::markAttributedPrivateClickMeasurementsAsExpiredForTesting): Update the testing SPI to insert an expired time of now minus one hour as the earliestTimeToSend.

(WebKit::ResourceLoadStatisticsDatabaseStore::updateTimerLastFired): Deleted.
(WebKit::ResourceLoadStatisticsDatabaseStore::timerLastFired): Deleted.
(WebKit::ResourceLoadStatisticsDatabaseStore::updatePrivateClickMeasurementAttributionTimes): Deleted.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::updateTimerLastFired): Deleted.
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • NetworkProcess/PrivateClickMeasurementManager.cpp: (WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests): (WebKit::PrivateClickMeasurementManager::updateTimerLastFired): Deleted.
  • NetworkProcess/PrivateClickMeasurementManager.h:

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

1:03 PM Changeset in webkit [272531] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r272335. rdar://problem/74032694

REGRESSION (r270392): Launch time regression under IOSurface::maximumSize()
https://bugs.webkit.org/show_bug.cgi?id=221346
<rdar://problem/73507706>

Reviewed by Sam Weinig.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeWebProcess): Scope r270392 to only the case where it is needed, when DOM rendering in the GPU process is enabled and the Web Content process does not have access to IOSurface, because it causes a small launch time regression.

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

1:03 PM Changeset in webkit [272530] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/JavaScriptCore

Cherry-pick r272330. rdar://problem/74032526

[AppleWin 32bit][LLInt] LLIntData.h(104) : warning C4172: returning address of local variable or temporary: id
https://bugs.webkit.org/show_bug.cgi?id=220714

Reviewed by Mark Lam.

This patch fixes LLInt build when ENABLE(COMPUTED_GOTO_OPCODES) is false.

  • llint/LLIntData.h: (JSC::LLInt::getOpcode): (JSC::LLInt::getOpcodeWide16): (JSC::LLInt::getOpcodeWide32): (JSC::LLInt::getOpcodeAddress): (JSC::LLInt::getOpcodeWide16Address): (JSC::LLInt::getOpcodeWide32Address): (JSC::LLInt::getCodePtr): (JSC::LLInt::getWide16CodePtr): (JSC::LLInt::getWide32CodePtr):

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

1:03 PM Changeset in webkit [272529] by Alan Coon
  • 5 edits in branches/safari-611-branch

Cherry-pick r272326. rdar://problem/74105521

[iOS] delay +[BKSMousePointerService sharedInstance] so that it doesn't impact launch perf
https://bugs.webkit.org/show_bug.cgi?id=221298

Reviewed by Geoffrey Garen.

Source/WebKit:

  • UIProcess/ios/WKMouseDeviceObserver.h:
  • UIProcess/ios/WKMouseDeviceObserver.mm: (-[WKMouseDeviceObserver init]): Added. (-[WKMouseDeviceObserver startWithCompletionHandler:]): Added. (-[WKMouseDeviceObserver start]): (-[WKMouseDeviceObserver stop]): (-[WKMouseDeviceObserver stopWithCompletionHandler:]): Added.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/iOSMouseSupport.mm: (iOSMouseSupport.MouseInitiallyDisconnected): (iOSMouseSupport.MouseInitiallyConnected): (iOSMouseSupport.MouseLaterDisconnected): (iOSMouseSupport.MouseLaterConnected):

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

1:03 PM Changeset in webkit [272528] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r272303. rdar://problem/74105623

Animation of "rotate" or "scale" property does not correctly account for static "translate" property
https://bugs.webkit.org/show_bug.cgi?id=219894
<rdar://problem/72342798>

Unreviewed build fix for Mojave.

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

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

1:03 PM Changeset in webkit [272527] by Alan Coon
  • 4 edits in branches/safari-611-branch/Source

Cherry-pick r272234. rdar://problem/74105068

[macOS] Force loading the HEIF reader symbols before transcoding any HEIF image
https://bugs.webkit.org/show_bug.cgi?id=221191
<rdar://problem/70942158>

Reviewed by Tim Horton.

Source/WebCore:

Transcoding the HEIF images requires loading the HEIF reader symbols which
is not happening in macOS Catalina. A workaround for this bug in WebKit is
to call CGImageSourceGetCount() for the CGImageSource of the HEIF image.

  • platform/graphics/cg/ImageUtilitiesCG.cpp: (WebCore::transcodeImage):

Source/WTF:

Add a HAVE macro for the fix of <rdar://problem/59589723>.

  • wtf/PlatformHave.h:

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

1:03 PM Changeset in webkit [272526] by Alan Coon
  • 1 edit
    3 adds in branches/safari-611-branch/Source/WebInspectorUI

Cherry-pick r272232. rdar://problem/74032620

Web Inspector: Add another Protocol Version (iOS 14.5)
https://bugs.webkit.org/show_bug.cgi?id=221288
<rdar://66351870>

Reviewed by Devin Rousso.

  • UserInterface/Protocol/Legacy/14.5/InspectorBackendCommands.js: Added.
  • Versions/Inspector-iOS-14.5.json: Added.

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

1:03 PM Changeset in webkit [272525] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r272214. rdar://problem/74032646

Unreviewed, address post-landing review comment by Darin Adler for r272211.

  • platform/network/cocoa/NetworkStorageSessionCocoa.mm: (WebCore::cookiesForURL):

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

1:03 PM Changeset in webkit [272524] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r272212. rdar://problem/74032657

Make sure NetworkRTCProvider stays valid for all NetworkRTCSocketCocoa callbacks
https://bugs.webkit.org/show_bug.cgi?id=221249
<rdar://problem/72671547>

Reviewed by Eric Carlson.

Make the connection callback take a ref of the NetworkRTCProvider.
The ref cycle will break at NetworkConnectionToWebProcess destruction since it will call NetworkRTCProvider::close
which deletes all sockets owning the connection.

  • NetworkProcess/webrtc/NetworkRTCSocketCocoa.mm: (WebKit::NetworkRTCSocketCocoa::NetworkRTCSocketCocoa):

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

1:03 PM Changeset in webkit [272523] by Alan Coon
  • 3 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r272211. rdar://problem/74032646

Crash under NetworkStorageSession::cookiesForSession()
https://bugs.webkit.org/show_bug.cgi?id=221227
<rdar://71975008>

Reviewed by Geoffrey Garen.

Retain NSArray of cookies in NetworkStorageSession::cookiesForSession() for clearer lifetime
management. This is a speculative fix for <rdar://71975008>.

  • platform/network/NetworkStorageSession.h:
  • platform/network/cocoa/NetworkStorageSessionCocoa.mm: (WebCore::NetworkStorageSession::httpCookies const): (WebCore::cookiesForURL): (WebCore::NetworkStorageSession::httpCookiesForURL const): (WebCore::NetworkStorageSession::cookiesForURL const): (WebCore::NetworkStorageSession::cookiesForSession const): (WebCore::NetworkStorageSession::getRawCookies const): (WebCore::NetworkStorageSession::deleteCookie const): (WebCore::NetworkStorageSession::getHostnamesWithCookies): (WebCore::NetworkStorageSession::deleteCookiesForHostnames):

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

1:03 PM Changeset in webkit [272522] by Alan Coon
  • 4 edits
    4 adds in branches/safari-611-branch

Cherry-pick r272201. rdar://problem/74105623

Animation of "rotate" or "scale" property does not correctly account for static "translate" property
https://bugs.webkit.org/show_bug.cgi?id=219894
<rdar://problem/72342798>

Reviewed by Dean Jackson.

Source/WebCore:

The CSS transform-related properties are designed to be applied in a specific order, guaranteeing that
"translate" is applied prior to both "scale" and "rotate". Since Core Animation has no concept of these
individual transform-related CSS properties, we use additive Core Animation animations to apply the value
of each CSS property, using non-interpolating animations set to start at the earliest time in the Core
Animation timeline and lasting forever to set the value of any underlying, non-animated value.

As such, in an example where an element would have a static "translate" property set as well as a "rotate"
or "scale" animation, we would yield the following animations, added in this order:

  1. non-interpolating animation beginning at 1s setting the identity transform (the "clean slate" animation)
  2. interpolating animation beginning at a time > 1s for the "scale" or "rotate" animation
  3. non-interpolating animation beginning at 1s setting the "translate" value

Note that animations 2 and 3 are additive and thus added in the inverse order that we expect animations to be
applied. Due to a peculiarity of Core Animation (introduced in macOS 10.15), additive animations are applied
in an inverse order, hence the build-time flag CA_WHERE_ADDITIVE_TRANSFORMS_ARE_REVERSED.

However, Core Animation will first sort all animations based on their begin time, only respecting the order
in which animations are added when their begin time is equal. This means that in practice, our animations were
applied in the order 1, 3, 2, and thus the "translate" property was applied after the "rotate" or "scale" animation.

In order to address this, we now create a CAAnimationGroup for each set of animations created for a given CSS
property. Each of these groups shares the same begin time, 1s, to allow for "forever" non-interpolating animations
to be applied, but also to set a common base time for animations to be applied in the expected order.

Tests: webanimations/relative-ordering-of-translate-and-rotate-properties-accelerated.html

webanimations/relative-ordering-of-translate-and-scale-properties-accelerated.html

  • platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::updateAnimations):
  • platform/graphics/ca/GraphicsLayerCA.h: (WebCore::GraphicsLayerCA::LayerPropertyAnimation::computedBeginTime const):

LayoutTests:

Add two new tests that ensure that translate is indeed applied before rotate and scale.

  • webanimations/relative-ordering-of-translate-and-rotate-properties-accelerated-expected.html: Added.
  • webanimations/relative-ordering-of-translate-and-rotate-properties-accelerated.html: Added.
  • webanimations/relative-ordering-of-translate-and-scale-properties-accelerated-expected.html: Added.
  • webanimations/relative-ordering-of-translate-and-scale-properties-accelerated.html: Added.

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

1:03 PM Changeset in webkit [272521] by Alan Coon
  • 8 edits in branches/safari-611-branch/Source/JavaScriptCore

Cherry-pick r272191. rdar://problem/74032517

Sign m_offset in AssemblerLabel
https://bugs.webkit.org/show_bug.cgi?id=221237

Reviewed by Mark Lam.

  • assembler/ARM64Assembler.h: (JSC::ARM64Assembler::labelForWatchpoint): (JSC::ARM64Assembler::label): (JSC::ARM64Assembler::getRelocatedAddress): (JSC::ARM64Assembler::getDifferenceBetweenLabels): (JSC::ARM64Assembler::getCallReturnOffset): (JSC::ARM64Assembler::linkJump): (JSC::ARM64Assembler::addressOf):
  • assembler/ARMv7Assembler.h: (JSC::ARMv7Assembler::labelForWatchpoint): (JSC::ARMv7Assembler::label): (JSC::ARMv7Assembler::getRelocatedAddress): (JSC::ARMv7Assembler::getDifferenceBetweenLabels): (JSC::ARMv7Assembler::getCallReturnOffset): (JSC::ARMv7Assembler::linkJump): (JSC::ARMv7Assembler::linkCall): (JSC::ARMv7Assembler::linkPointer):
  • assembler/AbstractMacroAssembler.h: (JSC::AbstractMacroAssembler::Jump::link const): (JSC::AbstractMacroAssembler::Jump::linkTo const):
  • assembler/AssemblerBuffer.h: (JSC::AssemblerLabel::AssemblerLabel): (JSC::AssemblerLabel::operator=): (JSC::AssemblerLabel::isSet const): (JSC::AssemblerLabel::labelAtOffset const): (JSC::AssemblerLabel::operator== const): (JSC::AssemblerLabel::offset const): (JSC::AssemblerLabel::setOffset):
  • assembler/LinkBuffer.h: (JSC::LinkBuffer::offsetOf): (JSC::LinkBuffer::applyOffset):
  • assembler/MIPSAssembler.h: (JSC::MIPSAssembler::labelForWatchpoint): (JSC::MIPSAssembler::label): (JSC::MIPSAssembler::getRelocatedAddress): (JSC::MIPSAssembler::getDifferenceBetweenLabels): (JSC::MIPSAssembler::getCallReturnOffset): (JSC::MIPSAssembler::linkJump): (JSC::MIPSAssembler::linkCall): (JSC::MIPSAssembler::linkPointer):
  • assembler/X86Assembler.h: (JSC::X86Assembler::labelForWatchpoint): (JSC::X86Assembler::label): (JSC::X86Assembler::linkJump): (JSC::X86Assembler::linkCall): (JSC::X86Assembler::linkPointer): (JSC::X86Assembler::getCallReturnOffset): (JSC::X86Assembler::getRelocatedAddress): (JSC::X86Assembler::getDifferenceBetweenLabels):

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

1:03 PM Changeset in webkit [272520] by Alan Coon
  • 6 edits in branches/safari-611-branch/Source

Cherry-pick r272188. rdar://problem/74032553

[Cocoa] Disable interstitial events on AVPlayerItem.
https://bugs.webkit.org/show_bug.cgi?id=221215

Reviewed by Eric Carlson.

Source/WebCore:

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem):

Source/WebCore/PAL:

  • pal/spi/cocoa/AVFoundationSPI.h:

Source/WTF:

  • wtf/PlatformHave.h:

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

1:02 PM Changeset in webkit [272519] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r272185. rdar://problem/74032429

REGRESSION (iOS 14.2): Can't play html audio with muted attribute
https://bugs.webkit.org/show_bug.cgi?id=219295
<rdar://problem/71863148>

Reviewed by Eric Carlson.

In r266844, we added a power-saving feature that would disable the audio decoder for initially
muted media elements. However, this caused an issue for .mp3 files, where the duration of the
track is computed by the decoder, and not the parser. Since the goal of the power-saving feature
was to reduce the CPU cost for decoding a muted audio track on a <video> element, partially
revert this change by making it apply only to <video> elements and not <audio> ones.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):

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

1:02 PM Changeset in webkit [272518] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebInspectorUI

Cherry-pick r272183. rdar://problem/74105888

REGRESSION(r270637): Web Inspector: Filtering field no longer shows in Computed panel
https://bugs.webkit.org/show_bug.cgi?id=221001

Reviewed by Devin Rousso.

The filter bar keeps separate filters for the Rules and Computed panes. It is therefor incorrect to hide the
entire filter bar when showing multiple sidebars, instead hide the controls that have a common state between the
two panels (the Classes list).

  • UserInterface/Views/GeneralStyleDetailsSidebarPanel.css: (.multi-sidebar.showing-multiple > .sidebar > .panel.details:not(.style-rules) > .content > .pseudo-classes,):

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

1:02 PM Changeset in webkit [272517] by Alan Coon
  • 11 edits in branches/safari-611-branch/Source

Cherry-pick r272178. rdar://problem/74105398

Allow support for CAAnimationGroup
https://bugs.webkit.org/show_bug.cgi?id=221209

Reviewed by Dean Jackson, Sam Weinig and Simon Fraser.

In order to fix bug 219894, we need to use Core Animation's CAAnimationGroup and its
Source/WebCore:

setAnimations() method. This patch adds a new "Group" type to PlatformCAAnimation and
platform-specific integration for Windows and Cocoa ports.

  • platform/graphics/ca/PlatformCAAnimation.cpp: (WebCore::operator<<):
  • platform/graphics/ca/PlatformCAAnimation.h:
  • platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.h:
  • platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.mm: (WebCore::PlatformCAAnimationCocoa::PlatformCAAnimationCocoa): (WebCore::PlatformCAAnimationCocoa::keyPath const): (WebCore::PlatformCAAnimationCocoa::setTimingFunction): (WebCore::PlatformCAAnimationCocoa::isAdditive const): (WebCore::PlatformCAAnimationCocoa::setAdditive): (WebCore::PlatformCAAnimationCocoa::valueFunction const): (WebCore::PlatformCAAnimationCocoa::setValueFunction): (WebCore::PlatformCAAnimationCocoa::setFromValue): (WebCore::PlatformCAAnimationCocoa::copyFromValueFrom): (WebCore::PlatformCAAnimationCocoa::setToValue): (WebCore::PlatformCAAnimationCocoa::copyToValueFrom): (WebCore::PlatformCAAnimationCocoa::setValues): (WebCore::PlatformCAAnimationCocoa::copyValuesFrom): (WebCore::PlatformCAAnimationCocoa::setKeyTimes): (WebCore::PlatformCAAnimationCocoa::copyKeyTimesFrom): (WebCore::PlatformCAAnimationCocoa::setTimingFunctions): (WebCore::PlatformCAAnimationCocoa::copyTimingFunctionsFrom): (WebCore::PlatformCAAnimationCocoa::setAnimations): (WebCore::PlatformCAAnimationCocoa::copyAnimationsFrom):
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: (WebCore::PlatformCALayerCocoa::addAnimationForKey): (WebCore::PlatformCALayerCocoa::animationForKey):
  • platform/graphics/ca/win/PlatformCAAnimationWin.cpp: (PlatformCAAnimationWin::PlatformCAAnimationWin): (PlatformCAAnimationWin::setAnimations): (PlatformCAAnimationWin::copyAnimationsFrom):
  • platform/graphics/ca/win/PlatformCAAnimationWin.h:

Source/WebKit:

setAnimations() method. Add support for the new "Group" PlatformCAAnimation type for
the remote animations.

  • WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.h:
  • WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm: (WebKit::PlatformCAAnimationRemote::Properties::encode const): (WebKit::PlatformCAAnimationRemote::Properties::decode): (WebKit::PlatformCAAnimationRemote::copy const): (WebKit::PlatformCAAnimationRemote::setAnimations): (WebKit::PlatformCAAnimationRemote::copyAnimationsFrom): (WebKit::createAnimation): (WebKit::addAnimationToLayer): (WebKit::operator<<):

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

1:02 PM Changeset in webkit [272516] by Alan Coon
  • 5 edits
    3 adds in branches/safari-611-branch

Cherry-pick r272166. rdar://problem/74032437

ReadableStream C++ methods should check for exception
https://bugs.webkit.org/show_bug.cgi?id=215376
<rdar://problem/66816192>

Reviewed by Alex Christensen.

Source/WebCore:

Refactor code to catch and handle exceptions in case of ReadableStream methods.
Exceptions can happen in case of worker being abruptly terminated, which can only be tested flakily.

In case of tee, if an exception happens, we return a WTF::nullopt.

Test: streams/readable-stream-tee-worker.html

  • Modules/fetch/FetchBody.cpp: (WebCore::FetchBody::clone):
  • bindings/js/ReadableStream.cpp: (WebCore::invokeReadableStreamFunction): (WebCore::ReadableStream::pipeTo): (WebCore::ReadableStream::tee): (WebCore::ReadableStream::lock): (WebCore::checkReadableStream):
  • bindings/js/ReadableStream.h:

LayoutTests:

  • streams/readable-stream-tee-worker-expected.txt: Added.
  • streams/readable-stream-tee-worker.html: Added.
  • streams/readable-stream-tee.js: Added. (teeRepetitively): (test):

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

1:02 PM Changeset in webkit [272515] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r271908. rdar://problem/74032594

Harden NetworkProcess against integer overflow in CacheStorageEngine size calculation
https://bugs.webkit.org/show_bug.cgi?id=220997
<rdar://problem/66116827>

Reviewed by Youenn Fablet.

Since the CacheStorage allocation is based on data provided by the WebContent process, we should
check for integer overflow before making an allocation.

  • NetworkProcess/cache/CacheStorageEngineCache.cpp: (WebKit::CacheStorage::Cache::put): Use checked arithmetic and return a failure if we overflow.

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

1:02 PM Changeset in webkit [272514] by Alan Coon
  • 9 edits
    1 add in branches/safari-611-branch

Cherry-pick r271731. rdar://problem/74105559

[JSC] JSPromise should not propagate TerminatedExecutionError
https://bugs.webkit.org/show_bug.cgi?id=220820
<rdar://problem/72929399>

Reviewed by Mark Lam.

JSTests:

  • stress/terminated-execution-error-in-promise.js: Added. (let.x.get toString): (import.x.then):

Source/JavaScriptCore:

TerminatedExecutionError is uncatcheable exception to finish JS execution as soon as possible.
We should not propagate TerminatedExecutionError in JSPromise's rejection.
In this patch, we do not reject promise if exception is TerminatedExecutionError.

  • API/JSAPIGlobalObject.mm: (JSC::JSAPIGlobalObject::moduleLoaderImportModule): (JSC::JSAPIGlobalObject::moduleLoaderFetch):
  • API/JSContext.mm: (-[JSContext evaluateJSScript:]):
  • jsc.cpp: (GlobalObject::moduleLoaderImportModule): (GlobalObject::moduleLoaderFetch): (runWithOptions):
  • runtime/Completion.cpp: (JSC::rejectPromise): (JSC::loadAndEvaluateModule): (JSC::loadModule):
  • runtime/JSGlobalObjectFunctions.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION):
  • runtime/JSModuleLoader.cpp: (JSC::reject): (JSC::JSModuleLoader::importModule): (JSC::JSModuleLoader::resolve): (JSC::JSModuleLoader::fetch): (JSC::JSC_DEFINE_HOST_FUNCTION):
  • wasm/js/JSWebAssembly.cpp: (JSC::reject):

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

1:02 PM Changeset in webkit [272513] by Alan Coon
  • 8 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r271686. rdar://problem/74032451

Further propagate ChildChange::Source to optimize HTMLInputElement creation
https://bugs.webkit.org/show_bug.cgi?id=220785

Reviewed by Ryosuke Niwa.

This patch further propagates ChildChange::Source to optimize HTMLInputElement creation.
We add appendChild method taking ChildChange::Source to transparently pick the efficient
one based on the parameter.

  • dom/ContainerNode.cpp: (WebCore::ContainerNode::appendChild):
  • dom/ContainerNode.h:
  • html/BaseDateAndTimeInputType.cpp: (WebCore::BaseDateAndTimeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):
  • html/ColorInputType.cpp: (WebCore::ColorInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):
  • html/FileInputType.cpp: (WebCore::FileInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):
  • html/RangeInputType.cpp: (WebCore::RangeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):
  • html/TextFieldInputType.cpp: (WebCore::TextFieldInputType::createShadowSubtreeAndUpdateInnerTextElementEditability):

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

1:02 PM Changeset in webkit [272512] by Alan Coon
  • 47 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r271672. rdar://problem/74105677

Accelerate HTMLInputElement creation
https://bugs.webkit.org/show_bug.cgi?id=220758

Reviewed by Simon Fraser.

HTMLInputElement creation is too slow.

  1. InputType is excessively using virtual dispatching, which is too slow for hot path.
  2. HTMLInputElement creates internal elements as a shadow DOM and its creation is too generic.
  3. We are setting inner text element's editability in a very generic way. This allocates ElementData for each elements while attributes are almost the same.

In this patch,

  1. We add m_type field in InputType, and for the hot path, we attempt to devirtualize things due to performance problem.
  2. We pass "parsing phase" information to shadow DOM creation to make them fast.
  3. We initialize editibility when creating TextControlInnerTextElement. And we use parserSetAttributes to set shared ElementData. This is faster and less memory.
  4. We also shrink sizeof(Style::Scope) to reduce size of allocation when using shadow DOM.

This change offers 1% progression in Speedometer2/jQuery.

  • html/BaseButtonInputType.h: (WebCore::BaseButtonInputType::BaseButtonInputType):
  • html/BaseCheckableInputType.h: (WebCore::BaseCheckableInputType::BaseCheckableInputType):
  • html/BaseClickableWithKeyInputType.h: (WebCore::BaseClickableWithKeyInputType::BaseClickableWithKeyInputType):
  • html/BaseDateAndTimeInputType.cpp: (WebCore::BaseDateAndTimeInputType::isSteppableSlow const): (WebCore::BaseDateAndTimeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::BaseDateAndTimeInputType::isSteppable const): Deleted. (WebCore::BaseDateAndTimeInputType::createShadowSubtree): Deleted.
  • html/BaseDateAndTimeInputType.h: (WebCore::BaseDateAndTimeInputType::BaseDateAndTimeInputType):
  • html/BaseTextInputType.h: (WebCore::BaseTextInputType::BaseTextInputType):
  • html/ButtonInputType.h:
  • html/CheckboxInputType.h:
  • html/ColorInputType.cpp: (WebCore::ColorInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::ColorInputType::createShadowSubtree): Deleted.
  • html/ColorInputType.h:
  • html/DateInputType.cpp: (WebCore::DateInputType::DateInputType):
  • html/DateInputType.h:
  • html/DateTimeLocalInputType.h:
  • html/EmailInputType.h:
  • html/FileInputType.cpp: (WebCore::FileInputType::FileInputType): (WebCore::FileInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::FileInputType::createShadowSubtree): Deleted.
  • html/FileInputType.h:
  • html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::didAddUserAgentShadowRoot): (WebCore::HTMLInputElement::isValid const): (WebCore::HTMLInputElement::updateType):
  • html/HTMLTextAreaElement.cpp: (WebCore::HTMLTextAreaElement::didAddUserAgentShadowRoot):
  • html/HTMLTextFormControlElement.cpp: (WebCore::HTMLTextFormControlElement::updateInnerTextElementEditability):
  • html/HiddenInputType.h:
  • html/ImageInputType.cpp: (WebCore::ImageInputType::ImageInputType):
  • html/ImageInputType.h:
  • html/InputType.cpp: (WebCore::InputType::isInvalid const): (WebCore::InputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::InputType::isSteppable const): (WebCore::InputType::createShadowSubtree): Deleted.
  • html/InputType.h: (WebCore::InputType::InputType): (WebCore::InputType::isSteppableSlow const): (WebCore::isInvalidInputType):
  • html/MonthInputType.h:
  • html/NumberInputType.cpp: (WebCore::NumberInputType::isSteppableSlow const): (WebCore::NumberInputType::isSteppable const): Deleted.
  • html/NumberInputType.h:
  • html/PasswordInputType.h:
  • html/RadioInputType.h:
  • html/RangeInputType.cpp: (WebCore::RangeInputType::RangeInputType): (WebCore::RangeInputType::isSteppableSlow const): (WebCore::RangeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::RangeInputType::isSteppable const): Deleted. (WebCore::RangeInputType::createShadowSubtree): Deleted.
  • html/RangeInputType.h:
  • html/ResetInputType.h:
  • html/SearchInputType.cpp: (WebCore::SearchInputType::SearchInputType): (WebCore::SearchInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::SearchInputType::createShadowSubtree): Deleted.
  • html/SearchInputType.h:
  • html/SubmitInputType.h:
  • html/TelephoneInputType.h:
  • html/TextFieldInputType.cpp: (WebCore::TextFieldInputType::TextFieldInputType): (WebCore::TextFieldInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): (WebCore::TextFieldInputType::createShadowSubtree): Deleted.
  • html/TextFieldInputType.h:
  • html/TextInputType.h:
  • html/TimeInputType.cpp: (WebCore::TimeInputType::TimeInputType):
  • html/TimeInputType.h:
  • html/URLInputType.h:
  • html/WeekInputType.h:
  • html/shadow/TextControlInnerElements.cpp: (WebCore::TextControlInnerTextElement::create): (WebCore::TextControlInnerTextElement::updateInnerTextElementEditabilityImpl):
  • html/shadow/TextControlInnerElements.h:
  • style/StyleScope.h:

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

1:02 PM Changeset in webkit [272511] by Alan Coon
  • 5 edits in branches/safari-611-branch/Source/WTF

Cherry-pick r271633. rdar://problem/74105761

[WTF] StringImpl::removeCharacters should be inlined
https://bugs.webkit.org/show_bug.cgi?id=220742

Reviewed by Saam Barati.

removeCharacters is used in WebCore's HTMLInputElement's critical path. And since String relatively has many elements (characters),
non-inlined StringImpl::removeCharacters causes significant number of indirect function calls of findMatch argument since it is
passed function pointer. We should make them templatized function to allow inlining of findMatch function to avoid repeated indirect calls.

  • wtf/text/StringImpl.cpp: (WTF::StringImpl::removeCharacters): Deleted.
  • wtf/text/StringImpl.h: (WTF::StringImpl::removeCharactersImpl): (WTF::StringImpl::removeCharacters):
  • wtf/text/WTFString.cpp: (WTF::String::removeCharacters const): Deleted.
  • wtf/text/WTFString.h: (WTF::String::removeCharacters const):

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

1:02 PM Changeset in webkit [272510] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/JavaScriptCore

Cherry-pick r271624. rdar://problem/74105183

Unreviewed, fix GCC warnings
https://bugs.webkit.org/show_bug.cgi?id=220718

  • dfg/DFGOperations.cpp: (JSC::DFG::tierUpCommon):

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

1:02 PM Changeset in webkit [272509] by Alan Coon
  • 3 edits
    1 add in branches/safari-611-branch

Cherry-pick r271596. rdar://problem/74105183

[JSC] FTL::prepareOSREntry can clear OSR entry CodeBlock if it is already invalidated
https://bugs.webkit.org/show_bug.cgi?id=220718
<rdar://problem/70527068>

Reviewed by Mark Lam.

JSTests:

  • stress/ftl-osr-failure-clear-twice.js: Added. (foo):

Source/JavaScriptCore:

FTL::prepareOSREntry can clear OSR entry CodeBlock if it is already invalidated. However, the caller is not assuming that,
and it calls clearOSREntryBlockAndResetThresholds again. And clearOSREntryBlockAndResetThresholds's assertion hit.
This patch correctly handles the invalidated case.

  • dfg/DFGOperations.cpp: (JSC::DFG::tierUpCommon):

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

1:02 PM Changeset in webkit [272508] by Alan Coon
  • 3 edits
    1 add in branches/safari-611-branch

Cherry-pick r271571. rdar://problem/74105245

[JSC] FTL OSR entry FlushFormat array is reversed
https://bugs.webkit.org/show_bug.cgi?id=220695
<rdar://problem/72930932>

Reviewed by Mark Lam.

JSTests:

  • stress/ftl-osr-entry-order-reverse.js: Added. (shouldThrow): (foo):

Source/JavaScriptCore:

After r268783, FlushFormat array is erroneously sorted in reversed order.
This patch fixes that.

  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::lower):

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

12:22 PM Changeset in webkit [272507] by youenn@apple.com
  • 4 edits in trunk

[MacOS] Enable Audio Capture in GPUProcess by default
https://bugs.webkit.org/show_bug.cgi?id=221400

Reviewed by Eric Carlson.

Source/WebKit:

Manually tested.

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultCaptureAudioInGPUProcessEnabled):

Tools:

  • TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm:

(-[GetUserMediaRepromptTestView haveStream:]):
Increase timeout since capture might require spinning GPUProcess.

12:07 PM Changeset in webkit [272506] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebKit

Check that CGPDFDocumentRef is consistently unlocked and printable
<https://webkit.org/b/221512>
<rdar://problem/65277765>

Reviewed by Daniel Bates.

This patch does the following when printing PDFs:

  • Checks return value of CGPDFDocumentUnlockWithPassword().
  • Calls CGPDFDocumentAllowsPrinting() consistently.
  • Handles -_ensureDocumentForPrinting and -_wk_printedDocument returning nullptr.
  • UIProcess/_WKWebViewPrintFormatter.mm:

(-[_WKWebViewPrintFormatter drawInRect:forPageAtIndex:]):

  • Check return value of -_wk_printedDocument since it may return nullptr now.
  • UIProcess/ios/WKPDFView.mm:

(-[WKPDFView _ensureDocumentForPrinting]):

  • Check return value of CGPDFDocumentUnlockWithPassword(), and return nullptr if unsuccessful.
  • Add CGPDFDocumentAllowsPrinting() check and return nullptr if it fails.

(-[WKPDFView _wk_pageCountForPrintFormatter:]):

  • Move the CGPDFDocumentAllowsPrinting() check into -[WKPDFView _ensureDocumentForPrinting].
  • Check return value of -_ensureDocumentForPrinting since it may return nullptr now.
12:04 PM Changeset in webkit [272505] by Russell Epstein
  • 1 copy in tags/Safari-612.1.2.5

Tag Safari-612.1.2.5.

11:47 AM Changeset in webkit [272504] by youenn@apple.com
  • 8 edits
    3 adds in trunk

NetworkRTCSocketCocoa extractDataMessages should not read too much data
https://bugs.webkit.org/show_bug.cgi?id=221544

Reviewed by Eric Carlson.

Source/WebCore:

Move STUN/TURN message parsing to its own file routine so that we can add API test.
Code is taken from Source/WebKit/NetworkProcess/webrtc/NetworkRTCSocketCocoa.mm.
Fix the test verifying we can actually read a message given its expected length.

Covered by API test.

  • Headers.cmake:
  • Modules/mediastream/STUNMessageParsing.cpp: Added.

(WebCore::isStunMessage):
(WebCore::getSTUNOrTURNMessageLengths):
(WebCore::extractSTUNOrTURNMessages):
(WebCore::extractDataMessages):
(WebCore::extractMessages):

  • Modules/mediastream/STUNMessageParsing.h: Added.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

  • NetworkProcess/webrtc/NetworkRTCSocketCocoa.mm:

Make use of WebCore method.

Tools:

  • TestWebKitAPI/Tests/WebCore/STUNMessageParsingTest.cpp: Added.

(TestWebKitAPI::TEST):

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
11:43 AM Changeset in webkit [272503] by Wenson Hsieh
  • 4 edits in trunk/Source/WebCore

Adjust EventHandler to account for image extraction content
https://bugs.webkit.org/show_bug.cgi?id=221274

Reviewed by Tim Horton.

Avoid extending the selection to the hit-tested position when dragging over an image overlay container (as
opposed to one of the children with text inside the image overlay container).

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::shouldUpdateSelectionForMouseDrag):

  • html/HTMLElement.h:
  • page/EventHandler.cpp:

(WebCore::EventHandler::updateSelectionForMouseDrag):

11:28 AM Changeset in webkit [272502] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

[iOS macOS] imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-perfect-negotiation.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=219460

Unreviwed test gardening.

Skip the test since it is a flaky failure on release, and a flaky assertion failure on debug.

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
11:14 AM Changeset in webkit [272501] by Russell Epstein
  • 8 edits in branches/safari-612.1.2-branch/Source

Versioning.

WebKit-7612.1.2.5

10:58 AM Changeset in webkit [272500] by Ryan Haddad
  • 2 edits in trunk/Source/WebKitLegacy/mac

Permission request API for MediaKeySystem access support
https://bugs.webkit.org/show_bug.cgi?id=221187

Unreviewed build fix for macCatalyst.

  • WebCoreSupport/WebMediaKeySystemClient.h: Add a check for ENABLE(ENCRYPTED_MEDIA).
10:11 AM Changeset in webkit [272499] by aboya@igalia.com
  • 7 edits in trunk

Add ConsoleMessage::toString()
https://bugs.webkit.org/show_bug.cgi?id=221539

Reviewed by Eric Carlson.

Source/JavaScriptCore:

Currently ConsoleMessage doesn't have a publicly API to retrieve the
stored JSON values into a string for printing.

The closest equivalent is message(), but it doesn't return any JSON
objects attached. This makes it an ill fit when printing
ConsoleMessage's to the system terminal, since these JSON values often
contain information that is important for debugging, e.g.:

SourceBufferPrivateGStreamer::removeCodedFrames(126493C320000001) removing sample (notice: no sample)
SourceBufferPrivateGStreamer::removeCodedFrames(126493C320000001) the range in removeCodedFrames() includes already enqueued samples, reenqueueing from (notice: no time)

This patch adds a new ConsoleMessage::toString() method that
constructs a String containing these JSON values, and makes use of it
when printing messages to the system terminal, giving more useful
output, e.g:

CONSOLE MEDIASOURCE DEBUG MediaSourcePrivateGStreamer::addSourceBuffer(D4447A9F1F483EEF) {"containerType":"video/webm","codecs":"codecs","profiles":"profiles"}
CONSOLE MEDIA LOG HTMLMediaElement::mediaPlayerDurationChanged(D4447A9F1F483EEF) duration = {"invalid":true,"numerator":-1,"denominator":1,"flags":0}, current time = {"value":0,"numerator":0,"denominator":10000000,"flags":1}

  • inspector/ConsoleMessage.cpp:

(Inspector::ConsoleMessage::toString const):

  • inspector/ConsoleMessage.h:

Source/WebCore:

Use ConsoleMessage::toString() instead of ConsoleMessage::message().

  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::addMessage):

Tools:

Added unit tests.

  • TestWebKitAPI/Tests/JavaScriptCore/InspectorConsoleMessage.cpp:

(TestWebKitAPI::TEST):

9:37 AM Changeset in webkit [272498] by weinig@apple.com
  • 4 edits in trunk

Update sRGB <-> XYZ conversion matrix values to match values in latest spec
https://bugs.webkit.org/show_bug.cgi?id=221533

Reviewed by Alex Christensen.

Source/WebCore:

Update values to keep in sync with https://github.com/w3c/csswg-drafts/issues/5922.

Updates ExtendedColor API test.

  • platform/graphics/ColorConversion.cpp:

Update values to keep in sync with the values used in the CSS Color 4 spec. This
doesn't have any user visible effect, but would reduce errors if round tripping
through this ever became necessary.

Tools:

  • TestWebKitAPI/Tests/WebCore/ExtendedColorTests.cpp:

(TestWebKitAPI::TEST):
Update values to values in P3 <-> sRGB conversion test and update to
use EXPECT_FLOAT_EQ so the values can be seen in the output when thigs
fail.

9:36 AM Changeset in webkit [272497] by commit-queue@webkit.org
  • 3 edits
    6 adds in trunk

Null check document element in createGradient
https://bugs.webkit.org/show_bug.cgi?id=221378

Patch by Rob Buis <rbuis@igalia.com> on 2021-02-08
Reviewed by Alex Christensen.

Source/WebCore:

The document element is not guaranteed to exist so null
check it before determining the root style.

Tests: fast/css/conic-gradient-no-document-element-crash.html

fast/css/linear-gradient-no-document-element-crash.html
fast/css/radial-gradient-no-document-element-crash.html

  • css/CSSGradientValue.cpp:

(WebCore::CSSLinearGradientValue::createGradient):
(WebCore::CSSRadialGradientValue::createGradient):
(WebCore::CSSConicGradientValue::createGradient):

LayoutTests:

Add tests for this.

  • fast/css/conic-gradient-no-document-element-crash-expected.txt: Added.
  • fast/css/conic-gradient-no-document-element-crash.html: Added.
  • fast/css/linear-gradient-no-document-element-crash-expected.txt: Added.
  • fast/css/linear-gradient-no-document-element-crash.html: Added.
  • fast/css/radial-gradient-no-document-element-crash-expected.txt: Added.
  • fast/css/radial-gradient-no-document-element-crash.html: Added.
9:30 AM Changeset in webkit [272496] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Enable GPU WebRTC codecs in GPUProcess by default on MacOS
https://bugs.webkit.org/show_bug.cgi?id=221397

Reviewed by Eric Carlson.

Manually tested.

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultWebRTCCodecsInGPUProcess):

8:42 AM Changeset in webkit [272495] by Aditya Keerthi
  • 12 edits
    4 adds in trunk

[macOS] Return key binding for date inputs conflicts with return to submit form
https://bugs.webkit.org/show_bug.cgi?id=221532
<rdar://problem/74039204>

Reviewed by Wenson Hsieh.

Source/WebCore:

Currently, pressing the return key within a focused date input presents
the calendar view, rather than submitting an associated form. This is a
usability issue for keyboard users, and is different from the behavior
in Chrome. This patch matches the behavior in Chrome, and makes it so
that a return keypress submits an associated form.

However, since the return key is now reserved for form submission, we
need a new key to present the calendar view for the date input. Chrome
and Firefox use the space key for this functionality, so this patch
matches that behavior.

Note that r267281 updated date inputs to focus the next editable component
when pressing the space key. This behavior is now removed in favor of
presenting the calendar. Other separator keys, and arrow keys, can still be
used to focus the next editable component.

Tests: fast/forms/date/date-editable-components/date-picker-show-on-space-keypress.html

fast/forms/date/date-editable-components/form-submit-on-return-keypress.html

  • html/BaseDateAndTimeInputType.cpp:

(WebCore::BaseDateAndTimeInputType::handleKeypressEvent):

Date and time inputs are BaseClickableWithKeyInputTypes. This gives them
activation behavior on return and space keypresses, similar to button and
color inputs. However, since date/time inputs are closer to textfields,
than buttons, we elide activation behavior on a return keypress, allowing
the event to submit an associated form. Activation behavior on a space
keypress is supported by going through the existing code path.

  • html/shadow/DateTimeFieldElement.cpp:

(WebCore::DateTimeFieldElement::defaultKeyboardEventHandler):

Remove "Space" from the list of separator keys that focus the next
editable component.

LayoutTests:

Added tests to verify that pressing the space key in a focused date
input presents a calendar view, and pressing the enter key in a focused
date input submits a form.

Rebaselined existing tests to account for the fact that the space key
no longer focuses the next editable component within a date input.

  • fast/forms/date/date-editable-components/date-editable-components-keyboard-events-expected.txt:
  • fast/forms/date/date-editable-components/date-editable-components-keyboard-events.html:
  • fast/forms/date/date-editable-components/date-picker-show-on-space-keypress-expected.txt: Added.
  • fast/forms/date/date-editable-components/date-picker-show-on-space-keypress.html: Added.
  • fast/forms/date/date-editable-components/form-submit-on-return-keypress-expected.txt: Added.
  • fast/forms/date/date-editable-components/form-submit-on-return-keypress.html: Added.
  • fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-keyboard-events-expected.txt:
  • fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-keyboard-events.html:
  • fast/forms/month/month-editable-components/month-editable-components-keyboard-events-expected.txt:
  • fast/forms/month/month-editable-components/month-editable-components-keyboard-events.html:
  • fast/forms/time/time-editable-components/time-editable-components-keyboard-events-expected.txt:
  • fast/forms/time/time-editable-components/time-editable-components-keyboard-events.html:
8:29 AM Changeset in webkit [272494] by Antti Koivisto
  • 10 edits in trunk

[LFC][Integration] Hit test inline boxes
https://bugs.webkit.org/show_bug.cgi?id=221545

Reviewed by Zalan Bujtas.

Source/WebCore:

Fix fast/dom/nodesFromRect/nodesFromRect-inline-image.html and similar by allowing hitting non-root inline boxes.

  • layout/integration/LayoutIntegrationInlineContent.h:

Add a new vector for inlines.

  • layout/integration/LayoutIntegrationInlineContentBuilder.cpp:

(WebCore::LayoutIntegration::InlineContentBuilder::build const):
(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayNonRootInlineBoxes const):

Build the vector.

  • layout/integration/LayoutIntegrationInlineContentBuilder.h:
  • layout/integration/LayoutIntegrationLine.h:

(WebCore::LayoutIntegration::NonRootInlineBox::NonRootInlineBox):
(WebCore::LayoutIntegration::NonRootInlineBox::layoutBox const):
(WebCore::LayoutIntegration::NonRootInlineBox::style const):
(WebCore::LayoutIntegration::NonRootInlineBox::lineIndex const):
(WebCore::LayoutIntegration::NonRootInlineBox::rect const):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::hitTest):

Hit test using the inline vector.

LayoutTests:

  • fast/dom/nodesFromRect/nodesFromRect-culled-inline-with-linebreak.html:
  • fast/dom/nodesFromRect/nodesFromRect-culled-inlines.html:
  • fast/dom/nodesFromRect/resources/nodesFromRect.js:

(nodeListToString):

Sort the vector based on node type so the order is not sensitive to engine internals.
Rect based hit testing is not web exposed and the leaf-to-root order is still maintained.

8:18 AM Changeset in webkit [272493] by Lauro Moura
  • 2 edits in trunk/Tools

[GLIB] Gardening geolocation API test flakiness

Unreviewed test gardening.

Failing regularly, likely due to the same geolocation API limitation.

  • TestWebKitAPI/glib/TestExpectations.json:
8:17 AM Changeset in webkit [272492] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk

WebXRSystem::RequestSession with 'viewer' as a required feature should succeed
https://bugs.webkit.org/show_bug.cgi?id=221267

Patch by Imanol Fernandez <imanol> on 2021-02-08
Reviewed by Sergio Villar Senin.

LayoutTests/imported/w3c:

Mark xrSession_viewer_availability test as passing.

  • web-platform-tests/webxr/xrSession_viewer_availability.https-expected.txt: Added.

Source/WebCore:

Tested by wpt/webxr/xrSession_viewer_availability.html

  • Modules/webxr/WebXRSystem.cpp:

(WebCore::WebXRSystem::inlineSessionRequestIsAllowedForGlobalObject const):

LayoutTests:

Mark xrSession_viewer_availability test as passing.

  • platform/wpe/TestExpectations:
8:14 AM Changeset in webkit [272491] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Fix WebXRWebGLLayer m_isCompositionDisabled checks
https://bugs.webkit.org/show_bug.cgi?id=221551

Patch by Imanol Fernandez <imanol> on 2021-02-08
Reviewed by Sergio Villar Senin.

Fix reversed m_isCompositionDisabled checks.

  • Modules/webxr/WebXRWebGLLayer.cpp:

(WebCore::WebXRWebGLLayer::create):
(WebCore::WebXRWebGLLayer::WebXRWebGLLayer):

7:40 AM Changeset in webkit [272490] by Andres Gonzalez
  • 23 edits
    2 adds in trunk

Add support for aria-sort change notifications.
https://bugs.webkit.org/show_bug.cgi?id=221495

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/aria-sort-changed-notification.html

This patch adds support for aria-sort changes. Some code cleanup by
using the notificationPlatformName helper function.

  • accessibility/AXLogger.cpp:

(WebCore::operator<<):
Logging of the new notification.

  • accessibility/AXObjectCache.cpp:

Handles the aria-sort change notification. Updates the isolated tree.
(WebCore::AXObjectCache::handleAttributeChange):
(WebCore::AXObjectCache::updateIsolatedTree):

  • accessibility/AXObjectCache.h:
  • accessibility/ios/AXObjectCacheIOS.mm:

(WebCore::AXObjectCache::notificationPlatformName):
Helper to map AXCore notifications to platform notifications.
(WebCore::AXObjectCache::postPlatformNotification):
Handles the AXSortDirectionChanged notification. Some code cleanup using
the notificationPlatformName helper.

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper postNotification:]):
To be overridden by system AX bundles.
(-[WebAccessibilityObjectWrapper accessibilitySortDirection]):
Only ascending and descending sort directions are relevant for clients.

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::updateNodeProperty):
Updates the SortDirection property.

  • accessibility/mac/AXObjectCacheMac.mm:

(WebCore::AXObjectCache::postPlatformNotification):
Handles the AXSortDirectionChanged notification.

Tools:

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:

(WTR::AccessibilityUIElement::sortDirection const):

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::sortDirection const):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::currentStateValue const):
(WTR::AccessibilityUIElement::sortDirection const):

LayoutTests:

  • accessibility/aria-sort-changed-notification-expected.txt: Added.
  • accessibility/aria-sort-changed-notification.html: Added.
  • accessibility/aria-sort-expected.txt:
  • accessibility/aria-sort.html:

Calls sortDirection property on the JS accessible element instead of
retrieving the aria-sort attribute. This matches more accurately what an
actual client would do. Changed the expected file accordingly.

  • accessibility/ios-simulator/aria-sort-ios-expected.txt:
  • accessibility/ios-simulator/aria-sort-ios.html:

Same as in the Mac test above.

  • platform/ios/TestExpectations:

Added the new test to be run on the ios-simulator.

5:52 AM Changeset in webkit [272489] by Manuel Rego Casasnovas
  • 6 edits
    2 adds in trunk

[GTK] event.ctrlKey and other are false in keydown event
https://bugs.webkit.org/show_bug.cgi?id=221456

Reviewed by Adrian Perez de Castro.

Source/WebKit:

Modifier keys were not being set on "keydown" events.
For example if you check event.ctrlKey (and other) you'll get always false when the user only typed Ctrl key
(it'll be true when it's in combination with some other key, like Ctrl + P).
This is due to some differences on how X system manages the modifier keys (see http://crbug.com/127142#c8),
but this patch will align WebKitGTK with other platforms and browsers on this case.

Test: fast/events/keyboardevent-modifier.html

  • Shared/gtk/WebEventFactory.cpp:

(WebKit::modifiersForEvent): In the case of a keyboard press event check if some modifier key has been pressed.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseSynthesizeKeyEvent): Check if some modifier key has been pressed.

LayoutTests:

The test only pass in GTK right now, despite testing it manually works fine in all platforms,
it looks like they might need changes to make the test pass.

  • TestExpectations:
  • fast/events/keyboardevent-modifier-expected.txt: Added.
  • fast/events/keyboardevent-modifier.html: Added.
  • platform/gtk/TestExpectations:
5:31 AM Changeset in webkit [272488] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Perform layout before running Editor::findString
https://bugs.webkit.org/show_bug.cgi?id=220384

Patch by Frédéric Wang <fwang@igalia.com> on 2021-02-08
Reviewed by Ryosuke Niwa.

This ensures that the layout is up-to-date before performing any search.
Also disable any post-resolution that could cause more changes to happen.

  • editing/Editor.cpp:

(WebCore::Editor::findString):

4:33 AM Changeset in webkit [272487] by graouts@webkit.org
  • 2 edits in trunk/Source/WebKit

Unreviewed unified build fix.

  • UIProcess/MediaPermissionUtilities.h:
4:31 AM Changeset in webkit [272486] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

Deprecation warnings for NSImageHintSymbolFont and NSImageHintSymbolScale
https://bugs.webkit.org/show_bug.cgi?id=221541

Unreviewed build fix.

  • rendering/RenderThemeMac.mm:

(WebCore::createAttachmentPlaceholderImage):

3:34 AM Changeset in webkit [272485] by Philippe Normand
  • 16 edits
    4 adds in trunk

[GLib] Permission request API for MediaKeySystem access support
https://bugs.webkit.org/show_bug.cgi?id=221199

Reviewed by Carlos Garcia Campos.

Source/WebKit:

Expose a new Permission Request object to the public WPE and GTK APIs, allowing the
application to defer the decision of using a given EME MediaKeySystem to the user's
approval.

Covered by new API test.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • UIProcess/API/glib/WebKitMediaKeySystemPermissionRequest.cpp: Added.

(webkitMediaKeySystemPermissionRequestAllow):
(webkitMediaKeySystemPermissionRequestDeny):
(webkit_permission_request_interface_init):
(webkitMediaKeySystemPermissionRequestDispose):
(webkit_media_key_system_permission_request_class_init):
(webkitMediaKeySystemPermissionRequestCreate):
(webkit_media_key_system_permission_get_name):

  • UIProcess/API/glib/WebKitMediaKeySystemPermissionRequestPrivate.h: Added.
  • UIProcess/API/glib/WebKitUIClient.cpp:
  • UIProcess/API/gtk/WebKitAutocleanups.h:
  • UIProcess/API/gtk/WebKitMediaKeySystemPermissionRequest.h: Added.
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
  • UIProcess/API/gtk/webkit2.h:
  • UIProcess/API/wpe/WebKitMediaKeySystemPermissionRequest.h: Added.
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:
  • UIProcess/API/wpe/docs/wpe-docs.sgml:

Tools:

Added basic support for MediaKeySystem permission request to the GTK MiniBrowser, and a GLib
API unit-test as well.

  • MiniBrowser/gtk/BrowserTab.c:

(permissionRequestDialogResponse):
(decidePermissionRequest):
(browser_tab_class_init):

  • TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:

(testWebViewMediaKeySystemPermissionRequests):
(beforeAll):

  • TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:

(WebViewTest::initializeWebView):

1:47 AM Changeset in webkit [272484] by aboya@igalia.com
  • 8 edits
    1 add in trunk

ConsoleMessage: Don't encode string JSONLogValue's as JSON
https://bugs.webkit.org/show_bug.cgi?id=221421

Reviewed by Eric Carlson.

.:

Enable JavaScriptCore API tests.

  • Source/cmake/WebKitCommon.cmake:

Source/JavaScriptCore:

JSONLogValue's have two tagged types: String and JSON. Despite this,
the ConsoleMessage constructor was converting the string values to
JSON while coalescing them.

This also added quotes on the return value of message() for
ConsoleMessage's created with this constructor, but not with others.

This patch removes that behavior, keeping strings as strings and using
wrapObject() instead of wrapJSONString() for them.

  • inspector/ConsoleMessage.cpp:

(Inspector::ConsoleMessage::ConsoleMessage):
(Inspector::ConsoleMessage::addToFrontend):

Tools:

Added API tests to check for the output of message() when constructing
ConsoleMessage objects with JSONLogValue's.

This includes changes contributed by Philippe Normand enabling
JavaScriptCore tests which were previously disabled in WebKitGTK and
making them compile again.

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/Tests/WebKit/InspectorConsoleMessage.cpp: Added.

(TestWebKitAPI::TEST):

1:12 AM Changeset in webkit [272483] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Nullptr crash in editingIgnoresContent via InsertParagraphSeparatorCommand::doApply
https://bugs.webkit.org/show_bug.cgi?id=220349

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-02-08
Reviewed by Ryosuke Niwa.

Add an early return to InsertParagraphSeparatorCommand::doApply if insert position is null.

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::insertNodeBefore): Return early if a InsertNodeBeforeCommand can't be created.

  • editing/InsertParagraphSeparatorCommand.cpp:

(WebCore::InsertParagraphSeparatorCommand::doApply): Abort the insertion if the insert position is null.

1:00 AM Changeset in webkit [272482] by Philippe Normand
  • 2 edits in trunk/Source/WebKit

Unreviewed, unified build fix after r272480

  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp: Logging.h is needed for

log channel macros usage.

12:53 AM Changeset in webkit [272481] by Philippe Normand
  • 3 edits in trunk/Source/WebKit

Unreviewed, build fix after r272480

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestMediaKeySystemPermissionByDefaultAction):

  • UIProcess/WebPageProxy.h:
12:37 AM Changeset in webkit [272480] by Philippe Normand
  • 38 edits
    19 adds in trunk

Permission request API for MediaKeySystem access support
https://bugs.webkit.org/show_bug.cgi?id=221187

Reviewed by Jer Noble.

Source/WebCore:

Support for user permission requesting when access to an EME MediaKeySystem is being
requested by the page. This is similar to the mediaDevices access guards.

Existing test media/encrypted-media/mock-MediaKeySystemAccess.html was updated to cover this
new code path and WPE/GTK API tests as well.

  • CMakeLists.txt:
  • Headers.cmake:
  • Modules/encryptedmedia/MediaKeySystemClient.h: Added.
  • Modules/encryptedmedia/MediaKeySystemController.cpp: Added.

(WebCore::MediaKeySystemController::supplementName):
(WebCore::MediaKeySystemController::MediaKeySystemController):
(WebCore::MediaKeySystemController::~MediaKeySystemController):
(WebCore::provideMediaKeySystemTo):
(WebCore::MediaKeySystemController::logRequestMediaKeySystemDenial):

  • Modules/encryptedmedia/MediaKeySystemController.h: Added.

(WebCore::MediaKeySystemController::client const):
(WebCore::MediaKeySystemController::from):
(WebCore::MediaKeySystemController::requestMediaKeySystem):
(WebCore::MediaKeySystemController::cancelMediaKeySystemRequest):

  • Modules/encryptedmedia/MediaKeySystemRequest.cpp: Added.

(WebCore::MediaKeySystemRequest::create):
(WebCore::MediaKeySystemRequest::MediaKeySystemRequest):
(WebCore::MediaKeySystemRequest::~MediaKeySystemRequest):
(WebCore::MediaKeySystemRequest::topLevelDocumentOrigin const):
(WebCore::MediaKeySystemRequest::start):
(WebCore::MediaKeySystemRequest::allow):
(WebCore::MediaKeySystemRequest::deny):
(WebCore::MediaKeySystemRequest::stop):
(WebCore::MediaKeySystemRequest::activeDOMObjectName const):
(WebCore::MediaKeySystemRequest::document const):

  • Modules/encryptedmedia/MediaKeySystemRequest.h: Added.

(WebCore::MediaKeySystemRequest::setAllowCallback):
(WebCore::MediaKeySystemRequest::identifier const):
(WebCore::MediaKeySystemRequest::keySystem const):

  • Modules/encryptedmedia/NavigatorEME.cpp:

(WebCore::NavigatorEME::requestMediaKeySystemAccess):

Source/WebKit:

Add new IPC and C API exposing MediaKeySystem access permissions to the UIProcess. At least
GTK/WPE would like to have API for asking permission to the user when EME's MediaKeyAccess
is being requested by a page. On Apple platforms the permission is granted by default until
a decision is made about supporting this in their APIUIClient.

  • CMakeLists.txt:
  • Headers.cmake:
  • Platform/Logging.h:
  • Shared/API/APIObject.h:
  • Shared/API/c/WKBase.h:
  • Sources.txt:
  • UIProcess/API/APIUIClient.h:

(API::UIClient::decidePolicyForMediaKeySystemPermissionRequest):

  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKMediaKeySystemPermissionCallback.cpp: Added.

(WKMediaKeySystemPermissionCallbackGetTypeID):
(WKMediaKeySystemPermissionCallbackComplete):

  • UIProcess/API/C/WKMediaKeySystemPermissionCallback.h: Added.
  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/MediaKeySystemPermissionRequest.h: Added.

(WebKit::MediaKeySystemPermissionRequest::create):
(WebKit::MediaKeySystemPermissionRequest::complete):
(WebKit::MediaKeySystemPermissionRequest::keySystem const):
(WebKit::MediaKeySystemPermissionRequest::MediaKeySystemPermissionRequest):
(WebKit::MediaKeySystemPermissionCallback::create):
(WebKit::MediaKeySystemPermissionCallback::complete):
(WebKit::MediaKeySystemPermissionCallback::MediaKeySystemPermissionCallback):

  • UIProcess/MediaKeySystemPermissionRequestManagerProxy.cpp: Added.

(WebKit::MediaKeySystemPermissionRequestManagerProxy::MediaKeySystemPermissionRequestManagerProxy):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::~MediaKeySystemPermissionRequestManagerProxy):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::invalidatePendingRequests):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::denyRequest):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::grantRequest):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::createRequestForFrame):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::logChannel const):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::logger const):

  • UIProcess/MediaKeySystemPermissionRequestManagerProxy.h: Added.

(WebKit::MediaKeySystemPermissionRequestManagerProxy::page const):
(WebKit::MediaKeySystemPermissionRequestManagerProxy::denyRequest):

  • UIProcess/MediaKeySystemPermissionRequestProxy.cpp: Added.

(WebKit::MediaKeySystemPermissionRequestProxy::MediaKeySystemPermissionRequestProxy):
(WebKit::MediaKeySystemPermissionRequestProxy::allow):
(WebKit::MediaKeySystemPermissionRequestProxy::deny):
(WebKit::MediaKeySystemPermissionRequestProxy::invalidate):
(WebKit::MediaKeySystemPermissionRequestProxy::doDefaultAction):

  • UIProcess/MediaKeySystemPermissionRequestProxy.h: Added.

(WebKit::MediaKeySystemPermissionRequestProxy::create):
(WebKit::MediaKeySystemPermissionRequestProxy::isPending const):
(WebKit::MediaKeySystemPermissionRequestProxy::mediaKeySystemID const):
(WebKit::MediaKeySystemPermissionRequestProxy::mainFrameID const):
(WebKit::MediaKeySystemPermissionRequestProxy::frameID const):
(WebKit::MediaKeySystemPermissionRequestProxy::topLevelDocumentSecurityOrigin):
(WebKit::MediaKeySystemPermissionRequestProxy::topLevelDocumentSecurityOrigin const):
(WebKit::MediaKeySystemPermissionRequestProxy::keySystem const):

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

(WebKit::WebPageProxy::requestMediaKeySystemPermissionForFrame):
(WebKit::WebPageProxy::mediaKeySystemPermissionRequestManager):
(WebKit::WebPageProxy::requestMediaKeySystemPermissionByDefaultAction):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/EncryptedMedia/MediaKeySystemPermissionRequestManager.cpp: Added.

(WebKit::MediaKeySystemPermissionRequestManager::MediaKeySystemPermissionRequestManager):
(WebKit::MediaKeySystemPermissionRequestManager::startMediaKeySystemRequest):
(WebKit::MediaKeySystemPermissionRequestManager::sendMediaKeySystemRequest):
(WebKit::MediaKeySystemPermissionRequestManager::cancelMediaKeySystemRequest):
(WebKit::MediaKeySystemPermissionRequestManager::mediaKeySystemWasGranted):
(WebKit::MediaKeySystemPermissionRequestManager::mediaKeySystemWasDenied):

  • WebProcess/EncryptedMedia/MediaKeySystemPermissionRequestManager.h: Added.
  • WebProcess/WebCoreSupport/WebMediaKeySystemClient.cpp: Added.

(WebKit::WebMediaKeySystemClient::WebMediaKeySystemClient):
(WebKit::WebMediaKeySystemClient::pageDestroyed):
(WebKit::WebMediaKeySystemClient::requestMediaKeySystem):
(WebKit::WebMediaKeySystemClient::cancelMediaKeySystemRequest):

  • WebProcess/WebCoreSupport/WebMediaKeySystemClient.h: Added.

(WebKit::WebMediaKeySystemClient::~WebMediaKeySystemClient):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains):
(WebKit::WebPage::mediaKeySystemWasGranted):
(WebKit::WebPage::mediaKeySystemWasDenied):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::mediaKeySystemPermissionRequestManager):

  • WebProcess/WebPage/WebPage.messages.in:

Tools:

Add support for setting the permission request response from the TestRunner, for usage within layout tests.

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

(WTR::TestRunner::setIsMediaKeySystemPermissionGranted):

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

(WTR::decidePolicyForMediaKeySystemPermissionRequest):
(WTR::TestController::completeMediaKeySystemPermissionCheck):
(WTR::TestController::setIsMediaKeySystemPermissionGranted):
(WTR::TestController::createWebViewWithOptions):

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

Add basic coverage support for overriding the MediaKeySystem permission answer and thus have
the promise rejection tested in this case.

  • media/encrypted-media/mock-MediaKeySystemAccess-expected.txt:
  • media/encrypted-media/mock-MediaKeySystemAccess.html:

Feb 7, 2021:

8:18 PM Changeset in webkit [272479] by Lauro Moura
  • 4 edits in trunk

REGRESSION(r272379) [WPE] imported/w3c/web-platform-tests/mathml/relations/css-styling/mathvariant tests are Image Failing
https://bugs.webkit.org/show_bug.cgi?id=221523

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Covered by existing tests.

This change makes the mathml tests pass again, but still does not
fixes fast/text/multi-code-unit-simple-path.html, which is still not
mismatching on both GTK/WPE.

  • platform/graphics/WidthIterator.cpp:

(WebCore::WidthIterator::advanceInternal): Avoid inserting the
trailing zero for GLIB.

LayoutTests:

  • platform/wpe/TestExpectations: Remove expected failures
6:11 PM Changeset in webkit [272478] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][IFC] ASSERT(constraints.left->x <= constraints.right->x) when left and right floats run out of space
https://bugs.webkit.org/show_bug.cgi?id=220963
<rdar://problem/73861675>

Reviewed by Simon Fraser.

Source/WebCore:

Remove the incorrect assert. It's valid to have "horizontally overlapping" floats here since
we probe for a vertical range (not just a point) and vertical ranges can have
multiple left and right floats where they simply "overlap" each other when only x is taken into account.

When two floats (left and right) line up like this:

_

| LF |
|_|

_

| RF |
|_|

and as we try to find space for the inline content, we may end up with a vertical range (candidate line position + line height)
where we find both LF and RF. In this range the float boxes do overlap horizontally.
It simply means that at that vertical position there's no available space for the inline content.

Test: fast/inline/intrusive-left-right-floats-assert.html

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::floatConstraints const):

LayoutTests:

  • fast/inline/intrusive-left-right-floats-assert-expected.txt: Added.
  • fast/inline/intrusive-left-right-floats-assert.html: Added.
2:10 PM Changeset in webkit [272477] by Wenson Hsieh
  • 4 edits in trunk/Source/WebCore

Remove a duplicate implementation of EventHandler::mouseDownMayStartSelect()
https://bugs.webkit.org/show_bug.cgi?id=221531

Reviewed by Tim Horton.

Remove the current bool mouseDownMayStartSelect() const method which just returns m_mouseDownMayStartSelect,
and make the current non-const version of the method const instead. Since mouseDownMayStartSelect() was
only invoked from non-const methods, the former const version was unused.

No change in behavior.

  • page/EventHandler.cpp:

(WebCore::EventHandler::mouseDownMayStartSelect const):
(WebCore::EventHandler::mouseDownMayStartSelect): Deleted.

  • page/EventHandler.h:

(WebCore::EventHandler::mouseDownMayStartSelect const): Deleted.

  • page/Page.h:

(WebCore::Page::textInteractionEnabled const):

Make this getter const, so that we can call it in mouseDownMayStartSelect() const.

(WebCore::Page::textInteractionEnabled): Deleted.

12:25 PM Changeset in webkit [272476] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[CoordinatedGraphics] The whole content is unnecessarily repainted by animations in non-AC mode pages
https://bugs.webkit.org/show_bug.cgi?id=221391

Reviewed by Carlos Garcia Campos.

When triggerRenderingUpdate was called back, it added the whole
view area into the dirty region to repaint in non-AC mode pages.
This caused a problem that the whole content was unnecessarily
repainted by animations in non-AC mode pages

If triggerRenderingUpdate is called back,
DrawingAreaCoordinatedGraphics::display should be called to ensure
WebPage::updateRendering() called even if m_dirtyRegion is empty.

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:

(WebKit::DrawingAreaCoordinatedGraphics::triggerRenderingUpdate):
Call scheduleDisplay() instead of setNeedsDisplay().
(WebKit::DrawingAreaCoordinatedGraphics::scheduleDisplay): Don't
return early even if m_dirtyRegion is empty.
(WebKit::DrawingAreaCoordinatedGraphics::display()): Ditto.
(WebKit::DrawingAreaCoordinatedGraphics::display(UpdateInfo&)):
Return early if m_dirtyRegion is empty.

11:27 AM Changeset in webkit [272475] by weinig@apple.com
  • 75 edits in trunk/Source

Differentiate between color spaces used to tag colors and color spaces used to tag destinations
https://bugs.webkit.org/show_bug.cgi?id=221520

Reviewed by Antti Koivisto.

Source/WebCore:

Replace use of the ColorSpace enum in destination contexts (ImageBuffer, Filters, etc.)
with a new DestinationColorSpace enum that is just the limited set of color spaces
supported in that context, just SRGB and LinearSRGB. We may need to expand this to
other supported destination color spaces in the future, but currently only those two
are actually used, and color space information for higher gamut spaces like DisplayP3
are communicated differently.

This will allow us to more clearly see these two concepts as different and ensure we
we support all cases for each, without having to know to ignore some color spaces in
the destination contexts.

While changing a bunch of names, also take the oppertunity to rename ColorSpace::LinearRGB
to ColorSpace::LinearSRGB to match ColorSpace::SRGB (also done for the new
DestinationColorSpace::LinearSRGB).

  • html/CustomPaintCanvas.cpp:

(WebCore::CustomPaintCanvas::copiedImage const):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createImageBuffer const):

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::createBufferForPainting const):

  • html/ImageBitmap.cpp:

(WebCore::ImageBitmap::createImageBuffer):

  • html/OffscreenCanvas.cpp:

(WebCore::OffscreenCanvas::commitToPlaceholderCanvas):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::drawImage):
(WebCore::CanvasRenderingContext2DBase::drawTextUnchecked):

  • page/Chrome.cpp:

(WebCore::Chrome::createImageBuffer const):

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

(WebCore::ChromeClient::createImageBuffer const):

  • page/cocoa/ResourceUsageOverlayCocoa.mm:

(WebCore::createColor):

  • platform/HostWindow.h:
  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::drawPattern):

  • platform/graphics/ColorSerialization.cpp:

(WebCore::serialization):

  • platform/graphics/ColorSpace.cpp:

(WebCore::operator<<):

  • platform/graphics/ColorSpace.h:

(WebCore::callWithColorType):

  • platform/graphics/ConcreteImageBuffer.h:

(WebCore::ConcreteImageBuffer::create):

  • platform/graphics/CustomPaintImage.cpp:

(WebCore::CustomPaintImage::drawPattern):

  • platform/graphics/GradientImage.cpp:

(WebCore::GradientImage::drawPattern):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::clipToDrawingCommands):

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/GraphicsContextImpl.h:
  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::create):
(WebCore::ImageBuffer::createCompatibleBuffer):
(WebCore::ImageBuffer::copyRectToBuffer):

  • platform/graphics/ImageBuffer.h:
  • platform/graphics/ImageBufferBackend.h:

(WebCore::ImageBufferBackend::transformColorSpace):
(WebCore::ImageBufferBackend::colorSpace const):

  • platform/graphics/cairo/GraphicsContextImplCairo.h:
  • platform/graphics/cairo/ImageBufferCairoBackend.cpp:

(WebCore::ImageBufferCairoBackend::transformColorSpace):

  • platform/graphics/cairo/ImageBufferCairoBackend.h:
  • platform/graphics/cg/ColorSpaceCG.h:

(WebCore::cachedCGColorSpace):

  • platform/graphics/displaylists/DisplayListImageBuffer.h:

(WebCore::DisplayList::ImageBuffer::create):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::ClipToDrawingCommands::ClipToDrawingCommands):
(WebCore::DisplayList::ClipToDrawingCommands::colorSpace const):
(WebCore::DisplayList::ClipToDrawingCommands::decode):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::clipToDrawingCommands):

  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/graphics/filters/FEDisplacementMap.cpp:

(WebCore::FEDisplacementMap::setResultColorSpace):

  • platform/graphics/filters/FEDisplacementMap.h:
  • platform/graphics/filters/FEFlood.h:
  • platform/graphics/filters/FELighting.cpp:

(WebCore::FELighting::drawLighting):

  • platform/graphics/filters/FETile.cpp:

(WebCore::FETile::platformApplySoftware):

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::unmultipliedResult):
(WebCore::FilterEffect::premultipliedResult):
(WebCore::FilterEffect::convertImageDataToColorSpace):
(WebCore::FilterEffect::convertImageBufferToColorSpace):
(WebCore::FilterEffect::copyConvertedImageBufferToDestination):
(WebCore::FilterEffect::copyConvertedImageDataToDestination):
(WebCore::FilterEffect::copyUnmultipliedResult):
(WebCore::FilterEffect::copyPremultipliedResult):
(WebCore::FilterEffect::requiresImageDataColorSpaceConversion):
(WebCore::FilterEffect::transformResultColorSpace):

  • platform/graphics/filters/FilterEffect.h:

(WebCore::FilterEffect::operatingColorSpace const):
(WebCore::FilterEffect::setOperatingColorSpace):
(WebCore::FilterEffect::resultColorSpace const):
(WebCore::FilterEffect::setResultColorSpace):

  • platform/graphics/filters/SourceGraphic.h:

(WebCore::SourceGraphic::SourceGraphic):

  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:

(Nicosia::CairoOperationRecorder::clipToDrawingCommands):

  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h:
  • platform/graphics/win/GraphicsContextImplDirect2D.cpp:
  • platform/graphics/win/GraphicsContextImplDirect2D.h:
  • platform/graphics/win/ImageBufferDirect2DBackend.cpp:

(WebCore::ImageBufferDirect2DBackend::create):
(WebCore::ImageBufferDirect2DBackend::ImageBufferDirect2DBackend):

  • platform/mac/ThemeMac.mm:

(WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext):

  • rendering/CSSFilter.cpp:

(WebCore::CSSFilter::buildReferenceFilter):
(WebCore::CSSFilter::build):
(WebCore::CSSFilter::apply):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderLayerBacking.cpp:

(WebCore::patternForDescription):

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::paintProgressBar):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::applyClippingToContext):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::buildPrimitives const):
(WebCore::RenderSVGResourceFilter::applyResource):
(WebCore::RenderSVGResourceFilter::postApplyResource):

  • rendering/svg/RenderSVGResourceGradient.cpp:

(WebCore::createMaskAndSwapContextForTextGradient):

  • rendering/svg/RenderSVGResourceMasker.cpp:

(WebCore::RenderSVGResourceMasker::applyResource):
(WebCore::RenderSVGResourceMasker::drawContentIntoMaskImage):

  • rendering/svg/RenderSVGResourceMasker.h:
  • rendering/svg/RenderSVGResourcePattern.cpp:

(WebCore::RenderSVGResourcePattern::createTileImage const):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::createImageBuffer):
(WebCore::SVGRenderingContext::bufferForeground):

  • rendering/svg/SVGRenderingContext.h:
  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::drawPatternForContainer):

  • svg/graphics/filters/SVGFEImage.cpp:

(WebCore::FEImage::platformApplySoftware):

Source/WebKit:

  • Scripts/webkit/messages.py:
  • Shared/WebCoreArgumentCoders.h:

Coder implementation of EnumTraits for color space types is now
in WebCore.

  • GPUProcess/graphics/RemoteImageBuffer.h:

(WebKit::RemoteImageBuffer::create):

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::createImageBuffer):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::create):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::createImageBuffer):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createImageBuffer const):

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Update to use DestinationColorSpace rather than ColorSpace.

11:22 AM Changeset in webkit [272474] by weinig@apple.com
  • 23 edits in trunk

Remove more special cases from color conversion
https://bugs.webkit.org/show_bug.cgi?id=221519

Reviewed by Antti Koivisto.

Source/WebCore:

  • Remove specialized convertTo<> function which only did component type conversion with the fully general convertColor<> function.
  • Make ColorComponents a bit more ready for non-4 component colors by reworking member functionality based on a new mapColorComponents function which maps a function F over all the components of a set of ColorComponents. e.g.

auto colorComponentsC = mapColorComponents([] (auto a, auto b) { return a + b; }, colorComponentsA, colorComponentsB);

will create a new ColorComponents where each component is the sum of the
corresponding components in colorComponentsA and colorComponentsB. It's
variadic so it can take any number of ColorComponents. This allows rewriting
all of the members to be size invariant and a little less verbose.

  • Replace special case for the identity conversion in the fallback color conversion code path, and move it into it's own partial specialization of ColorConversion.
  • Replace special case for chromatic adaptation conversions and have them just use specializations of ColorConversion like all other conversions.
  • platform/graphics/ColorComponents.h:

(WebCore::mapColorComponents):
(WebCore::ColorComponents<T>::map const):
(WebCore::ColorComponents<T>::operator const):
(WebCore::ColorComponents<T>::abs const):
(WebCore::perComponentMax):
(WebCore::perComponentMin):
Add map and mapColorComponents and re-implement existing
functionality in terms of them.

  • platform/graphics/ColorConversion.cpp:

(WebCore::WhitePoint::D50>>::convert):
(WebCore::WhitePoint::D65>>::convert):
(WebCore::SRGBA<uint8_t>>::convert):
(WebCore::SRGBA<float>>::convert):
(WebCore::SRGBA<uint8_t>::ReferenceXYZ>::convert):
(WebCore::convertFromD50WhitePointToD65WhitePoint): Deleted.
(WebCore::convertFromD65WhitePointToD50WhitePoint): Deleted.

  • platform/graphics/ColorConversion.h:

(WebCore::ColorConversion::convert):
(WebCore::performChomaticAdapatation): Deleted.
Use ColorConversion specializations for the identity conversion, chomatic
adapatation, and component type conversions, rather than hard coding them
in the fallback conversion.

  • platform/graphics/ColorUtilities.h:

(WebCore::convertTo): Deleted.
Remove convertTo<>, which is now superseded by the general convertColor<>.

  • accessibility/atk/WebKitAccessibleInterfaceText.cpp:

(webkitAccessibleTextGetText):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityColorStringValue]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::setShadow):

  • html/canvas/CanvasStyle.cpp:

(WebCore::CanvasStyle::CanvasStyle):
(WebCore::CanvasStyle::isEquivalent const):

  • platform/graphics/Color.cpp:

(WebCore::Color::lightened const):
(WebCore::Color::darkened const):
(WebCore::Color::colorSpaceAndComponents const):

  • platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:

(WebCore::makeSimpleColorFromARGBCFArray):

  • platform/graphics/filters/FilterOperations.cpp:

(WebCore::FilterOperations::transformColor const):
(WebCore::FilterOperations::inverseTransformColor const):

  • platform/graphics/gtk/ColorGtk.cpp:

(WebCore::Color::Color):

  • platform/graphics/mac/ColorMac.mm:

(WebCore::makeSimpleColorFromNSColor):

  • platform/graphics/win/ColorDirect2D.cpp:

(WebCore::Color::Color):

  • platform/graphics/win/PlatformContextDirect2D.cpp:

(WebCore::PlatformContextDirect2D::brushWithColor):

  • platform/ios/ColorIOS.mm:

(WebCore::colorFromUIColor):
Adopt convertColor<> to replace convertTo<>.

Source/WebKit:

  • UIProcess/API/wpe/WebKitColor.cpp:

(webkitColorToWebCoreColor):
Replace convertTo<> component type conversion to general convertColor<>.

Tools:

  • TestWebKitAPI/Tests/WebCore/ExtendedColorTests.cpp:

(TestWebKitAPI::TEST):
Replace convertTo<> component type conversion to general convertColor<>.

11:03 AM Changeset in webkit [272473] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

[LFC][Integration] Fix http/wpt/css/css-highlight-api/ tests with inlines enabled
https://bugs.webkit.org/show_bug.cgi?id=221529

Reviewed by Zalan Bujtas.

Highlight painting code is currently tied to legacy line boxes. Disallow LFC.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::printReason):
(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

  • layout/integration/LayoutIntegrationCoverage.h:
7:33 AM Changeset in webkit [272472] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] A line with no content should always take the fast vertical alignment path
https://bugs.webkit.org/show_bug.cgi?id=221524

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

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

3:13 AM Changeset in webkit [272471] by ysuzuki@apple.com
  • 17 edits in trunk/Source/JavaScriptCore

[JSC] Replace toInteger with toIntegerOrInfinity
https://bugs.webkit.org/show_bug.cgi?id=218642

Reviewed by Alexey Shvayka.

In ECMA262 spec, ToInteger abstract operation is replaced with ToIntegerOrInfinity.
This patch renames toInteger to toIntegerOrInfinity in JSC.

  • builtins/ArrayPrototype.js:

(fill):
(includes):
(copyWithin):
(flat):
(at):

  • builtins/FunctionPrototype.js:

(bind):

  • builtins/GlobalOperations.js:

(globalPrivate.toIntegerOrInfinity):
(globalPrivate.toLength):
(globalPrivate.toInteger): Deleted.

  • builtins/RegExpPrototype.js:

(overriddenName.string_appeared_here.replace):

  • builtins/StringPrototype.js:

(repeat):
(at):

  • builtins/TypedArrayPrototype.js:

(subarray):
(at):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetEntries):
(Inspector::JSInjectedScriptHost::iteratorEntries):

  • runtime/ArrayPrototype.cpp:

(JSC::argumentClampedIndexFromStartOrEnd):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/IntlSegments.cpp:

(JSC::IntlSegments::containing):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::toIntegerOrInfinity const):
(JSC::JSValue::toLength const):
(JSC::JSValue::toInteger const): Deleted.

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:
  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::argumentClampedIndexFromStartOrEnd):
(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewProtoFuncLastIndexOf):

  • runtime/NumberPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::extractToStringRadixArgument):

  • runtime/RegExpObjectInlines.h:

(JSC::getRegExpObjectLastIndexAsUnsigned):

  • runtime/StringPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::stringIndexOfImpl):
(JSC::stringIncludesImpl):

Feb 6, 2021:

10:08 PM Changeset in webkit [272470] by Wenson Hsieh
  • 4 edits in trunk/Source/WebKit

[macOS] Add support for accessibility image extraction
https://bugs.webkit.org/show_bug.cgi?id=221262
<rdar://problem/70744978>

Reviewed by Devin Rousso.

Add WebKitAdditions support for image extraction.

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

(WebKit::WebViewImpl::requestImageExtraction): Deleted.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::requestImageExtraction):

10:02 PM Changeset in webkit [272469] by commit-queue@webkit.org
  • 33 edits in trunk

Non-special URLs should have an opaque origin
https://bugs.webkit.org/show_bug.cgi?id=162254

Patch by Alex Christensen <achristensen@webkit.org> on 2021-02-06
Reviewed by Geoff Garen.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-origin-expected.txt:
  • web-platform-tests/url/a-element-origin-xhtml-expected.txt:
  • web-platform-tests/url/url-origin-expected.txt:

Source/WebCore:

This matches the behavior of Chrome, Firefox, and the URL specification.
In order to maintain compatibility with existing apps, we do a linkedOnOrAfter check for the new behavior.
In order to allow things like web extensions to continue to work, we allow non-null origins for schemes
for which a WKURLSchemeHandler has been registered. We learned this lesson 4 years ago when we tried this change.
This also makes sense conceptually because those schemes will be handled by the containing application,
so they can be an "origin" for a page.

  • page/SecurityOrigin.cpp:

(WebCore::shouldTreatAsUniqueOrigin):

  • platform/LegacySchemeRegistry.cpp:

(WebCore::schemesHandledBySchemeHandler):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsHandledBySchemeHandler):
(WebCore::LegacySchemeRegistry::schemeIsHandledBySchemeHandler):

  • platform/LegacySchemeRegistry.h:
  • platform/cocoa/VersionChecks.h:

Source/WebInspectorUI:

  • UserInterface/Base/URLUtilities.js:

(parseURL):

Source/WebKit:

I needed to change API::SecurityOrigin from wrapping a WebCore::SecurityOrigin to wrapping a WebCore::SecurityOriginData,
otherwise it would often be null and we want it to be not null in the UI process.

  • Shared/API/APISecurityOrigin.h:

(API::SecurityOrigin::createFromString):
(API::SecurityOrigin::create):
(API::SecurityOrigin::securityOrigin const):
(API::SecurityOrigin::SecurityOrigin):

  • Shared/API/c/WKSecurityOriginRef.cpp:

(WKSecurityOriginCopyDatabaseIdentifier):
(WKSecurityOriginCopyProtocol):
(WKSecurityOriginCopyHost):
(WKSecurityOriginGetPort):

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreRemoveFetchCacheForOrigin):

  • UIProcess/API/Cocoa/WKSecurityOrigin.mm:

(-[WKSecurityOrigin protocol]):
(-[WKSecurityOrigin host]):
(-[WKSecurityOrigin port]):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::registerURLSchemeHandler):

Source/WTF:

  • wtf/URL.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
9:08 PM Changeset in webkit [272468] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Incorrect line box height when line-height is set on an empty root inline box
https://bugs.webkit.org/show_bug.cgi?id=221522

Reviewed by Antti Koivisto.

The root inline box with non-initial line height value stretches the line box even when root has no content.

e.g. <div style="line-height: 100px;"><span>content</span></div>
This content produces a ~100px tall line box.

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

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

7:28 PM Changeset in webkit [272467] by Wenson Hsieh
  • 10 edits
    1 add in trunk/Source/WebCore

Introduce image overlays and add UA shadow root support for image extraction
https://bugs.webkit.org/show_bug.cgi?id=221236

Reviewed by Ryosuke Niwa.

This patch restores some of the logic previously introduced in r164457 (and removed with r272117) to render
service button cells over images, and additionally renames and repurposes it for image extraction, a new
accessibility feature. See comments below for more details.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLElement.cpp:

(WebCore::imageOverlayElementIdentifier):
(WebCore::HTMLElement::hasImageOverlay const):

Add a helper to determine whether or not an element's UA shadow root has an image overlay element. This is
consulted in the constructor of RenderImage.

(WebCore::HTMLElement::updateWithImageExtractionResult):

Add a helper method to install image extraction content in the shadow root of an element, given an
ImageExtractionResult. This consists of an image overlay container (a relatively positioned div), which then
contains some number of absolutely positioned child div elements. Additionally load the image overlay
stylesheet as text within a style element when creating the UA shadow root.

  • html/HTMLElement.h:
  • html/shadow/imageOverlay.css: Added.

(div#image-overlay):
(div.image-overlay-text):

Add a new UA stylesheet for the image overlay shadow DOM subtree. The overlay contains a number of absolutely
positoned div elements, which are positioned inside the overlay element using using CSS transforms.

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::RenderImage):
(WebCore::RenderImage::canHaveChildren const):

Return true if we require children in the shadow root (for either media controls, or this new image overlay).

(WebCore::RenderImage::layout):
(WebCore::RenderImage::layoutShadowContent):
(WebCore::RenderImage::layoutShadowControls): Deleted.

Rename layoutShadowControls to layoutShadowContent, and allow it to support both the "shadow controls" case
(i.e. RenderMedia) and the "image extraction content" case. Additonally, remove the check for
shadowControlsNeedCustomLayoutMetrics() when setting child renderer width/height. This is currently only used
for laying out media controls in RenderMedia, but we'll need it now for all RenderImages.

  • rendering/RenderImage.h:

(WebCore::RenderImage::setHasImageOverlay):
(WebCore::RenderImage::hasShadowContent const):

Add a helper method to return whether or not the RenderImage should expect shadow root content. This is true
for both media controls (m_hasShadowControls) and for the new image overlay content (m_hasImageOverlay).

(WebCore::RenderImage::shadowControlsNeedCustomLayoutMetrics const): Deleted.

  • rendering/RenderMedia.h:

See RenderImage::layoutShadowControls above.

7:13 PM Changeset in webkit [272466] by Alexey Shvayka
  • 4 edits
    1 add in trunk

REGRESSION (r264574): Unchecked JS exception in validateAndApplyPropertyDescriptor()
https://bugs.webkit.org/show_bug.cgi?id=221494

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/redefine-property-same-value-exception-check.js: Added.

Source/JavaScriptCore:

This patch brings back exception check after sameValue(), which was accidentally
removed in r264574. sameValue() may throw OOM when comparing rope strings.

Even though this case was unreachable because of PropertyDescriptor::equalTo()
fast path, we should maintain consistent exception checks.

For the same reason, sameValue() in protoFuncFinalizationRegistryRegister() is
replaced with pointer comparison, which is safe & unobservable because target
is a known JSObject.

  • runtime/FinalizationRegistryPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSObject.cpp:

(JSC::validateAndApplyPropertyDescriptor):

6:02 PM Changeset in webkit [272465] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[WPE] Gardening mathml failures

Unreviewed test gardening.

  • platform/wpe/TestExpectations:
4:10 PM Changeset in webkit [272464] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[build.webkit.org] Switch bot watchers dashboard to use new buildbot
https://bugs.webkit.org/show_bug.cgi?id=221493

Reviewed by Alexey Proskuryakov.

  • CISupport/build-webkit-org/public_html/dashboard/Scripts/WebKitBuildbot.js:

(WebKitBuildbot):

10:01 AM Changeset in webkit [272463] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Continuation pre and post block inline boxes should not have both the start and end decorations of the original inline box
https://bugs.webkit.org/show_bug.cgi?id=221502

Reviewed by Antti Koivisto.

The generated inline boxes inside the pre/post block containers of a continuation "inherit" all the original styles e.g.

<span style="margin-left: 10px"><div></div></span>

We turn this into a continuation by constructing a set of pre and a post block containers.

(pre)Block container (anonymous)

Inline container (<span>)

Block container (<div></div>)
(post)Block container (anonymous)

Inline container (</span>)

Now the border box of the inline container inside the post block container should not have a 1px margin offset. Only the inline container in the pre block should "inherit" the left margin from the original <span>.
Legacy line layout solves this issue by calling hasInlineDirectionBordersPaddingOrMargin() during layout to decide which side of the decorations to apply,
but these inline boxes should not have those start/end values the first place.
(see fast/inline/inline-with-empty-inline-continuations.html)

  • layout/integration/LayoutIntegrationBoxTree.cpp:

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

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::updateInlineBoxDimensions):

8:01 AM Changeset in webkit [272462] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC][Quirk] Keep the root inline box baseline anchored at 0
https://bugs.webkit.org/show_bug.cgi?id=221517

Reviewed by Antti Koivisto.

In quirks mode when the root inline box has no content, a negative baseline value should not push the root baseline upwards.
e.g.
<div><span style="vertical-align: -300px">this text should be ~300px while the root baseline is at 0px</span></div>
However an inline box with negative ascent (e.g. large enough negative margin-top value) can pull the root inline box up.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::computeLineBoxHeightAndAlignInlineLevelBoxesVertically):

7:22 AM Changeset in webkit [272461] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

ASSERT NOT REACHED in WebCore::Layout::LineBuilder::candidateContentForLine
https://bugs.webkit.org/show_bug.cgi?id=221492
<rdar://problem/74032439>

Reviewed by Antti Koivisto.

Floats are not part of the inline content and they should be ignored while checking if the continuous candidate content ends in a wrap opportunity.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::candidateContentForLine):

Feb 5, 2021:

11:51 PM Changeset in webkit [272460] by Antti Koivisto
  • 2 edits in trunk/LayoutTests

Remove the Timer from Style::Scope
https://bugs.webkit.org/show_bug.cgi?id=221221
<rdar://problem/73918532>

Unreviewed followup.

  • platform/mac/TestExpectations:

imported/w3c/web-platform-tests/css/css-scoping/css-scoping-shadow-dynamic-remove-style-detached.html
should no longer be flaky on Mac

11:34 PM Changeset in webkit [272459] by don.olmstead@sony.com
  • 2 edits in trunk

[MSVC] Catalog warnings
https://bugs.webkit.org/show_bug.cgi?id=199248

Unreviewed build fix.

Missed a warning generated when building AppleWin.

  • Source/cmake/OptionsMSVC.cmake:
9:33 PM Changeset in webkit [272458] by commit-queue@webkit.org
  • 19 edits
    8 adds in trunk/LayoutTests

Update LayoutTests/imported/w3c/web-platform-tests/shadow-dom to the upstream
https://bugs.webkit.org/show_bug.cgi?id=220768

Patch by Tetsuharu Ohzeki <Tetsuharu Ohzeki> on 2021-02-05
Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

This imported https://github.com/web-platform-tests/wpt/tree/875f4c73ec1122cd0ea05580f6b56fda0ef71cc7

  • web-platform-tests/shadow-dom/HTMLSlotElement-interface.html:
  • web-platform-tests/shadow-dom/ShadowRoot-interface.html:
  • web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-attachment.tentative.html:
  • web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-basic.tentative-expected.txt:
  • web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-basic.tentative.html:
  • web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-opt-in.tentative.html: Added.
  • web-platform-tests/shadow-dom/declarative/getinnerhtml.tentative-expected.txt:
  • web-platform-tests/shadow-dom/declarative/getinnerhtml.tentative.html:
  • web-platform-tests/shadow-dom/declarative/support/declarative-child-frame.html: Added.
  • web-platform-tests/shadow-dom/declarative/support/helpers.js: Added.

(setInnerHTML):

  • web-platform-tests/shadow-dom/declarative/support/w3c-import.log: Added.
  • web-platform-tests/shadow-dom/declarative/w3c-import.log:
  • web-platform-tests/shadow-dom/focus/w3c-import.log:
  • web-platform-tests/shadow-dom/nested-slot-remove-crash.html: Added.
  • web-platform-tests/shadow-dom/slotchange-expected.txt:
  • web-platform-tests/shadow-dom/slotchange.html:
  • web-platform-tests/shadow-dom/slots-imperative-api-slotchange.tentative-expected.txt:
  • web-platform-tests/shadow-dom/slots-imperative-api-slotchange.tentative.html:
  • web-platform-tests/shadow-dom/slots-imperative-slot-api.tentative.html:
  • web-platform-tests/shadow-dom/untriaged/events/event-dispatch/test-002.html:
  • web-platform-tests/shadow-dom/w3c-import.log:

LayoutTests:

  • platform/ios/TestExpectations:
9:09 PM Changeset in webkit [272457] by don.olmstead@sony.com
  • 2 edits in trunk

[MSVC] Catalog warnings
https://bugs.webkit.org/show_bug.cgi?id=199248

Reviewed by Fujii Hironori.

Catalog all the MSVC warnings providing the message and a link to documentation
for the warning. Some warnings are noted as being against the style guide so they
won't be addressed. All other warnings could potentially be fixed in the codebase.

  • Source/cmake/OptionsMSVC.cmake:
8:06 PM Changeset in webkit [272456] by eric.carlson@apple.com
  • 2 edits in trunk/Tools

[Mac] Disable MediaSessionTest API tests
https://bugs.webkit.org/show_bug.cgi?id=221514
<rdar://74048912>

Unreviewed, disable tests that don't play well with other media tests running
at the same time.

  • TestWebKitAPI/Tests/WebKitCocoa/MediaSession.mm:

(TestWebKitAPI::TEST_F):

6:48 PM Changeset in webkit [272455] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Do not display identifier in status bubble tooltips
https://bugs.webkit.org/show_bug.cgi?id=221513

Unreviewed infrastucture fix.

  • CISupport/ews-app/ews/views/statusbubble.py:
4:56 PM Changeset in webkit [272454] by Russell Epstein
  • 1 copy in tags/Safari-612.1.2.4

Tag Safari-612.1.2.4.

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

Deploy WTFMove in the constructor for AutofillElements
https://bugs.webkit.org/show_bug.cgi?id=221507

Patch by Ricky Mondello <Ricky Mondello> on 2021-02-05
Reviewed by Wenson Hsieh.

  • editing/cocoa/AutofillElements.cpp:

(WebCore::AutofillElements::AutofillElements):

4:44 PM Changeset in webkit [272452] by Russell Epstein
  • 8 edits in branches/safari-612.1.2-branch/Source

Versioning.

WebKit-7612.1.2.4

4:43 PM Changeset in webkit [272451] by commit-queue@webkit.org
  • 7 edits in trunk

REGRESSION(r272337): crash under WebCore::SpeechRecognizer::setInactive()
https://bugs.webkit.org/show_bug.cgi?id=221451

Patch by Sihui Liu <sihui_liu@appe.com> on 2021-02-05
Reviewed by Youenn Fablet.

Source/WebCore:

Stop sending final update in SpeechRecognizer's destructor and send it in prepareForDestruction() instead, so
that no update will be sent for a destroyed SpeechRecognizer.

API test: WebKit2.SpeechRecognitionWebProcessCrash.

  • Modules/speech/SpeechRecognizer.cpp:

(WebCore::SpeechRecognizer::prepareForDestruction):
(WebCore::SpeechRecognizer::~SpeechRecognizer): Deleted.

  • Modules/speech/SpeechRecognizer.h:

Source/WebKit:

  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::handleRequest):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm:

(TestWebKitAPI::TEST):

4:16 PM Changeset in webkit [272450] by Darin Adler
  • 2 edits in trunk/Source/WebKit

Add missing null checks to decoding functions involving RetainPtr
https://bugs.webkit.org/show_bug.cgi?id=221441

Reviewed by Anders Carlsson.

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<WebCore::ResourceRequest>::decodePlatformData): Fail if the dictionary
is null: the encoder never encodes a null dictionary.
(IPC::ArgumentCoder<WebCore::CertificateInfo>::decode): Fail if the SecTrustRef is null:
the encoder never encodes a null SecTrustRef. Fail if the certificate chain array is null:
the encoder never encodes a null CFArrayRef.
(IPC::decodeNSError): Return a RetainPtr instead of using a bool return value and a
RetainPtr out argument. Fail if the user info dictionary is null: the encoder never encodes
a null user info dictionary.
(IPC::ArgumentCoder<WebCore::ResourceError>::decodePlatformData): Updated for the change
to the interface of decodeNSError.
(IPC::ArgumentCoder<WebCore::ContentFilterUnblockHandler>::decode): Fail if the CFDataRef
is null: the encoder never encodes a null CFDataRef.

4:07 PM Changeset in webkit [272449] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

REGRESSION (r271815): [macOS] /dev/dtracehelper is blocked on customer builds, even with SIP disabled
https://bugs.webkit.org/show_bug.cgi?id=221501
<rdar://73893768>

Reviewed by Per Arne Vollan.

Instead of requiring apple-internal to use /dev/dtracehelper, allow on systems where
SIP has been deactivated.

  • WebProcess/com.apple.WebProcess.sb.in: Use CSR filter to gate access to /dev/dtracehelper
3:32 PM Changeset in webkit [272448] by commit-queue@webkit.org
  • 4 edits in trunk

Allow Password AutoFill in more text field configurations

https://bugs.webkit.org/show_bug.cgi?id=221429
rdar://problem/73899947

Patch by Ricky Mondello <Ricky Mondello> on 2021-02-05
Reviewed by Wenson Hsieh.

Extend where we'll offer Password AutoFill in web views. Allow all type=password fields. Allow in situations
with back-to-back type=password fields, but only attempt to fill the second password field when it's empty,
to flexibly accomodate account creation and password change scenarios.

I did a round of manual testing with the related existing OS feature.

  • editing/cocoa/AutofillElements.cpp:

(WebCore::AutofillElements::AutofillElements): Add secondPassword to initializer.
(WebCore::AutofillElements::computeAutofillElements): Change the algorithm as described above.
(WebCore::AutofillElements::autofill): Also fill the secondPassword, if applicable.

  • editing/cocoa/AutofillElements.h: Change constructor and add member variable.
3:26 PM Changeset in webkit [272447] by Alan Coon
  • 1 copy in tags/Safari-612.1.2.3

Tag Safari-612.1.2.3.

3:23 PM Changeset in webkit [272446] by Alan Coon
  • 8 edits in branches/safari-612.1.2-branch/Source

Versioning.

WebKit-7612.1.2.3

3:18 PM Changeset in webkit [272445] by eric.carlson@apple.com
  • 31 edits
    2 adds in trunk

[Mac] Connect MediaSession with MediaRemote and NowPlaying
https://bugs.webkit.org/show_bug.cgi?id=221431
<rdar://problem/74000363>

Reviewed by Jer Noble.

Source/WebCore:

Route all remote control commands to navigator.mediaSession when it has any
registered action handlers, and pass navigator.mediaSession.metadata to NowPlaying.

Tested with new API tests in Tools/TestWebKitAPI/Tests/WebKitCocoa/MediaSession.mm.

  • Modules/mediasession/MediaImage.h:

(WebCore::MediaImage::encode const):
(WebCore::MediaImage::decode):

  • Modules/mediasession/MediaMetadata.cpp:

(WebCore::MediaMetadata::setTitle):
(WebCore::MediaMetadata::setArtist):
(WebCore::MediaMetadata::setAlbum):
(WebCore::MediaMetadata::setArtwork):

  • Modules/mediasession/MediaMetadata.h:

(WebCore::MediaMetadata::title const):
(WebCore::MediaMetadata::artist const):
(WebCore::MediaMetadata::album const):
(WebCore::MediaMetadata::artwork const):
(WebCore::MediaMetadata::metadata const):

  • Modules/mediasession/MediaMetadataInit.h:

(WebCore::MediaMetadataInit::encode const):
(WebCore::MediaMetadataInit::decode):

  • Modules/mediasession/MediaSession.cpp:

(WebCore::nextLogIdentifier):
(WebCore::logChannel):
(WebCore::logClassName):
(WebCore::platformCommandForMediaSessionAction):
(WebCore::MediaSession::MediaSession):
(WebCore::MediaSession::setMetadata):
(WebCore::MediaSession::setPlaybackState):
(WebCore::MediaSession::setActionHandler):
(WebCore::MediaSession::setPositionState):

  • Modules/mediasession/MediaSession.h:

(WebCore::MediaSession::hasActiveActionHandlers const):
(WebCore::MediaSession::logger const):
(WebCore::MediaSession::logIdentifier const):
(WTF::LogArgument<WebCore::MediaSessionPlaybackState>::toString):
(WTF::LogArgument<WebCore::MediaSessionAction>::toString):

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

(WebCore::HTMLMediaElement::didReceiveRemoteControlCommand):

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::didReceiveRemoteControlCommand):
(WebCore::MediaElementSession::nowPlayingInfo const):

  • html/MediaElementSession.h:
  • page/ChromeClient.h:
  • platform/RemoteCommandListener.cpp:

(WebCore::RemoteCommandListener::scheduleSupportedCommandsUpdate):
(WebCore::RemoteCommandListener::addSupportedCommand):
(WebCore::RemoteCommandListener::removeSupportedCommand):

  • platform/RemoteCommandListener.h:
  • platform/audio/NowPlayingInfo.h:

(WebCore::NowPlayingInfo::decode):

  • platform/audio/PlatformMediaSession.cpp:

(WebCore::convertEnumerationToString):

  • platform/audio/PlatformMediaSession.h:
  • platform/audio/PlatformMediaSessionManager.h:

(WebCore::PlatformMediaSessionManager::addSupportedCommand):
(WebCore::PlatformMediaSessionManager::removeSupportedCommand):

  • platform/audio/cocoa/MediaSessionManagerCocoa.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::scheduleSessionStatusUpdate):
(WebCore::MediaSessionManagerCocoa::sessionCanProduceAudioChanged):
(WebCore::MediaSessionManagerCocoa::addSupportedCommand):
(WebCore::MediaSessionManagerCocoa::removeSupportedCommand):
(WebCore::MediaSessionManagerCocoa::setNowPlayingInfo):

  • platform/mac/MediaRemoteSoftLink.cpp:
  • platform/mac/MediaRemoteSoftLink.h:
  • platform/mac/RemoteCommandListenerMac.h:
  • platform/mac/RemoteCommandListenerMac.mm:

(WebCore::mediaRemoteCommandForPlatformCommand):
(WebCore::RemoteCommandListenerMac::defaultCommands):
(WebCore::isSeekCommand):
(WebCore::RemoteCommandListenerMac::updateSupportedCommands):
(WebCore::RemoteCommandListenerMac::RemoteCommandListenerMac):

Source/WebCore/PAL:

  • pal/spi/mac/MediaRemoteSPI.h:

Source/WebKit:

Add a private preference so the new MediaSession API test can enable the feature.

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _mediaSessionEnabled]):
(-[WKPreferences _setMediaSessionEnabled:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/MediaSession.mm: Added.

(TestWebKitAPI::MediaSessionTest::webView):
(TestWebKitAPI::MediaSessionTest::webViewPid):
(TestWebKitAPI::MediaSessionTest::getNowPlayingClient):
(TestWebKitAPI::MediaSessionTest::getNowPlayingClientPid):
(TestWebKitAPI::MediaSessionTest::loadPageAndBecomeNowPlaying):
(TestWebKitAPI::MediaSessionTest::runScriptWithUserGesture):
(TestWebKitAPI::MediaSessionTest::play):
(TestWebKitAPI::MediaSessionTest::pause):
(TestWebKitAPI::MediaSessionTest::sendMediaRemoteCommand):
(TestWebKitAPI::MediaSessionTest::sendMediaRemoteSeekCommand):
(TestWebKitAPI::MediaSessionTest::listenForEventMessages):
(TestWebKitAPI::MediaSessionTest::eventListenerWasCalled):
(TestWebKitAPI::MediaSessionTest::waitForEventListenerToBeCalled):
(TestWebKitAPI::MediaSessionTest::listenForSessionHandlerMessages):
(TestWebKitAPI::MediaSessionTest::sessionHandlerWasCalled):
(TestWebKitAPI::MediaSessionTest::waitForSessionHandlerToBeCalled):
(TestWebKitAPI::MediaSessionTest::getSupportedCommands):
(TestWebKitAPI::TEST_F):

  • TestWebKitAPI/Tests/WebKitCocoa/media-remote.html: Added.
3:09 PM Changeset in webkit [272444] by Alan Coon
  • 1 copy in tags/Safari-612.1.2.2

Tag Safari-612.1.2.2.

3:06 PM Changeset in webkit [272443] by Russell Epstein
  • 1 copy in tags/Safari-611.1.14

Tag Safari-611.1.14.

3:01 PM Changeset in webkit [272442] by Alan Coon
  • 6 edits
    1 add in branches/safari-612.1.2-branch/Source/WebCore

Cherry-pick r272377. rdar://problem/73989711

Process LocalizableAdditions string file correctly.
https://bugs.webkit.org/show_bug.cgi?id=221358

Reviewed by Tim Horton.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/scripts/preprocessor.pm: (applyPreprocessor):

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

2:52 PM Changeset in webkit [272441] by Alan Coon
  • 8 edits in branches/safari-612.1.2-branch/Source

Versioning.

WebKit-7612.1.2.2

2:44 PM Changeset in webkit [272440] by Lauro Moura
  • 13 edits in trunk/LayoutTests

[GLIB] Rebaseline and gardening commong gtk/wpe failures.

Unreviewed test gardening.

  • platform/glib/TestExpectations:

Rebaselines after r272100

  • platform/glib/tables/mozilla/bugs/bug106795-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug16252-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug20579-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug82946-2-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug16252-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug20579-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug82946-2-expected.txt:

Rebaseline after r272035

  • platform/gtk/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:

Rebaseline after r271110

  • platform/gtk/fast/block/basic/014-expected.txt:
  • platform/wpe/fast/block/basic/014-expected.txt:
2:40 PM Changeset in webkit [272439] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

[Cocoa] CRASH in MediaPlayerPrivateMediaSourceAVFObjC::removeAudioRenderer()
https://bugs.webkit.org/show_bug.cgi?id=221490
<rdar://73966316>

Reviewed by Eric Carlson.

Add null-checks to every use of player() in SourceBufferPrivateAVFObjC.

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

(WebCore::SourceBufferPrivateAVFObjC::didParseInitializationData):
(WebCore::SourceBufferPrivateAVFObjC::willProvideContentKeyRequestInitializationDataForTrackID):
(WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):
(WebCore::SourceBufferPrivateAVFObjC::appendCompleted):
(WebCore::SourceBufferPrivateAVFObjC::destroyParser):
(WebCore::SourceBufferPrivateAVFObjC::destroyRenderers):
(WebCore::SourceBufferPrivateAVFObjC::readyState const):
(WebCore::SourceBufferPrivateAVFObjC::setReadyState):
(WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
(WebCore::SourceBufferPrivateAVFObjC::flushVideo):
(WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
(WebCore::SourceBufferPrivateAVFObjC::bufferWasConsumed):
(WebCore::SourceBufferPrivateAVFObjC::setDecompressionSession):
(WebCore::SourceBufferPrivateAVFObjC::player const):

2:31 PM Changeset in webkit [272438] by Devin Rousso
  • 5 edits in trunk/Source/WebCore

[macOS] REGRESSION(r272352): missing track for videos that haven't fully loaded
https://bugs.webkit.org/show_bug.cgi?id=221500

Reviewed by Eric Carlson.

r272352 removed the .track.fill that was used as a "background" for the slider. For videos
that aren't fully loaded and are buffering, that "background" is necessary to indicate where
the slider is as the .track.secondary only represents what's been buffered not the entire
length of the video/slider.

  • Modules/modern-media-controls/controls/slider.js:

(Slider.prototype.commit):

  • Modules/modern-media-controls/controls/slider.css:

(.slider > .custom-slider > .fill.primary): Added.
(.slider > .custom-slider > .fill.track): Added.
(.slider > .custom-slider > .fill.secondary): Added.
(.slider > .custom-slider > .primary): Deleted.
(.slider > .custom-slider > .secondary): Deleted.
Add back the background fill track removed in r272352, but adjust it so that it only draws
after the knob so that on macOS it doesn't draw in the space around the knob.

  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:

(MacOSFullscreenMediaControls):

  • Modules/modern-media-controls/controls/macos-inline-media-controls.js:

(MacOSInlineMediaControls):
Remove the secondaryValue calls since the background fill track has been added back.

1:16 PM Changeset in webkit [272437] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[BigSur WK1] media/media-source/media-source-webm-append-buffer-after-abort.html is consistently failing
https://bugs.webkit.org/show_bug.cgi?id=221369

Unreviewed test gardening.

Patch by Amir Mark Jr <Amir Mark Jr.> on 2021-02-05

  • platform/mac-wk1/TestExpectations: Mark as skip because test is not supported on wk1
1:08 PM Changeset in webkit [272436] by weinig@apple.com
  • 13 edits in trunk

Generalize color conversion code to reduce number of overloads required
https://bugs.webkit.org/show_bug.cgi?id=221443

Reviewed by Darin Adler.

Source/WebCore:

Replace overloaded named conversion functions (e.g. toSRGBA(), toLab(), etc.)
with template specializion of a new ColorConversion struct:

template<> struct ColorConversion<Output, Input> {

Output convert(const Input& color) { ... }

};

which is accessed via a new generic convertColor<ColorType>() function.

This allows for a few improvements:

  • Removes the need for each color type to define an identity conversion.
  • Removes the need for each color type to define an generic conversion.
  • Allows integration with component type conversion so a call like

convertTo<SRGBA<uint8_t>>(toSRGBA(hsla))

can now be written just as

convertColor<SRGBA<uint8_t>>(hsla)

This also provides a path forward for more optimizations / simplifications
since we can now reason about conversion based purely on types.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::parseRGBParameters):
(WebCore::CSSPropertyParserHelpers::parseHSLParameters):
(WebCore::CSSPropertyParserHelpers::parseHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseLabParameters):
(WebCore::CSSPropertyParserHelpers::parseLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionParameters):
Switch to convertColor<> and replace some unnecessary type with auto.

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::detectContentInRange):
Adopt Color::toColorTypeLossy<> and convertColor<>.

  • platform/graphics/Color.cpp:

(WebCore::Color::invertedColorWithAlpha const):
Adopt convertColor<>.

  • platform/graphics/Color.h:

(WebCore::Color::toSRGBALossy const):
(WebCore::Color::toColorTypeLossy const):
Add generic conversion function toColorTypeLossy<>() and re-implement
toSRGBALossy<>() using it.

  • platform/graphics/ColorConversion.cpp:
  • platform/graphics/ColorConversion.h:

Replace function overloads with explicit specialization of the new ColorConversion
struct. Replace identity functions and fallback functions with a single non-specialized
ColorConversion which uses constexpr to handle the identity case, conversion to/from
SRGBA<uint8_t> (the only non-float color) and the fallback case.

  • platform/graphics/ColorUtilities.cpp:

(WebCore::luminance):
Adopt convertColor<>.

  • platform/graphics/cg/ColorCG.cpp:

(WebCore::roundAndClampToSRGBALossy):
(WebCore::leakCGColor):
Adopt convertColor<>.

  • platform/graphics/filters/FELighting.cpp:

(WebCore::FELighting::drawLighting):
Adopt toColorTypeLossy<>.

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::datePlaceholderTextColor const):
Adopt Color::toColorTypeLossy<> and convertColor<>.

Tools:

  • TestWebKitAPI/Tests/WebCore/ColorTests.cpp:

(TestWebKitAPI::TEST):
Update tests to use convertColor<>.

12:48 PM Changeset in webkit [272435] by Antti Koivisto
  • 4 edits
    2 adds in trunk

[LFC][Integration] Hit testing broken for descendants of pointer-events:none boxes
https://bugs.webkit.org/show_bug.cgi?id=221460

Reviewed by Zalan Bujtas.

Source/WebCore:

Descendants of pointer-events:none boxes may still be hittestable if they override the value.
LFC integration hit testing code didn't take this into account.

Test: fast/events/hittest-pointer-event-none-descendants.html

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::hitTest):

Replaced and inline-block boxes do the visibility/pointer-events test themselves.
This code just needs to take care of text boxes.

LayoutTests:

  • fast/events/hittest-pointer-event-none-descendants-expected.html: Added.
  • fast/events/hittest-pointer-event-none-descendants.html: Added.
12:27 PM Changeset in webkit [272434] by youenn@apple.com
  • 15 edits in trunk

Enable audio capture for speech recognition in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=221457

Reviewed by Eric Carlson.

Source/WebCore:

Add fake deviceId to play nice with capture ASSERTs.
Covered by updated tests.

  • Modules/speech/SpeechRecognitionCaptureSource.cpp:

(WebCore::SpeechRecognitionCaptureSource::createRealtimeMediaSource):

Source/WebKit:

Allow to create remote sources without any constraint.
To do so, we serialize through IPC a MediaConstraints with isValid = false and treat it as no constraint in capture process.

Make sure to send sandbox extensions and authorizations for GPUProcess to capture in case of speech recognition audio capture request.

In case of GPUProcess audio capture, send the request to capture to WebProcess like done for iOS.
WebProcess is then responsible to get audio samples from GPUProcess and forward them to UIProcess.
A future refactoring should move speech recognition to GPUProcess.

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::grantRequest):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::createRealtimeMediaSourceForSpeechRecognition):

  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp:

(WebKit::SpeechRecognitionRealtimeMediaSourceManager::grantSandboxExtensions):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::createSource):

  • WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:

(WebKit::RemoteRealtimeMediaSource::create):
(WebKit::RemoteRealtimeMediaSource::RemoteRealtimeMediaSource):
(WebKit::RemoteRealtimeMediaSource::createRemoteMediaSource):
(WebKit::RemoteRealtimeMediaSource::~RemoteRealtimeMediaSource):
(WebKit::RemoteRealtimeMediaSource::cloneVideoSource):
(WebKit::RemoteRealtimeMediaSource::gpuProcessConnectionDidClose):

  • WebProcess/cocoa/RemoteRealtimeMediaSource.h:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::AudioFactory::createAudioCaptureSource):
(WebKit::UserMediaCaptureManager::VideoFactory::createVideoCaptureSource):
(WebKit::UserMediaCaptureManager::DisplayFactory::createDisplayCaptureSource):

LayoutTests:

  • fast/speechrecognition/ios/restart-recognition-after-stop.html:
  • fast/speechrecognition/ios/start-recognition-then-stop.html:
  • fast/speechrecognition/start-recognition-then-stop.html:
  • fast/speechrecognition/start-second-recognition.html:
12:18 PM Changeset in webkit [272433] by Patrick Angle
  • 18 edits
    2 adds in trunk

Web Inspector: Implement backend support for maintaining a list of Grid layout contexts
https://bugs.webkit.org/show_bug.cgi?id=221228

Reviewed by Devin Rousso.

Source/JavaScriptCore:

Added CSS.LayoutContextType property to DOM.Node and added CSS.nodeLayoutContextTypeChanged event.

  • inspector/protocol/CSS.json:
  • Added CSS.LayoutContextType type.
  • Added DOM.nodeLayoutContextTypeChanged event.
  • inspector/protocol/DOM.json:
  • Added layoutContextType property to DOM.Node type.

Source/WebCore:

Test: inspector/dom/layout-context.html

Implemented support for getting the layout context for grid nodes as part of the existing DOM.Node protocol
object as well as firing an event when the layout context type changes for a node.

  • dom/Element.cpp:

(WebCore::Element::didChangeRenderer):

  • Handle the underlying RenderObject changing.
  • dom/Element.h:
  • dom/Node.h:

(WebCore::Node::didChangeRenderer):

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::nodeLayoutContextChangedImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::nodeLayoutContextChanged):

  • Add instrumentation for layout context changes.
  • inspector/agents/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::layoutContextTypeForRenderer):
(WebCore::InspectorCSSAgent::nodeLayoutContextTypeChanged):

  • Inform the frontend when a known node changes its layout context.
  • inspector/agents/InspectorCSSAgent.h:
  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForNode):

  • Set the layout context for nodes that will be new to the frontend.
  • rendering/RenderObject.h:

(WebCore::Node::setRenderer):

Source/WebInspectorUI:

Added layoutContextType property to WI.DOMNode and listener for CSS.nodeLayoutContextTypeChanged event.

  • UserInterface/Controllers/DOMManager.js:

(WI.DOMManager.prototype.nodeLayoutContextTypeChanged):

  • When a node's layout context changes, update the WI.DOMNode
  • UserInterface/Models/DOMNode.js:

(WI.DOMNode):
(WI.DOMNode.prototype.get layoutContextType):
(WI.DOMNode.prototype.set layoutContextType):

  • Fire an event when the layout context type changes.
  • UserInterface/Protocol/CSSObserver.js:

(WI.CSSObserver.prototype.nodeLayoutContextTypeChanged):

  • Listen for the CSS.nodeLayoutContextTypeChanged event.

LayoutTests:

Added tests for CSS.nodeLayoutContextTypeChanged event and corresponding properties.

  • inspector/css/nodeLayoutContextTypeChanged-expected.txt: Added.
  • inspector/css/nodeLayoutContextTypeChanged.html: Added.
11:26 AM Changeset in webkit [272432] by Alan Coon
  • 1 copy in tags/Safari-612.1.2.1

Tag Safari-612.1.2.1.

11:13 AM Changeset in webkit [272431] by ysuzuki@apple.com
  • 2 edits in trunk/JSTests

Unreviewd, update test262/config.yaml

Tests are failing only in OSS build since OSS build is building WebKit with very old ICU headers.

  • test262/config.yaml:
11:08 AM Changeset in webkit [272430] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, follow-up change after r272428
https://bugs.webkit.org/show_bug.cgi?id=221454

isPropertyNameExcluded can invoke GC etc. Structure::forEachProperty can miss PropertyTable and Structure
reference when it is highly optimized, so that it can crash if GC happens in the middle of Structure::forEachProperty.

  1. Insert ensureStillAliveHere in Structure::forEachProperty to ensure liveness of PropertyTable
  2. We should not perform side-effectful operation including GC in Structure::forEachProperty. So we moved isPropertyNameExcluded.
  • runtime/StructureInlines.h:

(JSC::Structure::forEachProperty):

10:59 AM Changeset in webkit [272429] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

[GPUProcess] If the GPUProcess crashes during fullscreen playback, video pauses and exits fullscreen
https://bugs.webkit.org/show_bug.cgi?id=221485

Reviewed by Eric Carlson.

If the GPUProcess crashed during fullscreen playback, video would pause and exit fullscreen. This was suboptimal.
The video now just resumes playing while in fullscreen, just like we do when inline.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerReloadAndResumePlaybackIfNeeded):

10:58 AM Changeset in webkit [272428] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] globalFuncCopyDataProperties should not perform GC-sensitive operation in the middle of Structure::forEachProperty
https://bugs.webkit.org/show_bug.cgi?id=221454

Reviewed by Mark Lam.

JSTests:

  • stress/copy-data-properties-fast-path.js: Added.

(foo):

Source/JavaScriptCore:

isPropertyNameExcluded can invoke GC etc. And running Structure::forEachProperty
is fragile state against any side-effect including GC.
We should not perform GC-sensitive operation during Structure::forEachProperty.

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

10:53 AM Changeset in webkit [272427] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GPU Process] Repopulate the TestExpectations file #2
https://bugs.webkit.org/show_bug.cgi?id=221446

Unreviewed test gardening.

Patch by Rini Patel <rini_patel@apple.com> on 2021-02-05

  • gpu-process/TestExpectations:
10:49 AM Changeset in webkit [272426] by youenn@apple.com
  • 5 edits
    2 deletes in trunk/LayoutTests

Remove GPUProcess flag in MediaRecorder tests
https://bugs.webkit.org/show_bug.cgi?id=221401

Reviewed by Eric Carlson.

Remove test that is the same as http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html.

  • http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess-expected.txt: Removed.
  • http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess.html: Removed.
  • http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html:
  • http/wpt/mediarecorder/pause-recording.html:

Increase timer to cope with added latency introduced by IPC messaging.

  • platform/mac-wk2/TestExpectations:
10:44 AM Changeset in webkit [272425] by Kate Cheney
  • 4 edits in trunk/Source/WebKit

ASSERTION FAILED: Completion handler should always be called under WebKit::VideoFullscreenManagerProxy::forEachSession
https://bugs.webkit.org/show_bug.cgi?id=221343
<rdar://problem/73939450>

Reviewed by Youenn Fablet.

If a client tries to exit fullscreen mode when there is no fullscreen
video present, we should call the completion handler immediately and
return.

Rename requestFullscreenModeWithCallback to requestCloseAllMediaPresentations
because the completion handler is only called when all media presentations
are closed. requestFullscreenModeWithCallback makes it seem like we
can use this function with other modes besides VideoFullscreenModeNone.

No new tests, this will fix a crashing iOS test.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView closeAllMediaPresentations:]):

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

(WebKit::VideoFullscreenModelContext::requestCloseAllMediaPresentations):
(WebKit::VideoFullscreenManagerProxy::requestCloseAllMediaPresentations):
(WebKit::VideoFullscreenModelContext::requestFullscreenModeWithCallback): Deleted.
(WebKit::VideoFullscreenManagerProxy::requestFullscreenModeWithCallback): Deleted.

10:40 AM Changeset in webkit [272424] by Russell Epstein
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.1.15

10:31 AM Changeset in webkit [272423] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] commit-queue should use commits.webkit.org url instead of trac url
https://bugs.webkit.org/show_bug.cgi?id=221476

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(PushCommitToWebKitRepo.url_for_revision):

  • CISupport/ews-build/steps_unittest.py:
10:27 AM Changeset in webkit [272422] by youenn@apple.com
  • 6 edits
    2 adds in trunk

Make sure click attribution is processed in case of redirected kept alive loads
https://bugs.webkit.org/show_bug.cgi?id=221453
<rdar://problem/70896640>

Reviewed by John Wilander.

Source/WebCore:

Test: http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive.html

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::addSubresourceLoader):
Update assertion to cope with keep alive fetches which are similar to beacon/ping loads.

Source/WebKit:

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):
Move the click attribution processing before kept alive check.

LayoutTests:

  • http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive-expected.txt: Added.
  • http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive.html: Added.
  • http/tests/privateClickMeasurement/resources/redirectToConversion.php:
10:12 AM Changeset in webkit [272421] by Darin Adler
  • 9 edits in trunk/Source/WebCore

StyleImage refinement to follow up recent changes
https://bugs.webkit.org/show_bug.cgi?id=221434

Reviewed by Sam Weinig.

  • rendering/style/FillLayer.cpp:

(WebCore::FillLayer::hasOpaqueImage const): Pass a reference.

  • rendering/style/StyleCachedImage.cpp:

(WebCore::StyleCachedImage::knownToBeOpaque const): Take a reference.

  • rendering/style/StyleCachedImage.h: Take a reference.
  • rendering/style/StyleGeneratedImage.cpp:

(WebCore::StyleGeneratedImage::imageSize const): Simplify using an early return.
Remove an unnnecessary redundant null check.
(WebCore::StyleGeneratedImage::knownToBeOpaque const): Take and pass a reference.

  • rendering/style/StyleGeneratedImage.h: Take a reference.
  • rendering/style/StyleImage.h: Take a reference.
  • rendering/style/StyleMultiImage.cpp:

(WebCore::StyleMultiImage::knownToBeOpaque const): Take a reference.

  • rendering/style/StyleMultiImage.h: Take a reference.
9:38 AM Changeset in webkit [272420] by Chris Dumez
  • 2 edits in trunk/LayoutTests

REGRESSION (r272392): [ MacOS ] webaudio/audioworklet-addModule-failure.html is flakey timing out
https://bugs.webkit.org/show_bug.cgi?id=221469
<rdar://problem/74027196>

Unreviewed, make sure the test triggers JS garbage collection before exiting so that the next test does
not fail with an out-of-memory error.

  • webaudio/audioworket-out-of-memory.html:
9:20 AM Changeset in webkit [272419] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

Remove access to IOMobileFramebufferUserClient
https://bugs.webkit.org/show_bug.cgi?id=221408
<rdar://problem/70551457>

Reviewed by Brent Fulgham.

Remove access to the IOKit class IOMobileFramebufferUserClient in the WebContent process on macOS and iOS
when the GPU process is enabled.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
9:11 AM Changeset in webkit [272418] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

CrashTracer: com.apple.WebKit.Networking at WebKit: WebKit::ResourceLoadStatisticsDatabaseStore::setPrevalentResource
https://bugs.webkit.org/show_bug.cgi?id=221432
<rdar://problem/67069819>

Reviewed by John Wilander.

We are seeing crashes in ResourceLoadStatisticsDatabaseStore::setPrevalentResource
as a result of trying to use a nullopt domainID value. In theory this should
never be WTF::nullopt but is because of a failing SQLite query in
ResourceLoadStatisticsDatabaseStore::domainID which reports the error "not an error".

To fix this we should check the domain ID and return early with a
debug assert in setPrevalentResource() if it is WTF::nullopt to avoid
a crash. Additionally, we should add more information to the logging
statement, specifically the SQLite statement string, to try and debug further.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::domainID const):
(WebKit::ResourceLoadStatisticsDatabaseStore::setPrevalentResource):

8:54 AM Changeset in webkit [272417] by commit-queue@webkit.org
  • 9 edits in trunk/Source/WebKit

SpeechRecognitionPermissionManager should not handle requests that are already cancelled
https://bugs.webkit.org/show_bug.cgi?id=221296

Patch by Sihui Liu <sihui_liu@appe.com> on 2021-02-05
Reviewed by Youenn Fablet.

It is possible that client asks to stop/abort pending requests, which are waiting for permission check to be
done. In our current implementation, SpeechRecognitionPermissionManager would perform permission checks for
these cancelled requests, which is unnecessary and may cause extra prompts. We should let
SpeechRecognitionPermissionManager check if request is still valid before checking permissions.

No test is added as this behavior change is not observable without resetting the TCC permission between requests.

  • UIProcess/SpeechRecognitionPermissionManager.cpp:

(WebKit::SpeechRecognitionPermissionManager::request):
(WebKit::SpeechRecognitionPermissionManager::startNextRequest):
(WebKit::SpeechRecognitionPermissionManager::startProcessingRequest):
(WebKit::SpeechRecognitionPermissionManager::continueProcessingRequest):
(WebKit::SpeechRecognitionPermissionManager::requestUserPermission):

  • UIProcess/SpeechRecognitionPermissionManager.h:
  • UIProcess/SpeechRecognitionPermissionRequest.h:

(WebKit::SpeechRecognitionPermissionRequest::create):
(WebKit::SpeechRecognitionPermissionRequest::~SpeechRecognitionPermissionRequest):
(WebKit::SpeechRecognitionPermissionRequest::request):
(WebKit::SpeechRecognitionPermissionRequest::SpeechRecognitionPermissionRequest):
(WebKit::SpeechRecognitionPermissionRequest::origin const): Deleted.
(WebKit::SpeechRecognitionPermissionRequest::lang const): Deleted.
(WebKit::SpeechRecognitionPermissionRequest::frameIdentifier const): Deleted.

  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::requestPermissionForRequest):
(WebKit::SpeechRecognitionServer::sendUpdate):

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

(WebKit::WebPageProxy::requestSpeechRecognitionPermission):

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

(WebKit::WebProcessProxy::createSpeechRecognitionServer):

8:38 AM Changeset in webkit [272416] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Add support for "word separator" when the whitespace content has multiple characters
https://bugs.webkit.org/show_bug.cgi?id=221355

Reviewed by Antti Koivisto.

Keep track of word separator characters in whitespace content even when the whitespace content has multiple characters.
This fixes cases when "word-spacing" has a non-zero value in "space and tab preserve" content (e.g <pre style="word-spacing: 200px">This content has spaces and tabs</pre>)
(On trunk we fail to adjust the run position with the word-spacing value because the whitespace content is not marked as a word separator.)

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::moveToNextNonWhitespacePosition):
(WebCore::Layout::InlineTextItem::createAndAppendTextItems):

  • layout/inlineformatting/InlineTextItem.h:

(WebCore::Layout::InlineTextItem::createNonWhitespaceItem):

8:19 AM Changeset in webkit [272415] by Lauro Moura
  • 2 edits in trunk/Tools

[Flatpak SDK] Print stderr when coredumpctl fails
https://bugs.webkit.org/show_bug.cgi?id=221448

Reviewed by Philippe Normand.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.run_gdb):

7:50 AM Changeset in webkit [272414] by Chris Dumez
  • 11 edits in trunk

[GPUProcess][iOS] Audio is lost after media playback recovers from the GPUProcess crash
https://bugs.webkit.org/show_bug.cgi?id=221305
<rdar://problem/73904864>

Reviewed by Eric Carlson.

Source/WebCore:

The issue was that when the GPUProcess crashed while in the middle of media playback, we would
fail to remove the old/invalid AudioTrack and then append the new/valid AudioTrack upon
recovery. We would end up using the wrong old AudioTrack instead of the new track as a result.

To address the issue, I have refactored the code so that the "reload and resume" logic now
resides in HTMLMediaElement instead of MediaPlayer. This makes sure that the HTMLMediaElement
object's state stays good. In particular, when HTMLMediaElement::prepareToLoad() is called,
it calls forgetResourceSpecificTracks() to drop the old/invalid AudioTracks.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerReloadAndResumePlaybackIfNeeded):

  • html/HTMLMediaElement.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::reloadAndResumePlaybackIfNeeded):

  • platform/graphics/MediaPlayer.h:

(WebCore::MediaPlayerClient::mediaPlayerUserAgent const):
(WebCore::MediaPlayerClient::mediaPlayerReloadAndResumePlaybackIfNeeded):

Source/WebKit:

Fix issue where we would sometimes lose the video after recovering from a GPUProcess
crash. The issue is that RemoteMediaPlayerProxy::setVideoInlineSizeFenced() may get
called *before* RemoteMediaPlayerProxy::mediaPlayerFirstVideoFrameAvailable(). As a
result, we would not have a root layer yet and we would fail to set the video
dimensions and they would remain at 0x0.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:
  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:

(WebKit::setVideoInlineSizeIfPossible):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerFirstVideoFrameAvailable):
(WebKit::RemoteMediaPlayerProxy::setVideoInlineSizeFenced):

Tools:

Unskip API test checks on iOS now that they are passing.

  • TestWebKitAPI/Tests/WebKitCocoa/GPUProcess.mm:

(TEST):

7:11 AM Changeset in webkit [272413] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

[CMake] Hide libwebrtc symbols
https://bugs.webkit.org/show_bug.cgi?id=221333

This is a naive approach to hide libwebrtc symbols, particularly beacuse of boringssl, which
migth collide with system's libssl. It compiles libwebrtc with visibility set to hidden.

Patch by Víctor Manuel Jáquez Leal <vjaquez@igalia.com> on 2021-02-05
Reviewed by Michael Catanzaro.

  • CMakeLists.txt:
6:29 AM Changeset in webkit [272412] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Incorrect last potential wrap position when inline box is present
https://bugs.webkit.org/show_bug.cgi?id=221437

Reviewed by Antti Koivisto.

The trailing run of the continuous content is not necessarily a legal wrap position.
In some cases when the text content is embedded in an inline box, the wrap position may be part of
the subsequent content e.g.

<div>content<span> <-space</span></div>

This maps to the following set of inline items:
[content][inline box start][ ][<-space][inline box end]

This content produces 3 sets of continuous content for line breaking
[non-whitespace content]
[inline box start][whitespace content]
[non-whitespace content][inline box end]

While the soft wrap opportunity is at [whitespace content], the content boundary is at a different position, right before
the [inline box start] since the content inside the inline box always belongs to the inline box.
(as opposed to [non-whitespace content][inline box start] and a separate [whitespace content] set)

In this patch we start tracking the "has trailing soft wrap opportunity" in LineCandidate and pass it to the InlineContentBreaker
as part of the line status.

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::isWrappingAllowed):
(WebCore::Layout::InlineContentBreaker::processInlineContent):
(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):
(WebCore::Layout::InlineContentBreaker::processOverflowingContentWithText const):
(WebCore::Layout::InlineContentBreaker::wordBreakBehavior const):
(WebCore::Layout::InlineContentBreaker::tryBreakingTextRun const):
(WebCore::Layout::isWrappingAllowed): Deleted.
(WebCore::Layout::lastWrapOpportunityIndex): Deleted.

  • layout/inlineformatting/InlineContentBreaker.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineCandidate::InlineContent::setHasTrailingSoftWrapOpportunity):
(WebCore::Layout::LineCandidate::InlineContent::hasTrailingSoftWrapOpportunity const):
(WebCore::Layout::LineBuilder::candidateContentForLine):
(WebCore::Layout::LineBuilder::handleInlineContent):

6:26 AM Changeset in webkit [272411] by Alexey Shvayka
  • 4 edits in trunk

Object.assign should throw for property creation on non-extensible target
https://bugs.webkit.org/show_bug.cgi?id=220712

Reviewed by Ross Kirsling.

JSTests:

  • stress/object-assign-fast-path.js:

Source/JavaScriptCore:

This performance-neutral change precludes Object.assign from taking the
fast path if target is a non-extensible JSFinalObject, which ensures
a TypeError is thrown for property creation via Set?.

Aligns JSC with the spec [1], V8, and SpiderMonkey.

[1]: https://tc39.es/ecma262/#sec-validateandapplypropertydescriptor (step 2.a)

  • runtime/ObjectConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

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

[SOUP] Fix error handling in WebKitFormDataInputStream
https://bugs.webkit.org/show_bug.cgi?id=221459

Reviewed by Adrian Perez de Castro.

We are checking the error parameter passed, that can be nullptr when not provided, we should be checking the
return value of g_input_stream_read() instead.

  • platform/network/soup/WebKitFormDataInputStream.cpp:

(webkitFormDataInputStreamRead):

5:22 AM Changeset in webkit [272409] by Carlos Garcia Campos
  • 4 edits in trunk

REGRESSION(r271879) [SOUP] webrtc/datachannel/gather-candidates-networkprocess-crash.html is crashing in debug mode
https://bugs.webkit.org/show_bug.cgi?id=221379

Reviewed by Youenn Fablet.

Source/WebKit:

  • NetworkProcess/soup/WebKitDirectoryInputStream.cpp:

(webkitDirectoryInputStreamRead): Fix bytes read calculation.

LayoutTests:

Remove expectations for tests that are now passing.

  • platform/glib/TestExpectations:
3:02 AM Changeset in webkit [272408] by Philippe Normand
  • 4 edits in trunk/Source/WebKit

[GTK] clang warnings
https://bugs.webkit.org/show_bug.cgi?id=221410

Reviewed by Adrian Perez de Castro.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::resourceLoadInfo): Remove ifdef added in r272313, the
corresponding enum value is not ifdeffed either.

  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::sendUpdate): Use portable format specifier for uint64_t.

  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp: Ifdef member variable

currently used only on Cocoa platforms.

2:03 AM Changeset in webkit [272407] by aboya@igalia.com
  • 2 edits in trunk/Tools

[GTK] run-gtk-tests: Support running individual tests for GTest test suites
https://bugs.webkit.org/show_bug.cgi?id=221050

Reviewed by Adrian Perez de Castro.

run-gtk-tests accepts any number of optional -p arguments to run
only certain tests. Unfortunately, this feature is only currently
implemented for glib tests suites.

This patch adds support for this feature with gtest suites as well.

  • glib/api_test_runner.py:

(TestRunner._run_google_test_suite):
(TestRunner._run_test):

12:45 AM Changeset in webkit [272406] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] JSImmutableButterfly's toString cache should not happen for generic join
https://bugs.webkit.org/show_bug.cgi?id=221444
<rdar://problem/73972862>

Reviewed by Mark Lam.

JSTests:

  • stress/immutable-butterfly-to-string-cache-should-not-happen-for-generic-join.js: Added.

(foo):

Source/JavaScriptCore:

We should not cache Array#toString results with JSImmutableButterfly if
its join operation becomes generic join: including objects in array, since
this can invoke object.toString(), and it isn't side-effect free.

  • runtime/ArrayPrototype.cpp:

(JSC::fastJoin):
(JSC::JSC_DEFINE_HOST_FUNCTION):

12:45 AM Changeset in webkit [272405] by ysuzuki@apple.com
  • 8 edits
    6 adds in trunk

[JSC] Atomics.store in DFG / FTL should return ToNumber(input) value
https://bugs.webkit.org/show_bug.cgi?id=221438
<rdar://problem/73973264>

Reviewed by Filip Pizlo.

JSTests:

  • stress/atomic-store-result-type-in-ai.js: Added.
  • stress/atomics-store-result-double-nan.js: Added.

(shouldBe):
(test):

  • stress/atomics-store-result-double-negative-zero.js: Added.

(shouldBe):
(test):

  • stress/atomics-store-result-double.js: Added.

(shouldBe):
(test):

  • stress/atomics-store-result-int52.js: Added.

(shouldBe):

  • stress/atomics-store-result.js: Added.

(shouldBe):

Source/JavaScriptCore:

Atomics.store is different from the other ReadModifyWrite atomics. It returns the input value without truncating it into TypedArray's requirement.
For example,

var u8 = new Uint8Array(8);
Atomics.store(u8, 0, 0xffff) === 0xffff Not 0xff.

However DFG and FTL implementations do not handle it correctly.
This patch fixes AI, fixup, and code generations to handle this.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetByValOnIntTypedArray):
(JSC::DFG::SpeculativeJIT::getIntTypedArrayStoreOperandForAtomics):

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

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

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileAtomicsReadModifyWrite):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::setIntTypedArrayLoadResult):
(JSC::FTL::DFG::LowerDFGToB3::toIntegerOrInfinity):

Note: See TracTimeline for information about the timeline view.