WebKit-https.git
17 min ago[iOS] WPT css/css-color-adjust/rendering/dark-color-scheme/color-scheme-system-colors... master
ryanhaddad@apple.com [Mon, 10 May 2021 19:56:30 +0000 (19:56 +0000)]
[iOS] WPT css/css-color-adjust/rendering/dark-color-scheme/color-scheme-system-colors.html is failing
https://bugs.webkit.org/show_bug.cgi?id=225607

Unreviewed test gardening.

* platform/ios/TestExpectations:

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

23 min agoFix for assert crash in AXObjectCache::visiblePositionForTextMarkerData.
andresg_22@apple.com [Mon, 10 May 2021 19:50:19 +0000 (19:50 +0000)]
Fix for assert crash in AXObjectCache::visiblePositionForTextMarkerData.
https://bugs.webkit.org/show_bug.cgi?id=225303
<rdar://problem/77453921>

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/mac/pseudo-element-text-markers.html

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::visiblePositionForTextMarkerData):
Added check for Node::isPseudoElement to avoid hitting the assertion during the creation of a Position.

LayoutTests:

* accessibility/mac/pseudo-element-text-markers-expected.txt: Added.
* accessibility/mac/pseudo-element-text-markers.html: Added.

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

24 min ago[iOS] WPT css-fonts/font-feature-resolution-001.html and css-fonts/font-feature-resol...
ryanhaddad@apple.com [Mon, 10 May 2021 19:49:33 +0000 (19:49 +0000)]
[iOS] WPT css-fonts/font-feature-resolution-001.html and css-fonts/font-feature-resolution-002.html are failing
https://bugs.webkit.org/show_bug.cgi?id=225606

Unreviewed test gardening.

* platform/ios/TestExpectations:

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

40 min agoWeb Inspector: Layout panel "Grid Overlays" main checkbox has dead space (no interact...
nvasilyev@apple.com [Mon, 10 May 2021 19:33:14 +0000 (19:33 +0000)]
Web Inspector: Layout panel "Grid Overlays" main checkbox has dead space (no interaction) between checkbox and label text
https://bugs.webkit.org/show_bug.cgi?id=225433
<rdar://problem/77590883>

Reviewed by Devin Rousso.

Make the empty space between the checkbox and the label text clickable in:
- Everywhere in Settings tab
- Layout panel, Page Overlay Options
- Grid Overlay header

* UserInterface/Main.html:
* UserInterface/Views/CSSGridSection.css:
(.css-grid-section .node-display-name):
(.css-grid-section .toggle-all):
(.css-grid-section :is(.setting-editor, .node-overlay-list-item-container, .heading) input[type="checkbox"]):
(.css-grid-section .setting-editor > input[type="checkbox"]):
(.css-grid-section .node-display-name,): Deleted.
Make all checkbox labels in the Grid section align vertically.

* UserInterface/Views/CSSGridSection.js:
(WI.CSSGridSection.prototype.initialLayout):
* UserInterface/Views/SettingEditor.css: Copied from Source/WebInspectorUI/UserInterface/Views/CSSGridSection.css.
(.setting-editor input):
(.setting-editor > input[type="checkbox"]):
(.setting-editor > label):

* UserInterface/Views/SettingEditor.js:
(WI.SettingEditor):
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor:first-child > *):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor input[type="checkbox"]):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor select):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor input[type="number"]):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor input[type="text"]):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor:first-child > *): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor select): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="number"]): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="text"]): Deleted.
Rename ".editor" to ".setting-editor" so it matches SettingEditor.css.

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

53 min ago[iOS] imported/w3c/web-platform-tests/css/css-flexbox/flex-item-compressible-001...
ryanhaddad@apple.com [Mon, 10 May 2021 19:20:01 +0000 (19:20 +0000)]
[iOS] imported/w3c/web-platform-tests/css/css-flexbox/flex-item-compressible-001.html is failing after WPT re-sync
https://bugs.webkit.org/show_bug.cgi?id=225604

Unreviewed test gardening.

Rebaseline test for iOS.

* platform/ios/imported/w3c/web-platform-tests/css/css-flexbox/flex-item-compressible-001-expected.txt:

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

64 min agoUse HashSet<RefPtr<Node>> instead of HashSet<Node*>
commit-queue@webkit.org [Mon, 10 May 2021 19:09:35 +0000 (19:09 +0000)]
Use HashSet<RefPtr<Node>> instead of HashSet<Node*>
https://bugs.webkit.org/show_bug.cgi?id=220464

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

This makes us more resistent to lifetime bugs.

* accessibility/AXObjectCache.cpp:
(WebCore::conditionallyAddNodeToFilterList):
(WebCore::filterVectorPairForRemoval):
(WebCore::filterMapForRemoval):
(WebCore::filterListForRemoval):
(WebCore::AXObjectCache::prepareForDocumentDestruction):
* bindings/js/JSMutationObserverCustom.cpp:
(WebCore::JSMutationObserverOwner::isReachableFromOpaqueRoots):
* dom/MutationObserver.cpp:
(WebCore::MutationObserver::observedNodes const):
(WebCore:: const): Deleted.
* dom/MutationObserver.h:
* dom/MutationObserverRegistration.cpp:
(WebCore::MutationObserverRegistration::addRegistrationNodesToSet const):
* dom/MutationObserverRegistration.h:
* dom/Node.cpp:
(WebCore::liveNodeSet):
(WebCore::ignoreSet):
* editing/AppendNodeCommand.cpp:
(WebCore::AppendNodeCommand::getNodesInCommand):
* editing/AppendNodeCommand.h:
* editing/CompositeEditCommand.cpp:
(WebCore::EditCommandComposition::getNodesInCommand):
* editing/CompositeEditCommand.h:
* editing/DeleteFromTextNodeCommand.cpp:
(WebCore::DeleteFromTextNodeCommand::getNodesInCommand):
* editing/DeleteFromTextNodeCommand.h:
* editing/EditCommand.cpp:
(WebCore::SimpleEditCommand::addNodeAndDescendants):
* editing/EditCommand.h:
* editing/InsertIntoTextNodeCommand.cpp:
(WebCore::InsertIntoTextNodeCommand::getNodesInCommand):
* editing/InsertIntoTextNodeCommand.h:
* editing/InsertNodeBeforeCommand.cpp:
(WebCore::InsertNodeBeforeCommand::getNodesInCommand):
* editing/InsertNodeBeforeCommand.h:
* editing/MergeIdenticalElementsCommand.cpp:
(WebCore::MergeIdenticalElementsCommand::getNodesInCommand):
* editing/MergeIdenticalElementsCommand.h:
* editing/RemoveNodeCommand.cpp:
(WebCore::RemoveNodeCommand::getNodesInCommand):
* editing/RemoveNodeCommand.h:
* editing/ReplaceNodeWithSpanCommand.cpp:
(WebCore::ReplaceNodeWithSpanCommand::getNodesInCommand):
* editing/ReplaceNodeWithSpanCommand.h:
* editing/SetNodeAttributeCommand.cpp:
(WebCore::SetNodeAttributeCommand::getNodesInCommand):
* editing/SetNodeAttributeCommand.h:
* editing/SetSelectionCommand.h:
* editing/SpellingCorrectionCommand.cpp:
* editing/SplitElementCommand.cpp:
(WebCore::SplitElementCommand::getNodesInCommand):
* editing/SplitElementCommand.h:
* editing/SplitTextNodeCommand.cpp:
(WebCore::SplitTextNodeCommand::getNodesInCommand):
* editing/SplitTextNodeCommand.h:
* editing/WrapContentsInDummySpanCommand.cpp:
(WebCore::WrapContentsInDummySpanCommand::getNodesInCommand):
* editing/WrapContentsInDummySpanCommand.h:
* editing/cocoa/HTMLConverter.mm:
(HTMLConverterCaches::cacheAncestorsOfStartToBeConverted):
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::highlightSelector):
* xml/XPathFunctions.cpp:
(WebCore::XPath::FunId::evaluate const):
* xml/XPathNodeSet.cpp:
(WebCore::XPath::sortBlock):
(WebCore::XPath::NodeSet::traversalSort const):
* xml/XPathPath.cpp:
(WebCore::XPath::LocationPath::evaluate const):
* xml/XPathPredicate.cpp:
(WebCore::XPath::Union::evaluate const):

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

74 min agoAdd ObjC API similar to WKBundlePageCopyGroupIdentifier
achristensen@apple.com [Mon, 10 May 2021 18:58:54 +0000 (18:58 +0000)]
Add ObjC API similar to WKBundlePageCopyGroupIdentifier
https://bugs.webkit.org/show_bug.cgi?id=225477

Reviewed by Chris Dumez.

Source/WebKit:

Once adopted this will allow us to remove WKWebProcessPlugInPageGroup

* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.mm:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroupInternal.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
(-[WKWebProcessPlugInBrowserContextController _groupIdentifier]):
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h:
* TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm:
(TEST):
* TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm:
(-[RemoteObjectRegistryPlugIn getGroupIdentifier:]):

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

90 min agoWeb Inspector: add support for panning/zooming on images
drousso@apple.com [Mon, 10 May 2021 18:43:47 +0000 (18:43 +0000)]
Web Inspector: add support for panning/zooming on images
https://bugs.webkit.org/show_bug.cgi?id=224655

Reviewed by Timothy Hatcher.

* UserInterface/Controllers/GestureController.js: Added.
(WI.GestureController):
(WI.GestureController.prototype.get scale):
(WI.GestureController.prototype.set scale):
(WI.GestureController.prototype.get translate):
(WI.GestureController.prototype.set translate):
(WI.GestureController.prototype.reset):
(WI.GestureController.prototype._startScaleInteraction):
(WI.GestureController.prototype._updateScaleInteraction):
(WI.GestureController.prototype._endScaleInteraction):
(WI.GestureController.prototype._handleWheel):
(WI.GestureController.prototype._handleGestureStart):
(WI.GestureController.prototype._handleGestureChange):
(WI.GestureController.prototype._handleGestureEnd):
(WI.GestureController.prototype._handleMouseDown):
(WI.GestureController.prototype._handleMouseMove):
(WI.GestureController.prototype._handleMouseUp):
Add a general controller class that takes a `target` (and optionally a `container`) and adds
event listeners to handle various gestures:
 - scale (both via trackpad and mouse wheel)
 - transform (mouse click and drag)

* UserInterface/Views/ImageResourceContentView.js:
(WI.ImageResourceContentView):
(WI.ImageResourceContentView.prototype.get navigationItems):
(WI.ImageResourceContentView.prototype.contentAvailable):
(WI.ImageResourceContentView.prototype.gestureControllerDidScale): Added.
(WI.ImageResourceContentView.prototype.gestureControllerDidTranslate): Added.
(WI.ImageResourceContentView.prototype._updateResetGestureButtonNavigationItemLabel): Added.
(WI.ImageResourceContentView.prototype._handleResetGestureButtonNavitationItemClicked): Added.
(WI.ImageResourceContentView.prototype._handleZoomOutGestureButtonNavitationItemClicked): Added.
(WI.ImageResourceContentView.prototype._handleZoomInGestureButtonNavitationItemClicked): Added.
* UserInterface/Views/ImageResourceContentView.css:
(.content-view.resource.image > .img-container):
(.navigation-bar > .item.image-gesture-reset): Added.
Add a `WI.GestureController` and manipulate the `scale` and `transform` of the `<img>`.
Add navigation items that show the current scale (clicking it will reset the gesture), zoom
in, and zoom out.

* UserInterface/Views/LocalResourceOverrideLabelView.css:
(.local-resource-override-label-view):
Add a `z-index` so that zoomed images don't appear on top.

* UserInterface/Views/ResourceCollectionContentView.js:
(WI.ResourceCollectionContentView.prototype.get contentViewConstructorOptions):
Don't create the `WI.GestureController` in collection views.

* UserInterface/Main.html:
* UserInterface/Images/ZoomIn.svg: Added.
* UserInterface/Images/ZoomOut.svg: Added.
* Localizations/en.lproj/localizedStrings.js:

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

104 min agoVersioning.
repstein@apple.com [Mon, 10 May 2021 18:29:23 +0000 (18:29 +0000)]
Versioning.

WebKit-7612.1.15

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

2 hours ago[build.webkit.org] Rename master_buildbot2.cfg to master.cfg
aakash_jain@apple.com [Mon, 10 May 2021 18:10:51 +0000 (18:10 +0000)]
[build.webkit.org] Rename master_buildbot2.cfg to cfg
https://bugs.webkit.org/show_bug.cgi?id=222600

Reviewed by Jonathan Bedard.

* CISupport/build-webkit-org/buildbot.tac:
* CISupport/build-webkit-org/master.cfg: Moved from Tools/CISupport/build-webkit-org/master_buildbot2.cfg.
* CISupport/build-webkit-org/master_buildbot2.cfg: Removed.

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

2 hours ago[macOS] ImageOverlayController should paint selection quads instead of bounding rects
wenson_hsieh@apple.com [Mon, 10 May 2021 18:10:03 +0000 (18:10 +0000)]
[macOS] ImageOverlayController should paint selection quads instead of bounding rects
https://bugs.webkit.org/show_bug.cgi?id=225585
<rdar://problem/77725745>

Reviewed by Tim Horton.

Source/WebCore:

Teach `SelectionRectGatherer` (now renamed to `SelectionGeometryGatherer`) to emit quads, rather than bounding
rects around each quad. We use these quads in `ImageOverlayController` to render selection quads via page
overlay (i.e., in the case where the image containing the overlay is transparent).

Test: fast/images/image-extraction/mac/select-rotated-transparent-image-overlay.html

* Headers.cmake:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* editing/SelectionGeometryGatherer.cpp: Renamed from Source/WebCore/editing/SelectionRectGatherer.cpp.

Rename `SelectionRectGatherer` to `SelectionGeometryGatherer`, to reflect the fact that this helper class now
aggregates both selection quads and gap rects.

(WebCore::SelectionGeometryGatherer::SelectionGeometryGatherer):
(WebCore::SelectionGeometryGatherer::addQuad):

Rename `addRect` to `addQuad`, and make it take a `FloatQuad` instead.

(WebCore::SelectionGeometryGatherer::addGapRects):
(WebCore::SelectionGeometryGatherer::Notifier::Notifier):
(WebCore::SelectionGeometryGatherer::Notifier::~Notifier):
(WebCore::SelectionGeometryGatherer::boundingRects const):
(WebCore::SelectionGeometryGatherer::clearAndCreateNotifier):
* editing/SelectionGeometryGatherer.h: Renamed from Source/WebCore/editing/SelectionRectGatherer.h.
(WebCore::SelectionGeometryGatherer::setTextOnly):
(WebCore::SelectionGeometryGatherer::isTextOnly const):
* html/HTMLElement.cpp:
(WebCore::HTMLElement::updateWithImageExtractionResult):

Minor tweak - don't add any margin around the word when the line only contains a single word.

* page/ImageOverlayController.cpp:
(WebCore::ImageOverlayController::selectionQuadsDidChange):

Rename `selectionRectsDidChange` to `selectionQuadsDidChange`, and take a `FloatQuad` in absolute coordinates
instead of a `LayoutRect`. Store these quads in `m_overlaySelectionQuads` (also renamed from
`m_overlaySelectionRects`).

(WebCore::ImageOverlayController::uninstallPageOverlayIfNeeded):
(WebCore::ImageOverlayController::drawRect):

Make a few changes when painting selections using the `ImageOverlayController`:

1.  Instead of painting with `fillRect()`, coalesce all of the collected selection quads into a single `Path`
    object, and pass that `Path` into `fillPath()`. This allows us to render each piece of selected content as a
    quad instead of a bounding rect, and additionally prevents us from rendering overlapping selections
    when using `ImageOverlayController`.

2.  Clip selections to the absolute bounds of the image overlay host element's renderer, which prevents the new
    selection quads from spilling out of the host element.

(WebCore::ImageOverlayController::selectionRectsDidChange): Deleted.
* page/ImageOverlayController.h:
* rendering/RenderSelectionInfo.cpp:
(WebCore::RenderSelectionInfo::RenderSelectionInfo):
* rendering/RenderSelectionInfo.h:
(WebCore::RenderSelectionInfo::collectedSelectionQuads const):
(WebCore::RenderSelectionInfo::collectedSelectionRects const): Deleted.

More minor refactoring: rename `collectedSelectionRects` to `collectedSelectionQuads`, and make it take the
original `FloatQuad` instead of the quad's bounding box.

* rendering/RenderText.cpp:
(WebCore::RenderText::collectSelectionGeometriesForLineBoxes):
* rendering/RenderText.h:
* rendering/SelectionRangeData.cpp:
(WebCore::SelectionRangeData::SelectionRangeData):
(WebCore::SelectionRangeData::set):
(WebCore::SelectionRangeData::apply):
* rendering/SelectionRangeData.h:

LayoutTests:

Add a new layout test to cover the change. Currently, the below test case renders a visible selection rect in
the image overlay since we render the bounding rect of the overlay text quad, which intersects with the image
overlay's bounds. However, the text quad is positioned outside of the image overlay, so there shouldn't be any
visible selection rect. As such, this test is expected to render the same content as a plain image (even without
an image overlay).

Unfortunately, I couldn't write a matching ref-test for the case where the selection rect is inside the bounds
of the image overlay, since doing so led to tiny subpixel differences between the transparent image case (using
`ImageOverlayController`) and the regular image overlay selection case.

* fast/images/image-extraction/mac/select-rotated-transparent-image-overlay-expected.html: Added.
* fast/images/image-extraction/mac/select-rotated-transparent-image-overlay.html: Added.

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

2 hours agoFix some unified build errors
graouts@webkit.org [Mon, 10 May 2021 18:06:03 +0000 (18:06 +0000)]
Fix some unified build errors
https://bugs.webkit.org/show_bug.cgi?id=225594

Reviewed by Wenson Hsieh.

* UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
* UIProcess/ios/WKTextSelectionRect.mm:
* UIProcess/mac/WKTextInputWindowController.mm:

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

2 hours ago[GPUP-MSE] Implement time changed callback
eric.carlson@apple.com [Mon, 10 May 2021 17:46:40 +0000 (17:46 +0000)]
[GPUP-MSE] Implement time changed callback
https://bugs.webkit.org/show_bug.cgi?id=225485
<rdar://problem/77625992>

Reviewed by Jer Noble.

Implement MediaPlayerPrivateMediaSourceAVFObjC::setCurrentTimeDidChangeCallback so
the GPU process doesn't have to poll currentTime.

No change in functionality.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::~MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCurrentTimeDidChangeCallback):

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

2 hours agoAdd unit test for r274129
achristensen@apple.com [Mon, 10 May 2021 17:30:00 +0000 (17:30 +0000)]
Add unit test for r274129
https://bugs.webkit.org/show_bug.cgi?id=224021

Reviewed by Chris Dumez.

* TestWebKitAPI/SourcesCocoa.txt:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h:
* TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm:
(TEST):
* TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm:
(-[RemoteObjectRegistryPlugIn sendAwakener:completionHandler:]):
* TestWebKitAPI/Tests/WebKitCocoa/TestAwakener.h: Added.
* TestWebKitAPI/Tests/WebKitCocoa/TestAwakener.mm: Added.
(-[TestAwakener awakeAfterUsingCoder:]):
(-[TestAwakener initWithValue:]):
(-[TestAwakener value]):
(+[TestAwakener supportsSecureCoding]):
(-[TestAwakener encodeWithCoder:]):
(-[TestAwakener initWithCoder:]):

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

2 hours agoAdd support for a `media` attribute on `<meta name="theme-color" content="...">`
drousso@apple.com [Mon, 10 May 2021 17:20:11 +0000 (17:20 +0000)]
Add support for a `media` attribute on `<meta name="theme-color" content="...">`
https://bugs.webkit.org/show_bug.cgi?id=224389
<rdar://problem/74991621>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Tests: WKWebViewThemeColor.MetaElementValidNameAndColorAndMedia
       WKWebViewThemeColor.MetaElementInvalidName
       WKWebViewThemeColor.MetaElementInvalidColor
       WKWebViewThemeColor.MetaElementInvalidMedia
       WKWebViewThemeColor.MetaElementMultipleValid
       WKWebViewThemeColor.MetaElementValidSubframe
       WKWebViewThemeColor.KVO

* html/HTMLMetaElement.idl:
* html/HTMLMetaElement.h:
* html/HTMLMetaElement.cpp:
(WebCore::parseMedia): Added.
(WebCore::mediaMatches): Added.
(WebCore::HTMLMetaElement::mediaAttributeMatches): Added.
(WebCore::HTMLMetaElement::contentColor): Added.
(WebCore::HTMLMetaElement::attributeChanged):
(WebCore::HTMLMetaElement::parseAttribute):
(WebCore::HTMLMetaElement::removedFromAncestor):
(WebCore::HTMLMetaElement::process):
Add support for a reflected `media` attribute. Cache the most recently parsed `media` (which
becomes a `Ref<MediaQuerySet>`) and `content` (which can become a `Color`) to avoid doing
repeated work when determining the active theme color after media state changes. Notify the
`Document` whenever the `name` or `content` or `media` attribute changes if the new or old
value will be or would have been related to calculating the theme color.

* dom/Document.h:
(WebCore::Document::themeColor const): Deleted.
* dom/Document.cpp:
(WebCore::Document::themeColor): Added.
(WebCore::Document::metaElementThemeColorChanged): Added.
(WebCore::Document::determineActiveThemeColorMetaElement): Added.
(WebCore::Document::themeColorChanged):
(WebCore::Document::updateElementsAffectedByMediaQueries):
(WebCore::Document::processMetaElementThemeColor): Deleted.
Make calculating the theme color into a two stage process:
 1. find all `<meta name="theme-color">` that have a valid CSS color `content` in tree order
 2. return the `HTMLMetaElement::contentColor` of the first item from step 1 that `HTMLMetaElement::mediaAttributeMatches`
This is done so that `Document::updateElementsAffectedByMediaQueries` doesn't have to repeat
step 1 each time it's run (which can be often) and instead only needs to iterate a (likely
very small) list in step 2. The actions/situations listed above would clear the cached data
from both steps, meaning that the next `Document::themeColor` will do a full recalculation.
Notify the UIProcess of a change in theme color if the result of step 2 is different from a
previously cached result (if set).

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WKWebViewThemeColor.mm:
(TEST.WKWebViewThemeColor.MetaElementValidNameAndColor): Added.
(TEST.WKWebViewThemeColor.MetaElementValidNameAndColorAndMedia): Added.
(TEST.WKWebViewThemeColor.MetaElementInvalidName): Added.
(TEST.WKWebViewThemeColor.MetaElementInvalidColor): Added.
(TEST.WKWebViewThemeColor.MetaElementInvalidMedia): Added.
(TEST.WKWebViewThemeColor.MetaElementMultipleValid): Added.
(TEST.WKWebViewThemeColor.MetaElementValidSubframe): Added.
(-[WKWebViewThemeColorObserver observeValueForKeyPath:ofObject:change:context:]):
(TEST.WKWebViewThemeColor.KVO):
(TEST.WKWebViewThemeColor.MetaElementOnLoad): Deleted.
(TEST.WKWebViewThemeColor.MetaElementMultipleTags): Deleted.

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

3 hours agoRemove all remaining uses of the String::toInt family of functions
darin@apple.com [Mon, 10 May 2021 16:57:02 +0000 (16:57 +0000)]
Remove all remaining uses of the String::toInt family of functions
https://bugs.webkit.org/show_bug.cgi?id=225580

Reviewed by Sam Weinig.

Source/WebCore:

* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo):
Use parseInteger<uint64_t> instead of String::toUInt64Strict.
(WebCore::IDBServer::SQLiteIDBBackingStore::databaseNameAndVersionFromFile):
Ditto.

* Modules/websockets/WebSocketDeflateFramer.cpp:
(WebCore::WebSocketExtensionDeflateFrame::WebSocketExtensionDeflateFrame):
Use a reference instead of a pointer.
(WebCore::WebSocketExtensionDeflateFrame::processResponse): Use
ASCIILiteral. Use parseIntegerAllowingTrailingJunk<int> instead of
String::toInt. Use auto. Use references instead of pointers.
(WebCore::DeflateResultHolder::DeflateResultHolder): Use a reference.
(WebCore::DeflateResultHolder::~DeflateResultHolder): Ditto.
(WebCore::InflateResultHolder::InflateResultHolder): Ditto.
(WebCore::InflateResultHolder::~InflateResultHolder): Ditto.
(WebCore::WebSocketDeflateFramer::WebSocketDeflateFramer): Deleted.
(WebCore::WebSocketDeflateFramer::createExtensionProcessor): Pass a reference.
(WebCore::WebSocketDeflateFramer::deflate): Ditto.
(WebCore::WebSocketDeflateFramer::inflate): Ditto.

* Modules/websockets/WebSocketDeflateFramer.h: Use forward declarations
instead of includes, references instead of pointers, initialize data members
in the class definition, and remove an unnecessary explicit default constructor.

* Modules/websockets/WebSocketHandshake.cpp:
(WebCore::headerHasValidHTTPVersion): Use parseInteger<int> instead of
StringView::toIntStrict.
(WebCore::WebSocketHandshake::readStatusLine): Ditto.

* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::headingLevel const): Use
getIntegralAttribute instead of AtomString::toInt.
(WebCore::AccessibilityNodeObject::hierarchicalLevel const): Ditto.
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::getIntegralAttribute const): Added.
Since AccessibilityObject has its own getAttribute function, we need to
re-implement Element::getIntegralAttribute here.
(WebCore::AccessibilityObject::setSize const): Use getIntegralAttribute
instead of AtomString::toInt.
(WebCore::AccessibilityObject::posInSet const): Ditto.

* accessibility/AccessibilityObject.h: Added getIntegralAttribute.

* accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::isDataTable const):Use getIntegralAttribute
instead of AtomString::toInt.
(WebCore::AccessibilityTable::axColumnCount const): Ditto.
(WebCore::AccessibilityTable::axRowCount const): Ditto.
* accessibility/AccessibilityTableCell.cpp:
(WebCore::AccessibilityTableCell::axColumnIndex const): Ditto.
(WebCore::AccessibilityTableCell::axRowIndex const): Ditto.
(WebCore::AccessibilityTableCell::axColumnSpan const): Ditto.
(WebCore::AccessibilityTableCell::axRowSpan const): Ditto.
* accessibility/AccessibilityTableRow.cpp:
(WebCore::AccessibilityTableRow::axColumnIndex const): Ditto.
(WebCore::AccessibilityTableRow::axRowIndex const): Ditto.

* css/parser/CSSSelectorParser.cpp:
(WebCore::consumeANPlusB): Use parseInteger<int> instead of String::toIntStrict
* css/parser/CSSTokenizer.cpp:
(WebCore::CSSTokenizer::consumeEscape): Use parseInteger<uint32_t> instead of
String::toUIntStrict.

* editing/cocoa/DataDetection.mm:
(WebCore::DataDetection::canPresentDataDetectorsUIForElement):
Use parseIntegerAllowingTrailingJunk<int> instead of String::toInt.
Also use StringView instead of String.
(WebCore::dataDetectorStringForPath): Use makeString instead of StringBuilder.

* editing/cocoa/HTMLConverter.mm:
(HTMLConverter::computedAttributesForElement): Use
parseIntegerAllowingTrailingJunk<int> instead of String::toInt.

* html/HTMLFrameElement.cpp:
(WebCore::HTMLFrameElement::parseAttribute): Use parseHTMLInteger instead
of parseIntegerAllowingTrailingJunk<int>.
* html/HTMLFrameSetElement.cpp:
(WebCore::HTMLFrameSetElement::parseAttribute): Ditto.
* html/HTMLHRElement.cpp:
(WebCore::HTMLHRElement::collectStyleForPresentationAttribute): Ditto.
* html/HTMLIFrameElement.cpp:
(WebCore::HTMLIFrameElement::collectStyleForPresentationAttribute): Ditto.
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::parseAttribute): Ditto.
* html/HTMLLIElement.cpp:
(WebCore::HTMLLIElement::parseValue): Ditto.
* html/HTMLMarqueeElement.cpp:
(WebCore::HTMLMarqueeElement::loop const): Use getIntegralAttribute
instead of parseIntegerAllowingTrailingJunk<int>.
* html/HTMLTableCellElement.cpp:
(WebCore::HTMLTableCellElement::collectStyleForPresentationAttribute):
Use parseHTMLInteger instead of parseIntegerAllowingTrailingJunk<int>.
* html/HTMLTableColElement.cpp:
(WebCore::HTMLTableColElement::parseAttribute): Ditto.
* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::parseAttribute): Ditto.

* inspector/InspectorFrontendClientLocal.cpp:
(WebCore::InspectorFrontendClientLocal::restoreAttachedWindowHeight):
Use parseIntegerAllowingTrailingJunk<unsigned> instead of
String::toUInt.

* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::nodeForPath): Use
parseIntegerAllowingTrailingJunk<unsigned> instead of String::toUInt.

* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox): Use parseHTMLInteger
instead of AtomString::toInt.

* loader/CrossOriginPreflightResultCache.cpp:
(WebCore::parseAccessControlMaxAge): Use parseInteger<uint64_t> instead
of String::toUIntStrict.

* loader/FTPDirectoryParser.cpp:
(WebCore::parseOneFTPLine): Use parseIntegerAllowingTrailingJunk<unsigned>
instead of String::toUInt.

* loader/PrivateClickMeasurement.cpp:
(WebCore::PrivateClickMeasurement::parseAttributionRequest): Use
parseInteger<uint64_t> instead of String::toUInt64Strict.

* mathml/MathMLSelectElement.cpp:
(WebCore::MathMLSelectElement::getSelectedActionChildAndIndex):
Use getIntegralAttribute instead of parseIntegerAllowingTrailingJunk<int>.

* page/EventSource.cpp:
(WebCore::EventSource::parseEventStreamLine): Use
parseIntegerAllowingTrailingJunk<uint64_t> instead of charactersToUInt64.

* page/Location.cpp:
(WebCore::Location::setPort): Use parseInteger<uint16_t> instead of parseUInt16.

* page/SecurityOriginData.cpp:
(WebCore::SecurityOriginData::fromDatabaseIdentifier): Use
parseIntegerAllowingTrailingJunk<uint16_t> instead of String::toInt, which
allows us to remove some range checking and type conversion.

* page/WindowFeatures.cpp:
(WebCore::setWindowFeature): Use parseIntegerAllowingTrailingJunk<int>
instead of StringView::toInt.

* page/csp/ContentSecurityPolicySourceList.cpp:
(WebCore::ContentSecurityPolicySourceList::parsePort): Use
parseInteger<uint16_t> instead of charactersToIntStrict.

* page/linux/ResourceUsageThreadLinux.cpp:
(WebCore::collectCPUUsage): Use parseInteger<pid_t> instead of
String::toIntStrict. Also removed unneeded special cases for "." and
".." since both will fail to parse as an integer, and this no longer
need to put d_name into a WTF::String.

* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(CachedResourceStreamingClient::responseReceived): Use
parseIntegerAllowingTrailingJunk<int> instead of String::toInt.

* platform/graphics/gstreamer/eme/CDMThunder.cpp:
(WebCore::ParsedResponseMessage::ParsedResponseMessage): Use
parseInteger<int> instead of String::toInt to parse a single-digit.
Probably should write this another way.

* platform/network/curl/CookieUtil.cpp:
(WebCore::CookieUtil::parseCookieAttributes): Use
parseIntegerAllowingTrailingJunk<int64_t> instead of String::toInt64.

* platform/network/curl/CurlCacheEntry.cpp:
(WebCore::CurlCacheEntry::setResponseFromCachedHeaders): Use
parseIntegerAllowingTrailingJunk<long long> instead of String::toInt64.

* svg/SVGToOTFFontConversion.cpp:
(WebCore::SVGToOTFFontConverter::appendOS2Table): Use parseHTMLInteger
instead of parseIntegerAllowingTrailingJunk<int>. Might be even better
to refactor to use getIntegralAttribute later.
(WebCore::SVGToOTFFontConverter::appendVORGTable): Ditto.

* testing/Internals.cpp:
(WebCore::Internals::setSFrameCounter): Use parseInteger<uint64_t>
instead of StringView::toUInt64Strict.

Source/WebDriver:

* WebDriverService.cpp:
(WebDriver::WebDriverService::run): Use
parseIntegerAllowingTrailingJunk<uint16_t> instead of String::toUInt.

* glib/WebDriverServiceGLib.cpp:
(WebDriver::parseVersion): Use
parseIntegerAllowingTrailingJunk<uint64_t> instead of String::toInt64,
and then assigning into a uint64_t.

* socket/HTTPParser.cpp:
(WebDriver::HTTPParser::expectedBodyLength const): Use
parseIntegerAllowingTrailingJunk<size_t> instead of String::toInt.
Also use StringView instead of String::substringSharingImpl and
dropped an unneeded call to String::stripWhiteSpace.

Source/WebKitLegacy/win:

* Plugins/PluginDatabaseWin.cpp:
(WebCore::parseVersionString): Use parseIntegerAllowinTrailingJunk<int>
isnstead of String::toInt.

* Plugins/PluginView.cpp:
(WebCore::PluginView::handlePost): Use
parseIntegerAllowingTrailingJunk<unsigned> instead of String::toInt,
and then assigning to an unsigned.

Tools:

* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::numberAttributeValue): Use
parseIntegerAllowingTrailingJunk<int> instead of String::toInt.
(WTR::AccessibilityUIElement::hierarchicalLevel const): Ditto.

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

3 hours agocss-display-none actions from WKContentRuleList should apply to pages loaded with...
achristensen@apple.com [Mon, 10 May 2021 16:56:11 +0000 (16:56 +0000)]
css-display-none actions from WKContentRuleList should apply to pages loaded with loadData and loadHTMLString
https://bugs.webkit.org/show_bug.cgi?id=225493
<rdar://77331789>

Reviewed by Darin Adler.

Source/WebCore:

Blocking and https upgrade don't really make sense on the url from loadData and loadHTMLString because blocking would be
incompatible with existing apps and because you're not really connecting to a server, you're just pretending you did.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::handleSubstituteDataLoadNow):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/ContentRuleListNotification.mm:
(TEST):

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

3 hours agoFix potential races in AppleLanguagesTest.UpdateAppleLanguages API test
cdumez@apple.com [Mon, 10 May 2021 16:38:00 +0000 (16:38 +0000)]
Fix potential races in AppleLanguagesTest.UpdateAppleLanguages API test
https://bugs.webkit.org/show_bug.cgi?id=225429

Reviewed by Darin Adler.

Calling [TestWKWebView performAfterReceivingAnyMessage] registers a MessageHandler which sends an
async WebUserContentController::AddUserScriptMessageHandlers IPC to the WebProcess. We want to
make sure that that message handler is registered in the WebProcess before the JS on the page
calls `webkit.messageHandlers.testHandler.postMessage()`. To address this issue, I moved the
call to `[TestWKWebView performAfterReceivingAnyMessage]` before the call to evaluateJavaScript
that registers the event listener that may call `webkit.messageHandlers.testHandler.postMessage()`.

Also make sure the PreferenceObserver has been allocated after sending the
"NSApplicationDidBecomeActiveNotification" and before proceeding with the test.

I am also adding an extra check at the end to make sure that the value of navigator.language is
correct and to make sure that WKPreferenceObserver.preferenceDidChange was called. This was done
to help diagnose flakiness issues on the bots that I cannot reproduce locally.

* TestWebKitAPI/Tests/WebKit/OverrideAppleLanguagesPreference.mm:
(TEST_F):

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

3 hours agoHave IPC::Semaphore::wait return a state boolean
youenn@apple.com [Mon, 10 May 2021 16:35:17 +0000 (16:35 +0000)]
Have IPC::Semaphore::wait return a state boolean
https://bugs.webkit.org/show_bug.cgi?id=225587

Reviewed by Alex Christensen.

Semaphore::wait might return early, in particular if its sempahore is destroyed.
To handle this case, return false in that case to allow specific handling by caller.
Use return state in RemoteCaptureSampleManager::RemoteAudio::startThread as a way to stop the capture thread.
Covered by existing tests.

* Platform/IPC/IPCSemaphore.h:
* Platform/IPC/darwin/IPCSemaphoreDarwin.cpp:
(IPC::Semaphore::wait):
* Platform/IPC/unix/IPCSemaphoreUnix.cpp:
(IPC::Semaphore::wait):
* Platform/IPC/win/IPCSemaphoreWin.cpp:
(IPC::Semaphore::wait):
* WebProcess/cocoa/RemoteCaptureSampleManager.cpp:
(WebKit::RemoteCaptureSampleManager::RemoteAudio::startThread):

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

3 hours ago[iPadOS] Do not present custom input peripherals when switching back to a tab with...
akeerthi@apple.com [Mon, 10 May 2021 16:26:17 +0000 (16:26 +0000)]
[iPadOS] Do not present custom input peripherals when switching back to a tab with a focused element
https://bugs.webkit.org/show_bug.cgi?id=225541
<rdar://problem/77537795>

Reviewed by Wenson Hsieh.

Source/WebKit:

With the introduction of desktop-class browing on iPad, form control
elements began to retain focus even after their input peripheral
(popover, menu, etc.) was dismissed. This behavior matches macOS - when
a <select> element is clicked, a menu is presented, and when a option
is selected, the menu is dismissed but the element retains focus.

Consequently, when a <select> menu is dismissed by choosing an option on
an iPad with a hardware keyboard, the element retains focus. Now, when
switching tabs and coming back to the tab with the focused <select>, an
activity state update is triggered. Upon recognizing that there is a
focused element, an ElementDidFocus message is sent to the UIProcess.

In [WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:],
the focus is given permission to present the input peripheral (menu)
when the hardware keyboard is attached. This is necessary when necessary
when focusing a text input, because the UCB needs to be displayed and
text selection needs to be set up. However, the behavior is undesirable
for elements that present a popover or a menu (select, color inputs, and
date inputs), since the user is unexpectedly shown an input peripheral.
Even worse, the user's scroll position will be changed to ensure the
focused element is visible.

To fix the undesirable behavior, and get closer to the macOS behavior,
custom input peripherals should not be displayed when switching back
to a tab with a focused element.

Test: fast/forms/ios/focus-select-and-switch-tabs.html

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):

Only show the input peripheral if it is not a keyboard view.

Tools:

Updated a UIScriptController hook that simulates attaching a hardware
keyboard to also swizzle [UIKeyboard isInHardwareKeyboardMode].

* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::platformInitialize):
(WTR::TestController::platformResetStateToConsistentValues):

Moved the default swizzling behavior into this method so that it remains
consistent across tests.

Unfortunately, the default swizzling behavior contrasts with the default
value of GSEventSetHardwareKeyboardAttached. However, this is an existing
inconsistency, and should be looked at more carefully in a separate
investigation.

* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::returnYes):
(WTR::returnNo):
(WTR::UIScriptControllerIOS::setHardwareKeyboardAttached):

LayoutTests:

Added a test which simulates a tab switch by removing and re-adding the
webview to the window.

* fast/forms/ios/focus-select-and-switch-tabs-expected.txt: Added.
* fast/forms/ios/focus-select-and-switch-tabs.html: Added.
* resources/ui-helper.js:
(window.UIHelper.becomeFirstResponder):
(window.UIHelper.removeViewFromWindow):
(window.UIHelper.addViewToWindow):

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

4 hours agoRemove WKBundlePageGroupRef
achristensen@apple.com [Mon, 10 May 2021 16:08:29 +0000 (16:08 +0000)]
Remove WKBundlePageGroupRef
https://bugs.webkit.org/show_bug.cgi?id=225471

Reviewed by Darin Adler.

Source/WebKit:

Its last use was removed in rdar://60987265

* Sources.txt:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/InjectedBundle/API/APIInjectedBundleBundleClient.h:
(API::InjectedBundle::Client::willDestroyPage):
(API::InjectedBundle::Client::didInitializePageGroup): Deleted.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.mm:
* WebProcess/InjectedBundle/API/c/WKBundle.cpp:
(WKBundleSetAsynchronousSpellCheckingEnabledForTesting):
(WKBundleGetLiveDocumentURLsForTesting):
(WKBundleSetUserStyleSheetLocationForTesting):
(WKBundleAddUserScript): Deleted.
(WKBundleAddUserStyleSheet): Deleted.
(WKBundleRemoveUserScript): Deleted.
(WKBundleRemoveUserStyleSheet): Deleted.
(WKBundleRemoveUserScripts): Deleted.
(WKBundleRemoveUserStyleSheets): Deleted.
(WKBundleRemoveAllUserContent): Deleted.
(WKBundleSetAsynchronousSpellCheckingEnabled): Deleted.
(WKBundleGetLiveDocumentURLs): Deleted.
(WKBundleSetUserStyleSheetLocation): Deleted.
* WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageGetPageGroup): Deleted.
* WebProcess/InjectedBundle/API/c/WKBundlePage.h:
* WebProcess/InjectedBundle/API/c/WKBundlePageGroup.cpp: Removed.
* WebProcess/InjectedBundle/API/c/WKBundlePageGroup.h: Removed.
* WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::setAsynchronousSpellCheckingEnabled):
(WebKit::InjectedBundle::setUserStyleSheetLocation):
(WebKit::InjectedBundle::liveDocumentURLs):
(WebKit::InjectedBundle::didInitializePageGroup): Deleted.
* WebProcess/InjectedBundle/InjectedBundle.h:
* WebProcess/InjectedBundle/InjectedBundleClient.cpp:
(WebKit::InjectedBundleClient::didInitializePageGroup): Deleted.
* WebProcess/InjectedBundle/InjectedBundleClient.h:
* WebProcess/WebPage/WebPageGroupProxy.cpp:
(WebKit::WebPageGroupProxy::create):

Tools:

Also use some smart pointers instead of raw pointers to keep things safe.

* TestWebKitAPI/InjectedBundleController.cpp:
(TestWebKitAPI::InjectedBundleController::InjectedBundleController):
(TestWebKitAPI::InjectedBundleController::initialize):
(TestWebKitAPI::InjectedBundleController::didInitializePageGroup): Deleted.
* TestWebKitAPI/InjectedBundleController.h:
(TestWebKitAPI::InjectedBundleController::bundle const):
* TestWebKitAPI/InjectedBundleTest.h:
(TestWebKitAPI::InjectedBundleTest::willDestroyPage):
(TestWebKitAPI::InjectedBundleTest::Register::create):
(TestWebKitAPI::InjectedBundleTest::didInitializePageGroup): Deleted.
* TestWebKitAPI/Tests/WebKit/DOMWindowExtensionBasic_Bundle.cpp:
* TestWebKitAPI/Tests/WebKit/DOMWindowExtensionNoCache_Bundle.cpp:
* TestWebKitAPI/Tests/WebKit/DocumentStartUserScriptAlertCrash_Bundle.cpp:
* TestWebKitAPI/Tests/WebKit/InjectedBundleDisableOverrideBuiltinsBehavior_Bundle.cpp:
* TestWebKitAPI/Tests/WebKit/InjectedBundleMakeAllShadowRootsOpen_Bundle.cpp:
* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::initialize):
(WTR::InjectedBundle::didCreatePage):
(WTR::InjectedBundle::didReceiveMessage):
(WTR::InjectedBundle::reportLiveDocuments):
(WTR::InjectedBundle::didReceiveMessageToPage):
(WTR::InjectedBundle::beginTesting):
(WTR::InjectedBundle::statisticsNotifyObserver):
(WTR::InjectedBundle::didInitializePageGroup): Deleted.
* WebKitTestRunner/InjectedBundle/InjectedBundle.h:
(WTR::InjectedBundle::bundle const):
(WTR::InjectedBundle::pageGroup const): Deleted.
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setUserStyleSheetEnabled):
(WTR::TestRunner::setAsynchronousSpellCheckingEnabled):

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

4 hours ago[MSE][GStreamer] Remove stale PlaybackPipeline.cpp
aboya@igalia.com [Mon, 10 May 2021 15:41:25 +0000 (15:41 +0000)]
[MSE][GStreamer] Remove stale PlaybackPipeline.cpp
https://bugs.webkit.org/show_bug.cgi?id=225595

Reviewed by Adrian Perez de Castro.

The WebKitMediaSrc v2 patch removed PlaybackPipeline but accidentally
the .cpp file survived the rebases.

This patch introduces no behavior changes, the file was not being
compiled anymore.

* platform/graphics/gstreamer/mse/PlaybackPipeline.cpp: Removed.

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

7 hours ago[GTK] Add picker UI for <input type=date> and <input type=datetime-local>
commit-queue@webkit.org [Mon, 10 May 2021 12:17:46 +0000 (12:17 +0000)]
[GTK] Add picker UI for <input type=date> and <input type=datetime-local>
https://bugs.webkit.org/show_bug.cgi?id=224924

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-05-10
Reviewed by Adrian Perez de Castro.

Use a GtkPopover with a GtkCalendar.

* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseSetFocus): Only notify the web process about focus changes when shouldNotifyFocusEvents is true.
(webkitWebViewBaseSetShouldNotifyFocusEvents): Set whether the web view should notify about focus changes to the
web process.
* UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
* UIProcess/gtk/WebDateTimePickerGtk.cpp:
(WebKit::WebDateTimePickerGtk::~WebDateTimePickerGtk): Call invalidate instead of endPicker.
(WebKit::WebDateTimePickerGtk::invalidate): Destroy the popover and allow the web view to notify about focus
events again.
(WebKit::WebDateTimePickerGtk::endPicker): Invalidate and notify the parent.
(WebKit::timeToString): Helper to convert the time portions of a DateComponents to a string.
(WebKit::calendarDateToString): Helper to convert selected date to a string.
(WebKit::WebDateTimePickerGtk::didChooseDate): Notify the WebPageProxy about the selected date.
(WebKit::WebDateTimePickerGtk::showDateTimePicker): Create or update a GtkPopover with a calendar.
(WebKit::WebDateTimePickerGtk::update): Update the calendar and current date.
* UIProcess/gtk/WebDateTimePickerGtk.h:

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

9 hours ago[GStreamer] fast/mediastream/MediaStream-video-element-video-tracks-disabled.html...
commit-queue@webkit.org [Mon, 10 May 2021 10:55:30 +0000 (10:55 +0000)]
[GStreamer] fast/mediastream/MediaStream-video-element-video-tracks-disabled.html fails
https://bugs.webkit.org/show_bug.cgi?id=225518

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

Source/WebCore:

* platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: Fix out-of-bounds memset().

LayoutTests:

* platform/glib/TestExpectations: Unflag a couple more mediastream tests that are passing now.

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

10 hours ago[GTK] Use always async scrolling in accelerated compositing mode
carlosgc@webkit.org [Mon, 10 May 2021 09:13:54 +0000 (09:13 +0000)]
[GTK] Use always async scrolling in accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=225512

Reviewed by Fujii Hironori.

We currently use async scrolling only when the hardware acceleration policy is set for always, but not when
entering accelerating compositing mode in ondemand policy. Since the GTK port still supports the non accelerated
compositing mode we need to add and remove the scrolling tree when entering and leaving the accelerated
compositing mode.

* UIProcess/API/glib/WebKitSettings.cpp:
(webkit_settings_set_hardware_acceleration_policy): Always enable async scrolling when accelerated compositing
is enabled.
* UIProcess/gtk/WebPreferencesGtk.cpp:
(WebKit::WebPreferences::platformInitializeStore): Ditto.
* WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
(WebKit::DrawingAreaCoordinatedGraphics::~DrawingAreaCoordinatedGraphics): Remove the scrolling tree if the
drawing area is destroyed in accelerated compositing mode.
(WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): Add the scrolling tree.
(WebKit::DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode): Remove the scrolling tree.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage): Do not add the scrolling tree from here for the GTK port.
(WebKit::WebPage::close): Do not remove the scrolling tree from here for the GTK port.

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

12 hours agoImplement <form>.requestSubmit()
commit-queue@webkit.org [Mon, 10 May 2021 07:16:13 +0000 (07:16 +0000)]
Implement <form>.requestSubmit()
https://bugs.webkit.org/show_bug.cgi?id=197958

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

LayoutTests/imported/w3c:

Update improved test results and import requestSubmit tests.

* web-platform-tests/html/dom/idlharness.https-expected.txt:
* web-platform-tests/html/semantics/forms/form-submission-0/request-submit-activation-expected.txt: Added.
* web-platform-tests/html/semantics/forms/form-submission-0/request-submit-activation.html: Added.
* web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit-autofocus-expected.txt: Added.
* web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit-autofocus.html: Added.
* web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit-expected.txt:
* web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit.html:

Source/WebCore:

Implement the requestSubmit method as defined here [1].

Behavior matches Chrome and Firefox.

[1] https://html.spec.whatwg.org/multipage/forms.html#dom-form-requestsubmit

Tests: imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit.html
       imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/request-submit-activation.html
       imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit-autofocus.html

* html/HTMLButtonElement.cpp:
(WebCore::HTMLButtonElement::defaultEventHandler):
(WebCore::HTMLButtonElement::isSubmitButton const):
* html/HTMLButtonElement.h:
* html/HTMLFormControlElement.h:
(WebCore::HTMLFormControlElement::isSubmitButton const):
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::submitImplicitly):
(WebCore::HTMLFormElement::submitIfPossible):
(WebCore::HTMLFormElement::requestSubmit):
(WebCore::HTMLFormElement::findSubmitButton):
(WebCore::HTMLFormElement::submit):
(WebCore::HTMLFormElement::effectiveTarget const):
(WebCore::HTMLFormElement::findSubmitter const):
(WebCore::HTMLFormElement::reportValidity):
(WebCore::HTMLFormElement::prepareForSubmission): Deleted.
(WebCore::HTMLFormElement::findSubmitButton const): Deleted.
* html/HTMLFormElement.h:
* html/HTMLFormElement.idl:
* html/HTMLInputElement.h:
* html/ImageInputType.cpp:
(WebCore::ImageInputType::handleDOMActivateEvent):
* html/ImageInputType.h:
* html/InputType.h:
(WebCore::InputType::isSubmitButton const):
* html/SubmitInputType.cpp:
(WebCore::SubmitInputType::handleDOMActivateEvent):
* loader/FormSubmission.cpp:
(WebCore::FormSubmission::create):
* loader/FormSubmission.h:

Source/WTF:

Add requestSubmit as experimental feature, disabled by default.

* Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

Update improved test results.

* platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
* platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
* platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:

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

13 hours agoUse IPC::Semaphore instead of sending an IPC message for every captured audio sample
youenn@apple.com [Mon, 10 May 2021 07:10:31 +0000 (07:10 +0000)]
Use IPC::Semaphore instead of sending an IPC message for every captured audio sample
https://bugs.webkit.org/show_bug.cgi?id=225452

Reviewed by Eric Carlson.

Previously, we were sending an IPC message from UIProcess or GPUProcess to WebProcess for every microphone audio sample chunk.
We are now using IPC::Semaphore to signal that a new chunk is to be processed.

We no longer send the chunk timestamp. Instead, we reconstruct it from the number of previously processed samples.
At audio storage change, we send the start time and we assume that there is continuous timing based on sample counts after that.
That is why we recreate a new audio storage change anytime we need to reset or the configuration changes, which should not happen often in practice.

We process fixed-size chunks on WebProcess side and signal it on GPUProcess/UIProcess side.
This size is sent through IPC at audio storage change time and is the max of 128 samples (WebAudio quantum) and AudioSession preferred size.
In case WebAudio is used, it should be 128 samples. In case WebAudio is not used, it should be 20 ms of audio data.

Covered by existing tests and manually tested.

* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::start):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::storageChanged):
* WebProcess/cocoa/RemoteCaptureSampleManager.cpp:
(WebKit::RemoteCaptureSampleManager::audioStorageChanged):
(WebKit::RemoteCaptureSampleManager::RemoteAudio::RemoteAudio):
(WebKit::RemoteCaptureSampleManager::RemoteAudio::~RemoteAudio):
(WebKit::RemoteCaptureSampleManager::RemoteAudio::stopThread):
(WebKit::RemoteCaptureSampleManager::RemoteAudio::startThread):
(WebKit::RemoteCaptureSampleManager::RemoteAudio::setStorage):
* WebProcess/cocoa/RemoteCaptureSampleManager.h:
* WebProcess/cocoa/RemoteCaptureSampleManager.messages.in:

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

18 hours agoAdd back protection of the pixel buffer in ImageBufferCGBackend::toCFData removed...
weinig@apple.com [Mon, 10 May 2021 01:48:09 +0000 (01:48 +0000)]
Add back protection of the pixel buffer in ImageBufferCGBackend::toCFData removed in r277237
https://bugs.webkit.org/show_bug.cgi?id=225574

Reviewed by Darin Adler.

In r277237, I accidentally removed a `RefPtr<Uint8ClampedArray> protectedPixelArray`
in ImageBufferCGBackend::toCFData that was needed to avoided crashing in some cases
when running fast/canvas/canvas-toDataURL-jpeg-crash.html.

Since it wasn't super clear what it was doing, this switches to using the more idiomatic
method of keeping the data alive in a CGDataProviderRef by passing the leaked image data
as the context and derefing in the callback lambda.

Just to be consistent, I went to other callers of CGDataProviderCreateWithData and
updated them to be idiomatically consistent.

* platform/graphics/cg/GraphicsContextGLCG.cpp:
(WebCore::GraphicsContextGLOpenGL::paintToCanvas):
(WebCore::releaseImageData): Deleted.
* platform/graphics/cg/ImageBufferCGBackend.cpp:
(WebCore::ImageBufferCGBackend::toCFData const):
* platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:
(WebCore::ImageBufferCGBitmapBackend::create):

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

19 hours ago[WebXR] Remove reference cycle in WebXRSession
lmoura@igalia.com [Mon, 10 May 2021 00:26:01 +0000 (00:26 +0000)]
[WebXR] Remove reference cycle in WebXRSession
https://bugs.webkit.org/show_bug.cgi?id=225025
<rdar://problem/77111217>

Unreviewed WPE build fix.

* Modules/webxr/WebXRInputSourceArray.h: Add missing namespace.

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

22 hours ago[WinCairo][Clang] lld-link: error: undefined symbol: public: static class GenericType...
Hironori.Fujii@sony.com [Sun, 9 May 2021 21:21:28 +0000 (21:21 +0000)]
[WinCairo][Clang] lld-link: error: undefined symbol: public: static class GenericTypedArrayView<>::tryCreate() in CryptoKeyRSAOpenSSL.cpp
https://bugs.webkit.org/show_bug.cgi?id=225581

Unreviewed build for r277142.

* crypto/openssl/CryptoKeyRSAOpenSSL.cpp: Include <JavaScriptCore/TypedArrayInlines.h>.

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

25 hours ago[Tools] Generate marshalling code without source reference
commit-queue@webkit.org [Sun, 9 May 2021 19:11:19 +0000 (19:11 +0000)]
[Tools] Generate marshalling code without source reference
https://bugs.webkit.org/show_bug.cgi?id=225283

Patch by Khem Raj <raj.khem@gmail.com> on 2021-05-09
Reviewed by Carlos Alberto Lopez Perez.

* MiniBrowser/gtk/CMakeLists.txt:

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

25 hours ago[WebXR] Remove reference cycle in WebXRSession
dino@apple.com [Sun, 9 May 2021 19:04:22 +0000 (19:04 +0000)]
[WebXR] Remove reference cycle in WebXRSession
https://bugs.webkit.org/show_bug.cgi?id=225025
<rdar://problem/77111217>

Reviewed by Sam Weinig.

Patch by Sam Weinig, who took my bad patch and made it better.

WebXRSession was attempting to create an WebXRInputSourceArray in
its constructor, which itself was trying to hold a strong reference
back to WebXRSession - causing a crash.

* Modules/webxr/WebXRBoundedReferenceSpace.h: Fix small typo.

* Modules/webxr/WebXRFrame.cpp: Use reference in constructor, since we
know the session exists.
(WebCore::WebXRFrame::create):
(WebCore::WebXRFrame::WebXRFrame):
* Modules/webxr/WebXRFrame.h:

* Modules/webxr/WebXRInputSource.cpp: Use a WeakPtr as a reference back
to the WebXRSession.
(WebCore::WebXRInputSource::create):
(WebCore::WebXRInputSource::WebXRInputSource):
(WebCore::WebXRInputSource::session): Add this getter.
(WebCore::WebXRInputSource::update): Check for null.
(WebCore::WebXRInputSource::pollEvents):
(WebCore::WebXRInputSource::createEvent): Deleted - moved to lambda.
* Modules/webxr/WebXRInputSource.h:
* Modules/webxr/WebXRInputSource.idl:

* Modules/webxr/WebXRInputSourceArray.cpp: Add GenerateIsReachable.
(WebCore::WebXRInputSourceArray::create):
(WebCore::WebXRInputSourceArray::WebXRInputSourceArray):
(WebCore::WebXRInputSourceArray::ref):
(WebCore::WebXRInputSourceArray::deref):
(WebCore::WebXRInputSourceArray::update):
(WebCore::WebXRInputSourceArray::handleAddedOrUpdatedInputSources):
* Modules/webxr/WebXRInputSourceArray.h:
* Modules/webxr/WebXRInputSourceArray.idl:

* Modules/webxr/WebXRInputSpace.cpp: Use reference in constructor.
(WebCore::WebXRInputSpace::create):
(WebCore::WebXRInputSpace::WebXRInputSpace):
* Modules/webxr/WebXRInputSpace.h:

* Modules/webxr/WebXRSession.cpp: Use a UniqueRef for input source array.
(WebCore::WebXRSession::onFrame):
* Modules/webxr/WebXRSession.h:

* bindings/scripts/CodeGeneratorJS.pm: Add ImplWebXRSessionRoot to GenerateIsReachable.
(GenerateImplementation):

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

25 hours agoIPC testing API should have the ability to send and receive shared memory
rniwa@webkit.org [Sun, 9 May 2021 18:57:20 +0000 (18:57 +0000)]
IPC testing API should have the ability to send and receive shared memory
https://bugs.webkit.org/show_bug.cgi?id=225576

Reviewed by Wenson Hsieh.

Source/WebKit:

This patch adds the capability to send & receive shared memory for IPC testing purposes.
It adds IPC.createSharedMemory which creates a JavaScript object representing a newly
allocated IPC-sharable memory. It has readBytes and writeBytes methods. Both takes offset
and the number of bytes to read / write. readBytes will return a new ArrayBuffer and
writeBytes takes an ArrayBuffer or a typed array as the first argument.

IPC.sendMessage and IPC.sendSyncMessage now supprts encoding this SharedMemory JavaScript
object. It supports the type specific arguments of "protection" and "dataSize" in addition
to the regular "value" property for the SharedMemory object.

This patch also adds the support for sending Semaphore object over IPC created via
IPC.createSemaphore, which was supposed to be added in r277199.

Finally, this patch also exposes the VM page size via IPC.vmPageSize to facilitate
the allocation of a sharable memory of an interesting size for testing purposes.

Tests: TestWebKitAPI.IPCTestingAPI.CanReceiveSharedMemory
       TestWebKitAPI.IPCTestingAPI.CanCreateSharedMemory
       TestWebKitAPI.IPCTestingAPI.CanSendSemaphpre
       TestWebKitAPI.IPCTestingAPI.CanSendSharedMemory

* GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::updateSharedMemoryForGetImageData): Use uint32_t instead
of size_t since the latter depends on the specific architecture (e.g. 32-bit vs 64-bit).
(WebKit::RemoteRenderingBackend::updateSharedMemoryAndSemaphoreForGetImageData): Ditto.
* GPUProcess/graphics/RemoteRenderingBackend.h:
* GPUProcess/graphics/RemoteRenderingBackend.messages.in: Ditto.
* Platform/IPC/JSIPCBinding.h: Added a specialization for SharedMemory::IPCHandle.
* WebProcess/WebPage/IPCTestingAPI.cpp:
(WebKit::IPCTestingAPI::JSIPCSemaphore::encode const): Added.
(WebKit::IPCTestingAPI::JSSharedMemory): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::create): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::size): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::JSSharedMemory): Added.
(WebKit::IPCTestingAPI::convertToUint64): Moved up here.
(WebKit::IPCTestingAPI::JSIPCSemaphore::signal): Fixed a typo.
(WebKit::IPCTestingAPI::JSIPCSemaphore::waitFor): Ditto.
(WebKit::IPCTestingAPI::JSSharedMemory::createHandle): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::createJSWrapper): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::wrapperClass): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::unwrap): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::toWrapped): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::initialize): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::finalize): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::staticFunctions): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::readBytes): Added.
(WebKit::IPCTestingAPI::arrayBufferDataFromValueRef): Extracted out of encodeTypedArray.
(WebKit::IPCTestingAPI::JSSharedMemory::writeBytes): Added.
(WebKit::IPCTestingAPI::JSIPC::staticFunctions): Added IPC.createSharedMemory.
(WebKit::IPCTestingAPI::JSIPC::staticValues): Added IPC.vmPageSize.
(WebKit::IPCTestingAPI::encodeTypedArray):
(WebKit::IPCTestingAPI::getObjectIdentifierFromProperty): Now uses convertToUint64.
(WebKit::IPCTestingAPI::encodeSharedMemory): Added.
(WebKit::IPCTestingAPI::encodeSemaphore): Added.
(WebKit::IPCTestingAPI::encodeArgument): Added the support for encoding SharedMemory and
Semaphore.
(WebKit::IPCTestingAPI::JSIPC::createSharedMemory): Added.
(WebKit::IPCTestingAPI::JSIPC::vmPageSize): Added.
(IPC::jsValueForDecodedArgumentValue): Added. Creates a newly added SharedMemory JavaScript
object for SharedMemory::IPCHandle. It also exposes dataSize and protection value.
This decoder detects whether the shared memory is writable or not by attempting to map it
as Protection::ReadWrite and falling back to Protection::ReadOnly if the former fails.

Tools:

Added tests for sending and receiving shared memory in the IPC testing API.
Also added a test to send semaphore, which was missing in r277199.

* TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:
(IPCTestingAPI.CanReceiveSharedMemory): Added.
(IPCTestingAPI.CanCreateSharedMemory): Added.
(IPCTestingAPI.CanSendSemaphpre): Added after r277199.
(IPCTestingAPI.CanSendSharedMemory): Added.

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

25 hours agoRemove uses of the String::toInt family of functions from the WebCore/platform directory
darin@apple.com [Sun, 9 May 2021 18:54:10 +0000 (18:54 +0000)]
Remove uses of the String::toInt family of functions from the WebCore/platform directory
https://bugs.webkit.org/show_bug.cgi?id=225575

Second half.

Reviewed by Sam Weinig.

* platform/mediastream/mac/ScreenDisplayCapturerMac.mm:
(WebCore::ScreenDisplayCapturerMac::create): Use parseInteger<uint32_t>
instead of String::toUIntStrict.
(WebCore::ScreenDisplayCapturerMac::screenCaptureDeviceWithPersistentID): Ditto.
* platform/mediastream/mac/WindowDisplayCapturerMac.mm:
(WebCore::WindowDisplayCapturerMac::create): Ditto.
(WebCore::WindowDisplayCapturerMac::windowCaptureDeviceWithPersistentID): Ditto.

* platform/network/HTTPParsers.cpp:
(WebCore::parseRange): Use parseInteger<long long> instead of
String::toInt64Strict. Also use StringView so we don't allocate substrings on
the heap just to parse integers within an existing string. And removed unneeded
call to stripWhiteSpace in one place since parseInteger already allows leading
and trailing spaces, and in another case where we need to strip because of an
empty string check, used stripLeadingAndTrailingHTTPSpaces instead.

* platform/network/ParsedContentRange.cpp:
(WebCore::parseContentRange): Use parseInteger<int64_t> instead of
StringView::toInt64Strict.

* platform/network/ParsedRequestRange.cpp:
(WebCore::ParsedRequestRange::parse): Use parseInteger<uint64_t> instead of
StringView::toUInt64Strict.

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

25 hours agofixed ChangeLog
darin@apple.com [Sun, 9 May 2021 18:39:24 +0000 (18:39 +0000)]
fixed ChangeLog

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

25 hours agoFollow-up to: Remove uses of the String::toInt family of functions from the WebCore...
darin@apple.com [Sun, 9 May 2021 18:35:30 +0000 (18:35 +0000)]
Follow-up to: Remove uses of the String::toInt family of functions from the WebCore/platform directory
https://bugs.webkit.org/show_bug.cgi?id=225575

Reviewed by Sam Weinig.

* html/FTPDirectoryDocument.cpp:
(WebCore::processFilesizeString): Change format to "1000.0" as we discussed.

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

25 hours agoRemove uses of the String::toInt family of functions from the WebCore/platform directory
darin@apple.com [Sun, 9 May 2021 18:31:34 +0000 (18:31 +0000)]
Remove uses of the String::toInt family of functions from the WebCore/platform directory
https://bugs.webkit.org/show_bug.cgi?id=225575

Reviewed by Sam Weinig.

* platform/DateComponents.cpp: Tweak a comment on the local parseInt function here
that should likely be consolidated with parseInteger at some point.

* platform/Length.cpp:
(WebCore::parseLength): Use parseInteger<int> instead of charactersToIntStrict.

* platform/encryptedmedia/clearkey/CDMClearKey.cpp:
(WebCore::CDMPrivateClearKey::sanitizeSessionId const): Use parseInteger<uint32_t>
instead of String::toUIntStrict.

* platform/graphics/HEVCUtilities.cpp:
(WebCore::parseHEVCCodecParameters): Use parseInteger<uint8/32_t> instead of
toIntegralType<uint8/32_t>.
(WebCore::parseDoViCodecParameters): Ditto.
* platform/graphics/VP9Utilities.cpp:
(WebCore::parseVPCodecParameters): Ditto.

* platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm:
(WebCore::CDMPrivateMediaSourceAVFObjC::parseKeySystem): Use parseInteger<int>
instead of String::toInt. There's no need for the "allow trailing junk" here
because a regular expression is used to check format before we call parseInteger.
Also removed an unnecessary empty string check, since the regular expression
match check will fail on an empty string.

* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::trackDidChangeSelected): Use
parseIntegerAllowingTrailingJunk<uint64_t> instead ot toUInt64.
(WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::flush): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::enqueueSample): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::notifyClientWhenReadyForMoreSamples): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::canSetMinimumUpcomingPresentationTime const): Ditto.

* platform/graphics/cocoa/HEVCUtilitiesCocoa.mm:
(WebCore::parseStringArrayFromDictionaryToUInt16Vector): Use
parseInteger<uint16_t> instead of toIntegralType<uint16_t>. We could also
consider using -[NSString intValue] here with some range checking instead
of converting to WTF::String.

* platform/mediastream/mac/ScreenDisplayCapturerMac.mm:
(WebCore::ScreenDisplayCapturerMac::create): Use parseInteger<uint32_t>
instead of String::toUIntStrict.
(WebCore::ScreenDisplayCapturerMac::screenCaptureDeviceWithPersistentID): Ditto.
* platform/mediastream/mac/WindowDisplayCapturerMac.mm:
(WebCore::WindowDisplayCapturerMac::create): Ditto.
(WebCore::WindowDisplayCapturerMac::windowCaptureDeviceWithPersistentID): Ditto.

* platform/network/HTTPParsers.cpp:
(WebCore::parseRange): Use parseInteger<long long> instead of
String::toInt64Strict. Also use StringView so we don't allocate substrings on
the heap just to parse integers within an existing string. And removed unneeded
call to stripWhiteSpace in one place since parseInteger already allows leading
and trailing spaces, and in another case where we need to strip because of an
empty string check, used stripLeadingAndTrailingHTTPSpaces instead.

* platform/network/ParsedContentRange.cpp:
(WebCore::parseContentRange): Use parseInteger<int64_t> instead of
StringView::toInt64Strict.

* platform/network/ParsedRequestRange.cpp:
(WebCore::ParsedRequestRange::parse): Use parseInteger<uint64_t> instead of
StringView::toUInt64Strict.

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

25 hours agoRemove uses of the String::toInt family of functions from WebCore/html and similar...
darin@apple.com [Sun, 9 May 2021 18:22:23 +0000 (18:22 +0000)]
Remove uses of the String::toInt family of functions from WebCore/html and similar directories
https://bugs.webkit.org/show_bug.cgi?id=225577

Reviewed by Sam Weinig.

Source/WebCore:

* dom/Document.cpp:
(WebCore::Document::createEvent): Fix spelling error.

* html/FTPDirectoryDocument.cpp:
(WebCore::processFilesizeString): Use parseIntegerAllowingTrailingJunk<uint64_t>
instead of String::toUInt64.

* html/FormController.cpp:
(WebCore::deserializeFormControlState): Use parseIntegerAllowingTrailingJunk<size_t>
instead of String::toUInt.
(WebCore::SavedFormState::deserialize): Ditto.

* html/HTMLFontElement.cpp:
(WebCore::parseFontSize): Use parseInteger<int> instead of
charactersToIntStrict.
* html/HTMLFrameElement.cpp:
(WebCore::HTMLFrameElement::parseAttribute): Use parseIntegerAllowingTrailingJunk<int>
instead of String::toInt.
* html/HTMLFrameSetElement.cpp:
(WebCore::HTMLFrameSetElement::parseAttribute): Ditto.
* html/HTMLHRElement.cpp:
(WebCore::HTMLHRElement::collectStyleForPresentationAttribute): Ditto.
* html/HTMLIFrameElement.cpp:
(WebCore::HTMLIFrameElement::collectStyleForPresentationAttribute): Ditto.
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::parseAttribute): Ditto.
* html/HTMLLIElement.cpp:
(WebCore::HTMLLIElement::parseValue): Ditto.
* html/HTMLMarqueeElement.cpp:
(WebCore::HTMLMarqueeElement::loop const): Ditto.
* html/HTMLTableCellElement.cpp:
(WebCore::HTMLTableCellElement::collectStyleForPresentationAttribute): Ditto.
* html/HTMLTableColElement.cpp:
(WebCore::HTMLTableColElement::parseAttribute): Ditto.
* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::parseAttribute): Ditto.

* html/LinkIconCollector.cpp:
(WebCore::LinkIconCollector::iconsOfTypes): Use parseIntegerAllowingTrailingJunk<unsigned>
instead of String::toUInt. Also removed unneeded call to stripWhiteSpace since the
integer parsing function already skips leading and trailing spaces.

* html/MediaFragmentURIParser.cpp:
(WebCore::MediaFragmentURIParser::parseNPTTime): Use parseInteger<int> instead of
String::toInt. The strings passsed in are fixed size and all digits.

* html/TypeAhead.cpp:
(WebCore::TypeAhead::handleEvent): Use parseIntegerAllowingTrailingJunk<int>
instead of String::toInt.

* html/URLDecomposition.cpp:
(WebCore::URLDecomposition::setHost): Use parseInteger<uint16_t> instead of parseUInt16.
(WebCore::parsePort): Ditto.

* html/shadow/DateTimeNumericFieldElement.cpp:
(WebCore::DateTimeNumericFieldElement::handleKeyboardEvent): Use
parseIntegerAllowingTrailingJunk<int> instead of String::toInt.

* html/track/VTTScanner.cpp:
(WebCore::VTTScanner::scanDigits): Use parseInteger<int> instead of
charactersToIntStrict.

* mathml/MathMLSelectElement.cpp:
(WebCore::MathMLSelectElement::getSelectedActionChildAndIndex): Use
parseIntegerAllowingTrailingJunk<int> instead of AtomString::toInt.

Source/WTF:

* wtf/text/StringBuilder.h: Added conversion operator to make a StringView, built on the exiting
is8Bit, characters8, characters16 and length functions. Removed now-uneeded equal function and
== and != operators since the StringView ones work for those same cases with the same syntax.

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

34 hours ago[GPU Process] Simplify DisplayList::Iterator part 6: Migrate ItemBufferWritingClient...
mmaxfield@apple.com [Sun, 9 May 2021 09:52:48 +0000 (09:52 +0000)]
[GPU Process] Simplify DisplayList::Iterator part 6: Migrate ItemBufferWritingClient from ItemHandle to a const Variant&
https://bugs.webkit.org/show_bug.cgi?id=224270

Reviewed by Wenson Hsieh.

Source/WebCore:

This patch adds a new Variant that contains all the DisplayList item types, named DisplayListItem. It also migrates
ItemBufferWritingClient from ItemHandle to this new Variant.

There are two benefits to this:
1. The templated overload of ItemBuffer::append() is way simpler now. Previously, we used to allocate a byte buffer
       on the stack and run a placement new of the display list item type into it. Now, we can just run the DisplayListItem
       constructor instead. Using the Variant does require more stack space, but we only will ever have one of these objects
       on the stack at a time.
2. The big table inside RemoteImageBufferProxy::encodeItemOutOfLine() is gone, and is replaced with just 7 lines. This is
       one fewer place where we'll have to make sure the DisplayListItem types match a function in an entirely different
       framework.

No new tests, because there is no behavior change.

* platform/graphics/displaylists/DisplayListItemBuffer.cpp:
(WebCore::DisplayList::copyInto):
(WebCore::DisplayList::safeCopyHelper):
(WebCore::DisplayList::safeCopy):
(WebCore::DisplayList::ItemBuffer::append):
* platform/graphics/displaylists/DisplayListItemBuffer.h:
(WebCore::DisplayList::ItemBufferWritingClient::requiredSizeForItem const):
(WebCore::DisplayList::ItemBufferWritingClient::encodeItemOutOfLine const):
(WebCore::DisplayList::ItemBufferWritingClient::encodeItemInline const):
(WebCore::DisplayList::ItemBuffer::append):
* platform/graphics/displaylists/DisplayListItemType.cpp:
(WebCore::DisplayList::paddedSizeOfTypeAndItemInBytes):
(WebCore::DisplayList::displayListItemType):
* platform/graphics/displaylists/DisplayListItems.h:
* platform/graphics/displaylists/InMemoryDisplayList.cpp:
(WebCore::DisplayList::InMemoryDisplayList::WritingClient::requiredSizeForItem const):
(WebCore::DisplayList::InMemoryDisplayList::WritingClient::encodeItemInline const):
* platform/graphics/displaylists/InMemoryDisplayList.h:

Source/WebKit:

* WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
(WebKit::RemoteImageBufferProxy::encodeItemOutOfLineHelper):

Tools:

* TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp:

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

36 hours ago[Cocoa] Unify last resort fallback font between all Cocoa ports
mmaxfield@apple.com [Sun, 9 May 2021 07:17:30 +0000 (07:17 +0000)]
[Cocoa] Unify last resort fallback font between all Cocoa ports
https://bugs.webkit.org/show_bug.cgi?id=225569

Reviewed by Darin Adler.

Just remove an unnecessary #if.

Covered by existing tests.

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontCache::lastResortFallbackFont):

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

39 hours ago[GPUP] A small video element enters fullscreen with strange animations
peng.liu6@apple.com [Sun, 9 May 2021 04:53:33 +0000 (04:53 +0000)]
[GPUP] A small video element enters fullscreen with strange animations
https://bugs.webkit.org/show_bug.cgi?id=225548

Reviewed by Eric Carlson.

Use `FloatRect` instead of `IntRect` to exchange video element location/size
information between WebContent processes and the UI process to avoid information
mismatch due to floating-point rounding.

Source/WebCore:

Manually tested.

* platform/ios/VideoFullscreenInterfaceAVKit.h:
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(VideoFullscreenInterfaceAVKit::setupFullscreen):
(VideoFullscreenInterfaceAVKit::exitFullscreen):
(VideoFullscreenInterfaceAVKit::preparedToReturnToInline):
(VideoFullscreenInterfaceAVKit::setInlineRect):

Source/WebKit:

Deal with the video element resizing differently for two cases:
1) Video is playing in the inline mode.
2) Video is entering fullscreen/picture-in-picture.
For the latter case, `-[WKVideoLayerRemote layoutSublayers]` will scale the layer
with the same factor in both X and Y direction.

* GPUProcess/media/RemoteMediaPlayerProxy.h:
* GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
* GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:
(WebKit::setVideoInlineSizeIfPossible):
(WebKit::RemoteMediaPlayerProxy::setVideoInlineSizeFenced):

* UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
* UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in:
* UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
(WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID):
(WebKit::VideoFullscreenManagerProxy::exitFullscreen):
(WebKit::VideoFullscreenManagerProxy::setInlineRect):
(WebKit::VideoFullscreenManagerProxy::preparedToReturnToInline):

* WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::setVideoInlineSizeFenced):
(WebKit::MediaPlayerPrivateRemote::inVideoFullscreenOrPictureInPicture const):
* WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
* WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.mm:
(-[WKVideoLayerRemote layoutSublayers]):
(-[WKVideoLayerRemote resolveBounds]):
* WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::inlineVideoFrame):
(WebKit::VideoFullscreenManager::requestUpdateInlineRect):

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

39 hours ago[WinCairo] Remove linker warning on ANGLE
basuke.suzuki@sony.com [Sun, 9 May 2021 04:31:43 +0000 (04:31 +0000)]
[WinCairo] Remove linker warning on ANGLE
https://bugs.webkit.org/show_bug.cgi?id=225501

Reviewed by Darin Adler.

libANGLE is statically linked to libGLESv2.dll so that __declspec(dllimport) is not required here.

* include/platform/PlatformMethods.h:

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

39 hours agoRemove calls to the String::toInt family of functions from JavaScriptCore
darin@apple.com [Sun, 9 May 2021 04:15:21 +0000 (04:15 +0000)]
Remove calls to the String::toInt family of functions from JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=225571

Reviewed by Sam Weinig.

* inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::parseLocation): Use parseIntegerAllowingTrailingJunk<JSC::SourceID>
instead of String::toIntPtr. There was no reason to parse the source ID as a
signed integer, and it's more elegant to parse the type we intend to store and
process, not a different but similar type.
(Inspector::InspectorDebuggerAgent::searchInContent): Ditto.
(Inspector::InspectorDebuggerAgent::getScriptSource): Ditto.

* inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets): Use
parseInteger<uintptr_t> instead of String::toIntPtrStrict.
(Inspector::InspectorRuntimeAgent::getBasicBlocks): Use
parseIntegerAllowingTrailingJunk<uintptr_t> instead of String::toIntPtr.

* runtime/FuzzerPredictions.cpp:
(JSC::FuzzerPredictions::FuzzerPredictions): Use parseInteger<uint64_t>
instead of String::toUInt64Strict.

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

40 hours agoRemove uses of the WTF::String::toInt family of functions from WebKit framework sources
darin@apple.com [Sun, 9 May 2021 04:09:18 +0000 (04:09 +0000)]
Remove uses of the WTF::String::toInt family of functions from WebKit framework sources
https://bugs.webkit.org/show_bug.cgi?id=225570

Reviewed by Sam Weinig.

* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::readSizeFile): Use parseInteger<uint64_t>
instead of charactersToUIntStrict. Also simplified the code a bit by
reducing the mixing of integer types in the function.

* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::deleteOldVersions): Use parseInteger<unsigned>
instead of String::toUIntStrict. Also use StringView::substring so we don't
have to allocate a copy of a substring just to parse it.

* Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm:
(WebKit::XPCServiceInitializerDelegate::getClientSDKVersion): Use
parseInteger<uint32_t> instead of charactersToUIntStrict. Also let the
StringView constructor take care of converting the const char*
so we don't have to write explicit calls to std::strlen here.
(WebKit::XPCServiceInitializerDelegate::getProcessIdentifier): Use
parseInteger<uint64_t> instead of String::toUInt64Strict. Also pass the
const char* as a StringView rather than converting it to a String so we
don't have to allocate a copy of the string just to parse it.

* Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:
(WebKit::PluginVersion::parse): Use parseIntegerAllowingTrailingJunk<unsigned>
instead of String::toUInt. Also use StringView::split instead of String::split
so we don't have to allocate memory for all the substrings and a range-based
for loop for simplicity.

* UIProcess/API/Cocoa/WKWebView.mm:
(coreTextManipulationItemIdentifierFromString): Use -[NSString longLongValue]
instead of String::toUInt64. There's no need to parse this unsigned because
the values will fit in 63 bits just fine, and it's nice to use NSString
directly rather than copying the string just to parse the integer in it.
(coreTextManipulationTokenIdentifierFromString): Ditto.

* WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
(WebKit::parsePostBuffer): Use parseIntegerAllowingTrailingJunk<unsigned>
instead of String::toInt. The length can't be negative; it was not helpful
to parse negative numbers before and this is a small bug fix, but in a code
path that is probably not used for much of anything any more.

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

41 hours ago[JSC] Fix invalid exception checks after recent ErrorInstance changes
ross.kirsling@sony.com [Sun, 9 May 2021 02:18:25 +0000 (02:18 +0000)]
[JSC] Fix invalid exception checks after recent ErrorInstance changes
https://bugs.webkit.org/show_bug.cgi?id=225565

Reviewed by Alexey Shvayka.

r277221 and r277224 each introduced issues under validateExceptionChecks=1; this patch fixes them.

Of particular note:
The earlier patch sought to consolidate Error#cause logic under ErrorInstance::finishCreation.
This part must be undone as it is crucial that non-user-thrown errors be able to bypass that logic
(otherwise throwException itself would need to be exception-checked).

* runtime/AggregateError.cpp:
(JSC::createAggregateError):
* runtime/ArrayPrototype.cpp:
(JSC::getProperty):
* runtime/Error.cpp:
(JSC::createError):
(JSC::createEvalError):
(JSC::createRangeError):
(JSC::createReferenceError):
(JSC::createSyntaxError):
(JSC::createTypeError):
(JSC::createURIError):
(JSC::createGetterTypeError):
* runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::create):
(JSC::ErrorInstance::finishCreation):
* runtime/ErrorInstance.h:
(JSC::ErrorInstance::create):
* runtime/JSObject.h:
* runtime/JSObjectInlines.h:
(JSC::JSObject::getIfPropertyExists):
* runtime/NullSetterFunction.cpp:
(JSC::NullSetterFunctionInternal::JSC_DEFINE_HOST_FUNCTION):
* wasm/js/JSWebAssemblyCompileError.cpp:
(JSC::createJSWebAssemblyCompileError):
* wasm/js/JSWebAssemblyLinkError.cpp:
(JSC::createJSWebAssemblyLinkError):
* wasm/js/JSWebAssemblyRuntimeError.cpp:
(JSC::createJSWebAssemblyRuntimeError):

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

42 hours agoFactor out pixel buffer from DOM specific ImageData class
weinig@apple.com [Sun, 9 May 2021 01:29:38 +0000 (01:29 +0000)]
Factor out pixel buffer from DOM specific ImageData class
https://bugs.webkit.org/show_bug.cgi?id=225554

Reviewed by Darin Adler.

Source/WebCore:

Prepare to fix layering violating use of DOM level ImageData being
used by platform code by factoring out the pixel storage into a new
PixelBuffer class. Since it will be a little more general that
ImageData is now (though ImageData will need to gain these soon)
PixelBuffer also captures the pixel format and color space the pixel
data represents.

While here, update ImageData::data() to return a reference rather than
a pointer to indicate it is never null and update all the callers.

* Headers.cmake:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSImageDataCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::dumpImageBitmap):
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneDeserializer::readTerminal):
* html/ImageBitmap.cpp:
(WebCore::ImageBitmap::createPromise):
* html/ImageData.cpp:
(WebCore::ImageData::create):
(WebCore::ImageData::ImageData):
(WebCore::ImageData::deepClone const):
(WebCore::operator<<):
* html/ImageData.h:
(WebCore::ImageData::size const):
(WebCore::ImageData::width const):
(WebCore::ImageData::height const):
(WebCore::ImageData::data const):
(WebCore::ImageData::colorSpace const):
(WebCore::ImageData::format const):
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::createEmptyImageData):
(WebCore::CanvasRenderingContext2DBase::putImageData):
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::texImageSourceHelper):
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildArrayForImageData):
* platform/graphics/GraphicsContextGL.cpp:
(WebCore::GraphicsContextGL::extractImageData):
* platform/graphics/ImageBufferBackend.cpp:
(WebCore::ImageBufferBackend::convertToLuminanceMask):
(WebCore::ImageBufferBackend::getImageData const):
(WebCore::ImageBufferBackend::putImageData):
* platform/graphics/PixelBuffer.cpp: Added.
(WebCore::PixelBuffer::PixelBuffer):
(WebCore::PixelBuffer::deepClone const):
* platform/graphics/PixelBuffer.h: Added.
(WebCore::PixelBuffer::colorSpace const):
(WebCore::PixelBuffer::format const):
(WebCore::PixelBuffer::size const):
(WebCore::PixelBuffer::data const):
* platform/graphics/ShadowBlur.cpp:
(WebCore::ShadowBlur::blurShadowBuffer):
* platform/graphics/angle/GraphicsContextGLANGLE.cpp:
(WebCore::GraphicsContextGLOpenGL::readPixelsForPaintResults):
* platform/graphics/cg/GraphicsContextGLCG.cpp:
(WebCore::GraphicsContextGLOpenGL::paintToCanvas):
* platform/graphics/cg/ImageBufferCGBackend.cpp:
(WebCore::ImageBufferCGBackend::toCFData const):
* platform/graphics/cg/ImageBufferUtilitiesCG.cpp:
(WebCore::cfData):
* platform/graphics/filters/FEColorMatrix.cpp:
(WebCore::FEColorMatrix::platformApplySoftware):
* platform/graphics/filters/FEComponentTransfer.cpp:
(WebCore::FEComponentTransfer::platformApplySoftware):
* platform/graphics/filters/FEComposite.cpp:
(WebCore::FEComposite::platformApplySoftware):
* platform/graphics/filters/FEConvolveMatrix.cpp:
(WebCore::FEConvolveMatrix::platformApplySoftware):
* platform/graphics/filters/FEDisplacementMap.cpp:
(WebCore::FEDisplacementMap::platformApplySoftware):
* platform/graphics/filters/FEDropShadow.cpp:
(WebCore::FEDropShadow::platformApplySoftware):
* platform/graphics/filters/FEGaussianBlur.cpp:
(WebCore::FEGaussianBlur::platformApplySoftware):
* platform/graphics/filters/FELighting.cpp:
(WebCore::FELighting::platformApplySoftware):
* platform/graphics/filters/FEMorphology.cpp:
(WebCore::FEMorphology::platformApplySoftware):
* platform/graphics/filters/FETurbulence.cpp:
(WebCore::FETurbulence::platformApplySoftware):
* platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::forceValidPreMultipliedPixels):
(WebCore::FilterEffect::copyConvertedImageBufferToDestination):
(WebCore::FilterEffect::copyConvertedImageDataToDestination):
(WebCore::FilterEffect::copyUnmultipliedResult):
(WebCore::FilterEffect::copyPremultipliedResult):
* rendering/shapes/Shape.cpp:
(WebCore::Shape::createRasterShape):

Source/WebKit:

Update for ImageData::data() returning a reference.

* GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::populateGetImageDataSharedMemory):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<Ref<WebCore::ImageData>>::encode):
* WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

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

42 hours ago[Cocoa] Remove the one use of String::toInt from WebKitLegacy
darin@apple.com [Sun, 9 May 2021 01:26:37 +0000 (01:26 +0000)]
[Cocoa] Remove the one use of String::toInt from WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=225568

Reviewed by Sam Weinig.

* DOM/DOMHTMLInputElement.mm:
(-[DOMHTMLInputElement setSize:]): Use -[NSString intValue] instead of WTF::String::toInt.
Both functions ignore leading spaces, and both ignore trailing junk, so there is no
significant change in behavior.

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

42 hours agoREGRESSION (r276797?): [ macOS/iOS ] TestWebKitAPI.URLSchemeHandler.Exceptions is...
commit-queue@webkit.org [Sun, 9 May 2021 01:17:13 +0000 (01:17 +0000)]
REGRESSION (r276797?): [ macOS/iOS ] TestWebKitAPI.URLSchemeHandler.Exceptions is flakey crashing
https://bugs.webkit.org/show_bug.cgi?id=225373

Patch by Alex Christensen <achristensen@webkit.org> on 2021-05-08
Reviewed by Sam Weinig.

Source/WebKit:

This patch fixes three problems related to the lifetime of WKURLSchemeTasks:

1. There was an unneeded abstraction API::URLSchemeTask which wrapped a WebURLSchemeTask, which could have a different lifetime than its owner.
   This is especially bad since at least one was used on multiple threads.
2. We weren't explicitly keeping a strong reference to the task given to the API client in startURLSchemeTask: and stopURLSchemeTask: which could
   cause all our internal maps to release their references to the task after the first call to didFailWithError and there was a test that did multiple
   calls to didFailWithError and verifies it throws an NSException the second time.
3. We were keeping a HashSet of raw WebURLSchemeHandler pointers, then using each of them without keeping it alive.

This is covered by at least the URLSchemeHandler.Exceptions API test which would crash in many exciting places before this but doesn't crash after this.

* Sources.txt:
* UIProcess/API/APIURLSchemeTask.cpp: Removed.
* UIProcess/API/APIURLSchemeTask.h: Removed.
* UIProcess/API/C/WKTestingSupport.cpp:
(WKGetAPIURLSchemeTaskInstanceCount): Deleted.
* UIProcess/API/C/WKTestingSupport.h:
* UIProcess/API/Cocoa/WKURLSchemeTask.mm:
(-[WKURLSchemeTaskImpl init]):
(-[WKURLSchemeTaskImpl dealloc]):
(-[WKURLSchemeTaskImpl request]):
(-[WKURLSchemeTaskImpl _requestOnlyIfCached]):
(-[WKURLSchemeTaskImpl _willPerformRedirection:newRequest:completionHandler:]):
(-[WKURLSchemeTaskImpl didReceiveResponse:]):
(-[WKURLSchemeTaskImpl didReceiveData:]):
(-[WKURLSchemeTaskImpl didFinish]):
(-[WKURLSchemeTaskImpl didFailWithError:]):
(-[WKURLSchemeTaskImpl _didPerformRedirection:newRequest:]):
(-[WKURLSchemeTaskImpl _frame]):
* UIProcess/API/Cocoa/WKURLSchemeTaskInternal.h:
* UIProcess/Cocoa/WebURLSchemeHandlerCocoa.h:
* UIProcess/Cocoa/WebURLSchemeHandlerCocoa.mm:
(WebKit::WebURLSchemeHandlerCocoa::platformStartTask):
(WebKit::WebURLSchemeHandlerCocoa::platformStopTask):
(WebKit::WebURLSchemeHandlerCocoa::platformTaskCompleted): Deleted.
* UIProcess/Inspector/socket/RemoteInspectorProtocolHandler.h:
* UIProcess/Inspector/win/InspectorResourceURLSchemeHandler.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::stopAllURLSchemeTasks):
* UIProcess/WebURLSchemeHandler.cpp:
(WebKit::WebURLSchemeHandler::taskCompleted):
* UIProcess/WebURLSchemeHandler.h:
* UIProcess/WebURLSchemeTask.h:
* WebKit.xcodeproj/project.pbxproj:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-leaks.mm:
(runUntilTasksInFlight):

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

43 hours agoRename toIntegralType to parseInteger and prepare to use it to replace all our intege...
darin@apple.com [Sun, 9 May 2021 00:59:28 +0000 (00:59 +0000)]
Rename toIntegralType to parseInteger and prepare to use it to replace all our integer-parsing functions
https://bugs.webkit.org/show_bug.cgi?id=225560

Reviewed by Sam Weinig.

I have a much larger patch that replaces all the many toInt functions with these parseInteger
function templates. The parseInteger ones take StringView, which means we can pass almost any
type of string or character/length pair including a substring without allocating a new string,
return Optional rather than using an out argument to report failure, take the integer type as
a template parameter so can be used for precisely the desired type at each call site, and make
the "allow trailing junk" feature explicit, rather than implicitly including it in the shortest
named functions, which I hope will discourage people from using that junk-ignoring mode
when it's not desirable.

Also includes adoption of parseInteger within WTF itself, outside the string classes.

My plan is to land the rest of adoption of this in chunks so we can review carefully and spot
mistakes as we go. Then return to files like WTFString.h and remove the many old functions
this replaces, including the String::toInt and charactersToInt families of functions.

* wtf/URL.cpp:
(WTF::URL::port const): Use parseInteger<uint16_t>.
(WTF::URL::setHostAndPort): Ditto.

* wtf/text/StringToIntegerConversion.h: Refactored the existing code to tighten things up
a bit, and got rid of overloads that take pointer and length and the the generic "any string
type" feature, since StringView already works well for that. Renamed toIntegralType to
parseInteger, leaving the old name behind to ease the transition while adopting parseInteger.

* wtf/text/WTFString.cpp:
(WTF::toDoubleType): Use the TrailingJunkPolicy enumeration from the
StringToIntegerConversion.h header.
(WTF::charactersToDouble): Ditto.
(WTF::charactersToFloat): Ditto.

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

43 hours ago[Cocoa] Unify font collection handling between all Cocoa ports
mmaxfield@apple.com [Sun, 9 May 2021 00:51:46 +0000 (00:51 +0000)]
[Cocoa] Unify font collection handling between all Cocoa ports
https://bugs.webkit.org/show_bug.cgi?id=225566

Reviewed by Darin Adler.

Just remove an unnecessary #if.

Covered by existing tests.

* platform/graphics/mac/FontCustomPlatformData.cpp:
(WebCore::createFontCustomPlatformData):

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

43 hours agoAdd bounds checks around calls to GlyphBuffer::stringOffsetAt()
mmaxfield@apple.com [Sun, 9 May 2021 00:13:59 +0000 (00:13 +0000)]
Add bounds checks around calls to GlyphBuffer::stringOffsetAt()
https://bugs.webkit.org/show_bug.cgi?id=225335
<rdar://problem/75663608>

Reviewed by Simon Fraser and Geoff Garen.

We're getting crash reports that look like they're from string offsets being out-of-bounds.
These string offsets round-trip through Core Text, which is allowed to modify them, which
can end up making them out-of-bounds.

No new tests because I don't have a reproducible test case; just crash reports.

* platform/graphics/FontCascade.cpp:
(WebCore::computeUnderlineType):
* platform/graphics/GlyphBuffer.h:
(WebCore::GlyphBuffer::uncheckedStringOffsetAt const):
(WebCore::GlyphBuffer::checkedStringOffsetAt const):
(WebCore::GlyphBuffer::stringOffsetAt const): Deleted.
* platform/graphics/WidthIterator.cpp:
(WebCore::WidthIterator::applyFontTransforms):
(WebCore::WidthIterator::applyExtraSpacingAfterShaping):

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

45 hours agoPort Filesystem::pathByAppendingComponent() & Filesystem:: pathByAppendingComponents...
cdumez@apple.com [Sat, 8 May 2021 22:35:07 +0000 (22:35 +0000)]
Port Filesystem::pathByAppendingComponent() & Filesystem:: pathByAppendingComponents() to std::filesystem
https://bugs.webkit.org/show_bug.cgi?id=225550

Reviewed by Darin Adler.

Source/JavaScriptCore:

Build fix.

* Configurations/JavaScriptCore.xcconfig:

Source/WTF:

Port Filesystem::pathByAppendingComponent() & Filesystem:: pathByAppendingComponents() to std::filesystem
and get rid of platform-specific implementations.

* wtf/FileSystem.cpp:
(WTF::FileSystemImpl::pathByAppendingComponent):
(WTF::FileSystemImpl::pathByAppendingComponents):
* wtf/glib/FileSystemGlib.cpp:
* wtf/posix/FileSystemPOSIX.cpp:
* wtf/win/FileSystemWin.cpp:

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WTF/FileSystem.cpp:
(TestWebKitAPI::TEST_F):

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

2 days agoFix a typo
commit-queue@webkit.org [Sat, 8 May 2021 17:56:35 +0000 (17:56 +0000)]
Fix a typo
https://bugs.webkit.org/show_bug.cgi?id=225502

Patch by Ricky Mondello <rmondello@apple.com> on 2021-05-08
Reviewed by Chris Dumez.

Source/WebCore:

* loader/LinkLoader.cpp:
(WebCore::LinkLoader::preconnectIfNeeded):

LayoutTests:

Update test expectations.

* http/tests/in-app-browser-privacy/context-string-preconnect-expected.txt:
* http/tests/preconnect/link-header-rel-preconnect-http-expected.txt:
* http/tests/preconnect/link-rel-preconnect-http-expected.txt:
* http/tests/preconnect/link-rel-preconnect-https-expected.txt:

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

2 days ago[GLIB] REGRESSION(r277158) imported/w3c/web-platform-tests/xhr/FormData-append.html...
dpino@igalia.com [Sat, 8 May 2021 16:54:09 +0000 (16:54 +0000)]
[GLIB] REGRESSION(r277158) imported/w3c/web-platform-tests/xhr/FormData-append.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=225551

Reviewed by Chris Dumez.

* wtf/FileSystem.cpp:
(WTF::FileSystemImpl::fileIsDirectory): Remove unnecessary path.isEmpty check.
* wtf/glib/FileSystemGlib.cpp:
(WTF::FileSystemImpl::fileSystemRepresentation): Return empty CString if path is empty.

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

2 days agoIncrease stored AppHighlight character limit to 500
megan_gardner@apple.com [Sat, 8 May 2021 15:03:15 +0000 (15:03 +0000)]
Increase stored AppHighlight character limit to 500
https://bugs.webkit.org/show_bug.cgi?id=225558

Reviewed by Tim Horton.

* Modules/highlight/AppHighlightStorage.cpp:

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

2 days ago[SOUP] Use the new libsoup network metrics API
carlosgc@webkit.org [Sat, 8 May 2021 10:43:06 +0000 (10:43 +0000)]
[SOUP] Use the new libsoup network metrics API
https://bugs.webkit.org/show_bug.cgi?id=225510

Reviewed by Michael Catanzaro.

Use the new API available in libsoup3. It provides more accurate information for time metrics and also size
metrics that were missing.

* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
(WebKit::NetworkDataTaskSoup::createRequest):
(WebKit::NetworkDataTaskSoup::clearRequest):
(WebKit::NetworkDataTaskSoup::resume):
(WebKit::NetworkDataTaskSoup::didSendRequest):
(WebKit::NetworkDataTaskSoup::dispatchDidCompleteWithError):
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
(WebKit::NetworkDataTaskSoup::didGetHeaders):
(WebKit::NetworkDataTaskSoup::wroteHeadersCallback):
(WebKit::NetworkDataTaskSoup::wroteBodyCallback):
(WebKit::NetworkDataTaskSoup::gotBodyCallback):
(WebKit::NetworkDataTaskSoup::networkEvent):
(WebKit::NetworkDataTaskSoup::didStartRequest):
(WebKit::NetworkDataTaskSoup::didRestart):
* NetworkProcess/soup/NetworkDataTaskSoup.h:

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

2 days agoIntroduce JSObject::getIfPropertyExists helper
ross.kirsling@sony.com [Sat, 8 May 2021 07:32:45 +0000 (07:32 +0000)]
Introduce JSObject::getIfPropertyExists helper
https://bugs.webkit.org/show_bug.cgi?id=225553

Reviewed by Alexey Shvayka.

Suggested by Alexey during review of r277221.
ArrayPrototype also has a "Has-guarded Get", so it's helpful for JSObject to house this functionality.

* runtime/ArrayPrototype.cpp:
(JSC::getProperty):
* runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::finishCreation):
* runtime/JSObject.h:
* runtime/JSObjectInlines.h:
(JSC::JSObject::getIfPropertyExists):

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

2 days ago[WPE] Tentative gardening of crashes after last sdk update
lmoura@igalia.com [Sat, 8 May 2021 04:32:51 +0000 (04:32 +0000)]
[WPE] Tentative gardening of crashes after last sdk update

Unreviewed test gardening.

Likely more crashes will appear from tests not run due to these
gardened.

* platform/wpe/TestExpectations:

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

2 days ago[css-flexbox] Flex item construction may affect sibling flex item height computation
zalan@apple.com [Sat, 8 May 2021 01:48:22 +0000 (01:48 +0000)]
[css-flexbox] Flex item construction may affect sibling flex item height computation
https://bugs.webkit.org/show_bug.cgi?id=225489

Reviewed by Sergio Villar Senin.

Source/WebCore:

Flex item construction triggers layout both on the flex item and on its descendants (see constructFlexItem).
During this layout a percent height descendant may indirectly set an incorrect value on the flex container's
m_hasDefiniteHeight (this is due to the odd way we choose to resolve percent height values on the ancestor chain,
see setOverridingContainingBlockContentLogicalHeight(WTF::nullopt)).
Now this incorrect m_hasDefiniteHeight value (Indefinite) causes the next sibling's (also) percent height
resolve fail as it tells the flex item that the flex container can't help with resolving the percent height value.
As the result we end up with an incorrect, 0px height value for this sibling.
e.g.
<div style="height: 100px; display: flex; flex-direction: column;">
  <div id=flexItemA style="height: 50px;"><div style="height: 100%;"></div></div>
  <div id=flexItemB style="height: 50%;"></div>
</div>
By the time we get to the construction of flexItemB, the RenderFlexibleBox's (flex container) m_hasDefiniteHeight
is already (and incorrectly) set to Indefinite as the result of us trying to resolve flexItemA's descendant height percentage.
This Indefinite value makes the flexItemB's height resolution fail as we believe that the flex container has indefinite height
e.g "height: auto", while it is clearly resolvable (50% of 100px).
Now if we flip the order and flexItemB comes first, the test case passes fine.
It is very unfortunate that some descendant height resolving process can trigger a state change on the ancestor RenderFlexibleBox, but
fixing it would certainly require some substantial architectural change (e.g. pushing down the constraints to the geometry functions instead of
walking the containing block chain).
In this patch, we just scope m_hasDefiniteHeight so that the RenderFlexibleBox's state is not effected by the flex item construction.

Test: fast/flexbox/flex-column-with-percent-height-descendants.html

* rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::layoutFlexItems):

LayoutTests:

* fast/flexbox/flex-column-with-percent-height-descendants-expected.html: Added.
* fast/flexbox/flex-column-with-percent-height-descendants.html: Added.

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

2 days ago[JSC] Error#cause must recognize explicit undefined
ross.kirsling@sony.com [Sat, 8 May 2021 01:26:31 +0000 (01:26 +0000)]
[JSC] Error#cause must recognize explicit undefined
https://bugs.webkit.org/show_bug.cgi?id=225535

Reviewed by Alexey Shvayka.

JSTests:

* test262/config.yaml:
Re-enable tests for this feature; they were all failing due to this quirk.

Source/JavaScriptCore:

Error#cause is specified such that `new Error(message, {})` and `new Error(message, { cause: undefined })`
are not the same -- namely, the latter should create a property descriptor with an undefined `value`.

This would seem absurd, but the reason is because the `cause` field is meant to store a thrown object,
and `throw undefined;` is valid code.

In aligning our implementation with the spec, this patch also consolidates the relevant logic in one place
(ErrorInstance::finishCreation) to minimize confusion.

* runtime/AggregateError.cpp:
(JSC::createAggregateError):
* runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::create):
(JSC::ErrorInstance::finishCreation):
* runtime/ErrorInstance.h:
(JSC::ErrorInstance::create):

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

2 days agoAdd support for syncing repo with commit revision label.
zhifei_fang@apple.com [Sat, 8 May 2021 01:08:08 +0000 (01:08 +0000)]
Add support for syncing repo with commit revision label.
https://bugs.webkit.org/show_bug.cgi?id=221982

Reviewed by Ryosuke Niwa.

Add new syncing option reportRevisionIdentifier, which will let the script try to sync the commit revision identifier from the commit message.
Add new syncing option reportSVNRevision, which will let the script try to report SVN revision from a git-svn repo.

* tools/sync-commits.py:
(main):
(load_repository):
(GitRepository.__init__):
(GitRepository.fetch_next_commit):
(GitRepository._git_hash_to_svn_revision):
(GitRepository._svn_revision_to_git_hash):
(GitRepository._revision_from_tokens):
(GitRepository._fetch_all_hashes):

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

2 days agoPort FileSystem::pathGetFileName() & Filesystem::directoryName() to std::filesystem
cdumez@apple.com [Sat, 8 May 2021 01:05:02 +0000 (01:05 +0000)]
Port FileSystem::pathGetFileName() & Filesystem::directoryName() to std::filesystem
https://bugs.webkit.org/show_bug.cgi?id=225524

Reviewed by Darin Adler.

Source/WTF:

Port FileSystem::pathGetFileName() & Filesystem::directoryName() to std::filesystem so
that we can get rid of platform-specific implementions.

* wtf/FileSystem.cpp:
(WTF::FileSystemImpl::pathGetFileName):
(WTF::FileSystemImpl::directoryName):
* wtf/glib/FileSystemGlib.cpp:
(WTF::FileSystemImpl::pathGetFileName): Deleted.
(WTF::FileSystemImpl::directoryName): Deleted.
* wtf/posix/FileSystemPOSIX.cpp:
(WTF::FileSystemImpl::pathGetFileName): Deleted.
(WTF::FileSystemImpl::directoryName): Deleted.
* wtf/win/FileSystemWin.cpp:
(WTF::FileSystemImpl::pathGetFileName): Deleted.
(WTF::FileSystemImpl::directoryName): Deleted.

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WTF/FileSystem.cpp:
(TestWebKitAPI::TEST_F):

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

2 days ago[iOS] [GPU] Silence warning about com.apple.audio.AudioComponentRegistrar in the...
bfulgham@apple.com [Sat, 8 May 2021 01:04:02 +0000 (01:04 +0000)]
[iOS] [GPU] Silence warning about com.apple.audio.AudioComponentRegistrar in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=225547
<rdar://problem/77334436>

Reviewed by Per Arne Vollan.

We block access to various media things (like 'com.apple.audio.AudioComponentRegistrar') when the GPU Process is being used.
Some AudioToolbox code continues to try to connect even though we are not activating relevant parts of the audio subsystem.
AudioToolbox doesn't care about this blocked connection when running in this mode, but they have not had a chance to modify
the framework to avoid attempting to connect.

To avoid spurious logging and telemetry, silence the sandbox violation when the GPU Process is active.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

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

2 days ago[macOS] [GPU] Process is missing access to IOMobileFramebufferUserClient on Apple...
bfulgham@apple.com [Sat, 8 May 2021 00:38:58 +0000 (00:38 +0000)]
[macOS] [GPU] Process is missing access to IOMobileFramebufferUserClient on Apple Silicon
https://bugs.webkit.org/show_bug.cgi?id=225545
<rdar://problem/77591664>

Reviewed by Jer Noble.

Apple Silicon GPU Process needs access to IOMobileFramebufferUserClient for certain types of media playback. We allow this
on iOS, and in the WebContent process, but missed it in the GPU Process.

* GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:

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

2 days ago[BigSur Release Wk2 Arm64] imported/w3c/web-platform-tests/navigation-timing/test_per...
amir_mark@apple.com [Sat, 8 May 2021 00:31:16 +0000 (00:31 +0000)]
[BigSur Release Wk2 Arm64] imported/w3c/web-platform-tests/navigation-timing/test_performance_attributes.sub.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=224784

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

2 days agoValidate Swift async imports.
james.savage@apple.com [Sat, 8 May 2021 00:30:35 +0000 (00:30 +0000)]
Validate Swift async imports.
https://bugs.webkit.org/show_bug.cgi?id=225134
<rdar://73620237>

Reviewed by Sam Weinig.

Audit our imported Objective-C API for correct translations to Swift's
upcoming concurrency feature. This mostly entails removing redundant
words, tagging methods which Swift's heuristics missed, and in some
cases disabling methods that do not follow Swift's async conventions.

* Shared/API/Cocoa/WKFoundation.h: Because the Foundation macros used
for Swift async won't exist in all SDKs, provide our own wrapper around
them to avoid undefined macro errors.
* SwiftOverlay/Configurations/WebKitSwiftOverlay.xcconfig: Passing these
flags to older tools will result in errors, so only so conditionally.
* SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj: Added a
new source file reference for generated sources. These will be copied
from WebKitAdditions if available, or replaced with empty sources for
compatibility.
* UIProcess/API/Cocoa/NSAttributedString.h: Adopt new attributes to
define an explicit Swift async name.
* UIProcess/API/Cocoa/WKContentRuleListStore.h: Ditto.
* UIProcess/API/Cocoa/WKDownloadDelegate.h: In this case I also apply
NS_SWIFT_NAME as the "decisionHandler" argument would otherwise not
import as async. Despite using a different macro, I'm just using
NS_SWIFT_ASYNC_NAME to check for these changes as all these annotations
should exist or not-exist at once.
* UIProcess/API/Cocoa/WKHTTPCookieStore.h: Ditto.
* UIProcess/API/Cocoa/WKNavigationDelegate.h: Ditto.
* UIProcess/API/Cocoa/WKScriptMessageHandlerWithReply.h: Ditto.
* UIProcess/API/Cocoa/WKUIDelegate.h: Ditto.
* UIProcess/API/Cocoa/WKWebView.h: _Nullable_result is a new annotation
which specifies that the result and error are not mutually exclusive,
but rather than we can expect a nil result in cases where there are not
an error. For the same reason as above, we only want to refer to this
keyword conditionally.
* UIProcess/API/Cocoa/WKWebsiteDataStore.h: Ditto.

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

2 days ago[BigSur Release Wk2 Arm64] inspector/css/node-styles-refreshed.html is a flaky failure
amir_mark@apple.com [Sat, 8 May 2021 00:22:46 +0000 (00:22 +0000)]
[BigSur Release Wk2 Arm64] inspector/css/node-styles-refreshed.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=224788

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

2 days agoWeb Inspector: Breakpoint action add/remove buttons are not vertically aligned with...
pangle@apple.com [Sat, 8 May 2021 00:01:30 +0000 (00:01 +0000)]
Web Inspector: Breakpoint action add/remove buttons are not vertically aligned with action dropdown
https://bugs.webkit.org/show_bug.cgi?id=225543

Reviewed by Devin Rousso.

Change the breakpoint action add/remove button's `margin-top` to `margin-block-start`, and adjust the value to
properly vertically center the buttons with the action type menu.

* UserInterface/Views/BreakpointActionView.css:
(:matches(.breakpoint-action-append-button, .breakpoint-action-remove-button)):

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

2 days agoWeb Inspector: Default source for new test cases is minified
pangle@apple.com [Fri, 7 May 2021 23:59:38 +0000 (23:59 +0000)]
Web Inspector: Default source for new test cases is minified
https://bugs.webkit.org/show_bug.cgi?id=225546

Reviewed by Devin Rousso.

Move the placeholder test code to `WI.DefaultAudits` as part of the non-minified sources so that new audit test
cases do not have their default placeholder script minified. This also allows us to remove
`WI.AuditTestCase.stringifyFunction` as it is no longer needed.

* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.stringifyFunction): Deleted.
* UserInterface/NonMinified/DefaultAudits.js:
(WI.DefaultAudits.newAuditPlaceholder):
* UserInterface/Views/CreateAuditPopover.js:
(WI.CreateAuditPopover.prototype.dismiss):
(WI.CreateAuditPopover.prototype.dismiss.const.placeholderTestFunction): Deleted.

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

2 days agoAdd an experimental alternative display-list-based RemoteLayerBackingStore implementation
timothy_horton@apple.com [Fri, 7 May 2021 23:46:04 +0000 (23:46 +0000)]
Add an experimental alternative display-list-based RemoteLayerBackingStore implementation
https://bugs.webkit.org/show_bug.cgi?id=225508

Reviewed by Sam Weinig.

Source/WebKit:

* Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.cpp: Added.
(WebKit::CGDisplayListImageBufferBackend::calculateMemoryCost):
(WebKit::CGDisplayListImageBufferBackend::create):
(WebKit::CGDisplayListImageBufferBackend::CGDisplayListImageBufferBackend):
(WebKit::CGDisplayListImageBufferBackend::createImageBufferBackendHandle const):
(WebKit::CGDisplayListImageBufferBackend::context const):
(WebKit::CGDisplayListImageBufferBackend::backendSize const):
(WebKit::CGDisplayListImageBufferBackend::bytesPerRow const):
(WebKit::CGDisplayListImageBufferBackend::copyNativeImage const):
(WebKit::CGDisplayListImageBufferBackend::toBGRAData const):
(WebKit::CGDisplayListImageBufferBackend::getImageData const):
(WebKit::CGDisplayListImageBufferBackend::putImageData):
* Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.h: Added.
Add an ImageBuffer backend backed by a CG display list.

* Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
Add a new RemoteLayerBackingStore type that uses CGDisplayListImageBufferBackend.

* Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::encode const):
(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):
(WebKit::RemoteLayerBackingStore::supportsPartialRepaint):
Disable partial repaint if using display-list-based backing store,
because we don't currently have any way to mutate display lists.

(WebKit::RemoteLayerBackingStore::display):
(WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer):
When applying a display-list-based backing store to a layer, we just
pass the encodede data directly to the layer, and tell it to use the
display list to render.

* SourcesCocoa.txt:
* UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
(WebKit::RemoteLayerTreeNode::createWithPlainLayer):
(-[WKPlainRemoteLayer description]): Deleted.
Move WKPlainRemoteLayer to RemoteLayerTreeLayers, and rename it to WKCompositingLayer.
It will now back all WKCompositingViews.

* UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.h: Added.
* UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.mm: Added.
(-[WKCompositingLayer description]):
(-[WKCompositingLayer _setWKContentsDisplayList:]):
(-[WKCompositingLayer _wkContentsDisplayList]):
(-[WKCompositingLayer drawInContext:]):
Make WKCompositingLayer replay the given display list in drawRect
(just because we're currently missing API to actually directly pass
the encoded display list data to CA).

* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
(+[WKCompositingView layerClass]):
Use WKCompositingLayer as the layer class for all WKCompositingViews.

* WebKit.xcodeproj/project.pbxproj:
* WebProcess/GPU/graphics/ImageBufferBackendHandle.h:
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::updateBackingStore):
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:
(WebKit::RemoteLayerTreeContext::useCGDisplayListsForDOMRendering const):
(WebKit::RemoteLayerTreeContext::setUseCGDisplayListsForDOMRendering):
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::updatePreferences):
Plumb the internal feature flag from WebPreferences to RemoteLayerTreeContext
to PlatformCALayerRemote to RemoteLayerBackingStore; if the preference is
on and the feature is available, we'll always prefer display-list backed
surfaces over either of the bitmap types.

Source/WTF:

* Scripts/Preferences/WebPreferencesInternal.yaml:

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

2 days ago[iOS] Make AccessibilityReduceMotion test case work on iOS
bfulgham@apple.com [Fri, 7 May 2021 23:03:43 +0000 (23:03 +0000)]
[iOS] Make AccessibilityReduceMotion test case work on iOS
https://bugs.webkit.org/show_bug.cgi?id=225244
<rdar://problem/77589455>

Reviewed by Per Arne Vollan.

New tests for Accessibility-related features were added in Bug 215664, but only for macOS.
We support these same features on iOS, and should have test coverage.

Source/WebKit:

Tested by AccessibilityReduceMotion.mm.

* Platform/spi/Cocoa/AccessibilitySupportSPI.h:

Tools:

* TestWebKitAPI/Tests/WebKit/AccessibilityReduceMotion.mm:
(notificationCallback):
(TEST):

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

2 days ago[iOS] [GPU] Silence warning about com.apple.fontservicesd
bfulgham@apple.com [Fri, 7 May 2021 22:55:19 +0000 (22:55 +0000)]
[iOS] [GPU] Silence warning about com.apple.fontservicesd
https://bugs.webkit.org/show_bug.cgi?id=225520
<rdar://problem/77536616>

Reviewed by Per Arne Vollan.

We silenced the warnings about blocked connections to 'com.apple.fontservicesd' in the WebContent process in Bug 220320. We should
have done the same to the GPU Process to avoid spurious reports and telemetry.

* Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:

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

2 days ago[ BigSur Release wk2 ARM64 ] http/tests/workers/service/self_registration.html is...
jenner@apple.com [Fri, 7 May 2021 22:33:16 +0000 (22:33 +0000)]
[ BigSur Release wk2 ARM64 ] http/tests/workers/service/self_registration.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225527

Unreviewed test gardening.

Updating expectations to Pass Timeout for BigSur Release wk 2 on Apple Silicon.

* platform/mac-wk2/TestExpectations:

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

2 days agoUnreviewed, reverting r277201.
commit-queue@webkit.org [Fri, 7 May 2021 22:23:52 +0000 (22:23 +0000)]
Unreviewed, reverting r277201.
https://bugs.webkit.org/show_bug.cgi?id=225542

Includes project file change.

Reverted changeset:

"[iOS] Make AccessibilityReduceMotion test case work on iOS"
https://bugs.webkit.org/show_bug.cgi?id=225244
https://trac.webkit.org/changeset/277201

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

2 days agoREGRESSION (r277071): imported/w3c/web-platform-tests/css/mediaqueries/test_media_que...
ryanhaddad@apple.com [Fri, 7 May 2021 22:05:22 +0000 (22:05 +0000)]
REGRESSION (r277071): imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries.html is failing
https://bugs.webkit.org/show_bug.cgi?id=225469

Unreviewed test gardening.

* platform/mac/TestExpectations: Resolve an issue with conflicting test expectations entries.

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

2 days ago[ BigSur Release wk2 ARM64 ] http/tests/misc/repeat-open-cancel.html is a flaky timeout
jenner@apple.com [Fri, 7 May 2021 22:02:39 +0000 (22:02 +0000)]
[ BigSur Release wk2 ARM64 ] http/tests/misc/repeat-open-cancel.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225526

Unreviewed test gardening.

Updating test expectations to Pass Timeout for Bigsur wk2 Release arm64.

* platform/mac-wk2/TestExpectations:

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

2 days ago[iOS] fix inconsistency around the meaning of `rate` and `defaultPlaybackRate` betwee...
drousso@apple.com [Fri, 7 May 2021 22:00:57 +0000 (22:00 +0000)]
[iOS] fix inconsistency around the meaning of `rate` and `defaultPlaybackRate` between WebKit and AVKit
https://bugs.webkit.org/show_bug.cgi?id=225532
<rdar://problem/77629276>

Reviewed by Eric Carlson.

In AVKit, the `defaultPlaybackRate` is used when playback starts, such as resuming after
pausing. In WebKit, however, `defaultPlaybackRate` is only used when first loading and after
ending scanning, with the `playbackRate` being used in all other cases, including when
resuming after pausing. As such, WebKit should return the `playbackRate` instead of the
`defaultPlaybackRate` in these cases when communicating with AVKit.

* platform/ios/WebAVPlayerController.mm:
(-[WebAVPlayerController setRate:]):
Also `setDefaultPlaybackRate:` if not paused (i.e. `rate != 0`) since WebKit's definition of
`playbackRate` does not change when paused.

* platform/ios/PlaybackSessionInterfaceAVKit.mm:
(WebCore::PlaybackSessionInterfaceAVKit::rateChanged):
Make sure to `setDefaultPlaybackRate:` before `setRate:` as the latter can affect the former.

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

2 days agoDo not try to remove and already removed node while deleting selection
commit-queue@webkit.org [Fri, 7 May 2021 21:54:02 +0000 (21:54 +0000)]
Do not try to remove and already removed node while deleting selection
https://bugs.webkit.org/show_bug.cgi?id=224893

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-05-07
Reviewed by Ryosuke Niwa.

Source/WebCore:

Test: editing/inserting/insert-text-force-repaint-on-load-crash.html

* editing/DeleteSelectionCommand.cpp:
(WebCore::DeleteSelectionCommand::removeNode): Return early if the given node doesn't have a parent anymore.

Tools:

Add new API to allow tests to trigger a force repaint on load finished.

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::InjectedBundlePage::frameDidChangeLocation):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
(WTR::TestRunner::displayOnLoadFinish):
(WTR::TestRunner::shouldDisplayOnLoadFinish):

LayoutTests:

* editing/inserting/insert-text-force-repaint-on-load-crash-expected.txt: Added.
* editing/inserting/insert-text-force-repaint-on-load-crash.html: Added.

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

2 days ago[iOS] Make AccessibilityReduceMotion test case work on iOS
bfulgham@apple.com [Fri, 7 May 2021 21:42:28 +0000 (21:42 +0000)]
[iOS] Make AccessibilityReduceMotion test case work on iOS
https://bugs.webkit.org/show_bug.cgi?id=225244
<rdar://problem/77589455>

New tests for Accessibility-related features were added in Bug 215664, but only for macOS.
We support these same features on iOS, and should have test coverage.

Reviewed by Per Arne Vollan.

Source/WebKit:

Tested by AccessibilityReduceMotion.mm.

* Platform/spi/Cocoa/AccessibilitySupportSPI.h:

Tools:

* TestWebKitAPI/Tests/WebKit/AccessibilityReduceMotion.mm:
(notificationCallback):
(TEST):

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

2 days agoREGRESSION: [ BigSurE Release wk 2] webrtc/video-replace-muted-track.html is a flaky...
jenner@apple.com [Fri, 7 May 2021 21:40:16 +0000 (21:40 +0000)]
REGRESSION: [ BigSurE Release wk 2] webrtc/video-replace-muted-track.html is a flaky text failure
https://bugs.webkit.org/show_bug.cgi?id=225525

Unreviewed test gardening.

Updating test expectations to Pass Failure

* platform/mac/TestExpectations:

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

2 days agoIPC testing API should have the ability to create and receive IPC::Semaphore
rniwa@webkit.org [Fri, 7 May 2021 21:32:50 +0000 (21:32 +0000)]
IPC testing API should have the ability to create and receive IPC::Semaphore
https://bugs.webkit.org/show_bug.cgi?id=225537

Reviewed by Wenson Hsieh.

Source/WebKit:

This patch adds the capability to create IPC::Semaphore for IPC testing purposes.
It adds IPC.createSemaphore which creates a JavaScript object representing a semaphore
with signal and waitFor methods like IPC::Semaphore but waitFor taking milliseconds
to be consistent with other JavaScript APIs.

This patch also adds the support for encoding RemoteRenderingBackendCreationParameters
to facilitate creating a remote rendering backend during IPC testing.

Tests: TestWebKitAPI.IPCTestingAPI.CanReceiveIPCSemaphore
       TestWebKitAPI.IPCTestingAPI.CanCreateIPCSemaphore

* Platform/IPC/JSIPCBinding.cpp:
(IPC::jsValueForDecodedArgumentValue): Takes r-value reference since IPC::Semaphore
doesn't have a copy constructor.
* Platform/IPC/JSIPCBinding.h:
(IPC::jsValueForDecodedArgumentValue): Ditto. Added a specialization for IPC::Semaphore.
(IPC::putJSValueForDecodeArgumentInArray):
* WebProcess/WebPage/IPCTestingAPI.cpp:
(WebKit::IPCTestingAPI::JSIPCSemaphore): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::create): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::exchange): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::JSIPCSemaphore): Added.
(WebKit::IPCTestingAPI::createTypeError): Moved up.
(WebKit::IPCTestingAPI::JSIPCSemaphore::createJSWrapper): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::wrapperClass): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::unwrap): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::toWrapped): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::initialize): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::finalize): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::staticFunctions): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::signal): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::waitFor): Added.
(WebKit::IPCTestingAPI::JSIPC::wrapperClass):
(WebKit::IPCTestingAPI::JSIPC::staticFunctions): Added IPC.createSemaphore.
(WebKit::IPCTestingAPI::getObjectIdentifierFromProperty): Added.
(WebKit::IPCTestingAPI::encodeRemoteRenderingBackendCreationParameters): Added.
(WebKit::IPCTestingAPI::encodeArgument): Added the support for encoding
RemoteRenderingBackendCreationParameters as an IPC argument.
(WebKit::IPCTestingAPI::JSIPC::createSemaphore): Added.
(IPC::jsValueForDecodedArgumentValue): Defined the aforementioned specialization for
IPC::Semaphore with IPCTestingAPI .

Tools:

Added tests to make sure IPC testing API allows creation of a semaphore,
and receiving one as a reply to an IPC message.

* TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:
(IPCTestingAPI.CanReceiveIPCSemaphore): Added.
(IPCTestingAPI.CanCreateIPCSemaphore): Added.

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

2 days agoREGRESSION: [ BigSurE Release wk 2] webrtc/direction-change.html is a flaky text...
jenner@apple.com [Fri, 7 May 2021 21:28:46 +0000 (21:28 +0000)]
REGRESSION: [ BigSurE Release wk 2] webrtc/direction-change.html is a flaky text failure
https://bugs.webkit.org/show_bug.cgi?id=225523

Unreviewed test gardening.

Updating test expectation to Pass Failure.

* platform/mac/TestExpectations:

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

2 days agoUpdate test262 (2021.05.07)
ross.kirsling@sony.com [Fri, 7 May 2021 21:14:29 +0000 (21:14 +0000)]
Update test262 (2021.05.07)
https://bugs.webkit.org/show_bug.cgi?id=225536

Reviewed by Alexey Shvayka.

* test262/config.yaml:
* test262/expectations.yaml:
* test262/latest-changes-summary.txt:
* test262/test/:
* test262/test262-Revision.txt:

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

2 days ago[macOS] Set the -isSourceEditable property when presenting webpage translation popup
wenson_hsieh@apple.com [Fri, 7 May 2021 20:28:04 +0000 (20:28 +0000)]
[macOS] Set the -isSourceEditable property when presenting webpage translation popup
https://bugs.webkit.org/show_bug.cgi?id=225515
<rdar://problem/77658040>

Reviewed by Tim Horton.

Source/WebCore:

Set `-[LTUITranslationViewController isSourceEditable]` to `YES` when showing the context menu for editable
content. Instead of plumbing another boolean flag through `ContextMenuClient` and into the client layers through
`handleTranslation()`, we roll all of the webpage translation context menu parameters into a single object
(`TranslationContextMenuInfo`), including a new flag indicating whether or not the translation controller should
be shown in "editable" mode.

* Headers.cmake:
* WebCore.xcodeproj/project.pbxproj:
* loader/EmptyClients.cpp:
* page/ContextMenuClient.h:
* page/ContextMenuController.cpp:
(WebCore::ContextMenuController::contextMenuItemSelected):
* page/TranslationContextMenuInfo.h: Added.

Pull the translated text string, selection bounds, menu location, and the new mode flag into a separate struct.

(WebCore::TranslationContextMenuInfo::encode const):
(WebCore::TranslationContextMenuInfo::decode):

Source/WebKit:

See WebCore/ChangeLog for more details.

* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::handleContextMenuTranslation):
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::handleContextMenuTranslation):
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::handleContextMenuTranslation):
* WebProcess/WebCoreSupport/WebContextMenuClient.h:
* WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:
(WebKit::WebContextMenuClient::handleTranslation):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::handleContextMenuTranslation):
* WebProcess/WebPage/WebPage.h:

Source/WebKitLegacy/mac:

See WebCore/ChangeLog for more details.

* WebCoreSupport/WebContextMenuClient.h:
* WebCoreSupport/WebContextMenuClient.mm:
(WebContextMenuClient::handleTranslation):
* WebView/WebView.mm:
(-[WebView _handleContextMenuTranslation:]):
(-[WebView _handleContextMenuTranslation:selectionBounds:menuLocation:]): Deleted.
* WebView/WebViewInternal.h:

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

3 days ago[ Mac ] accessibility/mac/expanded-notification.html is a flaky failure
jenner@apple.com [Fri, 7 May 2021 18:56:21 +0000 (18:56 +0000)]
[ Mac ] accessibility/mac/expanded-notification.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=205410

Unreviewed test gardening.

Updating test expectations to include all mac.

* platform/mac/TestExpectations:

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

3 days agoREGRESSION (r277071): [Intel Mac] imported/w3c/web-platform-tests/css/mediaqueries...
tsavell@apple.com [Fri, 7 May 2021 18:08:54 +0000 (18:08 +0000)]
REGRESSION (r277071): [Intel Mac] imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries.html is failing
https://bugs.webkit.org/show_bug.cgi?id=225469

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

3 days agoUse test-tube emoji for EWS status bubbles for tester queues
aakash_jain@apple.com [Fri, 7 May 2021 18:06:20 +0000 (18:06 +0000)]
Use test-tube emoji for EWS status bubbles for tester queues
https://bugs.webkit.org/show_bug.cgi?id=225517

Reviewed by Alan Bujtas.

* CISupport/ews-app/ews/views/statusbubble.py:
(StatusBubble):

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

3 days agoAdd API test for FileSystem::fileExists() and FileSystem::fileMetadata() when dealing...
cdumez@apple.com [Fri, 7 May 2021 16:49:54 +0000 (16:49 +0000)]
Add API test for FileSystem::fileExists() and FileSystem::fileMetadata() when dealing with symlinks to symlinks
https://bugs.webkit.org/show_bug.cgi?id=225491

Reviewed by Sam Weinig.

Update FileSystemTest::SetUp() to use a valid path when constructing the test symlink
(tempFileSymlinkPath). Add API test for FileSystem::fileExists() and FileSystem::fileMetadata()
when dealing with symlinks to symlinks.

* TestWebKitAPI/Tests/WTF/FileSystem.cpp:
(TestWebKitAPI::TEST_F):

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

3 days agoAudioWorkletProcessor which does not extend base class crashes Safari
cdumez@apple.com [Fri, 7 May 2021 16:42:35 +0000 (16:42 +0000)]
AudioWorkletProcessor which does not extend base class crashes Safari
https://bugs.webkit.org/show_bug.cgi?id=225449
<rdar://problem/77624792>

Reviewed by Sam Weinig.

Update AudioWorkletGlobalScope::createProcessor() to validate the type of the processor
after constructing it.

* Modules/webaudio/AudioWorkletGlobalScope.cpp:
(WebCore::AudioWorkletGlobalScope::createProcessor):

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

3 days agoAllow libwebrtc to build for Mac Catalyst
achristensen@apple.com [Fri, 7 May 2021 16:21:55 +0000 (16:21 +0000)]
Allow libwebrtc to build for Mac Catalyst
https://bugs.webkit.org/show_bug.cgi?id=225505

Reviewed by Youenn Fablet.

This is progress towards rdar://77568774

Changes necessary to get it to build and link were:
1. kCVPixelBufferOpenGLESCompatibilityKey is unavailable on Catalyst, so use kCVPixelBufferOpenGLCompatibilityKey like we do on macOS.
2. SSE4 and AVX seem to be unavailable in the Catalyst SDK like they are in the iOS simulator SDK, so disable them similarly.
3. Link to UIKit and CoreGraphics in debug builds like we do with iOS family builds.
4. Don't use @loader_path/../../../ for DYLIB_INSTALL_NAME_BASE like we do with relocatable Safari builds, similar to an ANGLE change I made in r276318
5. Export the same symbols as iOS for now.  This may need some tweaking when I get it to link with WebCore, but that's why this is only progress.

* Configurations/DebugRelease.xcconfig:
* Configurations/SDKVariant.xcconfig:
* Configurations/libvpx.xcconfig:
* Configurations/libwebrtc.xcconfig:
* Configurations/opus.xcconfig:
* Source/third_party/libvpx/source/config/mac/x64/vp8_rtcd.h:
* Source/third_party/libvpx/source/config/mac/x64/vp9_rtcd.h:
* Source/third_party/libvpx/source/config/mac/x64/vpx_dsp_rtcd.h:
* Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderH264.mm:
(-[RTCVideoDecoderH264 resetDecompressionSession]):
* Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderH265.mm:
(-[RTCVideoDecoderH265 resetDecompressionSession]):
* Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderVTBVP9.mm:
(-[RTCVideoDecoderVTBVP9 resetDecompressionSession]):
* Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm:
(-[RTCVideoEncoderH264 resetCompressionSessionWithPixelFormat:]):
* Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH265.mm:
(-[RTCVideoEncoderH265 resetCompressionSession]):

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

3 days ago[GStreamer][MediaStream] Emit black frames for disabled video tracks
philn@webkit.org [Fri, 7 May 2021 15:51:36 +0000 (15:51 +0000)]
[GStreamer][MediaStream] Emit black frames for disabled video tracks
https://bugs.webkit.org/show_bug.cgi?id=225511

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

In case the video track is disabled, emit a black I420 frame. For disabled audio tracks we
might need to silence the corresponding audio frames, this will be investigated in a
follow-up patch.

* platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:

LayoutTests:

* platform/glib/TestExpectations: Unflag mediastream test now passing.

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

3 days agoCrash in ApplyStyleCommand::applyRelativeFontStyleChange
commit-queue@webkit.org [Fri, 7 May 2021 15:23:51 +0000 (15:23 +0000)]
Crash in ApplyStyleCommand::applyRelativeFontStyleChange
https://bugs.webkit.org/show_bug.cgi?id=225235

Patch by Frédéric Wang <fwang@igalia.com> on 2021-05-07
Reviewed by Ryosuke Niwa.

Source/WebCore:

Test: editing/execCommand/font-size-delta-same-node-for-start-and-end-crash.html

In ApplyStyleCommand::applyRelativeFontStyleChange, when the selection start and end have the
same anchor node, the start node of the loop is obtained by calling Position::upstream on the
selection start while end node of the loop is obtained by calling NodeTraversal::next on the
anchor node. This can result in the former being after the latter. This patch fixes this by
moving the end of the loop after the anchor node (similar to what is already done when the
start anchor node is a strict descendant of the end anchor node).

* editing/ApplyStyleCommand.cpp:
(WebCore::ApplyStyleCommand::applyRelativeFontStyleChange): Also include the case where
end.deprecatedNode() == start.deprecatedNode() in the conditional.

LayoutTests:

Add regression test.

* editing/execCommand/font-size-delta-same-node-for-start-and-end-crash-expected.txt: Added.
* editing/execCommand/font-size-delta-same-node-for-start-and-end-crash.html: Added.
* platform/ios/editing/execCommand/font-size-delta-same-node-for-start-and-end-crash-expected.txt: Added.

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

3 days agoUnreviewed, glib WebAudio gardening
philn@webkit.org [Fri, 7 May 2021 15:05:03 +0000 (15:05 +0000)]
Unreviewed, glib WebAudio gardening

* platform/glib/TestExpectations: Unflag webaudio test now passing since r276978.

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

3 days ago[GTK4] Rewrite GTK gesture support to work for both 3.x and 4.x.
commit-queue@webkit.org [Fri, 7 May 2021 14:55:50 +0000 (14:55 +0000)]
[GTK4] Rewrite GTK gesture support to work for both 3.x and 4.x.
https://bugs.webkit.org/show_bug.cgi?id=212324

Patch by Carlos Garnacho <carlosg@gnome.org> on 2021-05-07
Reviewed by Carlos Garcia Campos.

Source/WebCore:

* platform/gtk/GtkVersioning.h:
(gtk_event_controller_get_current_event_state):
(gtk_event_controller_get_current_event_time): New GTK4 portability
helper methods.

Source/WebKit:

Rewrite the touch gesture handling to avoid GdkEvent as an exchange
token, and not rely on the web view being able to hold and re-route
these at whim. This makes touch and touchpad gestures work on GTK3
and GTK4 in similar ways, and so that both work.

For this, touch event propagation got some substantial changes, it
used to work by first delivering the touch events to the web page,
and manually feeding the returned+unhandled ones to gesture controllers.
Now event delivery is delegated on GTK, and happens right away on
gesture controllers, it is the WebkitWebViewBase which chooses to make
them effective after the web page (maybe) handled the events. Gestures
are reset whenever the web page is considered to be handling touch
events.

Also fix some buglets accumulated along the way, web view zoom conflicted
with in-page zoom handling, and ViewGestureController page switching
conflicted with press-drag-release emulation on the web page. These now
work better and closer to GtkScrolledWindow behavior.

No new tests, the GTK touch tests that should catch this were disabled
in the past and need fixing. This patch will require manual testing.

* PlatformGTK.cmake: Drop GTK4 conditionals around ViewGestureController
* SourcesGTK.txt: Drop GestureController.cpp. Build ViewGestureController
code files unconditionally.
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::doneWithTouchEvent): Delegate handling on
WebKitWebViewBase.
(WebKit::PageClientImpl::wheelEventWasNotHandledByWebCore): Use platform
independent struct to forward scroll to ViewGestureController.
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseSnapshot): Involve ViewGestureController in rendering.
(webkitWebViewBaseButtonPressEvent):
(webkitWebViewBaseButtonReleaseEvent):
(webkitWebViewBaseButtonPressed):
(webkitWebViewBaseButtonReleased):
(webkitWebViewBaseMotionNotifyEvent): Ignore pointer-emulated events from
touchscreens.
(webkitWebViewBaseHandleWheelEvent):
(webkitWebViewBaseScroll):  Use platform independent struct
to forward scroll to ViewGestureController.
(appendTouchEvent):
(touchPointStateForEvents):
(webkitWebViewBaseGetTouchPointsForEvent):
(webkitWebViewBaseTouchEvent):
Generalized to work on both GTK3 and GTK4.
(webkitWebViewBaseZoomBegin):
(webkitWebViewBaseZoomChanged):
(webkitWebViewBaseTouchLongPress):
(webkitWebViewBaseTouchPress):
(webkitWebViewBaseTouchRelease):
(webkitWebViewBaseTouchDragBegin):
(webkitWebViewBaseTouchDragUpdate):
(webkitWebViewBaseTouchDragEnd):
(webkitWebViewBaseTouchDragCancel):
(webkitWebViewBaseTouchSwipe): Newly added touch gesture implementation
callbacks. Not delegated anymore on GestureController.
(webkitWebViewBaseConstructed): Create touch gestures in the base view
widget, let them handle events automatically instead of relying on
manual event feeding via gtk_event_controller_handle_event(). Also add
a GtkEventControllerLegacy to handle forwarding of raw touch events to
the web page in GTK4.
(webkitWebViewBaseSetEnableBackForwardNavigationGesture):
(webkitWebViewBaseViewGestureController):
(webkitWebViewBaseBeginBackSwipeForTesting):
(webkitWebViewBaseCompleteBackSwipeForTesting):
(webkitWebViewBaseWillSwapWebProcess):
(webkitWebViewBaseDidExitWebProcess):
(webkitWebViewBaseDidRelaunchWebProcess):
(webkitWebViewBaseDidStartProvisionalLoadForMainFrame):
(webkitWebViewBaseDidFirstVisuallyNonEmptyLayoutForMainFrame):
(webkitWebViewBaseDidFinishNavigation):
(webkitWebViewBaseDidFailNavigation):
(webkitWebViewBaseDidSameDocumentNavigationForMainFrame):
(webkitWebViewBaseDidRestoreScrollPosition): Remove conditionals around
ViewGestureController for GTK4.
(webkitWebViewBasePageGrabbedTouch): New method to tag touch events
altogether as handled by the web page, thus resetting any ongoing view-level
gesture handling. This inversion is necessary as gesture controllers are now
always fed input events parallel to web page touch event handling.
(webkitWebViewBaseGestureController): Deleted.
(webkit_web_view_base_class_init):
(webkitWebViewBaseEvent): Removed widget_class->event vfunc. Touchpad gesture
event forwarding to event controllers is delegated on GTK.
* UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
* UIProcess/ViewGestureController.h:
* UIProcess/gtk/GestureController.cpp: Removed. Gestures are implemented in
the base view.
* UIProcess/gtk/GestureController.h: Removed.
* UIProcess/gtk/ViewGestureControllerGtk.cpp:
(WebKit::isEventStop):
(WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanStartSwipe):
(WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanEndSwipe):
(WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanInfluenceSwipe):
(WebKit::isTouchEvent):
(WebKit::createScrollEvent):
(WebKit::ViewGestureController::PendingSwipeTracker::scrollEventGetScrollingDeltas):
(WebKit::ViewGestureController::handleScrollWheelEvent):
(WebKit::ViewGestureController::SwipeProgressTracker::handleEvent):
(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::beginSimulatedSwipeInDirectionForTesting):
(WebKit::ViewGestureController::completeSimulatedSwipeInDirectionForTesting): Declare
PlatformGtkScrollData, and use it as "platform scroll event" for both GTK3 and GTK4.
(WebKit::ViewGestureController::snapshot): New GTK4 specific method to render
the page switching gesture action.

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

3 days agoAdd WebRTC logging control in GPUProcess
youenn@apple.com [Fri, 7 May 2021 12:31:26 +0000 (12:31 +0000)]
Add WebRTC logging control in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=225346

Reviewed by Eric Carlson.

Source/WebCore:

Migrate setEnableLogging to setLoggingLevel as a virtual method so that it can be implemented by WebKit to send logging level to GPUProcess.
Simplify WebCore::LibWebRTCProvider::setLoggingLevel to not differentiate debug from non debug builds.
Manually tested.

* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::create):
* page/Page.cpp:
(WebCore::Page::configureLoggingChannel):
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::computeLogLevel):
(WebCore::LibWebRTCProvider::setRTCLogging):
(WebCore::LibWebRTCProvider::setLoggingLevel):
(WebCore::setLogging): Deleted.
(WebCore::LibWebRTCProvider::setEnableLogging): Deleted.
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:

Source/WebKit:

Implement setting of WebRTC log level using LibWebRTCCodecs and LibWebRTCCodecsProxy.
This will help debugging issues with GPU-running webrtc codecs.

* GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
* GPUProcess/webrtc/LibWebRTCCodecsProxy.messages.in:
* GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:
(WebKit::toWebRTCVideoRotation):
(WebKit::LibWebRTCCodecsProxy::setRTCLoggingLevel):
* SourcesCocoa.txt:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:
(WebKit::LibWebRTCCodecs::ensureGPUProcessConnectionOnMainThread):
(WebKit::LibWebRTCCodecs::setLoggingLevel):
* WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
* WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
(WebKit::LibWebRTCProvider::setLoggingLevel):
* WebProcess/Network/webrtc/LibWebRTCProvider.h:

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

3 days ago[GTK][WPE] Bump libsoup3 version to 2.99.5
commit-queue@webkit.org [Fri, 7 May 2021 12:17:18 +0000 (12:17 +0000)]
[GTK][WPE] Bump libsoup3 version to 2.99.5
https://bugs.webkit.org/show_bug.cgi?id=225506

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-05-07
Reviewed by Philippe Normand.

.:

* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsWPE.cmake:

LayoutTests:

Remove expectations for tests that should be passing now.

* platform/gtk/TestExpectations:

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

3 days ago[iOS] Safari sometimes hangs underneath `WebKit::UIDelegate::UIClient::createNewPage`
wenson_hsieh@apple.com [Fri, 7 May 2021 12:05:42 +0000 (12:05 +0000)]
[iOS] Safari sometimes hangs underneath `WebKit::UIDelegate::UIClient::createNewPage`
https://bugs.webkit.org/show_bug.cgi?id=225481
rdar://77565282

Reviewed by Chris Dumez.

Consider the scenario where a webpage programmatically opens a window in a new tab on iOS while the keyboard is
visible. In certain configurations, Safari indirectly tells the `WKWebView` containing the original webpage to
`-resignFirstResponder` and then `-becomeFirstResponder` again, while creating a new web view and shuffling
around the view hierarchy under `-webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:`.

Since the keyboard is up, this causes UIKit to ask for an autocorrection context via `-[WKContentView
requestAutocorrectionContextWithCompletionHandler:]`, which blocks the main thread on a response from the web
process. Of course, since we're handling synchronous IPC, the web process isn't capable of sending a response
back to the UI process, so we deadlock until we exceed the IPC timeout, and then exit the call stack.

Instead, it's possible in this case to recognize that we're already handling a synchronous IPC message, and any
attempts to wait for a response will time out anyways. Instead of waiting for the entire timeout duration, we
can fail eagerly to avoid hanging the process that is waiting.

* Platform/IPC/Connection.cpp:
(IPC::Connection::Connection):
(IPC::Connection::sendMessage):
(IPC::Connection::waitForMessage):
(IPC::Connection::dispatchSyncMessage):
* Platform/IPC/Connection.h:

Add a new counter variable, `m_inDispatchSyncMessageCount`, that is incremented and decremented while we're
in the process of dispatching an incoming sync IPC message. If `m_inDispatchSyncMessageCount` is nonzero and
we have a non-infinite IPC timeout duration, then we should fail sooner inside `Connection::waitForMessage`,
instead of waiting to time out.

Drive-by refactoring: while we're here, let's also move initialization for some of the members on `Connection`
into the class declaration, instead of the constructor.

(IPC::Connection::WTF_GUARDED_BY_LOCK):
* Platform/IPC/Timeout.h:
(IPC::Timeout::isInfinity const):
* WebKit.xcodeproj/project.pbxproj:

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

3 days ago[GTK] Warnings about unused filesystem functions
commit-queue@webkit.org [Fri, 7 May 2021 11:46:48 +0000 (11:46 +0000)]
[GTK] Warnings about unused filesystem functions
https://bugs.webkit.org/show_bug.cgi?id=225507

Patch by Philippe Normand <pnormand@igalia.com> on 2021-05-07
Reviewed by Adrian Perez de Castro.

Since r277158 these functions are no longer needed.

* wtf/glib/FileSystemGlib.cpp:
(WTF::FileSystemImpl::getFileStat): Deleted.
(WTF::FileSystemImpl::getFileLStat): Deleted.

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

3 days agoUnreviewed, WPE gardening
philn@webkit.org [Fri, 7 May 2021 10:02:19 +0000 (10:02 +0000)]
Unreviewed, WPE gardening

* TestWebKitAPI/glib/TestExpectations.json: Unflag test, wpebackend-fdo was downgraded in
the SDK revision r277166.

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

3 days ago[Flatpak SDK] Update to libsoup3 2.99.5
commit-queue@webkit.org [Fri, 7 May 2021 09:06:50 +0000 (09:06 +0000)]
[Flatpak SDK] Update to libsoup3 2.99.5
https://bugs.webkit.org/show_bug.cgi?id=225504

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-05-07
Reviewed by Philippe Normand.

* elements/sdk/libsoup3.bst:

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