WebKit-https.git
5 months agoREGRESSION (257739) [ Mac wk2 Release ] multiple tests crashing in WebCore::postUserI...
andresg_22@apple.com [Tue, 3 Mar 2020 04:57:34 +0000 (04:57 +0000)]
REGRESSION (257739) [ Mac wk2 Release ] multiple tests crashing in WebCore::postUserInfoForChanges
https://bugs.webkit.org/show_bug.cgi?id=208488
<rdar://problem/59975669>

Reviewed by Chris Fleizach.

Ensure that we have a root web area before de-referencing it.

* accessibility/mac/AXObjectCacheMac.mm:
(WebCore::AXObjectCache::postTextReplacementPlatformNotification):
(WebCore::AXObjectCache::postTextReplacementPlatformNotificationForTextControl):

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

5 months agoFix for LayoutTests/accessibility/mac/value-change/value-change-user-info-contentedit...
andresg_22@apple.com [Tue, 3 Mar 2020 04:07:42 +0000 (04:07 +0000)]
Fix for LayoutTests/accessibility/mac/value-change/value-change-user-info-contenteditable.html in IsolatedTree mode.
https://bugs.webkit.org/show_bug.cgi?id=208462

Reviewed by Chris Fleizach.

Covered by LayoutTests/accessibility/mac/value-change/value-change-user-info-contenteditable.html.

- Updates the IsolatedTree on the TextStateChange notification.
- Renamed isAccessibilityScrollView to isAccessibilityScrollViewInstance
and used isScrollView instead everywhere it's appropriate. This makes
code like AXObjectCache::rootWebArea work for both AXObjects and IsolatedObjects.
- Moved several utility functions from WebAccessibilityObjectWrapperMac.mm
to AXObjectCacheMac.mm where they belong, so that they can be used by
AXObjectCache implementation in addition to by the wrapper.

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::postTextStateChangeNotification):
(WebCore::AXObjectCache::rootWebArea):
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::isOnScreen const):
(WebCore::AccessibilityObject::scrollToGlobalPoint const):
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityObjectInterface.h:
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::getScrollableAreaIfScrollable const):
* accessibility/AccessibilityScrollView.h:
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityContainer]):
* accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::isAccessibilityScrollViewInstance const):
(WebCore::AXIsolatedObject::isAccessibilityScrollView const): Renamed.
* accessibility/isolatedtree/AXIsolatedObject.h:
* accessibility/mac/AXObjectCacheMac.mm:
(WebCore::AXObjectCache::postTextStateChangePlatformNotification): Uses
TextMarker utilities instead of calling into the wrapper. This fixes
the crash caused by the wrapper updating the backingObject that in turn
may change the wrapper.
(WebCore::AXTextMarkerRange): Moved from WebAccessibilityObjectWrapperMac.mm.
(WebCore::textMarkerRangeFromMarkers): Moved from WebAccessibilityObjectWrapperMac.mm.
(WebCore::textMarkerForVisiblePosition): Moved from WebAccessibilityObjectWrapperMac.mm.
(WebCore::textMarkerRangeFromVisiblePositions): Moved from WebAccessibilityObjectWrapperMac.mm.
* accessibility/mac/WebAccessibilityObjectWrapperMac.h:
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(AXTextMarkerRange): Moved.
(textMarkerForVisiblePosition): Moved.
(textMarkerRangeFromMarkers): Moved.
(textMarkerRangeFromVisiblePositions): Moved.

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

5 months agoWeb Inspector: Items in the toolbar take up to much vertical space
drousso@apple.com [Tue, 3 Mar 2020 03:22:01 +0000 (03:22 +0000)]
Web Inspector: Items in the toolbar take up to much vertical space
https://bugs.webkit.org/show_bug.cgi?id=204627
<rdar://problem/59091905>

Reviewed by Timothy Hatcher.

Source/WebCore:

Now that there is no toolbar area, there is nothing obstructing the ability for the window
to be moved around when dragging via the title bar area. As such, we can remove the unused
`InspectorFrontendHost` APIs.

* inspector/InspectorFrontendHost.idl:
* inspector/InspectorFrontendHost.h:
* inspector/InspectorFrontendHost.cpp:
(WebCore::InspectorFrontendHost::startWindowDrag): Deleted.
(WebCore::InspectorFrontendHost::moveWindowBy const): Deleted.

* inspector/InspectorFrontendClient.h:
* inspector/InspectorFrontendClientLocal.h:
* inspector/InspectorFrontendClientLocal.cpp:
(WebCore::InspectorFrontendClientLocal::moveWindowBy): Deleted.

Source/WebInspectorUI:

Merge the toolbar are and tab bar to waste less vertical space.

Existing toolbar buttons have been moved to a space before the tab bar, and are only shown
when needed (e.g. only show the reload button when remotely inspecting).

If there are any console warnings/errors, an icon for each type of message is shown between
the left buttons and the tabs, and each button's opacity is animated whenever a new message
is added.

Whenever the debugger pauses, change the tab bar icon of the Sources Tab to an image that
includes paused iconography to help convey the debugger's state no matter which tab is
currently selected, just like the debugger dashboard.

The dashboard network information has been moved to the Network Tab (described below).

When undocked, the tab bar and all the content below it are pushed down by 22px to make room
for the system close/minimize/maximize buttons and the window title.

* UserInterface/Base/Main.js:
(WI.loaded):
(WI._handleSettingsKeyboardShortcut):
(WI._tryToRestorePendingTabs):
(WI.isNewTabWithTypeAllowed):
(WI._openDefaultTab): Deleted.
(WI.showNewTabTab): Deleted.
* UserInterface/Views/Main.css:
(#undocked-title-area): Added.
(body.docked #undocked-title-area): Added.
(body.window-inactive #undocked-title-area): Added.
(#main):
(@keyframes tab-bar-console-item-pulse): Added.
(.tab-bar > .navigation-bar :matches(.console-warnings, .console-errors):not(.disabled).pulsing): Added.
(@media (prefers-color-scheme: dark) #undocked-title-area): Added.
(@media (prefers-color-scheme: dark) body.window-inactive #undocked-title-area): Added.
(body.docked.bottom): Deleted.
(body.docked.bottom #toolbar): Deleted.
(body.docked.bottom #toolbar .item:not(.flexible-space)): Deleted.

* UserInterface/Views/TabBar.js:
(WI.TabBar):
(WI.TabBar.get horizontalPadding): Added.
(WI.TabBar.prototype.addNavigationItemBefore): Added.
(WI.TabBar.prototype.addNavigationItemAfter): Added.
(WI.TabBar.prototype.insertTabBarItem):
(WI.TabBar.prototype.insertTabBarItem.animateTabs):
(WI.TabBar.prototype.insertTabBarItem.removeStyles):
(WI.TabBar.prototype.removeTabBarItem):
(WI.TabBar.prototype.removeTabBarItem.animateTabs):
(WI.TabBar.prototype.removeTabBarItem.removeStyles):
(WI.TabBar.prototype.set selectedTabBarItem):
(WI.TabBar.prototype.get tabCount): Added.
(WI.TabBar.prototype.layout):
(WI.TabBar.prototype.layout.measureItemWidth):
(WI.TabBar.prototype.layout.recalculateItemWidths):
(WI.TabBar.prototype.didLayoutSubtree): Added.
(WI.TabBar.prototype._recordTabBarItemSizesAndPositions):
(WI.TabBar.prototype._recordTabBarItemSizesAndPositions.add): Added.
(WI.TabBar.prototype._applyTabBarItemSizesAndPositions):
(WI.TabBar.prototype._finishExpandingTabsAfterClose):
(WI.TabBar.prototype._finishExpandingTabsAfterClose.animateTabs):
(WI.TabBar.prototype._finishExpandingTabsAfterClose.removeStyles):
(WI.TabBar.prototype._handleClick):
(WI.TabBar.prototype._handleMouseMoved):
(WI.TabBar.prototype._handleMouseMoved.inlineStyleValue): Added.
(WI.TabBar.prototype._handleMouseUp):
(WI.TabBar.prototype._handleMouseLeave):
(WI.TabBar.prototype._handleContextMenu):
(WI.TabBar.prototype.get saveableTabCount): Deleted.
(WI.TabBar.layout.forceItemHidden): Deleted.
* UserInterface/Views/TabBar.css:
(.tab-bar):
(body:not(.docked) .tab-bar): Added.
(body.docked .tab-bar): Added.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar): Added.
(.tab-bar > .border): Added.
(.tab-bar > .border.top): Added.
(.tab-bar > .border.bottom): Added.
(body.docked.bottom .tab-bar > .border.top): Added.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .border): Added.
(.tab-bar > .navigation-bar): Added.
(.tab-bar > .navigation-bar > .item.group > .item): Added.
(.tab-bar > .navigation-bar > .item.group > .item:nth-child(1 of :not(.hidden))): Added.
(.tab-bar > .navigation-bar > .item.group > .item:nth-last-child(1 of :not(.hidden))): Added.
(.tab-bar > .navigation-bar .item.divider): Added.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .navigation-bar > .item.divider): Added.
(.tab-bar > .tabs): Added.
(body.docked .tab-bar .tabs): Added.
(.tab-bar > .tabs > .item): Added.
(body:not(.docked) .tab-bar > .tabs > .item): Added.
(body:not(.docked) .tab-bar > .tabs > .item:not(.pinned)): Added.
(body.docked .tab-bar > .tabs > .item): Added.
(.tab-bar > .tabs.calculate-width > .item): Added.
(body[dir=ltr]:not(.docked) .tab-bar > .tabs > .item:not(:first-child), body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.hide-border-start) > .item:first-child, body[dir=ltr]:not(.docked) .tab-bar > .tabs.dragging-tab > .item.selected, body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:last-child): Added.
(body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:last-child, body[dir=rtl]:not(.docked) .tab-bar > .tabs > .item:not(:first-child), body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.hide-border-start) > .item:first-child, body[dir=rtl]:not(.docked) .tab-bar > .tabs.dragging-tab > .item.selected): Added.
(.tab-bar > .tabs > .item.pinned): Added.
(body.docked .tab-bar > .tabs > .item.pinned): Added.
(body:not(.docked) .tab-bar > .tabs > .item:not(.disabled).selected): Added.
(body.docked .tab-bar > .tabs > .item:not(.disabled).selected): Added.
(body:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): Added.
(body.docked .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): Added.
(body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover, body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover + .item, body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:last-child:not(.selected, .disabled):hover): Added.
(body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:last-child:not(.selected, .disabled):hover, body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover, body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover + .item): Added.
(body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): Added.
(body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Added.
(body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Added.
(.tab-bar > .tabs > .item > .flex-space): Added.
(.tab-bar > .tabs > .item > .icon): Added.
(.tab-bar > .tabs > .item.pinned > .icon): Added.
(.tab-bar > .tabs > .item:not(.selected):hover > .icon): Added.
(.tab-bar > .tabs > .item:not(.disabled).selected > .icon): Added.
(.tab-bar > .tabs > .item.disabled > .icon): Added.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item > .icon): Added.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected > .icon): Added.
(.tab-bar > .tabs > .item > .title): Added.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item > .title): Added.
(.tab-bar > .tabs > .item > .title > .content): Added.
(.tab-bar > .tabs:not(.animating) > .item:not(.selected):hover > .title): Added.
(.tab-bar > .tabs > .item:not(.disabled).selected > .title): Added.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected > .title): Added.
(.tab-bar > .tabs.static-layout): Added.
(.tab-bar > .tabs.static-layout > :matches(.flexible-space, .item)): Added.
(.tab-bar > .tabs.animating.closing-tab > .item): Added.
(.tab-bar > .tabs.animating:matches(.expanding-tabs, .inserting-tab) > .item): Added.
(.tab-bar > .tabs.animating.inserting-tab > .item.being-inserted): Added.
(body:not(.docked) .tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected, body:not(.docked) .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:not(.docked) .tab-bar > .tabs.animating.closing-tab > .item:not(.disabled).selected): Added.
(body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected, body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.animating.closing-tab > .item:not(.disabled).selected): Added.
(.tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected): Added.
(@media (prefers-color-scheme: dark) .tab-bar): Added.
(@media (prefers-color-scheme: dark) body.docked.bottom .tab-bar > .border.top): Added.
(@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar > .tabs > .item): Added.
(@media (prefers-color-scheme: dark) .tab-bar > .tabs > .item:not(.disabled).selected): Added.
(@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): Added.
(@media (prefers-color-scheme: dark) body.docked .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): Added.
(@media (prefers-color-scheme: dark) .tab-bar > .tabs > .item > .icon): Added.
(@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover > .icon): Added.
(@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive) .tab-bar): Added.
(@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): Added.
(@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Added.
(body.window-inactive .tab-bar): Deleted.
(.tab-bar > .top-border): Deleted.
(body.window-inactive .tab-bar > .top-border): Deleted.
(.tab-bar > .item): Deleted.
(.tab-bar.calculate-width > .item): Deleted.
(body[dir=ltr] .tab-bar > :nth-child(n + 2 of .item),): Deleted.
(body[dir=rtl] .tab-bar > :nth-child(n + 2 of .item),): Deleted.
(.tab-bar > .item.pinned): Deleted.
(.tab-bar > .item.pinned.tab-picker): Deleted.
(.tab-bar > .item:not(.disabled).selected): Deleted.
(.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover): Deleted.
(body[dir=ltr] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,): Deleted.
(body[dir=rtl] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,): Deleted.
(body.window-inactive .tab-bar > .item): Deleted.
(body[dir=ltr].window-inactive .tab-bar > .item): Deleted.
(body[dir=rtl].window-inactive .tab-bar > .item): Deleted.
(body.window-inactive .tab-bar > .item.selected): Deleted.
(.tab-bar > .item > .close): Deleted.
(body:not(.window-inactive) .tab-bar > .item:hover > .close): Deleted.
(body:not(.window-inactive) .tab-bar.single-tab > .item.default-tab:hover > .close): Deleted.
(.tab-bar.single-tab > .item.default-tab > .close): Deleted.
(.tab-bar > .item > .close:hover): Deleted.
(.tab-bar > .item > .close:active): Deleted.
(.tab-bar > .item > .flex-space): Deleted.
(.tab-bar > .item.ephemeral > .flex-space:last-child): Deleted.
(.tab-bar > .item > .icon): Deleted.
(.tab-bar > .item.pinned > .icon): Deleted.
(.tab-bar > .item.selected > .icon): Deleted.
(.tab-bar > .item.disabled > .icon): Deleted.
(@media not (prefers-color-scheme: dark) .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover > .icon): Deleted.
(.tab-bar > .item > .title): Deleted.
(.tab-bar:not(.collapsed) > .item > .title): Deleted.
(.tab-bar > .item > .title > .content): Deleted.
(.tab-bar:not(.animating) > .item:not(.selected):hover > .title): Deleted.
(.tab-bar > .item.selected > .title): Deleted.
(.tab-bar.collapsed > .item): Deleted.
(.tab-bar.collapsed > .item:not(.pinned) > .icon): Deleted.
(.tab-bar.collapsed > .item > .flex-space): Deleted.
(.tab-bar.collapsed > .item > .close): Deleted.
(.tab-bar.collapsed > .item:hover > .close): Deleted.
(.tab-bar.collapsed > .item.ephemeral:hover > .icon): Deleted.
(.tab-bar.collapsed > .item.ephemeral:hover > .title): Deleted.
(.tab-bar.static-layout): Deleted.
(.tab-bar.static-layout > .item): Deleted.
(.tab-bar.animating.closing-tab > .item): Deleted.
(.tab-bar.animating:matches(.expanding-tabs, .inserting-tab) > .item): Deleted.
(.tab-bar.animating.inserting-tab > .item.being-inserted): Deleted.
(.tab-bar.dragging-tab > .item.selected,): Deleted.
(body.window-inactive .tab-bar.dragging-tab > .item.selected,): Deleted.
(.tab-bar.dragging-tab > .item.selected): Deleted.
(@media (prefers-color-scheme: dark) .tab-bar > .item): Deleted.
(@media (prefers-color-scheme: dark) .tab-bar > .item > .title): Deleted.
(@media (prefers-color-scheme: dark) .tab-bar > .item:not(.disabled).selected): Deleted.
(@media (prefers-color-scheme: dark) .tab-bar:not(.animating) > .item:not(.selected):hover): Deleted.
(@media (prefers-color-scheme: dark) .tab-bar > .item > .close,): Deleted.
(@media (prefers-color-scheme: dark) body.window-inactive .tab-bar): Deleted.
(@media (prefers-color-scheme: dark) body.window-inactive .tab-bar > .item): Deleted.
(@media (prefers-color-scheme: dark) body.window-inactive .tab-bar > .item.selected): Deleted.
(@media (prefers-color-scheme: dark) body.window-inactive .tab-bar > .item > .title): Deleted.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.tablePopulateCell):
(WI.NetworkTableContentView.prototype._changeCollection):
(WI.NetworkTableContentView.prototype.initialLayout):
(WI.NetworkTableContentView.prototype.processHAR):
(WI.NetworkTableContentView.prototype._processPendingEntries):
(WI.NetworkTableContentView.prototype._updateEntryForResource):
(WI.NetworkTableContentView.prototype._mainResourceDidChange):
(WI.NetworkTableContentView.prototype._handleResourceSizeDidChange): Added.
(WI.NetworkTableContentView.prototype._resourceTransferSizeDidChange):
(WI.NetworkTableContentView.prototype._handleResourceAdded):
(WI.NetworkTableContentView.prototype._handleFrameWasAdded):
(WI.NetworkTableContentView.prototype._entryForResource):
(WI.NetworkTableContentView.prototype._updateStatistics): Added.
(WI.NetworkTableContentView.prototype._updateStatistic): Added.
(WI.NetworkTableContentView.prototype._startUpdatingLoadTimeStatistic): Added.
(WI.NetworkTableContentView.prototype._stopUpdatingLoadTimeStatistic): Added.
(WI.NetworkTableContentView.prototype._updateLoadTimeStatistic): Added.
* UserInterface/Views/NetworkTableContentView.css:
(.content-view.network .network-table): Added.
(.network-table > .statistics): Added.
(.network-table > .statistics > .statistic): Added.
(.network-table > .statistics > .statistic[hidden]): Added.
(.network-table > .statistics > .statistic > .icon): Added.
(.network-table > .statistics > .statistic > .text): Added.
Add a fixed row below the network table that contains statistics information based on the
current shown collection (e.g. live data vs HAR):
 - number of domains
 - number of resources
 - total resource size
 - total transfer size
 - number of redirects
 - time to load
NOTE: elided renaming CSS changes.

* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.addTabForContentView):
(WI.TabBrowser.prototype.closeTabForContentView):
(WI.TabBrowser.prototype._tabBarItemSelected):
(WI.TabBrowser.prototype._tabBarItemRemoved):

* UserInterface/Views/TabContentView.js:
(WI.TabContentView.shouldPinTab): Added.
* UserInterface/Views/AuditTabContentView.js:
(WI.AuditTabContentView):
(WI.AuditTabContentView.tabInfo):
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.tabInfo):
* UserInterface/Views/ConsoleTabContentView.js:
(WI.ConsoleTabContentView):
(WI.ConsoleTabContentView.tabInfo):
* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView):
* UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
(WI.ElementsTabContentView.tabInfo):
* UserInterface/Views/LayersTabContentView.js:
(WI.LayersTabContentView):
(WI.LayersTabContentView.tabInfo):
* UserInterface/Views/NetworkTabContentView.js:
(WI.NetworkTabContentView):
(WI.NetworkTabContentView.tabInfo):
* UserInterface/Views/SearchTabContentView.js:
(WI.SearchTabContentView):
(WI.SearchTabContentView.tabInfo):
(WI.SearchTabContentView.shouldPinTab): Added.
(WI.SearchTabContentView.shouldSaveTab): Added.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView):
(WI.SettingsTabContentView.tabInfo):
(WI.SettingsTabContentView.shouldPinTab): Added.
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Views/SourcesTabContentView.js:
(WI.SourcesTabContentView):
(WI.SourcesTabContentView.tabInfo):
(WI.SourcesTabContentView.prototype._handleDebuggerPaused): Added.
(WI.SourcesTabContentView.prototype._handleDebuggerResumed): Added.
* UserInterface/Views/StorageTabContentView.js:
(WI.StorageTabContentView):
(WI.StorageTabContentView.tabInfo):
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView):
(WI.TimelineTabContentView.tabInfo):
* UserInterface/Views/TabBarItem.js:
(WI.TabBarItem):
(WI.TabBarItem.get horizontalMargin): Added.
(WI.TabBarItem.prototype.get element):
(WI.TabBarItem.prototype.get representedObject):
(WI.TabBarItem.prototype.set disabled):
(WI.TabBarItem.prototype.get hidden): Added.
(WI.TabBarItem.prototype.set hidden): Added.
(WI.TabBarItem.prototype.set representedObject): Deleted.
(WI.TabBarItem.prototype.get isDefaultTab): Deleted.
(WI.TabBarItem.prototype.set isDefaultTab): Deleted.
* UserInterface/Views/GeneralTabBarItem.js:
(WI.GeneralTabBarItem.fromTabContentView): Added.
(WI.GeneralTabBarItem): Deleted.
(WI.GeneralTabBarItem.fromTabInfo): Deleted.
(WI.GeneralTabBarItem.prototype.get isEphemeral): Deleted.
(WI.GeneralTabBarItem.prototype._handleContextMenuEvent): Deleted.
* UserInterface/Views/PinnedTabBarItem.js:
(WI.PinnedTabBarItem):
(WI.PinnedTabBarItem.fromTabContentView): Added.
(WI.PinnedTabBarItem.titleDidChange):
(WI.PinnedTabBarItem.fromTabInfo): Deleted.
(WI.PinnedTabBarItem.prototype.titleDidChange): Deleted.
(WI.PinnedTabBarItem.prototype._handleContextMenuEvent): Deleted.
Simplify how tab bar items are created.

* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype.get sizesToFit):
(WI.NavigationBar.prototype.addNavigationItem):
(WI.NavigationBar.prototype.insertNavigationItem):
* UserInterface/Views/SizesToFitNavigationBar.js: Removed.
* UserInterface/Views/Sidebar.js:
(WI.Sidebar):
* UserInterface/Views/GraphicsOverviewContentView.js:
(WI.GraphicsOverviewContentView.prototype.initialLayout):
Support marking `sizesToFit` during construction, instead of having to make a subclass.

* UserInterface/Views/ButtonNavigationItem.js:
(WI.ButtonNavigationItem):
(WI.ButtonNavigationItem.prototype.get imageType): Added.
(WI.ButtonNavigationItem.prototype.set imageType): Added.
(WI.ButtonNavigationItem.prototype._update):
* UserInterface/Views/ButtonNavigationItem.css:
(.tab-bar > .navigation-bar .item.button.image-and-text > span): Added.
(.navigation-bar .item.button > img): Added.
(.navigation-bar .item.button.disabled > img): Added.
(body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button > img): Added.
(body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button.disabled > img): Added.
(@media (prefers-color-scheme: dark) .navigation-bar .item.button.disabled > img): Added.
Allow `WI.ButtonNavigationItem` to use an `<img>` instead of an `<svg>` for it's image. This
is to work around a compositing bug <https://webkit.org/b/207022>.

* UserInterface/Views/GroupNavigationItem.js:
(WI.GroupNavigationItem.prototype.get hidden): Added.
(WI.GroupNavigationItem.prototype.set hidden): Added.
(WI.GroupNavigationItem.prototype.get additionalClassNames): Added.
Add a special case where this item is considered `hidden` if all sub-items are also `hidden`.

* UserInterface/Views/Variables.css:
(:root):
(body:matches(.window-inactive, .window-docked-inactive)): Added.
(body:matches(.window-inactive, .window-docked-inactive) *): Added.
(body:not(.docked)): Added.
(@media (prefers-color-scheme: dark) :root):
(@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive)): Added.
(@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive) *): Added.
(body.window-inactive): Deleted.
(body.window-inactive *): Deleted.
(@media (prefers-color-scheme: dark) body.window-inactive): Deleted.
(@media (prefers-color-scheme: dark) body.window-inactive *): Deleted.
Replace `--toolbar-height` with `--undocked-title-area-height`, which is set when docked.
Define `--tab-bar-height` in terms of `--navigation-bar-height` so they share the same value.

* UserInterface/Views/DividerNavigationItem.css:
(.navigation-bar .item.divider):
(@media (prefers-color-scheme: dark)):
Simplify the CSS in order to better support being used in the tab bar.

* UserInterface/Views/FlexibleSpaceNavigationItem.css:
(.navigation-bar .item.flexible-space):
(.navigation-bar .item.flexible-space.align-start > .item):
(.navigation-bar .item.flexible-space.align-end > .item):
(:matches(.navigation-bar, .toolbar) .item.flexible-space): Deleted.
(:matches(.navigation-bar, .toolbar) .item.flexible-space.align-start > .item): Deleted.
(:matches(.navigation-bar, .toolbar) .item.flexible-space.align-end > .item): Deleted.
Remove toolbar styles.

* UserInterface/Controllers/ConsoleManager.js:
(WI.ConsoleManager):
(WI.ConsoleManager.prototype.get warningCount): Added.
(WI.ConsoleManager.prototype.get errorCount): Added.
(WI.ConsoleManager.prototype.messageWasAdded):
(WI.ConsoleManager.prototype.messagesCleared):
(WI.ConsoleManager.prototype.messageRepeatCountUpdated):
(WI.ConsoleManager.prototype._incrementMessageLevelCount): Added.
(WI.ConsoleManager.prototype._delayedMessagesCleared):
Keep track of the count of warnings and errors so that they can be used to determine when to
show Console button navigation items in the tab bar.

* UserInterface/Views/DOMTreeContentView.css:
(body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint): Added.
(body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Added.
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint): Deleted.
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Deleted.
* UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
(body:matches(.window-inactive, .window-docked-inactive) .timeline-overview-graph.rendering-frame > .frame-marker): Added.
(body.window-inactive .timeline-overview-graph.rendering-frame > .frame-marker): Deleted.
* UserInterface/Views/TimelineOverview.css:
(.timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Added.
(@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Added.
(.timeline-overview > .tree-outline.timelines .item.selected + .item, body.window-inactive .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted.
(@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item, body.window-inactive .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted.
* UserInterface/Views/TimelineRecordFrame.css:
(body:matches(.window-inactive, .window-docked-inactive) .timeline-record-frame.selected): Added.
(body.window-inactive .timeline-record-frame.selected): Deleted.
* UserInterface/Views/TimelineRuler.css:
(body:matches(.window-inactive, .window-docked-inactive) .timeline-ruler > .header > .divider): Added.
(body.window-inactive .timeline-ruler > .header > .divider): Deleted.
Add selectors for `.window-docked-inactive` everywhere that `.window-inactive` exists.

* UserInterface/Base/Setting.js:
Remove new tab bar experimental setting.

* UserInterface/Debug/Bootstrap.js:
(WI.runBootstrapOperations):
(WI.runBootstrapOperations.applyDumpMessagesState):
(WI.runBootstrapOperations.updateDebugUI):

* UserInterface/Main.html:
* Localizations/en.lproj/localizedStrings.js:

* UserInterface/Views/ActivateButtonToolbarItem.js: Removed.
* UserInterface/Views/ButtonToolbarItem.js: Removed.
* UserInterface/Views/ButtonToolbarItem.css: Removed.
* UserInterface/Views/ControlToolbarItem.js: Removed.
* UserInterface/Views/ControlToolbarItem.css: Removed.
* UserInterface/Views/Toolbar.js: Removed.
* UserInterface/Views/Toolbar.css: Removed.
Remove toolbar related code now that it has been merged into the tab bar.

* UserInterface/Models/DebuggerDashboard.js: Removed.
* UserInterface/Models/DefaultDashboard.js: Removed.
* UserInterface/Views/DashboardContainerView.js: Removed.
* UserInterface/Views/DashboardContainerView.css: Removed.
* UserInterface/Views/DashboardView.js: Removed.
* UserInterface/Views/DebuggerDashboardView.js: Removed.
* UserInterface/Views/DebuggerDashboardView.css: Removed.
* UserInterface/Views/DefaultDashboardView.js: Removed.
* UserInterface/Views/DefaultDashboardView.css: Removed.
Remove dashboard related code now that it has been merged into the tab bar.

* UserInterface/Views/LegacyTabBar.js: Removed.
* UserInterface/Views/NewTabContentView.js: Removed.
* UserInterface/Views/NewTabContentView.css: Removed.
* UserInterface/Images/NewTab.svg: Removed.
* UserInterface/Images/NewTabPlus.svg: Removed.
* UserInterface/Images/SearchResults.svg: Removed.
Remove the lebacy tab bar in favor of the new tab bar.

Source/WebKit:

Now that there is no toolbar area, there is nothing obstructing the ability for the window
to be moved around when dragging via the title bar area. As such, we can remove the unused
`InspectorFrontendHost` APIs.

* WebProcess/Inspector/WebInspectorUI.h:
* WebProcess/Inspector/WebInspectorUI.cpp:
(WebKit::WebInspectorUI::startWindowDrag): Deleted.
(WebKit::WebInspectorUI::moveWindowBy): Deleted.
* UIProcess/Inspector/WebInspectorProxy.messages.in:
* UIProcess/Inspector/WebInspectorProxy.h:
* UIProcess/Inspector/WebInspectorProxy.cpp:
(WebKit::WebInspectorProxy::startWindowDrag): Deleted.
(WebKit::WebInspectorProxy::platformStartWindowDrag): Deleted.
* UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:
(WebKit::WebInspectorProxy::platformStartWindowDrag): Deleted.
* UIProcess/Inspector/mac/WebInspectorProxyMac.mm:
(WebKit::WebInspectorProxy::platformStartWindowDrag): Deleted.
* UIProcess/Inspector/win/WebInspectorProxyWin.cpp:
(WebKit::WebInspectorProxy::platformStartWindowDrag): Deleted.
* UIProcess/Inspector/wpe/WebInspectorProxyWPE.cpp:
(WebKit::WebInspectorProxy::platformStartWindowDrag): Deleted.

* WebProcess/Inspector/RemoteWebInspectorUI.h:
* WebProcess/Inspector/RemoteWebInspectorUI.cpp:
(WebKit::RemoteWebInspectorUI::startWindowDrag): Deleted.
(WebKit::RemoteWebInspectorUI::moveWindowBy): Deleted.
* UIProcess/Inspector/RemoteWebInspectorProxy.messages.in:
* UIProcess/Inspector/RemoteWebInspectorProxy.cpp:
* UIProcess/Inspector/RemoteWebInspectorProxy.h:
(WebKit::RemoteWebInspectorProxy::startWindowDrag): Deleted.
(WebKit::RemoteWebInspectorProxy::platformStartWindowDrag): Deleted.
* UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp:
(WebKit::RemoteWebInspectorProxy::platformStartWindowDrag): Deleted.
* UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm:
(WebKit::RemoteWebInspectorProxy::platformStartWindowDrag): Deleted.
* UIProcess/Inspector/win/RemoteWebInspectorProxyWin.cpp:
(WebKit::RemoteWebInspectorProxy::platformStartWindowDrag): Deleted.

Source/WebKitLegacy/ios:

Now that there is no toolbar area, there is nothing obstructing the ability for the window
to be moved around when dragging via the title bar area. As such, we can remove the unused
`InspectorFrontendHost` APIs.

* WebCoreSupport/WebInspectorClientIOS.mm:
(WebInspectorFrontendClient::startWindowDrag): Deleted.

Source/WebKitLegacy/mac:

Now that there is no toolbar area, there is nothing obstructing the ability for the window
to be moved around when dragging via the title bar area. As such, we can remove the unused
`InspectorFrontendHost` APIs.

* WebCoreSupport/WebInspectorClient.h:
* WebCoreSupport/WebInspectorClient.mm:
(WebInspectorFrontendClient::startWindowDrag): Deleted.

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

5 months agoAdd flag to indicate that ITP state was explicitly set
bfulgham@apple.com [Tue, 3 Mar 2020 03:11:06 +0000 (03:11 +0000)]
Add flag to indicate that ITP state was explicitly set
https://bugs.webkit.org/show_bug.cgi?id=208461
<rdar://problem/59960829>

Reviewed by John Wilander.

Now that ITP is supported in Ephemeral sessions, we would like to move to a process-wide
concept of ITP being on or off, rather than controlling this at a website data level.
This patch takes the first step by adding a flag to the WebKit::NetworkSessionCreationParameters
structure that tracks whether the state of ITP (On or Off) was explicitly set by
SPI (primarily during testing).

This patch also ensures that we can communicate with TCC for the purpose of checking if
ITP is on or off.

* NetworkProcess/NetworkSessionCreationParameters.cpp:
(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):
* NetworkProcess/NetworkSessionCreationParameters.h:
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
* Scripts/process-entitlements.sh:
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreSetResourceLoadStatisticsEnabled):
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _setResourceLoadStatisticsEnabled:]):
* UIProcess/Cocoa/VersionChecks.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::createNewWebProcess):
* UIProcess/WebProcessPool.h:
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::parameters):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::setIsRunningResourceLoadStatisticsTest):
* UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::itpStateWasExplicitlySet const):
(WebKit::WebsiteDataStore::useExplicitITPState):

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

5 months agoUpdated breakpoint and search type icons
jond@apple.com [Tue, 3 Mar 2020 03:03:47 +0000 (03:03 +0000)]
Updated breakpoint and search type icons
https://bugs.webkit.org/show_bug.cgi?id=208453

Reviewed by Devin Rousso.

* UserInterface/Images/ApplicationCacheManifest.svg:
* UserInterface/Images/ClippingIcons.svg:
* UserInterface/Images/DocumentIcons.svg:
* UserInterface/Images/FolderGeneric.svg:
* UserInterface/Images/InstrumentIcons.svg:
* UserInterface/Images/NavigationItemNetworkOverride.svg:
* UserInterface/Images/Origin.svg:
* UserInterface/Images/TableIcons.svg:
* UserInterface/Images/TypeIcons.svg:
* UserInterface/Views/BreakpointTreeElement.css:
(.breakpoint-debugger-statement-icon .icon):
(.breakpoint-generic-line-icon .icon):
(@media (prefers-color-scheme: dark) .breakpoint-debugger-statement-icon .icon):
(@media (prefers-color-scheme: dark) .breakpoint-generic-line-icon .icon):
* UserInterface/Views/EventBreakpointTreeElement.css:
(.breakpoint.event.breakpoint-for-animation-frame:not(.breakpoint-paused-icon) .icon):
(.breakpoint.event.breakpoint-for-interval:not(.breakpoint-paused-icon) .icon):
(.breakpoint.event.breakpoint-for-listener:not(.breakpoint-paused-icon) .icon):
(.breakpoint.event.breakpoint-for-timeout:not(.breakpoint-paused-icon) .icon):
(@media(prefers-color-scheme: dark) .breakpoint.event.breakpoint-for-animation-frame:not(.breakpoint-paused-icon) .icon):
(@media(prefers-color-scheme: dark) .breakpoint.event.breakpoint-for-interval:not(.breakpoint-paused-icon) .icon):
(@media(prefers-color-scheme: dark) .breakpoint.event.breakpoint-for-listener:not(.breakpoint-paused-icon) .icon):
(@media(prefers-color-scheme: dark) .breakpoint.event.breakpoint-for-timeout:not(.breakpoint-paused-icon) .icon):
* UserInterface/Views/FolderIcon.css:
(.tree-outline .folder-icon.selected:focus .icon):
(.tree-outline .origin-icon.selected:focus .icon):
(.tree-outline:focus .folder-icon.selected .icon): Deleted.
(.tree-outline:focus .origin-icon.selected .icon): Deleted.
* UserInterface/Views/RecordingActionTreeElement.css:
(.item.recording-action > .icon):
(@media (prefers-color-scheme: dark) .item.recording-action > .icon):

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

5 months agoRemove the required `LockHolder` when calling `WebAnimation::instances()`
drousso@apple.com [Tue, 3 Mar 2020 02:59:29 +0000 (02:59 +0000)]
Remove the required `LockHolder` when calling `WebAnimation::instances()`
https://bugs.webkit.org/show_bug.cgi?id=208493

Reviewed by Simon Fraser.

Since `WebAnimation`s are not accessible from `Worker`s (e.g. main thread only), there's no
reason to require that a lock be held in order to access `WebAnimation::instances()`.

* animation/WebAnimation.h:
* animation/WebAnimation.cpp:
(WebCore::WebAnimation::WebAnimation):
(WebCore::WebAnimation::~WebAnimation):
(WebCore::WebAnimation::instancesMutex): Deleted.

* inspector/agents/InspectorAnimationAgent.cpp:
(WebCore::InspectorAnimationAgent::enable):

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

5 months agoAdd new Mac target numbers
alancoon@apple.com [Tue, 3 Mar 2020 02:49:55 +0000 (02:49 +0000)]
Add new Mac target numbers
https://bugs.webkit.org/show_bug.cgi?id=208398

Reviewed by Alexey Proskuryakov.

Source/bmalloc:

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:

Source/JavaScriptCore:

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/Version.xcconfig:
* Configurations/WebKitTargetConditionals.xcconfig:

Source/ThirdParty/ANGLE:

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/Version.xcconfig:
* Configurations/WebKitTargetConditionals.xcconfig:

Source/ThirdParty/libwebrtc:

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/Version.xcconfig:
* Configurations/WebKitTargetConditionals.xcconfig:

Source/WebCore:

No new tests: adding target numbers doesn't necessitate any new testing.

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/Version.xcconfig:
* Configurations/WebKitTargetConditionals.xcconfig:

Source/WebKit:

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/Version.xcconfig:
* Configurations/WebKitTargetConditionals.xcconfig:

Source/WebKitLegacy/mac:

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/Version.xcconfig:
* Configurations/WebKitTargetConditionals.xcconfig:

Source/WTF:

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:

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

5 months ago[Cocoa] Mapping from MIME type to UTI type should be done in the UI process
pvollan@apple.com [Tue, 3 Mar 2020 02:37:35 +0000 (02:37 +0000)]
[Cocoa] Mapping from MIME type to UTI type should be done in the UI process
https://bugs.webkit.org/show_bug.cgi?id=208415

Reviewed by Brent Fulgham.

Source/WebCore:

This is currently done in the WebContent process, but since this is using a system service which will be closed,
this mapping should be moved to the UI process. The UI process will create this mapping for a set of mime types,
and send it to the WebContent process.

API test: WebKit.UTIFromMIMEType

* platform/network/mac/UTIUtilities.h:
* platform/network/mac/UTIUtilities.mm:
(WebCore::mapUTIFromMIMEType):
(WebCore::UTIFromMIMETypeCachePolicy::createValueForKey):
(WebCore::cacheUTIFromMimeType):
(WebCore::UTIFromMIMEType):
(WebCore::mimeTypes):
(WebCore::createUTIFromMIMETypeMap):
(WebCore::setUTIFromMIMETypeMap):
* testing/Internals.cpp:
(WebCore::Internals::getUTIFromMIMEType):
* testing/Internals.mm:
(WebCore::Internals::getUTIFromMIMEType):
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

Send the mapping between MIME types and UTI types to the WebContent process as part of the Web
process creation parameters.

* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/UTIFromMIMEType.mm: Added.
(TEST):

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

5 months agoUpdate the resource override button icon
jond@apple.com [Tue, 3 Mar 2020 02:33:23 +0000 (02:33 +0000)]
Update the resource override button icon
https://bugs.webkit.org/show_bug.cgi?id=208459

Reviewed by Devin Rousso.

* UserInterface/Images/NavigationItemNetworkOverride.svg:

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

5 months agoFrame::layerTreeAsText should make sure that all the frames are clean and up-to-date
zalan@apple.com [Tue, 3 Mar 2020 02:19:13 +0000 (02:19 +0000)]
Frame::layerTreeAsText should make sure that all the frames are clean and up-to-date
https://bugs.webkit.org/show_bug.cgi?id=208484
<rdar://problem/59972433>

Reviewed by Simon Fraser.

window.internals.layerTreeAsText() is designed to dump the layer structure of the current page content.
It calls updateLayout() on the mainframe's document to make sure we collect the layer information on a clear tree.
However Document::updateLayout is scoped to the current document's frame (the mainframe in this case) and
leaves all the other frames dirty.

* page/Frame.cpp:
(WebCore::Frame::layerTreeAsText const):

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

5 months ago[ iOS wk2 ] http/tests/workers/service/postmessage-after-sw-process-crash.https.html...
lawrence.j@apple.com [Tue, 3 Mar 2020 01:49:16 +0000 (01:49 +0000)]
[ iOS wk2 ] http/tests/workers/service/postmessage-after-sw-process-crash.https.html is flaky failing, timing out and crashing.
https://bugs.webkit.org/show_bug.cgi?id=208491

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:

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

5 months agoUnreviewed sandbox compile fix.
pvollan@apple.com [Tue, 3 Mar 2020 01:01:51 +0000 (01:01 +0000)]
Unreviewed sandbox compile fix.

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

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

5 months agoAnnotate editable elements with hit test order
dbates@webkit.org [Tue, 3 Mar 2020 00:59:09 +0000 (00:59 +0000)]
Annotate editable elements with hit test order
https://bugs.webkit.org/show_bug.cgi?id=208463
<rdar://problem/59962843>

Reviewed by Wenson Hsieh.

Source/WebCore:

Until <rdar://problem/59737118> is fixed, annotate editable elements with their hit test order
towards fixing <rdar://problem/59602885>.

* dom/ElementContext.h:
(WebCore::ElementContext::encode const):
(WebCore::ElementContext::decode):
Encode and decode the optional hit test order.

Source/WebKit:

Until <rdar://problem/59737118> is fixed, annotate editable elements with their hit test
order towards fixing <rdar://problem/59602885>. Only element contexts created as a result
of calling WebPage::textInputContextsInRect() have a meaningful hit test order.

Note that the hit test order of an element can only be meaningfully compared to the hit test
order of other elements returned in the same invocation of WebPage::textInputContextsInRect().
That is, the hit test order is not render tree-unique. So, the same element returned by two
different invocations of WebPage::textInputContextsInRect() cannot be compared to any other
element outside of the list it was returned in even if its order is the same in both lists.

* UIProcess/API/Cocoa/_WKTextInputContext.mm:
(-[_WKTextInputContext _hitTestOrder]): Added. If the context does not have a hit test order
(e.g. returned form WebPage::contextForElement()) then I chose to return 0 – treat it as the
frontmost element.
* UIProcess/API/Cocoa/_WKTextInputContextInternal.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::textInputContextsInRect): Assign each element's hit test order. Following
r257722 the elements are already ordered by hit test order (frontmost to backmost). So, we can
simply assign monotonically increasing numbers.
(WebKit::WebPage::contextForElement const): Pass WTF::nullopt for the hit test order as I do
not have a need to support hit test order for individual elements.

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

5 months agoUnreviewed restabilization of non-unified build.
ross.kirsling@sony.com [Tue, 3 Mar 2020 00:57:09 +0000 (00:57 +0000)]
Unreviewed restabilization of non-unified build.

* css/parser/CSSSelectorParser.cpp:
* css/parser/CSSSelectorParser.h:
* layout/blockformatting/PrecomputedBlockMarginCollapse.cpp:

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

5 months agoImplement canvas remote rendering
commit-queue@webkit.org [Tue, 3 Mar 2020 00:39:24 +0000 (00:39 +0000)]
Implement canvas remote rendering
https://bugs.webkit.org/show_bug.cgi?id=204955

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-03-02
Reviewed by Jon Lee.

Source/WebCore:

Prepare ConcreteImageBuffer to be created without immediate backend.
RemoteImageBuffer, which is a superclass of ConcreteImageBuffer, will be
created initially without a backend. It will be created when its twin
RemoteImageBufferProxy in the GPUProcess shares its backend.

* platform/graphics/ConcreteImageBuffer.h:
(WebCore::ConcreteImageBuffer::ensureBackendCreated const):
(WebCore::ConcreteImageBuffer::ensureBackend const): Deleted.

Source/WebKit:

* WebProcess/GPU/graphics/RemoteImageBuffer.h:
* WebProcess/GPU/graphics/RemoteImageBufferMessageHandler.cpp:
(WebKit::RemoteImageBufferMessageHandler::waitForCreateImageBufferBackend):
(WebKit::RemoteImageBufferMessageHandler::waitForCommitImageBufferFlushContext):
Synchronize the RemoteImageBuffer backend such that the context and the
DrawingContext are flushed to the backend in the GPUProcess only when
its pixels are needed in the WebProcess.

* WebProcess/GPU/graphics/RemoteImageBufferMessageHandler.h:
(WebKit::RemoteImageBufferMessageHandler::isPendingFlush const):
Tells whether the pixels of the backend is ready to use or a flushing is
being committed.

* WebProcess/GPU/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::waitForCreateImageBufferBackend):
(WebKit::RemoteRenderingBackend::waitForCommitImageBufferFlushContext):
* WebProcess/GPU/graphics/RemoteRenderingBackend.h:
They block execution till certain RemoteRenderingBackendProxy messages
are received.

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

5 months agoScriptController::executeIfJavaScriptURL() uses wrong JSGlobalObject.
mark.lam@apple.com [Tue, 3 Mar 2020 00:16:02 +0000 (00:16 +0000)]
ScriptController::executeIfJavaScriptURL() uses wrong JSGlobalObject.
https://bugs.webkit.org/show_bug.cgi?id=208290
<rdar://problem/59839476>

Reviewed by Chris Dumez.

The call to executeScriptIgnoringException() may have changed the current global
object of the window.  We should be using the original global object that produced
the result string.

Also added a missing exception check needed after a potential rope resolution.

* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::executeIfJavaScriptURL):

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

5 months agoUnreviewed, rolling out r257725.
jacob_uphoff@apple.com [Mon, 2 Mar 2020 23:58:56 +0000 (23:58 +0000)]
Unreviewed, rolling out r257725.

This commit caused 10 API tests to fail

Reverted changeset:

"[Cocoa] Mapping from MIME type to UTI type should be done in
the UI process"
https://bugs.webkit.org/show_bug.cgi?id=208415
https://trac.webkit.org/changeset/257725

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

5 months agoDon't skip tests unnecessarily on arm64
sbarati@apple.com [Mon, 2 Mar 2020 23:53:40 +0000 (23:53 +0000)]
Don't skip tests unnecessarily on arm64
https://bugs.webkit.org/show_bug.cgi?id=208470
<rdar://problem/59968869>

Reviewed by Tadeu Zagallo.

JSTests:

* microbenchmarks/bit-test-constant.js:
* microbenchmarks/bit-test-nonconstant.js:
* microbenchmarks/memcpy-typed-loop-large.js:
* microbenchmarks/memcpy-typed-loop-small.js:
* microbenchmarks/mul-immediate-sub.js:
* stress/dont-range-based-iterate-vector-that-is-mutated.js:
* stress/dont-reserve-huge-capacity-lexer.js:
* stress/new-largeish-contiguous-array-with-size.js:
* stress/sampling-profiler-richards.js:
* typeProfiler/deltablue-for-of.js:
* typeProfiler/getter-richards.js:
* wasm/regress/llint-callee-saves-with-fast-memory.js:

Tools:

* Scripts/run-jsc-stress-tests:

LayoutTests:

* js/script-tests/array-from.js:
* js/script-tests/function-apply-many-args.js:

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

5 months ago[ Mac wk2 ] is css3/shapes/shape-outside/shape-image/shape-image-025.html flaky failing.
lawrence.j@apple.com [Mon, 2 Mar 2020 22:56:38 +0000 (22:56 +0000)]
[ Mac wk2 ] is css3/shapes/shape-outside/shape-image/shape-image-025.html flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208476

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

5 months agoAdd date/time style to macCatalyst
megan_gardner@apple.com [Mon, 2 Mar 2020 22:50:52 +0000 (22:50 +0000)]
Add date/time style to macCatalyst
https://bugs.webkit.org/show_bug.cgi?id=208456

Reviewed by Wenson Hsieh.

Source/WebKit:

Add style flag for date/time pickers on macCatalyst.

* Platform/spi/ios/UIKitSPI.h:
* UIProcess/ios/forms/WKFormInputControl.mm:
(-[WKDateTimePicker datePickerStyle]):
(-[WKDateTimePicker initWithView:datePickerMode:]):

Source/WTF:

* wtf/PlatformHave.h:

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

5 months agoFix for LayoutTests/accessibility/mac/search-text/search-text.html in IsolatedTree...
andresg_22@apple.com [Mon, 2 Mar 2020 22:50:30 +0000 (22:50 +0000)]
Fix for LayoutTests/accessibility/mac/search-text/search-text.html in IsolatedTree mode.
https://bugs.webkit.org/show_bug.cgi?id=208434

Reviewed by Chris Fleizach.

Source/WebCore:

Covered by LayoutTests/accessibility/mac/search-text/search-text.html

- Updates IsolatedTree for AXSelectedTextChanged notifications.
- Exposes webAreaObject through the AXCoreObject interface.
- AXIsolatedObject implementation for hasApplePDFAnnotationAttribute,
webAreaObject and stringForRange.

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::postTextStateChangeNotification):
(WebCore::AXObjectCache::updateIsolatedTree):
(WebCore::AXObjectCache::rootWebArea):
* accessibility/AXObjectCache.h:
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityObjectInterface.h:
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::isLoaded const):
(WebCore::AccessibilityRenderObject::accessKey const):
* accessibility/AccessibilityScrollView.h:
* accessibility/ios/AXObjectCacheIOS.mm:
(WebCore::AXObjectCache::postTextStateChangePlatformNotification):
(WebCore::AXObjectCache::postTextReplacementPlatformNotification):
(WebCore::AXObjectCache::postTextReplacementPlatformNotificationForTextControl):
* accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeAttributeData):
(WebCore::AXIsolatedObject::stringForRange const):
(WebCore::AXIsolatedObject::hasApplePDFAnnotationAttribute const): Deleted.
* accessibility/isolatedtree/AXIsolatedObject.h:
* accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::removeNode):
(WebCore::AXIsolatedTree::applyPendingChanges):
* accessibility/mac/AXObjectCacheMac.mm:
(WebCore::AXObjectCache::postTextStateChangePlatformNotification):
(WebCore::addTextMarkerFor):
(WebCore::textReplacementChangeDictionary):
(WebCore::postUserInfoForChanges):
(WebCore::AXObjectCache::postTextReplacementPlatformNotification):
(WebCore::AXObjectCache::postTextReplacementPlatformNotificationForTextControl):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper textMarkerRangeFromVisiblePositions:endPosition:]):
(-[WebAccessibilityObjectWrapper associatedPluginParent]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):

Tools:

* WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
(WTR::AccessibilityController::AccessibilityController): Initializes m_useAXThread.
(WTR::AccessibilityController::rootElement): No need to set m_useAXThread here since it is initialize in the constructor.
* WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:
(WTR::AccessibilityController::accessibleElementById): Same as above.

LayoutTests:

* accessibility/mac/aria-expanded-notifications.html:
With this change, we now get the FocusChanged notification when the
script sets focus to a tree item.

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

5 months ago[ Mac wk2 ] tiled-drawing/scrolling/fast-scroll-div-latched-mainframe-with-handler...
lawrence.j@apple.com [Mon, 2 Mar 2020 22:26:17 +0000 (22:26 +0000)]
[ Mac wk2 ] tiled-drawing/scrolling/fast-scroll-div-latched-mainframe-with-handler.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208471

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

5 months ago[ macOS wk2 ] webgpu/whlsl/textures-sample-level.html is flaky failing and crashing
lawrence.j@apple.com [Mon, 2 Mar 2020 22:02:57 +0000 (22:02 +0000)]
[ macOS wk2 ] webgpu/whlsl/textures-sample-level.html is flaky failing and crashing
https://bugs.webkit.org/show_bug.cgi?id=207078

Unreviewed test gardening.

Corrected the expectations, so that they reflect the image failure issue and crashing.

* platform/mac-wk2/TestExpectations:

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

5 months agoMake Path::Path(const Path&) and Path::operator=(const Path&) cheap
wenson_hsieh@apple.com [Mon, 2 Mar 2020 21:25:57 +0000 (21:25 +0000)]
Make Path::Path(const Path&) and Path::operator=(const Path&) cheap
https://bugs.webkit.org/show_bug.cgi?id=208265
<rdar://problem/59922452>

Reviewed by Darin Adler.

Make WebCore::Path's copy constructor and copy assignment operator cheaper. See below for more details; there
should be no observable change in behavior. This gives us approximately 6% back on the canvas lines subtest on
MotionMark, when the GPU process is used to render canvases (tested against macOS 10.15.3, on a 10-core iMac).

* platform/graphics/Path.h:
* platform/graphics/cg/PathCG.cpp:
(WebCore::Path::~Path):
(WebCore::Path::ensurePlatformPath):
(WebCore::Path::Path):

Update move constructors to set m_copyPathBeforeMutation to false on the given (moved) path.

(WebCore::Path::swap):
(WebCore::Path::initializeOrCopyPlatformPathIfNeeded):

Whenever we need to ensure the platform CGPath (i.e. prior to appending to it), check the new flag to see
whether it's necessary to apply the subsequent mutation on a copy of m_path, rather than m_path itself. The
exception to this is when m_path only has a retain count of 1, which implies that all other copies of this path
have been mutated (and have copied their platform CGPath as a result); this means it's safe to apply changes to
m_path, since this path is now the sole owner of the CGPath.

(WebCore::Path::operator=):

The copy constructor and copy assignment operators currently call CGPathCreateMutableCopy on the given path's
platform CGPath; this is to ensure that if either path is mutated in the future, the mutation won't also affect
the other copy of the WebCore::Path.

However, this call to CGPathCreateMutableCopy isn't needed in the case where a path is copied, but neither of
the paths are mutated. To avoid this extra copy, we can instead introduce a dirty bit (m_copyPathBeforeMutation)
that is set when a path is copied (either via the constructor, or through assignment) and proceed to simply copy
the path pointer to the new path. Only if either path is mutated do we then call CGPathCreateMutableCopy.

(WebCore::Path::transform):
(WebCore::Path::closeSubpath):
(WebCore::Path::addArc):
(WebCore::Path::addPath):
(WebCore::Path::clear):

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

5 months ago[ iOS wk2 Debug and Mac Debug ] imported/w3c/IndexedDB-private-browsing/idbobjectstor...
lawrence.j@apple.com [Mon, 2 Mar 2020 21:21:58 +0000 (21:21 +0000)]
[ iOS wk2 Debug and Mac Debug ] imported/w3c/IndexedDB-private-browsing/idbobjectstore_createIndex6-event_order.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208467

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:
* platform/mac/TestExpectations:

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

5 months agoImplement the remote ImageBuffer
commit-queue@webkit.org [Mon, 2 Mar 2020 21:12:40 +0000 (21:12 +0000)]
Implement the remote ImageBuffer
https://bugs.webkit.org/show_bug.cgi?id=207221

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-03-02
Reviewed by Jon Lee.

Source/WebCore:

* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/ConcreteImageBuffer.h:
(WebCore::ConcreteImageBuffer::create):
ConcreteImageBuffer::create returns the derived class which it creates.

* platform/graphics/displaylists/DisplayList.h:
This using statement gives compilation error when referencing DisplayList
from WebKit.

* platform/graphics/displaylists/DisplayListDrawingContext.h:
RemoteImageBuffer inherits DisplayList::ImageBuffer so these methods
need to be exported.

* platform/graphics/displaylists/DisplayListImageBuffer.h:
(WebCore::DisplayList::ImageBuffer::ImageBuffer):
Make it possible for RemoteImageBuffer to be created with no backend. It
will be created later when RemoteImageBufferProxy shares its backend with
RemoteImageBuffer.

Source/WebKit:

RemoteImageBuffer and RemoteImageBufferProxy represent a single remote
ImageBuffer. The back end should be created by RemoteImageBufferProxy in
GPUProcess and shared with the RemoteImageBuffer in the WebProcess.
Flushing the DrawingContext will be done in GPUProcess. But creating the
native image out of the back end will be in GPUProcess.

RemoteRenderingBackend and RemoteRenderingBackendProxy are central points
for receiving and sending all the messages of the RemoteImageBuffer and
RemoteImageBufferProxy.

* GPUProcess/graphics/PlatformRemoteImageBufferProxy.h: Added.
Defines the platform types of RemoteImageBufferProxy.

* GPUProcess/graphics/RemoteImageBufferMessageHandlerProxy.cpp: Added.
(WebKit::RemoteImageBufferMessageHandlerProxy::RemoteImageBufferMessageHandlerProxy):
(WebKit::RemoteImageBufferMessageHandlerProxy::createBackend):
(WebKit::RemoteImageBufferMessageHandlerProxy::commitFlushContext):
* GPUProcess/graphics/RemoteImageBufferMessageHandlerProxy.h: Added.
Manages sending and receiving the messages of RemoteImageBufferProxy

* GPUProcess/graphics/RemoteImageBufferProxy.h: Added.
(WebKit::RemoteImageBufferProxy::create):
(WebKit::RemoteImageBufferProxy::RemoteImageBufferProxy):
It is responsible for creating a shared back end and replaying back drawing
commands.

* GPUProcess/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::createImageBuffer):
(WebKit::RemoteRenderingBackendProxy::releaseImageBuffer):
(WebKit::RemoteRenderingBackendProxy::flushImageBufferDrawingContext):
* GPUProcess/graphics/RemoteRenderingBackendProxy.h:
(WebKit::RemoteRenderingBackendProxy::renderingBackendIdentifier const):
* GPUProcess/graphics/RemoteRenderingBackendProxy.messages.in:
Handle or dispatch messages received from RemoteRenderingBackend.

* Scripts/webkit/messages.py:
* Sources.txt:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/GPU/graphics/ImageBufferFlushIdentifier.h: Added.

* WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:
(WebKit::ImageBufferShareableBitmapBackend::create):
* WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:
Although hostWindow isn't used, this is what ConcreteImageBuffer::create
expects from the creator of the backend.

* WebProcess/GPU/graphics/PlatformRemoteImageBuffer.h: Added.
Defines the platform types of RemoteImageBuffer.

* WebProcess/GPU/graphics/RemoteImageBuffer.h: Added.
(WebKit::RemoteImageBuffer::create):
(WebKit::RemoteImageBuffer::RemoteImageBuffer):
It is responsible for creating RemoteImageBufferProxy and performing the
drawing commands in the GPUProcess.

* WebProcess/GPU/graphics/RemoteImageBufferMessageHandler.cpp: Added.
(WebKit::RemoteImageBufferMessageHandler::RemoteImageBufferMessageHandler):
(WebKit::RemoteImageBufferMessageHandler::~RemoteImageBufferMessageHandler):
(WebKit::RemoteImageBufferMessageHandler::flushDrawingContext):
(WebKit::RemoteImageBufferMessageHandler::commitFlushContext):
* WebProcess/GPU/graphics/RemoteImageBufferMessageHandler.h: Added.
(WebKit::RemoteImageBufferMessageHandler::imageBufferIdentifier const):
Manages sending and receiving the messages of RemoteImageBuffer.

* WebProcess/GPU/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::createImageBuffer):
(WebKit::RemoteRenderingBackend::releaseImageBuffer):
(WebKit::RemoteRenderingBackend::createImageBufferBackend):
(WebKit::RemoteRenderingBackend::commitImageBufferFlushContext):
* WebProcess/GPU/graphics/RemoteRenderingBackend.h:
(WebKit::RemoteRenderingBackend::renderingBackendIdentifier const):
* WebProcess/GPU/graphics/RemoteRenderingBackend.messages.in:
Handle or dispatch messages received from RemoteRenderingBackendProxy.

* WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:
(WebKit::ImageBufferShareableIOSurfaceBackend::create):
* WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.h:
Although hostWindow isn't used, this is what ConcreteImageBuffer::create
expects from the creator of the backend.

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

5 months agoFix behavior of pings regarding Origin header
commit-queue@webkit.org [Mon, 2 Mar 2020 21:07:55 +0000 (21:07 +0000)]
Fix behavior of pings regarding Origin header
https://bugs.webkit.org/show_bug.cgi?id=207102

Patch by Rob Buis <rbuis@igalia.com> on 2020-03-02
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Import relevant tests.

* web-platform-tests/html/semantics/links/downloading-resources/header-origin-expected.txt: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-no-referrer-expected.txt: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-no-referrer-when-downgrade-expected.txt: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-no-referrer-when-downgrade.html: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-no-referrer.html: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-origin-expected.txt: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-origin-when-cross-origin-expected.txt: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-origin-when-cross-origin.html: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-origin.html: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-same-origin-expected.txt: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-same-origin.html: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-strict-origin-expected.txt: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-strict-origin-when-cross-origin-expected.txt: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-strict-origin-when-cross-origin.html: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-strict-origin.html: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-unsafe-url-expected.txt: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin-unsafe-url.html: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin.html: Added.
* web-platform-tests/html/semantics/links/downloading-resources/header-origin.js: Added.
(testOriginHeader):
(pollResult.return.new.Promise.):
(pollResult.return.new.Promise):
* web-platform-tests/html/semantics/links/downloading-resources/w3c-import.log:

Source/WebCore:

Fix behavior of pings regarding Origin header by using the
"append a request Origin header" algorithm [1]. This patch
also sets the origin before calling addExtraFieldsToSubresourceRequest
since the latter forces the origin to "null".

Tests: imported/w3c/web-platform-tests/html/semantics/links/downloading-resources/header-origin-no-referrer-when-downgrade.html
       imported/w3c/web-platform-tests/html/semantics/links/downloading-resources/header-origin-no-referrer.html
       imported/w3c/web-platform-tests/html/semantics/links/downloading-resources/header-origin-origin-when-cross-origin.html
       imported/w3c/web-platform-tests/html/semantics/links/downloading-resources/header-origin-origin.html
       imported/w3c/web-platform-tests/html/semantics/links/downloading-resources/header-origin-same-origin.html
       imported/w3c/web-platform-tests/html/semantics/links/downloading-resources/header-origin-strict-origin-when-cross-origin.html
       imported/w3c/web-platform-tests/html/semantics/links/downloading-resources/header-origin-strict-origin.html
       imported/w3c/web-platform-tests/html/semantics/links/downloading-resources/header-origin-unsafe-url.html
       imported/w3c/web-platform-tests/html/semantics/links/downloading-resources/header-origin.html

[1] https://fetch.spec.whatwg.org/#append-a-request-origin-header

* loader/PingLoader.cpp:
(WebCore::PingLoader::sendPing):
* page/SecurityPolicy.cpp:
(WebCore::SecurityPolicy::generateOriginHeader):
* page/SecurityPolicy.h:

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

5 months agoDelete by val caching does not keep the subscript alive
justin_michaud@apple.com [Mon, 2 Mar 2020 20:58:22 +0000 (20:58 +0000)]
Delete by val caching does not keep the subscript alive
https://bugs.webkit.org/show_bug.cgi?id=208393

Reviewed by Yusuke Suzuki.

JSTests:

* stress/delete-property-ic-stress.js: Added.

Source/JavaScriptCore:

Before, the provided test case crashed with asan because we did not keep deleteByVal
subscripts alive. This patch changes CacheableIdentifier to make this mistake harder
to make again, by making the constructor calls more explicit when CacheableIdentifier
will not keep an Identifier alive.

* jit/JITOperations.cpp:
* jit/Repatch.cpp:
(JSC::tryCachePutByID):
(JSC::tryCacheDeleteBy):
(JSC::repatchDeleteBy):
(JSC::tryCacheInByID):
(JSC::tryCacheInstanceOf):
(JSC::tryCacheDelBy): Deleted.
(JSC::repatchDelBy): Deleted.
* jit/Repatch.h:
* runtime/CacheableIdentifier.h:
* runtime/CacheableIdentifierInlines.h:
(JSC::CacheableIdentifier::createFromIdentifierOwnedByCodeBlock):
(JSC::CacheableIdentifier::createFromCell):

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

5 months agoReduce size of PerformanceEntry
cdumez@apple.com [Mon, 2 Mar 2020 20:45:16 +0000 (20:45 +0000)]
Reduce size of PerformanceEntry
https://bugs.webkit.org/show_bug.cgi?id=208452

Reviewed by Devin Rousso.

Reduce size of PerformanceEntry by leveraging the fact that it is polymorphic.

* page/PerformanceEntry.cpp:
(WebCore::PerformanceEntry::PerformanceEntry):
* page/PerformanceEntry.h:
(WebCore::PerformanceEntry::name const):
(WebCore::PerformanceEntry::isResource const):
(WebCore::PerformanceEntry::isMark const):
(WebCore::PerformanceEntry::isMeasure const):
(WebCore::PerformanceEntry::entryType const): Deleted.
(WebCore::PerformanceEntry::type const): Deleted.
* page/PerformanceMark.h:
* page/PerformanceMeasure.h:
* page/PerformanceResourceTiming.cpp:
(WebCore::PerformanceResourceTiming::PerformanceResourceTiming):
(WebCore::PerformanceResourceTiming::nextHopProtocol const):
* page/PerformanceResourceTiming.h:

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

5 months agoResourceLoadStatistics: Enable cookie blocking and the Storage Access API in ephemera...
wilander@apple.com [Mon, 2 Mar 2020 20:24:04 +0000 (20:24 +0000)]
ResourceLoadStatistics: Enable cookie blocking and the Storage Access API in ephemeral sessions
https://bugs.webkit.org/show_bug.cgi?id=208399
<rdar://problem/24731650>

Reviewed by Brent Fulgham.

Source/WebCore:

Tests: http/tests/resourceLoadStatistics/third-party-cookie-blocking-ephemeral-database.html
       http/tests/resourceLoadStatistics/third-party-cookie-blocking-ephemeral.html
       http/tests/storageAccess/deny-due-to-no-interaction-under-general-third-party-cookie-blocking-ephemeral.html
       http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-with-cookie-ephemeral.html
       http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-without-cookie-ephemeral.html
       http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-ephemeral.html
       http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-without-user-gesture-ephemeral.html

* loader/ResourceLoadStatistics.h:
    Adds a boolean enum IsEphemeral which is used to capture ephemeral state
    across various classes.

Source/WebKit:

This patch enables resource load statistics, or ITP, in ephemeral sessions.

Since full third-party cookie blocking is stateless, it can now be enabled in
ephemeral sessions. User interaction as a gate for calling the Storage Access
API can be captured in an ephemeral fashion as well to allow authenticated
embeds.

No actual statistics are captured which means that the constructor for
WebKit::WebResourceLoadStatisticsStore skips setting up the memory store,
the persistent store, and the database store.

The functionality that is supported is instead carried out in a set of
private "*Ephemeral()" functions, for instance hasStorageAccessEphemeral().
The public functions check ephemeral status and route accordingly.

A release assertion in WebResourceLoadStatisticsStore::postTask()
guarantees that we never make use of the statistics layer in ephemeral
sessions.

Early returns for ephemeral sessions has been removed in several places.
WebKit::WebResourceLoadObserver now accepts being instantiated in an
ephemeral session but is told whether it is and skips all statistics
collection except user interaction which is needed to gate the
Storage Access API. A release assertion in
WebResourceLoadObserver::ensureResourceStatisticsForRegistrableDomain()
makes sure that we never start collecting statistics in ephemeral mode.

A selection of test cases have been added with an ephemeral setting and
a new test function isResourceLoadStatisticsEphemeral() has been added
so that layout tests can make sure that an ephemeral setup is running.
This last bit is important since test cases will likely still pass if a
regression were to make the test session persistent.

* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::setNotifyPagesWhenDataRecordsWereScanned):
(WebKit::WebResourceLoadStatisticsStore::setIsRunningTest):
(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::postTask):
(WebKit::WebResourceLoadStatisticsStore::setResourceLoadStatisticsDebugMode):
(WebKit::WebResourceLoadStatisticsStore::setPrevalentResourceForDebugMode):
(WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::hasStorageAccessEphemeral):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccessEphemeral):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpenerEphemeral):
(WebKit::WebResourceLoadStatisticsStore::grantStorageAccessEphemeral):
(WebKit::WebResourceLoadStatisticsStore::setThirdPartyCookieBlockingMode):
(WebKit::WebResourceLoadStatisticsStore::setFirstPartyWebsiteDataRemovalMode):
(WebKit::WebResourceLoadStatisticsStore::applicationWillTerminate):
(WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::logUserInteractionEphemeral):
(WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::clearUserInteractionEphemeral):
(WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::hasHadUserInteractionEphemeral):
(WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
(WebKit::WebResourceLoadStatisticsStore::clearInMemoryEphemeral):
(WebKit::WebResourceLoadStatisticsStore::resetParametersToDefaultValues):
(WebKit::WebResourceLoadStatisticsStore::suspend):
    Added a comment on why this function is not applicable to ephemeral sessions.
(WebKit::WebResourceLoadStatisticsStore::resume):
    Added a comment on why this function is not applicable to ephemeral sessions.
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated):
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::isResourceLoadStatisticsEphemeral const):
(WebKit::NetworkProcess::prepareToSuspend):
    Skipped call to suspend ITP if it's running in ephemeral mode.
(WebKit::void NetworkProcess::resume):
    Skipped call to resume ITP if it's running in ephemeral mode.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::setResourceLoadStatisticsEnabled):
(WebKit::NetworkSession::recreateResourceLoadStatisticStore):
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreIsStatisticsEphemeral):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::isResourceLoadStatisticsEphemeral):
(WebKit::NetworkProcessProxy::addSession):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
(WebKit::WebsiteDataStore::isResourceLoadStatisticsEphemeral const):
* UIProcess/WebsiteData/WebsiteDataStore.h:
* WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:
(WebKit::WebResourceLoadObserver::WebResourceLoadObserver):
(WebKit::WebResourceLoadObserver::ensureResourceStatisticsForRegistrableDomain):
(WebKit::WebResourceLoadObserver::logFontLoad):
(WebKit::WebResourceLoadObserver::logCanvasRead):
(WebKit::WebResourceLoadObserver::logCanvasWriteOrMeasure):
(WebKit::WebResourceLoadObserver::logNavigatorAPIAccessed):
(WebKit::WebResourceLoadObserver::logScreenAPIAccessed):
(WebKit::WebResourceLoadObserver::logSubresourceLoading):
(WebKit::WebResourceLoadObserver::logWebSocketLoading):
(WebKit::WebResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
(WebKit::WebResourceLoadObserver::logSubresourceLoadingForTesting):
* WebProcess/WebCoreSupport/WebResourceLoadObserver.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::setWebsiteDataStoreParameters):
(WebKit::WebProcess::setResourceLoadStatisticsEnabled):

Tools:

The majority of the changes in WTR::TestController is (partially) fixing a bug
where the TestRunner would statically use the default website datastore instead
of the website data store configure for the page. This worked for persistent
storage testing but not for ephemeral sessions which is what this patch is all
about. The previous TestController::websiteDataStore() is now called
TestController::defaultWebsiteDataStore() and the new
TestController::websiteDataStore() returns the configured website data store.
Most of the use of the default website data store should probably change but
that's not really for this patch to deal with. I did however move all of
resource load statistics' use to the new TestController::websiteDataStore().

A new TestRunner function was added: isStatisticsEphemeral()
It allows test cases to query the ephemeral status of resource load statistics.

One problem that is mitigated in this patch but not fully fixed is that for
Cocoa platforms, the TestRunner sets up two ephemeral sessions, once in
TestController::generatePageConfiguration() via C API
WKPageConfigurationSetWebsiteDataStore(), and then again in
TestControllerCocoa's initializeWebViewConfiguration() via Cocoa API
[copiedConfiguration setWebsiteDataStore:ephemeralWebsiteDataStore].
I tried removing the latter since one session for all platforms should be
Enough but got broken behavior as a result. So now both are still there
and both enable resource load statistics.

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::isStatisticsEphemeral):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::defaultWebsiteDataStore):
(WTR::TestController::websiteDataStore):
(WTR::TestController::generatePageConfiguration):
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
(WTR::TestController::decidePolicyForNavigationAction):
(WTR::TestController::platformAdjustContext):
(WTR::TestController::clearServiceWorkerRegistrations):
(WTR::TestController::clearDOMCache):
(WTR::TestController::clearDOMCaches):
(WTR::TestController::clearIndexedDatabases):
(WTR::TestController::clearLocalStorage):
(WTR::TestController::hasDOMCache):
(WTR::TestController::domCacheSize):
(WTR::TestController::setStatisticsEnabled):
(WTR::TestController::isStatisticsEphemeral):
(WTR::TestController::setStatisticsDebugMode):
(WTR::TestController::setStatisticsPrevalentResourceForDebugMode):
(WTR::TestController::setStatisticsLastSeen):
(WTR::TestController::setStatisticsMergeStatistic):
(WTR::TestController::setStatisticsPrevalentResource):
(WTR::TestController::setStatisticsVeryPrevalentResource):
(WTR::TestController::dumpResourceLoadStatistics):
(WTR::TestController::isStatisticsPrevalentResource):
(WTR::TestController::isStatisticsVeryPrevalentResource):
(WTR::TestController::isStatisticsRegisteredAsSubresourceUnder):
(WTR::TestController::isStatisticsRegisteredAsSubFrameUnder):
(WTR::TestController::isStatisticsRegisteredAsRedirectingTo):
(WTR::TestController::setStatisticsHasHadUserInteraction):
(WTR::TestController::isStatisticsHasHadUserInteraction):
(WTR::TestController::isStatisticsOnlyInDatabaseOnce):
(WTR::TestController::setStatisticsGrandfathered):
(WTR::TestController::isStatisticsGrandfathered):
(WTR::TestController::setUseITPDatabase):
(WTR::TestController::setStatisticsSubframeUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUniqueRedirectTo):
(WTR::TestController::setStatisticsSubresourceUniqueRedirectFrom):
(WTR::TestController::setStatisticsTopFrameUniqueRedirectTo):
(WTR::TestController::setStatisticsTopFrameUniqueRedirectFrom):
(WTR::TestController::setStatisticsCrossSiteLoadWithLinkDecoration):
(WTR::TestController::setStatisticsTimeToLiveUserInteraction):
(WTR::TestController::statisticsProcessStatisticsAndDataRecords):
(WTR::TestController::statisticsUpdateCookieBlocking):
(WTR::TestController::statisticsSubmitTelemetry):
(WTR::TestController::setStatisticsNotifyPagesWhenDataRecordsWereScanned):
(WTR::TestController::setStatisticsIsRunningTest):
(WTR::TestController::setStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval):
(WTR::TestController::setStatisticsNotifyPagesWhenTelemetryWasCaptured):
(WTR::TestController::setStatisticsMinimumTimeBetweenDataRecordsRemoval):
(WTR::TestController::setStatisticsGrandfatheringTime):
(WTR::TestController::setStatisticsMaxStatisticsEntries):
(WTR::TestController::setStatisticsPruneEntriesDownTo):
(WTR::TestController::statisticsClearInMemoryAndPersistentStore):
(WTR::TestController::statisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
(WTR::TestController::statisticsClearThroughWebsiteDataRemoval):
(WTR::TestController::statisticsDeleteCookiesForHost):
(WTR::TestController::isStatisticsHasLocalStorage):
(WTR::TestController::setStatisticsCacheMaxAgeCap):
(WTR::TestController::hasStatisticsIsolatedSession):
(WTR::TestController::setStatisticsShouldDowngradeReferrer):
(WTR::TestController::setStatisticsShouldBlockThirdPartyCookies):
(WTR::TestController::setStatisticsFirstPartyWebsiteDataRemovalMode):
(WTR::TestController::statisticsResetToConsistentState):
(WTR::TestController::clearAdClickAttributionsThroughWebsiteDataRemoval):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::invoke):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
* WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::initializeWebViewConfiguration):
(WTR::TestController::platformCreateWebView):

LayoutTests:

* http/tests/adClickAttribution/store-disabled-in-ephemeral-session.html:
    Just moved the <!-- webkit-test-runner [ useFlexibleViewport=true useEphemeralSession=true ] -->
    header up to the top.
* http/tests/resourceLoadStatistics/third-party-cookie-blocking-ephemeral-database-expected.txt: Added.
* http/tests/resourceLoadStatistics/third-party-cookie-blocking-ephemeral-database.html: Added.
* http/tests/resourceLoadStatistics/third-party-cookie-blocking-ephemeral-expected.txt: Added.
* http/tests/resourceLoadStatistics/third-party-cookie-blocking-ephemeral.html: Added.
* http/tests/storageAccess/deny-due-to-no-interaction-under-general-third-party-cookie-blocking-ephemeral-expected.txt: Added.
* http/tests/storageAccess/deny-due-to-no-interaction-under-general-third-party-cookie-blocking-ephemeral.html: Added.
* http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-ephemeral-database.html:
* http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-ephemeral.html:
    Added explicit disabling of resource load statistics. However, something enables it again. See
    Comment under TestExpectation files below.
* http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-with-cookie-ephemeral-expected.txt: Added.
* http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-with-cookie-ephemeral.html: Added.
* http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-without-cookie-ephemeral-expected.txt: Added.
* http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-without-cookie-ephemeral.html: Added.
* http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-ephemeral-expected.txt: Added.
* http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-ephemeral.html: Added.
* http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-without-user-gesture-ephemeral-expected.txt: Added.
* http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-without-user-gesture-ephemeral.html: Added.
* platform/ios/TestExpectations:
* platform/mac-wk2/TestExpectations:
    These two test cases are now being skipped because resource load statistics are on in ephemeral sessions:
    http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-ephemeral.html
    http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-ephemeral-database.html
    https://bugs.webkit.org/show_bug.cgi?id=208400 tracks the work to figure out how this can be tested
    since some bug in the TestRunner is re-enabling resource load statistics as soon as you turn it off
    in ephemeral sessions.

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

5 months ago[Cocoa] Mapping from MIME type to UTI type should be done in the UI process
pvollan@apple.com [Mon, 2 Mar 2020 20:21:33 +0000 (20:21 +0000)]
[Cocoa] Mapping from MIME type to UTI type should be done in the UI process
https://bugs.webkit.org/show_bug.cgi?id=208415

Reviewed by Brent Fulgham.

Source/WebCore:

This is currently done in the WebContent process, but since this is using a system service which will be closed,
this mapping should be moved to the UI process. The UI process will create this mapping for a set of mime types,
and send it to the WebContent process.

API test: WebKit.UTIFromMIMEType

* platform/network/mac/UTIUtilities.h:
* platform/network/mac/UTIUtilities.mm:
(WebCore::mapUTIFromMIMEType):
(WebCore::UTIFromMIMETypeCachePolicy::createValueForKey):
(WebCore::cacheUTIFromMimeType):
(WebCore::UTIFromMIMEType):
(WebCore::mimeTypes):
(WebCore::createUTIFromMIMETypeMap):
(WebCore::setUTIFromMIMETypeMap):
* testing/Internals.cpp:
(WebCore::Internals::getUTIFromMIMEType):
* testing/Internals.mm:
(WebCore::Internals::getUTIFromMIMEType):
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

Send the mapping between MIME types and UTI types to the WebContent process as part of the Web
process creation parameters.

* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/UTIFromMIMEType.mm: Added.
(TEST):

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

5 months ago[GPUP] Plumb through more MediaPlayer methods
eric.carlson@apple.com [Mon, 2 Mar 2020 20:07:42 +0000 (20:07 +0000)]
[GPUP] Plumb through more MediaPlayer methods
https://bugs.webkit.org/show_bug.cgi?id=208423
<rdar://problem/59924386>

Unreviewed, remove an invalid ASSERT that causes some tests to crash.

* WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::load):

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

5 months ago[iOS] Deny mach lookup access to distributed notifications in the WebContent process
pvollan@apple.com [Mon, 2 Mar 2020 19:57:15 +0000 (19:57 +0000)]
[iOS] Deny mach lookup access to distributed notifications in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=208455

Reviewed by Brent Fulgham.

Source/WebKit:

On iOS, deny mach lookup access to the service "com.apple.distributed_notifications@1v3" in the WebContent process.

Test: fast/sandbox/ios/sandbox-mach-lookup.html

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

LayoutTests:

* fast/sandbox/ios/sandbox-mach-lookup-expected.txt:
* fast/sandbox/ios/sandbox-mach-lookup.html:

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

5 months agoPage::editableElementsInRect() should find nested editable elements and return found...
dbates@webkit.org [Mon, 2 Mar 2020 19:54:43 +0000 (19:54 +0000)]
Page::editableElementsInRect() should find nested editable elements and return found elements in paint order
https://bugs.webkit.org/show_bug.cgi?id=208352
<rdar://problem/59867815>

Reviewed by Wenson Hsieh.

Source/WebCore:

Use the existing rect-based hit testing machinery to collect all the editable elements on
the page that a person can hit. This makes it possible to find nested editable elements
(e.g. an <input> inside a <div contenteditable="true">), ignore elements with CSS "pointer-events: none",
and return elements in paint order (closest to farthest to a person's face). The latter
makes it possible for a caller to know what element is frontmost, especially when two
editable elements overlap.

* page/Page.cpp:
(WebCore::Page::editableElementsInRect const): Implement in terms of hit testing machinery.
* rendering/HitTestLocation.cpp:
(WebCore::HitTestLocation::HitTestLocation):
* rendering/HitTestLocation.h:
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::HitTestResult):
* rendering/HitTestResult.h:
Added convenience constructors that take a LayoutRect.

Tools:

Update test results to reflect the new behavior. To do this I also need to fix up the test code
to actually scroll the web content. This also means we now execute the same code on both Mac and
iOS to do the scrolling: window.scrollTo(0, 5000). Also fixed up sub-test "Inputs scrolled outside
the requested rect; should not be included." to use a 10000px height <div> so that you can scroll
to a y position of 5000. Otherwise, it's impossible to do because the page height is < 5000px.

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

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

5 months agoFix JSC 32bit alignment increase gcc warning
commit-queue@webkit.org [Mon, 2 Mar 2020 19:46:55 +0000 (19:46 +0000)]
Fix JSC 32bit alignment increase gcc warning
https://bugs.webkit.org/show_bug.cgi?id=208445

Patch by Paulo Matos <pmatos@igalia.com> on 2020-03-02
Reviewed by Yusuke Suzuki.

Use reinterpret_cast_ptr<>() instead of reinterpret_cast<>() to
avoid GCC warning about increase in alignment requirement for cast
target type.

Source/JavaScriptCore:

* dfg/DFGOSRExit.cpp:
(JSC::DFG::OSRExit::compileExit):

Source/WTF:

* wtf/HashTable.h:
(WTF::HashTable::tableSize const):
(WTF::HashTable::setTableSize const):
(WTF::HashTable::tableSizeMask const):
(WTF::HashTable::setTableSizeMask):
(WTF::HashTable::keyCount const):
(WTF::HashTable::setKeyCount const):
(WTF::HashTable::deletedCount const):
(WTF::HashTable::setDeletedCount const):
(WTF::KeyTraits>::allocateTable):
(WTF::KeyTraits>::deallocateTable):

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

5 months agoASSERT(m_column != unsetColumnIndex) in RenderTable::cellBefore
commit-queue@webkit.org [Mon, 2 Mar 2020 19:10:53 +0000 (19:10 +0000)]
ASSERT(m_column != unsetColumnIndex) in RenderTable::cellBefore
https://bugs.webkit.org/show_bug.cgi?id=208397

Patch by Doug Kelly <dougk@apple.com> on 2020-03-02
Reviewed by Zalan Bujtas.

Source/WebCore:

When inserting a cell into a table row which is not visible, this can lead to attempting to compute the repaint
rects during tree building.  Instead, mark the layer as dirty using dirtyVisibleContentStatus(), and the visibility
will be recomputed at a later time.

Test: fast/table/insert-cell-invisible-parent.html

* rendering/RenderElement.cpp:
(WebCore::RenderElement::insertedIntoTree):

LayoutTests:

* fast/table/insert-cell-invisible-parent-expected.txt: Added.
* fast/table/insert-cell-invisible-parent.html: Added.

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

5 months agoUnreviewed, fix wrong assertion
ysuzuki@apple.com [Mon, 2 Mar 2020 18:53:39 +0000 (18:53 +0000)]
Unreviewed, fix wrong assertion
https://bugs.webkit.org/show_bug.cgi?id=208404
<rdar://problem/59956592>

* runtime/CachedTypes.cpp:
(JSC::CachedUniquedStringImplBase::decode const):

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

5 months ago[BFC][MarginCollapsing] Sometimes precomputed margin values are just plain wrong.
zalan@apple.com [Mon, 2 Mar 2020 18:00:01 +0000 (18:00 +0000)]
[BFC][MarginCollapsing] Sometimes precomputed margin values are just plain wrong.
https://bugs.webkit.org/show_bug.cgi?id=208448
<rdar://problem/59950390>

Reviewed by Antti Koivisto.

Consider the following content:
<div style="float: left"></div>
<div style="height: 100px">
  <div style="float: left"></div>
  <div>
    <span style="white-space: pre">  </span>
  </div>
  <div style="margin-bottom: 320px;"></div>
 </div>
</div>

In order to compute the position of the second float we need be able to intersect it with all
the other floats in the same floating context. The float positioning starts with the box's static vertical position
which is the position the box would be taking if it wasn't floating positioned.
This vertical position needs to be in the same coordinate system as all the other floats to be able to intersect properly.
The coordinate system is the formatting root's content box.
When the second float box is being positioned, we don't yet have final margins for its ancestors, so the box's vertical
position at this point is only computed relative to its containing block.
In most cases we could just walk the ancestor chain all the way to the formatting root and pre-compute the margin before values.
However in some not-so-rare cases, the ancestor margin before value depends on some content after the float box and to be able
to figure out the exact margin values, we actually need to lay out the rest of the content.
In the example above, the second float's final position depends on whether the <span> has white-space: pre or not (whether the parent
div produces empty content or not).

This patch computes margin before values only for the ancestors ignoring margin collapsing (and margin after values).

* layout/MarginTypes.h:
(WebCore::Layout::PrecomputedMarginBefore::usedValue const):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForBoxAndAncestors):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::setPrecomputedMarginBefore): Deleted.
(WebCore::Layout::BlockFormattingContext::hasPrecomputedMarginBefore const): Deleted.
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/PrecomputedBlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::precomputedPositiveNegativeValues const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::precomputedPositiveNegativeMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::precomputedMarginBefore):

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

5 months ago[ Mac ] webanimations/accelerated-animation-renderer-change.html is flaky failing.
lawrence.j@apple.com [Mon, 2 Mar 2020 17:44:17 +0000 (17:44 +0000)]
[ Mac ] webanimations/accelerated-animation-renderer-change.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208450

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

5 months agomaps.google.com is not loading properly, screen flickers when zooming
dino@apple.com [Mon, 2 Mar 2020 17:37:30 +0000 (17:37 +0000)]
maps.google.com is not loading properly, screen flickers when zooming
https://bugs.webkit.org/show_bug.cgi?id=208331
<rdar://problem/59790757>

Reviewed by Antoine Quint.

Source/WebCore:

When using ANGLE, we don't need the GL_ANGLE_depth_texture extension.
We were mistakenly checking for it and deciding to not allow
combined depth+stencil framebuffer attachments.

Test: webgl/1.0.3/conformance/renderbuffers/framebuffer-object-attachment.html
(now passes on iOS)

* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::setupFlags):

LayoutTests:

* platform/ios/TestExpectations: remove failing expectation for:
webgl/1.0.3/conformance/renderbuffers/framebuffer-object-attachment.html

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

5 months ago[ Mac wk1 Debug ] mathml/presentation/attributes-accent-accentunder-dynamic.html...
lawrence.j@apple.com [Mon, 2 Mar 2020 16:47:59 +0000 (16:47 +0000)]
[ Mac wk1 Debug ] mathml/presentation/attributes-accent-accentunder-dynamic.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208449

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

5 months agoAdd quirk to disable to back/forward cache on docs.google.com
cdumez@apple.com [Mon, 2 Mar 2020 16:25:23 +0000 (16:25 +0000)]
Add quirk to disable to back/forward cache on docs.google.com
https://bugs.webkit.org/show_bug.cgi?id=208381
<rdar://problem/59893415>

Reviewed by Ryosuke Niwa.

Google Docs used to bypass the back/forward cache by serving "Cache-Control: no-store"
over HTTPS. We started caching such content in r250437 but the Google Docs content
unfortunately is not currently compatible because it puts an overlay over the page and
starts an animation when navigating away and fails to remove those when coming back from
the back/forward cache (e.g. in 'pageshow' event handler).

* page/Quirks.cpp:
(WebCore::Quirks::shouldBypassBackForwardCache const):

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

5 months agoUnreviewed, rolling out r257687.
jacob_uphoff@apple.com [Mon, 2 Mar 2020 16:13:32 +0000 (16:13 +0000)]
Unreviewed, rolling out r257687.

This commit caused debug tests to crash for macOS & iOS

Reverted changeset:

"[Cocoa] Mapping from MIME type to UTI type should be done in
the UI process"
https://bugs.webkit.org/show_bug.cgi?id=208415
https://trac.webkit.org/changeset/257687

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

5 months ago[GStreamer] Get rid of custom GCD implementation
philn@webkit.org [Mon, 2 Mar 2020 15:57:15 +0000 (15:57 +0000)]
[GStreamer] Get rid of custom GCD implementation
https://bugs.webkit.org/show_bug.cgi?id=208446

Reviewed by Xabier Rodriguez-Calvar.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::naturalSize const):
(WebCore::greatestCommonDivisor): Deleted.

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

5 months ago[GPUP] Plumb through more MediaPlayer methods
eric.carlson@apple.com [Mon, 2 Mar 2020 15:54:29 +0000 (15:54 +0000)]
[GPUP] Plumb through more MediaPlayer methods
https://bugs.webkit.org/show_bug.cgi?id=208423
<rdar://problem/59924386>

Reviewed by Youenn Fablet.

Source/WebCore:

No new tests, unskipped ~1200 existing media tests.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaPlayerPause): Deleted.
(WebCore::HTMLMediaElement::mediaPlayerPlay): Deleted.
* html/HTMLMediaElement.h:

* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerContentsScale const):
(WebCore::MediaPlayerClient::mediaPlayerPause): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerPlay): Deleted.

Source/WebKit:

* GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
(WebKit::RemoteMediaPlayerManagerProxy::updateVideoFullscreenInlineImage): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setVideoFullscreenFrame): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setVideoFullscreenGravity): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setVideoFullscreenMode): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setVolume): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setBufferingPolicy): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::videoFullscreenStandbyChanged): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::accessLog): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::errorLog): Deleted.
* GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
* GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:
* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::mediaPlayerPause): Deleted.
(WebKit::RemoteMediaPlayerProxy::mediaPlayerPlay): Deleted.
* GPUProcess/media/RemoteMediaPlayerProxy.h:

LayoutTests:

* gpu-process/TestExpectations: Unskip ~1200 media tests.

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

5 months agoEnable capture in GPUProcess by default for recent platforms only
youenn@apple.com [Mon, 2 Mar 2020 15:41:30 +0000 (15:41 +0000)]
Enable capture in GPUProcess by default for recent platforms only
https://bugs.webkit.org/show_bug.cgi?id=208437

Reviewed by Eric Carlson.

Source/WebKit:

No change of behavior.

* Shared/WebPreferencesDefaultValues.h:

Source/WTF:

* wtf/PlatformUse.h:
Introduce USE(GPU_PROCESS)

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

5 months agoLocalSampleBufferDisplayLayer is not computing the correct bounds/position in GPUProcess
youenn@apple.com [Mon, 2 Mar 2020 15:34:07 +0000 (15:34 +0000)]
LocalSampleBufferDisplayLayer is not computing the correct bounds/position in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=208370

Reviewed by Eric Carlson.

Source/WebCore:

When in GPUProcess, we need to update the bounds of the remote LocalSampleBufferDisplayLayer.
In case of samples with rotation, the computation was wrong.
Move the rotation logic from MediaPLayerPrivateMediaStreamAVFObjC to LocalSampleBufferDisplayLayer.
This allows in WebKit2 to send the rotation information with the bounds information.
Remove the bounds getter since it is no longer used.
Covered by manual tests.

* platform/graphics/avfoundation/SampleBufferDisplayLayer.h:
* platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.h:
* platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:
(WebCore::LocalSampleBufferDisplayLayer::updateBoundsAndPosition):
(WebCore::LocalSampleBufferDisplayLayer::updateRootLayerBoundsAndPosition):
(WebCore::LocalSampleBufferDisplayLayer::enqueueSample):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateDisplayLayer):
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection):

Source/WebKit:

Remove the bounds getter logic.
Make use of new LocalSampleBufferDisplayLayer routine to properly update the layer bounds.

* GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp:
(WebKit::RemoteSampleBufferDisplayLayer::updateBoundsAndPosition):
* GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h:
* GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.messages.in:
* GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.cpp:
(WebKit::RemoteSampleBufferDisplayLayerManager::createLayer):
* GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.messages.in:
* WebProcess/GPU/webrtc/SampleBufferDisplayLayer.cpp:
(WebKit::SampleBufferDisplayLayer::SampleBufferDisplayLayer):
(WebKit::SampleBufferDisplayLayer::updateBoundsAndPosition):
* WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h:

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

5 months agoEnable audio MediaStreamTrack rendering in GPUProcess if audio capture happens in...
youenn@apple.com [Mon, 2 Mar 2020 15:04:56 +0000 (15:04 +0000)]
Enable audio MediaStreamTrack rendering in GPUProcess if audio capture happens in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=208435

Reviewed by Eric Carlson.

Instead of enabling audio track rendering in GPUProcess based on media flag,
use the audio capture flag.
This makes sure things work properly on iOS, where an audio session might interrupt other sessions.

* WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:
(WebKit::RemoteMediaPlayerManager::updatePreferences):
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::setupCaptureProcesses):

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

5 months agoAdd referrerpolicy attribute support for anchors
commit-queue@webkit.org [Mon, 2 Mar 2020 11:36:00 +0000 (11:36 +0000)]
Add referrerpolicy attribute support for anchors
https://bugs.webkit.org/show_bug.cgi?id=208424

Patch by Rob Buis <rbuis@igalia.com> on 2020-03-02
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update improved test results.

* web-platform-tests/html/dom/idlharness.https-expected.txt:
* web-platform-tests/html/dom/reflection-text-expected.txt:

Source/WebCore:

This patch adds 'referrerpolicy' attribute support for anchor elements.
If set, the value is restricted to the ReferrerPolicy enum, and
if valid it is used for the script fetch.
If not set or invalid, the current behavior is kept.

Tests: http/tests/referrer-policy-anchor/no-referrer-when-downgrade/cross-origin-http-http.html
       http/tests/referrer-policy-anchor/no-referrer-when-downgrade/cross-origin-http.https.html
       http/tests/referrer-policy-anchor/no-referrer-when-downgrade/same-origin.html
       http/tests/referrer-policy-anchor/no-referrer/cross-origin-http-http.html
       http/tests/referrer-policy-anchor/no-referrer/cross-origin-http.https.html
       http/tests/referrer-policy-anchor/no-referrer/same-origin.html
       http/tests/referrer-policy-anchor/origin-when-cross-origin/cross-origin-http-http.html
       http/tests/referrer-policy-anchor/origin-when-cross-origin/cross-origin-http.https.html
       http/tests/referrer-policy-anchor/origin-when-cross-origin/same-origin.html
       http/tests/referrer-policy-anchor/origin/cross-origin-http-http.html
       http/tests/referrer-policy-anchor/origin/cross-origin-http.https.html
       http/tests/referrer-policy-anchor/origin/same-origin.html
       http/tests/referrer-policy-anchor/same-origin/cross-origin-http-http.html
       http/tests/referrer-policy-anchor/same-origin/cross-origin-http.https.html
       http/tests/referrer-policy-anchor/same-origin/same-origin.html
       http/tests/referrer-policy-anchor/strict-origin-when-cross-origin/cross-origin-http-http.html
       http/tests/referrer-policy-anchor/strict-origin-when-cross-origin/cross-origin-http.https.html
       http/tests/referrer-policy-anchor/strict-origin-when-cross-origin/same-origin.html
       http/tests/referrer-policy-anchor/strict-origin/cross-origin-http-http.html
       http/tests/referrer-policy-anchor/strict-origin/cross-origin-http.https.html
       http/tests/referrer-policy-anchor/strict-origin/same-origin.html
       http/tests/referrer-policy-anchor/unsafe-url/cross-origin-http-http.html
       http/tests/referrer-policy-anchor/unsafe-url/cross-origin-http.https.html
       http/tests/referrer-policy-anchor/unsafe-url/same-origin.html

* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::handleClick):
(WebCore::HTMLAnchorElement::setReferrerPolicyForBindings):
(WebCore::HTMLAnchorElement::referrerPolicyForBindings const):
(WebCore::HTMLAnchorElement::referrerPolicy const):
* html/HTMLAnchorElement.h:
* html/HTMLAnchorElement.idl:
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::handleClick):
* inspector/InspectorFrontendClientLocal.cpp:
(WebCore::InspectorFrontendClientLocal::openInNewTab):
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::navigate):
* loader/FrameLoadRequest.cpp:
(WebCore::FrameLoadRequest::FrameLoadRequest):
* loader/FrameLoadRequest.h:
(WebCore::FrameLoadRequest::FrameLoadRequest):
(WebCore::FrameLoadRequest::referrerPolicy const):
(WebCore::FrameLoadRequest::shouldSendReferrer const): Deleted.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::urlSelected):
(WebCore::FrameLoader::loadURLIntoChildFrame):
(WebCore::FrameLoader::loadFrameRequest):
* loader/FrameLoader.h:
* loader/FrameLoaderTypes.h:
* loader/NavigationScheduler.cpp:
(WebCore::NavigationScheduler::scheduleLocationChange):
* mathml/MathMLElement.cpp:
(WebCore::MathMLElement::defaultEventHandler):
* page/ContextMenuController.cpp:
(WebCore::openNewWindow):
(WebCore::ContextMenuController::contextMenuItemSelected):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
* svg/SVGAElement.cpp:
(WebCore::SVGAElement::defaultEventHandler):

Source/WebKit:

Adjust to FrameLoadRequest API change.

* WebProcess/Inspector/WebInspector.cpp:
(WebKit::WebInspector::openInNewTab):
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::clickedLink):
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::loadURL):
* WebProcess/WebCoreSupport/WebContextMenuClient.cpp:
(WebKit::WebContextMenuClient::searchWithGoogle):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchCreatePage):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::navigateToPDFLinkWithSimulatedClick):

Source/WebKitLegacy/ios:

Adjust to FrameLoadRequest API change.

* WebView/WebPDFViewPlaceholder.mm:
(-[WebPDFViewPlaceholder simulateClickOnLinkToURL:]):

Source/WebKitLegacy/mac:

Adjust to FrameLoadRequest API change.

* WebView/WebPDFView.mm:
(-[WebPDFView PDFViewWillClickOnLink:withURL:]):

Source/WebKitLegacy/win:

Adjust to FrameLoadRequest API change.

* Plugins/PluginView.cpp:
(WebCore::PluginView::start):
(WebCore::PluginView::getURLNotify):
(WebCore::PluginView::getURL):
(WebCore::PluginView::handlePost):
* WebCoreSupport/WebContextMenuClient.cpp:
(WebContextMenuClient::searchWithGoogle):

LayoutTests:

Add tests for anchors with various referrerpolicy attribute values and
update improved test results.

* http/tests/referrer-policy-anchor/no-referrer-when-downgrade/cross-origin-http-http-expected.txt: Added.
* http/tests/referrer-policy-anchor/no-referrer-when-downgrade/cross-origin-http-http.html: Added.
* http/tests/referrer-policy-anchor/no-referrer-when-downgrade/cross-origin-http.https-expected.txt: Added.
* http/tests/referrer-policy-anchor/no-referrer-when-downgrade/cross-origin-http.https.html: Added.
* http/tests/referrer-policy-anchor/no-referrer-when-downgrade/same-origin-expected.txt: Added.
* http/tests/referrer-policy-anchor/no-referrer-when-downgrade/same-origin.html: Added.
* http/tests/referrer-policy-anchor/no-referrer/cross-origin-http-http-expected.txt: Added.
* http/tests/referrer-policy-anchor/no-referrer/cross-origin-http-http.html: Added.
* http/tests/referrer-policy-anchor/no-referrer/cross-origin-http.https-expected.txt: Added.
* http/tests/referrer-policy-anchor/no-referrer/cross-origin-http.https.html: Added.
* http/tests/referrer-policy-anchor/no-referrer/same-origin-expected.txt: Added.
* http/tests/referrer-policy-anchor/no-referrer/same-origin.html: Added.
* http/tests/referrer-policy-anchor/origin-when-cross-origin/cross-origin-http-http-expected.txt: Added.
* http/tests/referrer-policy-anchor/origin-when-cross-origin/cross-origin-http-http.html: Added.
* http/tests/referrer-policy-anchor/origin-when-cross-origin/cross-origin-http.https-expected.txt: Added.
* http/tests/referrer-policy-anchor/origin-when-cross-origin/cross-origin-http.https.html: Added.
* http/tests/referrer-policy-anchor/origin-when-cross-origin/same-origin-expected.txt: Added.
* http/tests/referrer-policy-anchor/origin-when-cross-origin/same-origin.html: Added.
* http/tests/referrer-policy-anchor/origin/cross-origin-http-http-expected.txt: Added.
* http/tests/referrer-policy-anchor/origin/cross-origin-http-http.html: Added.
* http/tests/referrer-policy-anchor/origin/cross-origin-http.https-expected.txt: Added.
* http/tests/referrer-policy-anchor/origin/cross-origin-http.https.html: Added.
* http/tests/referrer-policy-anchor/origin/same-origin-expected.txt: Added.
* http/tests/referrer-policy-anchor/origin/same-origin.html: Added.
* http/tests/referrer-policy-anchor/same-origin/cross-origin-http-http-expected.txt: Added.
* http/tests/referrer-policy-anchor/same-origin/cross-origin-http-http.html: Added.
* http/tests/referrer-policy-anchor/same-origin/cross-origin-http.https-expected.txt: Added.
* http/tests/referrer-policy-anchor/same-origin/cross-origin-http.https.html: Added.
* http/tests/referrer-policy-anchor/same-origin/same-origin-expected.txt: Added.
* http/tests/referrer-policy-anchor/same-origin/same-origin.html: Added.
* http/tests/referrer-policy-anchor/strict-origin-when-cross-origin/cross-origin-http-http-expected.txt: Added.
* http/tests/referrer-policy-anchor/strict-origin-when-cross-origin/cross-origin-http-http.html: Added.
* http/tests/referrer-policy-anchor/strict-origin-when-cross-origin/cross-origin-http.https-expected.txt: Added.
* http/tests/referrer-policy-anchor/strict-origin-when-cross-origin/cross-origin-http.https.html: Added.
* http/tests/referrer-policy-anchor/strict-origin-when-cross-origin/same-origin-expected.txt: Added.
* http/tests/referrer-policy-anchor/strict-origin-when-cross-origin/same-origin.html: Added.
* http/tests/referrer-policy-anchor/strict-origin/cross-origin-http-http-expected.txt: Added.
* http/tests/referrer-policy-anchor/strict-origin/cross-origin-http-http.html: Added.
* http/tests/referrer-policy-anchor/strict-origin/cross-origin-http.https-expected.txt: Added.
* http/tests/referrer-policy-anchor/strict-origin/cross-origin-http.https.html: Added.
* http/tests/referrer-policy-anchor/strict-origin/same-origin-expected.txt: Added.
* http/tests/referrer-policy-anchor/strict-origin/same-origin.html: Added.
* http/tests/referrer-policy-anchor/unsafe-url/cross-origin-http-http-expected.txt: Added.
* http/tests/referrer-policy-anchor/unsafe-url/cross-origin-http-http.html: Added.
* http/tests/referrer-policy-anchor/unsafe-url/cross-origin-http.https-expected.txt: Added.
* http/tests/referrer-policy-anchor/unsafe-url/cross-origin-http.https.html: Added.
* http/tests/referrer-policy-anchor/unsafe-url/same-origin-expected.txt: Added.
* http/tests/referrer-policy-anchor/unsafe-url/same-origin.html: Added.
* http/tests/referrer-policy/resources/check-referrer.php: Added.
* js/dom/dom-static-property-for-in-iteration-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
* platform/gtk/js/dom/dom-static-property-for-in-iteration-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
* platform/ios-wk2/js/dom/dom-static-property-for-in-iteration-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/mac-wk2/js/dom/dom-static-property-for-in-iteration-expected.txt:
* platform/win/TestExpectations:
* platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
* platform/wpe/js/dom/dom-static-property-for-in-iteration-expected.txt:

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

5 months agoASSERTION FAILED: Completion handler should always be called on inspector/dom-debugge...
youenn@apple.com [Mon, 2 Mar 2020 10:52:03 +0000 (10:52 +0000)]
ASSERTION FAILED: Completion handler should always be called on inspector/dom-debugger/attribute-modified-style.html
https://bugs.webkit.org/show_bug.cgi?id=208167
<rdar://problem/59747016>

Unreviewed.

* platform/mac-wk2/TestExpectations:
Removed flaky expectation.

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

5 months ago[GTK][WPE] Stop using mediaControlsBase.js
carlosgc@webkit.org [Mon, 2 Mar 2020 10:27:42 +0000 (10:27 +0000)]
[GTK][WPE] Stop using mediaControlsBase.js
https://bugs.webkit.org/show_bug.cgi?id=208374

Reviewed by Xabier Rodriguez-Calvar.

Move the required base functionality to mediaControlsAdwaita.js and use that single file.

* Modules/mediacontrols/mediaControlsAdwaita.js:
(createControls):
(Controller):
(Controller.prototype.listenFor):
(Controller.prototype.stopListeningFor):
(Controller.prototype.addVideoListeners):
(Controller.prototype.removeVideoListeners):
(Controller.prototype.handleEvent):
(Controller.prototype.createBase):
(Controller.prototype.isAudio):
(Controller.prototype.isFullScreen):
(Controller.prototype.shouldHaveControls):
(Controller.prototype.updateBase):
(Controller.prototype.createControls):
(Controller.prototype.configureControls):
(Controller.prototype.disconnectControls):
(Controller.prototype.reconnectControls):
(Controller.prototype.showControls):
(Controller.prototype.hideControls):
(Controller.prototype.resetHideControlsTimer):
(Controller.prototype.clearHideControlsTimer):
(Controller.prototype.controlsAreAlwaysVisible):
(Controller.prototype.controlsAreHidden):
(Controller.prototype.addControls):
(Controller.prototype.removeControls):
(Controller.prototype.updateControls):
(Controller.prototype.setIsLive):
(Controller.prototype.updateDuration):
(Controller.prototype.formatTime):
(Controller.prototype.setPlaying):
(Controller.prototype.updatePlaying):
(Controller.prototype.updateCaptionButton):
(Controller.prototype.updateCaptionContainer):
(Controller.prototype.updateFullscreenButton):
(Controller.prototype.updateVolume):
(Controller.prototype.updateHasVideo):
(Controller.prototype.handleReadyStateChange):
(Controller.prototype.handleTimeUpdate):
(Controller.prototype.handleDurationChange):
(Controller.prototype.handlePlay):
(Controller.prototype.handlePause):
(Controller.prototype.handleVolumeChange):
(Controller.prototype.handleFullscreenChange):
(Controller.prototype.handleTextTrackChange):
(Controller.prototype.handleTextTrackAdd):
(Controller.prototype.handleTextTrackRemove):
(Controller.prototype.handleControlsChange):
(Controller.prototype.handleWrapperMouseMove):
(Controller.prototype.handleWrapperMouseOut):
(Controller.prototype.handleWrapperMouseUp):
(Controller.prototype.handlePanelMouseDown):
(Controller.prototype.handlePanelTransitionEnd):
(Controller.prototype.handlePanelClick):
(Controller.prototype.canPlay):
(Controller.prototype.handlePlayButtonClicked):
(Controller.prototype.handleTimelineChange):
(Controller.prototype.handleTimelineMouseUp):
(Controller.prototype.handleMuteButtonClicked):
(Controller.prototype.handleMuteButtonMouseOver):
(Controller.prototype.handleVolumeBoxMouseOut):
(Controller.prototype.handleVolumeSliderInput):
(Controller.prototype.handleFullscreenButtonClicked):
(Controller.prototype.buildCaptionMenu):
(Controller.prototype.captionItemSelected):
(Controller.prototype.focusSiblingCaptionItem):
(Controller.prototype.handleCaptionItemKeyUp):
(Controller.prototype.showCaptionMenu):
(Controller.prototype.captionMenuTransitionEnd):
(Controller.prototype.captionMenuContainsNode):
(Controller.prototype.handleCaptionButtonClicked):
(Controller.prototype.handleCaptionButtonMouseOver):
(Controller.prototype.handleCaptionButtonMouseOut):
(Controller.prototype.handleCaptionMenuMouseOut):
(ControllerAdwaita): Deleted.
(contains): Deleted.
(ControllerAdwaita.prototype.createControls): Deleted.
(ControllerAdwaita.prototype.configureInlineControls): Deleted.
(ControllerAdwaita.prototype.shouldHaveControls): Deleted.
(ControllerAdwaita.prototype.reconnectControls): Deleted.
(ControllerAdwaita.prototype.setStatusHidden): Deleted.
(ControllerAdwaita.prototype.updateTime): Deleted.
(ControllerAdwaita.prototype.handleTimeUpdate): Deleted.
(ControllerAdwaita.prototype.updateHasAudio): Deleted.
(ControllerAdwaita.prototype.handleMuteButtonMouseOver): Deleted.
(ControllerAdwaita.prototype.handleVolumeBoxMouseOut): Deleted.
(ControllerAdwaita.prototype.removeControls): Deleted.
(ControllerAdwaita.prototype.addControls): Deleted.
(ControllerAdwaita.prototype.updateFullscreenButton): Deleted.
(ControllerAdwaita.prototype.updateReadyState): Deleted.
(ControllerAdwaita.prototype.updateDuration): Deleted.
(ControllerAdwaita.prototype.setIsLive): Deleted.
(ControllerAdwaita.prototype.updatePlaying): Deleted.
(ControllerAdwaita.prototype.updateProgress): Deleted.
(ControllerAdwaita.prototype.handleCaptionButtonClicked): Deleted.
(ControllerAdwaita.prototype.buildCaptionMenu): Deleted.
(ControllerAdwaita.prototype.destroyCaptionMenu): Deleted.
(ControllerAdwaita.prototype.showCaptionMenu): Deleted.
(ControllerAdwaita.prototype.hideCaptionMenu): Deleted.
(ControllerAdwaita.prototype.captionMenuTransitionEnd): Deleted.
(ControllerAdwaita.prototype.handleCaptionButtonMouseOver): Deleted.
(ControllerAdwaita.prototype.handleCaptionButtonShowMenu): Deleted.
(ControllerAdwaita.prototype.handleCaptionButtonMouseOut): Deleted.
(ControllerAdwaita.prototype.handleCaptionMouseOut): Deleted.
* Modules/mediacontrols/mediaControlsBase.js:
(Controller.prototype.createControls):
* PlatformGTK.cmake:
* PlatformWPE.cmake:
* rendering/RenderThemeAdwaita.cpp:
(WebCore::RenderThemeAdwaita::mediaControlsScript):

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

5 months agoUnreviewed build fix for non-unified builds after r257507.
zalan@apple.com [Mon, 2 Mar 2020 04:29:10 +0000 (04:29 +0000)]
Unreviewed build fix for non-unified builds after r257507.

* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginValue const):
(WebCore::Layout::marginValue): Deleted.

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

5 months ago[GTK] Fix the build when Wayland target is disabled
commit-queue@webkit.org [Mon, 2 Mar 2020 03:20:44 +0000 (03:20 +0000)]
[GTK] Fix the build when Wayland target is disabled
https://bugs.webkit.org/show_bug.cgi?id=208407

Patch by Ting-Wei Lan <lantw44@gmail.com> on 2020-03-01
Reviewed by Darin Adler.

Values in the enum WebCore::PlatformDisplay::Type are only defined when
their corresponding platform targets are enabled, so we need #if checks
around uses of them.

* UIProcess/API/glib/WebKitProtocolHandler.cpp:
(WebKit::WebKitProtocolHandler::handleGPU):
* UIProcess/API/glib/WebKitUIClient.cpp:
(UIClient::windowConfigureEventCallback):

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

5 months ago[WPE] Gardening, update TestExpectations and baselines
dpino@igalia.com [Mon, 2 Mar 2020 01:25:00 +0000 (01:25 +0000)]
[WPE] Gardening, update TestExpectations and baselines
https://bugs.webkit.org/show_bug.cgi?id=208433

Unreviewed gardening.

* platform/wpe/TestExpectations:
* platform/wpe/accessibility/media-emits-object-replacement-expected.txt:
* platform/wpe/css3/flexbox/button-expected.txt:
* platform/wpe/fast/block/float/float-avoidance-expected.txt:
* platform/wpe/fast/canvas/fallback-content-expected.txt: Added.
* platform/wpe/fast/canvas/webgl/copy-tex-image-and-sub-image-2d-bad-input-expected.txt: Added.
* platform/wpe/fast/canvas/webgl/draw-elements-out-of-bounds-uint-index-expected.txt: Added.
* platform/wpe/fast/canvas/webgl/drawElements-empty-vertex-data-expected.txt: Added.
* platform/wpe/fast/canvas/webgl/vertexAttribPointer-with-bad-offset-expected.txt: Added.
* platform/wpe/fast/canvas/webgl/webgl-drawarrays-crash-2-expected.txt: Added.
* platform/wpe/fast/canvas/webgl/webgl-drawarrays-crash-expected.txt: Added.
* platform/wpe/fast/css/continuationCrash-expected.txt:
* platform/wpe/fast/css/focus-ring-exists-for-search-field-expected.txt:
* platform/wpe/fast/css/margin-top-bottom-dynamic-expected.txt:
* platform/wpe/fast/css/non-standard-checkbox-size-expected.txt:
* platform/wpe/fast/css/rtl-ordering-expected.txt:
* platform/wpe/fast/css/text-input-with-webkit-border-radius-expected.txt:
* platform/wpe/fast/css/text-overflow-input-expected.txt:
* platform/wpe/fast/dom/HTMLInputElement/input-slider-update-expected.txt:
* platform/wpe/fast/dom/HTMLProgressElement/indeterminate-progress-001-expected.txt:
* platform/wpe/fast/dom/HTMLProgressElement/native-progress-bar-expected.txt:
* platform/wpe/fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element-expected.txt:
* platform/wpe/fast/dom/HTMLProgressElement/progress-element-expected.txt:
* platform/wpe/fast/dom/HTMLTextAreaElement/reset-textarea-expected.txt:
* platform/wpe/fast/dom/Range/getBoundingClientRect-expected.txt:
* platform/wpe/fast/html/details-replace-summary-child-expected.txt:
* platform/wpe/fast/html/details-replace-text-expected.txt:
* platform/wpe/fast/layers/video-layer-expected.txt:
* platform/wpe/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.txt:
* platform/wpe/fast/overflow/scrollRevealButton-expected.txt:
* platform/wpe/fast/replaced/replaced-breaking-expected.txt:
* platform/wpe/fast/replaced/table-percent-height-expected.txt:
* platform/wpe/fast/replaced/width100percent-button-expected.txt:
* platform/wpe/fast/replaced/width100percent-checkbox-expected.txt:
* platform/wpe/fast/replaced/width100percent-radio-expected.txt:
* platform/wpe/fast/replaced/width100percent-searchfield-expected.txt:
* platform/wpe/fast/xmlhttprequest/xmlhttprequest-nonexistent-file-expected.txt: Added.
* platform/wpe/fetch/fetch-url-serialization-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/css/css-animations/Element-getAnimations.tentative-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/css/css-sizing/button-min-width-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/css/css-transitions/before-load-001-expected.txt:
* platform/wpe/storage/domstorage/sessionstorage/blocked-file-access-expected.txt: Added.
* platform/wpe/svg/custom/foreign-object-skew-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug1188-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug1318-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug138725-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug18359-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug2479-2-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug2479-3-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug2479-4-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug26178-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug28928-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug33855-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug39209-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug4429-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug46368-1-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug46368-2-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug51037-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug51727-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug52505-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug52506-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug60749-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug7342-expected.txt:
* platform/wpe/tables/mozilla/bugs/bug92647-2-expected.txt:
* platform/wpe/tables/mozilla/collapsing_borders/bug41262-4-expected.txt:
* platform/wpe/tables/mozilla/dom/tableDom-expected.txt:
* platform/wpe/tables/mozilla/other/move_row-expected.txt:
* platform/wpe/tables/mozilla_expected_failures/bugs/bug1725-expected.txt:
* platform/wpe/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt:
* platform/wpe/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt:
* platform/wpe/tables/mozilla_expected_failures/bugs/bug92647-1-expected.txt:
* platform/wpe/webanimations/partly-accelerated-transition-by-removing-property-expected.txt:
* platform/wpe/webgl/1.0.3/conformance/context/context-lost-restored-expected.txt: Added.
* platform/wpe/webgl/2.0.0/conformance2/buffers/bound-buffer-size-change-test-expected.txt:
* platform/wpe/webgl/2.0.0/conformance2/buffers/buffer-copying-contents-expected.txt:
* platform/wpe/webgl/2.0.0/conformance2/misc/object-deletion-behaviour-2-expected.txt:
* platform/wpe/webgl/2.0.0/conformance2/transform_feedback/unwritten-output-defaults-to-zero-expected.txt:

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

5 months agoSlim down some CSS parsing code
darin@apple.com [Mon, 2 Mar 2020 00:43:28 +0000 (00:43 +0000)]
Slim down some CSS parsing code
https://bugs.webkit.org/show_bug.cgi?id=208418

Reviewed by Anders Carlsson.

* css/CSSPrimitiveValue.h: Remove unused createAllowingMarginQuirk function
and the FIXME-NEWPARSER that said we wouldn't need it any more and the
no-longer-needed isQuirkValue function.

* css/CSSValue.h: Remove m_isQuirkValue.

* css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseSelector): Call parseCSSSelector instead of
CSSSelectorParser::parseSelector, because that's the public function now.
* css/parser/CSSParserImpl.cpp:
(WebCore::CSSParserImpl::consumeStyleRule): Ditto.

* css/parser/CSSPropertyParserHelpers.h: Removed a FIXME-NEWPARSER that is
now obsolete.

* css/parser/CSSSelectorParser.cpp: Moved the entire CSSSelectorParser class here from
the header, because the only thing used outside this file is the entry point, the
now renamed parseCSSSelector function.
(WebCore::CSSSelectorParser::DisallowPseudoElementsScope::DisallowPseudoElementsScope):
Changed this class to use a reference instead of a pointer.
(WebCore::parseCSSSelector): Renamed CSSSelectorParser::parseSelector to this.
(WebCore::CSSSelectorParser::consumeComplexSelectorList): Use auto to make some
unique_ptr code less verbose.
(WebCore::CSSSelectorParser::consumeCompoundSelectorList): Ditto. Removed the check of
m_failed. Only the parser entry point function needs that check, and that is the
consumeComplexSelectorList function above.
(WebCore::extractCompoundFlags): Use static instead of anonymous namespace. Use enum
class instead of enum, and use OptionSet instead of unsigned.
(WebCore::CSSSelectorParser::consumeComplexSelector): Updated for the above. This
refactoring exposed a strangeness in the simple selector loop; for now maintained
behavior rather than changing it to do something more logical.
(WebCore::isScrollbarPseudoClass): Use static instead of anonymous namespace.
(WebCore::isUserActionPseudoClass): Ditto.
(WebCore::isPseudoClassValidAfterPseudoElement): Ditto.
(WebCore::isSimpleSelectorValidAfterPseudoElement): Ditto.
(WebCore::CSSSelectorParser::consumeCompoundSelector): Use auto to make unique_ptr
code less verbose. Also inlined the one line applySimpleSelectorToCompound function,
because that name didn't document much thus having a function obscured rather than
clarifying what was going on. Also use makeUnique instead of new.
(WebCore::CSSSelectorParser::consumeId): Use makeUnique instead of new.
(WebCore::CSSSelectorParser::consumeClass): Ditto.
(WebCore::CSSSelectorParser::consumeAttribute): Ditto.
(WebCore::isOnlyPseudoElementFunction): Tweaked a comment.
(WebCore::CSSSelectorParser::consumePseudo): Update use of DisallowPseudoElementsScope
to use a reference, use auto to make unique_ptr code less verbose, use makeUnique
instead of new.
(WebCore::consumeANPlusB): Converted to a file-level static function rather than
a static member function.
(WebCore::CSSSelectorParser::prependTypeSelectorIfNeeded): Changed type from
pointer to reference
(WebCore::CSSSelectorParser::addSimpleSelectorToCompound): Deleted.

* css/parser/CSSSelectorParser.h: Removed most of the contents of this file, leaving
only the function that is the parser entry point.

* style/StyleBuilderConverter.h:
(WebCore::Style::BuilderConverter::convertLength): This si the one place that sets
the quirk on a Length value. It now checks for CSS_QUIRKY_EMS directly rather than
using a helper function.

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

5 months agoTighten up CSSPendingSubstitutionValue
darin@apple.com [Mon, 2 Mar 2020 00:42:28 +0000 (00:42 +0000)]
Tighten up CSSPendingSubstitutionValue
https://bugs.webkit.org/show_bug.cgi?id=208421

Reviewed by Anders Carlsson.

* Sources.txt: Removed CSSPendingSubstitutionValue.cpp.
* WebCore.xcodeproj/project.pbxproj: Ditto.
* css/CSSPendingSubstitutionValue.cpp: Removed.

* css/CSSPendingSubstitutionValue.h:
(WebCore::CSSPendingSubstitutionValue::shorthandValue const): Return a reference
instead of a pointer.
(WebCore::CSSPendingSubstitutionValue::equals const): Updated since m_shorthandValue
is now a Ref instead of RefPtr.
(WebCore::CSSPendingSubstitutionValue::customCSSText): Made this a static member
function that always returns an empty string.

* css/StyleProperties.cpp:
(WebCore::StyleProperties::getPropertyValue const): Use auto, scoped variables
so they don't live until the end of the function. Simplified the code and the
comments while retaining as much clarity as possible. Also call getPropertyCSSValue
directly instead of calling getPropertyCSSValueInternal.
(WebCore::StyleProperties::asText const): Use is<> to make the code simpler.
Also updated to use reference instead of pointer from CSSPendingSubstitutionValue.

* css/StyleProperties.cpp:
(WebCore::StyleProperties::borderSpacingValue const): Call getPropertyCSSValue
instead of getPropertyCSSValueInternal.
(WebCore::StyleProperties::getLayeredShorthandValue const): Ditto.
(WebCore::StyleProperties::getShorthandValue const): Ditto.
(WebCore::StyleProperties::getCommonValue const): Ditto.
(WebCore::StyleProperties::pageBreakPropertyValue const): Ditto. Also added a
missing null check.
(WebCore::StyleProperties::getPropertyCSSValue const): Merged with the function
below since all this did was call getPropertyCSSValueInternal.
(WebCore::StyleProperties::getPropertyCSSValueInternal const): Renamed to take
away the word internal and merged with the function above.
(WebCore::ImmutableStyleProperties::findCustomPropertyIndex const): Removed
incorrectly copied and pasted comment.
(WebCore::MutableStyleProperties::findCustomPropertyIndex const): Ditto.
(WebCore::StyleProperties::copyPropertiesInSet const): Call getPropertyCSSValue
instead of getPropertyCSSValueInternal.
* css/StyleProperties.h: Removed getPropertyCSSValueInternal.

* css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseValueWithVariableReferences): Use is<> and fewer locals.

* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::parseValueStart): Removed a local and made this use
more Ref and less RefPtr.

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

5 months agoMove some vectors around instead of heap-allocating them and moving the pointers
darin@apple.com [Mon, 2 Mar 2020 00:40:05 +0000 (00:40 +0000)]
Move some vectors around instead of heap-allocating them and moving the pointers
https://bugs.webkit.org/show_bug.cgi?id=208422

Reviewed by Sam Weinig.

* css/CSSKeyframeRule.cpp:
(WebCore::StyleRuleKeyframe::StyleRuleKeyframe): Take Vector&& instead of
unique_ptr<Vector>.
(WebCore::StyleRuleKeyframe::create): Moved these here from the header.
Take Vector&& instead of unique_ptr<Vector>.
(WebCore::StyleRuleKeyframe::setKeyText): Update since the result is a
Vector rather than a unique_ptr<Vector>.
* css/CSSKeyframeRule.h: Updated for the above.

* css/CSSKeyframesRule.cpp:
(WebCore::StyleRuleKeyframes::findKeyframeIndex const): Return Optional<size_t>
so we don't depend on notFound. This is our better modern pattern, since
notFound can work wrong if we mix size_t and unsigned, for example. Also
updatd since result of parseKeyFrameKeyList is now a Vector rather than
a unique_ptr<Vector>.
(WebCore::CSSKeyframesRule::deleteRule): Updated for the above.
(WebCore::CSSKeyframesRule::findRule): Ditto.
* css/CSSKeyframesRule.h: Updated for the above.

* css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseKeyframeKeyList): Return Vector instead of
unique_ptr<Vector>.
* css/parser/CSSParser.h: Updated for the above.

* css/parser/CSSParserImpl.cpp:
(WebCore::CSSParserImpl::parseKeyframeKeyList): Return Vector instead of
unique_ptr<Vector>.
(WebCore::CSSParserImpl::consumeKeyframeStyleRule): Updated for the
above change.
(WebCore::CSSParserImpl::consumeKeyframeKeyList): Return Vector instead
of unique_ptr<Vector>.
* css/parser/CSSParserImpl.h: Updated for the above.

* platform/graphics/FloatPolygon.cpp:
(WebCore::FloatPolygon::FloatPolygon): Take Vector&& instead of
unique_ptr<Vector>.
* platform/graphics/FloatPolygon.h: Take Vector&& instead of unique_ptr<Vector>.
Also changed m_vertices to a Vector instead of a unique_ptr<Vector>.

* rendering/shapes/PolygonShape.h: Take Vector&& instead of unique_ptr<Vector>.

* rendering/shapes/Shape.cpp:
(WebCore::createPolygonShape): Take Vector&& instead of unique_ptr<Vector>.
(WebCore::Shape::createShape): Use a Vector instead of a unique_ptr<Vector>.

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

5 months agoundefined reference to `JSC::ExecutableBase::hasJITCodeForCall() const'
cturner@igalia.com [Mon, 2 Mar 2020 00:06:35 +0000 (00:06 +0000)]
undefined reference to `JSC::ExecutableBase::hasJITCodeForCall() const'
https://bugs.webkit.org/show_bug.cgi?id=207890

Reviewed by Yusuke Suzuki.

Encountered on arm-buildroot-linux-gnueabihf with GCC 9.2.0.

* runtime/NativeExecutable.cpp: Inclusion of
ExecutableBaseInlines.h resolves the issue for me.

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

5 months agoUnreviewed, rolling out r257618.
wenson_hsieh@apple.com [Sun, 1 Mar 2020 23:36:03 +0000 (23:36 +0000)]
Unreviewed, rolling out r257618.

This allegedly causes Safari to crash when closing a window
(see rdar://problem/59922725).

Reverted changeset:

"UIProcess crash after using _prepareForMoveToWindow, then
deallocating the WKWebView before moving to the window"
https://bugs.webkit.org/show_bug.cgi?id=208365
https://trac.webkit.org/changeset/257618

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

5 months agoMany tests in canvas and fast/canvas are asserting after r257677
wenson_hsieh@apple.com [Sun, 1 Mar 2020 23:13:46 +0000 (23:13 +0000)]
Many tests in canvas and fast/canvas are asserting after r257677
https://bugs.webkit.org/show_bug.cgi?id=208431
<rdar://problem/59911910>

Reviewed by Tim Horton.

RemoteRenderingBackend asserts that it should never be created with a RenderingMode that isn't either
RemoteAccelerated or RemoteUnaccelerated. This was previously the case before r257677, because
ImageBuffer::create() would only call into the host window (i.e. the chrome and, in turn, chrome client) to
create the remote image buffer if the rendering mode is RemoteAccelerated or RemoteUnaccelerated. However, since
we want to move away from any references to RemoteAccelerated or RemoteUnaccelerated rendering modes in WebCore,
we should instead fix this by adding a similar check in the client (WebKit) layer.

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createImageBuffer const):

Don't bother creating a RemoteRenderingBackend and telling it to create an image buffer, if the given
RenderingMode isn't one of RemoteAccelerated or RemoteUnaccelerated.

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

5 months ago[GTK] Gardening, update TestExpectations
dpino@igalia.com [Sun, 1 Mar 2020 20:46:49 +0000 (20:46 +0000)]
[GTK] Gardening, update TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=208430

Unreviewed gardening.

* platform/gtk/TestExpectations:

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

5 months agoRe-add the patch used to work around gtest linking failure on FreeBSD
commit-queue@webkit.org [Sun, 1 Mar 2020 18:24:29 +0000 (18:24 +0000)]
Re-add the patch used to work around gtest linking failure on FreeBSD
https://bugs.webkit.org/show_bug.cgi?id=208409

Patch by Ting-Wei Lan <lantw44@gmail.com> on 2020-03-01
Reviewed by Michael Catanzaro.

The patch was added in https://bugs.webkit.org/show_bug.cgi?id=138420 to
fix gtest linking error on FreeBSD. However, it was accidentally dropped
in r235613, the commit updating gtest, causing the error to happen
again. Re-add it to fix the build on FreeBSD.

* gtest/src/gtest-death-test.cc:

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

5 months ago[LFC][MarginCollapsing] Do not re-compute PositiveAndNegativeVerticalMargin values
zalan@apple.com [Sun, 1 Mar 2020 17:55:58 +0000 (17:55 +0000)]
[LFC][MarginCollapsing] Do not re-compute PositiveAndNegativeVerticalMargin values
https://bugs.webkit.org/show_bug.cgi?id=208419
<rdar://problem/59923666>

Reviewed by Antti Koivisto.

MarginCollapse::collapsedVerticalValues() already computes the positive/negative before/after pairs.

* layout/MarginTypes.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForBoxAndAncestors):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextQuirks.cpp:
(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedVerticalValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::resolvedPositiveNegativeMarginValues): Deleted.

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

5 months agoConvert m_scrollingNodeToLayerMap to use WeakPtr<RenderLayer>
simon.fraser@apple.com [Sun, 1 Mar 2020 17:19:57 +0000 (17:19 +0000)]
Convert m_scrollingNodeToLayerMap to use WeakPtr<RenderLayer>
https://bugs.webkit.org/show_bug.cgi?id=208403

Reviewed by Zalan Bujtas.

Use WeakPtr<> in m_scrollingNodeToLayerMap.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::attachScrollingNode):
(WebCore::RenderLayerCompositor::detachScrollCoordinatedLayerWithRole):
(WebCore::RenderLayerCompositor::scrollableAreaForScrollLayerID const):
* rendering/RenderLayerCompositor.h:

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

5 months agoRemove std::lock_guard
ysuzuki@apple.com [Sun, 1 Mar 2020 05:01:30 +0000 (05:01 +0000)]
Remove std::lock_guard
https://bugs.webkit.org/show_bug.cgi?id=206451

Reviewed by Anders Carlsson.

Source/bmalloc:

* bmalloc/Mutex.h:

Source/JavaScriptCore:

* API/JSVirtualMachine.mm:
(+[JSVMWrapperCache addWrapper:forJSContextGroupRef:]):
(+[JSVMWrapperCache wrapperForJSContextGroupRef:]):
* API/glib/JSCVirtualMachine.cpp:
(addWrapper):
(removeWrapper):
* heap/HeapSnapshotBuilder.cpp:
(JSC::HeapSnapshotBuilder::analyzeNode):
(JSC::HeapSnapshotBuilder::analyzeEdge):
(JSC::HeapSnapshotBuilder::analyzePropertyNameEdge):
(JSC::HeapSnapshotBuilder::analyzeVariableNameEdge):
(JSC::HeapSnapshotBuilder::analyzeIndexEdge):
(JSC::HeapSnapshotBuilder::setOpaqueRootReachabilityReasonForCell):
* heap/MachineStackMarker.cpp:
(JSC::MachineThreads::tryCopyOtherThreadStacks):
* runtime/JSRunLoopTimer.cpp:
(JSC::JSRunLoopTimer::timerDidFire):

Source/WebCore:

* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::setBuffer):
* Modules/webaudio/AudioParamTimeline.cpp:
(WebCore::AudioParamTimeline::insertEvent):
(WebCore::AudioParamTimeline::cancelScheduledValues):
* Modules/webaudio/ConvolverNode.cpp:
(WebCore::ConvolverNode::reset):
(WebCore::ConvolverNode::setBuffer):
* Modules/webaudio/MediaElementAudioSourceNode.cpp:
(WebCore::MediaElementAudioSourceNode::setFormat):
* Modules/webaudio/MediaStreamAudioSourceNode.cpp:
(WebCore::MediaStreamAudioSourceNode::setFormat):
* Modules/webaudio/OscillatorNode.cpp:
(WebCore::OscillatorNode::setPeriodicWave):
* Modules/webaudio/PannerNode.cpp:
(WebCore::PannerNode::setPanningModel):
* Modules/webaudio/WaveShaperProcessor.cpp:
(WebCore::WaveShaperProcessor::setCurve):
(WebCore::WaveShaperProcessor::setOversample):
* Modules/webdatabase/Database.cpp:
(WebCore::Database::Database):
(WebCore::Database::performOpenAndVerify):
(WebCore::Database::closeDatabase):
(WebCore::Database::getCachedVersion const):
(WebCore::Database::setCachedVersion):
* Modules/webdatabase/DatabaseManager.cpp:
(WebCore::DatabaseManager::addProposedDatabase):
(WebCore::DatabaseManager::removeProposedDatabase):
(WebCore::DatabaseManager::fullPathForDatabase):
(WebCore::DatabaseManager::detailsForNameAndOrigin):
* crypto/CryptoAlgorithmRegistry.cpp:
(WebCore::CryptoAlgorithmRegistry::identifier):
(WebCore::CryptoAlgorithmRegistry::name):
(WebCore::CryptoAlgorithmRegistry::create):
(WebCore::CryptoAlgorithmRegistry::registerAlgorithm):
* inspector/agents/WebHeapAgent.cpp:
(WebCore::SendGarbageCollectionEventsTask::addGarbageCollection):
(WebCore::SendGarbageCollectionEventsTask::reset):
(WebCore::SendGarbageCollectionEventsTask::timerFired):
* page/scrolling/ScrollingThread.cpp:
(WebCore::ScrollingThread::dispatch):
(WebCore::ScrollingThread::dispatchFunctionsFromScrollingThread):
* page/scrolling/generic/ScrollingThreadGeneric.cpp:
(WebCore::ScrollingThread::initializeRunLoop):
* page/scrolling/mac/ScrollingThreadMac.mm:
(WebCore::ScrollingThread::initializeRunLoop):
* platform/audio/ReverbConvolver.cpp:
(WebCore::ReverbConvolver::~ReverbConvolver):
* platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:
(WebCore::AudioSourceProviderAVFObjC::~AudioSourceProviderAVFObjC):
(WebCore::AudioSourceProviderAVFObjC::finalizeCallback):
(WebCore::AudioSourceProviderAVFObjC::prepareCallback):
(WebCore::AudioSourceProviderAVFObjC::unprepareCallback):
(WebCore::AudioSourceProviderAVFObjC::processCallback):
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontDatabase::collectionForFamily):
(WebCore::FontDatabase::clear):
* platform/ios/wak/WebCoreThreadRun.cpp:
* platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:
(WebCore::WebAudioSourceProviderAVFObjC::~WebAudioSourceProviderAVFObjC):
(WebCore::WebAudioSourceProviderAVFObjC::prepare):
(WebCore::WebAudioSourceProviderAVFObjC::unprepare):
* platform/network/cf/LoaderRunLoopCF.cpp:
(WebCore::loaderRunLoop):
* platform/sql/SQLiteDatabase.cpp:
(WebCore::SQLiteDatabase::setIsDatabaseOpeningForbidden):
(WebCore::SQLiteDatabase::open):
* platform/sql/SQLiteDatabaseTracker.cpp:
(WebCore::SQLiteDatabaseTracker::setClient):
(WebCore::SQLiteDatabaseTracker::incrementTransactionInProgressCount):
(WebCore::SQLiteDatabaseTracker::decrementTransactionInProgressCount):
(WebCore::SQLiteDatabaseTracker::hasTransactionInProgress):
* platform/text/TextEncodingRegistry.cpp:
(WebCore::buildBaseTextCodecMaps):
(WebCore::newTextCodec):
(WebCore::atomCanonicalTextEncodingName):

Source/WebKit:

* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::traverse):
* Platform/IPC/Connection.cpp:
(IPC::Connection::SyncMessageState::processIncomingMessage):
(IPC::Connection::SyncMessageState::dispatchMessages):
(IPC::Connection::SyncMessageState::dispatchMessagesAndResetDidScheduleDispatchMessagesForConnection):
(IPC::Connection::addWorkQueueMessageReceiver):
(IPC::Connection::removeWorkQueueMessageReceiver):
(IPC::Connection::addThreadMessageReceiver):
(IPC::Connection::removeThreadMessageReceiver):
(IPC::Connection::sendMessage):
(IPC::Connection::waitForMessage):
(IPC::Connection::processIncomingMessage):
(IPC::Connection::installIncomingSyncMessageCallback):
(IPC::Connection::uninstallIncomingSyncMessageCallback):
(IPC::Connection::hasIncomingSyncMessage):
(IPC::Connection::connectionDidClose):
(IPC::Connection::sendOutgoingMessages):
(IPC::Connection::enqueueIncomingMessage):
(IPC::Connection::dispatchMessageToWorkQueueReceiver):
(IPC::Connection::dispatchMessageToThreadReceiver):
(IPC::Connection::dispatchOneIncomingMessage):
(IPC::Connection::dispatchIncomingMessages):
* Shared/BlockingResponseMap.h:
(BlockingResponseMap::didReceiveResponse):
* UIProcess/mac/WKPrintingView.mm:
(-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
(prepareDataForPrintingOnSecondaryThread):

Source/WebKitLegacy/mac:

* DOM/DOMInternal.mm:
(getDOMWrapper):
(addDOMWrapper):
(removeDOMWrapper):

Source/WTF:

Remove use of std::lock_guard. This is deprecated in C++17.

1. For particularly low-level usage (like, bmalloc, std::mutex), use std::scoped_lock.
2. For the other purpose, use holdLock.

* benchmarks/ConditionSpeedTest.cpp:
* wtf/CryptographicallyRandomNumber.cpp:
* wtf/HashTable.cpp:
(WTF::HashTableStats::recordCollisionAtCount):
(WTF::HashTableStats::dumpStats):
* wtf/HashTable.h:
(WTF::KeyTraits>::invalidateIterators):
(WTF::addIterator):
(WTF::removeIterator):
* wtf/Language.cpp:
(WTF::userPreferredLanguages):
* wtf/MainThread.cpp:
(WTF::dispatchFunctionsFromMainThread):
(WTF::callOnMainThread):
(WTF::callOnMainAndWait):
* wtf/StackStats.cpp:
(WTF::StackStats::CheckPoint::CheckPoint):
(WTF::StackStats::CheckPoint::~CheckPoint):
(WTF::StackStats::probe):
(WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
(WTF::StackStats::LayoutCheckPoint::~LayoutCheckPoint):
* wtf/WordLock.cpp:
(WTF::WordLock::unlockSlow):
* wtf/cf/LanguageCF.cpp:
(WTF::languagePreferencesDidChange):
(WTF::platformUserPreferredLanguages):
* wtf/text/StringView.cpp:
(WTF::StringView::invalidate):
(WTF::StringView::adoptUnderlyingString):
(WTF::StringView::setUnderlyingString):
* wtf/unicode/icu/CollatorICU.cpp:
(WTF::Collator::Collator):
(WTF::Collator::~Collator):
* wtf/win/LanguageWin.cpp:
(WTF::platformLanguage):

Tools:

Add std::lock_guard lint rule to prevent from using it.

* Scripts/webkitpy/style/checkers/cpp.py:
(check_lock_guard):
(check_style):
(CppChecker):
* Scripts/webkitpy/style/checkers/cpp_unittest.py:
(WebKitStyleTest.test_lock_guard):
* TestWebKitAPI/Tests/WTF/Condition.cpp:
* TestWebKitAPI/Tests/WTF/ParkingLot.cpp:
* TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:
(assertHasObjects):
(assertHasOnlyObjects):
* WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
(WTR::AXThread::dispatch):
(WTR::AXThread::dispatchFunctionsFromAXThread):
* WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:
(WTR::AXThread::initializeRunLoop):

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

5 months ago[Cocoa] Mapping from MIME type to UTI type should be done in the UI process
pvollan@apple.com [Sun, 1 Mar 2020 03:32:16 +0000 (03:32 +0000)]
[Cocoa] Mapping from MIME type to UTI type should be done in the UI process
https://bugs.webkit.org/show_bug.cgi?id=208415

Reviewed by Brent Fulgham.

Source/WebCore:

This is currently done in the WebContent process, but since this is using a system service which will be closed,
this mapping should be moved to the UI process. The UI process will create this mapping for a set of mime types,
and send it to the WebContent process.

API test: WebKit.UTIFromMIMEType

* platform/network/mac/UTIUtilities.h:
* platform/network/mac/UTIUtilities.mm:
(WebCore::mapUTIFromMIMEType):
(WebCore::UTIFromMIMETypeCachePolicy::createValueForKey):
(WebCore::cacheUTIFromMimeType):
(WebCore::UTIFromMIMEType):
(WebCore::mimeTypes):
(WebCore::createUTIFromMIMETypeMap):
(WebCore::setUTIFromMIMETypeMap):
* testing/Internals.cpp:
(WebCore::Internals::getUTIFromMIMEType):
* testing/Internals.mm:
(WebCore::Internals::getUTIFromMIMEType):
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

Send the mapping between MIME types and UTI types to the WebContent process as part of the Web
process creation parameters.

* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/UTIFromMIMEType.mm: Added.
(TEST):

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

5 months agoUnreviewed unified build fix; add include macro for LayerHostingContext.
jer.noble@apple.com [Sun, 1 Mar 2020 01:36:29 +0000 (01:36 +0000)]
Unreviewed unified build fix; add include macro for LayerHostingContext.

* GPUProcess/media/RemoteMediaPlayerProxy.cpp:

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

5 months ago[LFC][BFC] Consolidate precomputeVerticalPositionForAncestors and precomputeVerticalP...
zalan@apple.com [Sat, 29 Feb 2020 18:12:54 +0000 (18:12 +0000)]
[LFC][BFC] Consolidate precomputeVerticalPositionForAncestors and precomputeVerticalPosition
https://bugs.webkit.org/show_bug.cgi?id=208414
<rdar://problem/59919467>

Reviewed by Antti Koivisto.

BlockFormattingContext::precomputeVerticalPositionForBoxAndAncestors takes care of both the box and its ancestors now.
This is also in preparation for making precompute logic a bit simpler.

* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):
(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForAncestors):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForBoxAndAncestors):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPosition): Deleted.
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRoot): Deleted.
* layout/blockformatting/BlockFormattingContext.h:

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

5 months agoFix the Windows build after r257645.
simon.fraser@apple.com [Sat, 29 Feb 2020 18:05:15 +0000 (18:05 +0000)]
Fix the Windows build after r257645.

* WebView.cpp:
(WebView::setAcceleratedCompositing):

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

5 months ago[LFC][Floats] FloatingState::top should return topmost logical vertical position
zalan@apple.com [Sat, 29 Feb 2020 16:24:51 +0000 (16:24 +0000)]
[LFC][Floats] FloatingState::top should return topmost logical vertical position
https://bugs.webkit.org/show_bug.cgi?id=208412
<rdar://problem/59918798>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/block-only/block-root-top-should-start-from-float-top.html

When computing the used height for an auto: height formatting root block level container, we have to take both the non-floating and floating
in-flow boxes into account. This patch ensures that in case of multiple floats, we use the topmost float's logical top position.

* layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::top const):

LayoutTests:

* fast/layoutformattingcontext/block-only/block-root-top-should-start-from-float-top-expected.html: Added.
* fast/layoutformattingcontext/block-only/block-root-top-should-start-from-float-top.html: Added.

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

5 months ago[LFC][Floats] The used available width for float avoider with clear always matches...
zalan@apple.com [Sat, 29 Feb 2020 15:20:55 +0000 (15:20 +0000)]
[LFC][Floats] The used available width for float avoider with clear always matches the containing block's constraint
https://bugs.webkit.org/show_bug.cgi?id=208411
<rdar://problem/59918356>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/block-only/float-clear-with-auto-width.html

Float clear pushes the block level box either below the floats, or just one side below but the other side could overlap.
What it means is that the used available width always matches the containing block's constraint.

* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider):
(WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear):

LayoutTests:

* fast/layoutformattingcontext/block-only/float-clear-with-auto-width-expected.html: Added.
* fast/layoutformattingcontext/block-only/float-clear-with-auto-width.html: Added.

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

5 months ago[JSC] BuiltinNames' HashMap should be small
ysuzuki@apple.com [Sat, 29 Feb 2020 08:04:13 +0000 (08:04 +0000)]
[JSC] BuiltinNames' HashMap should be small
https://bugs.webkit.org/show_bug.cgi?id=208404

Reviewed by Mark Lam.

Source/JavaScriptCore:

This patch converts public-to-private-name-map from HashMap<RefPtr<UniquedStringImpl>, SymbolImpl*> to HashSet<String> to save half of memory.
The key is that private names have the same string content to the public names. We can just query with string content to the HashSet of
private names, and we can get private names.

The problem is that we also have a hack inserting string <-> non-private well-known Symbol mappings into this table. These symbols do not have
the same content to the public string. So the above assumption is broken.

To make the above assumption valid, we have a separate small HashMap which holds string <-> non-private well-known Symbol mappings. Since # of
well-known Symbols are only 13, this new HashMap is taking at most 512B for entries, which is much smaller compared to the saved memory by
converting HashMap to HashSet for private names (32KB).

To allow it, we introduce new well-known Symbol identifier syntax to builtin JS, which is "@@iterator" format. If there is two "@", we parse this
identifier as a well-known Symbol.

* builtins/ArrayConstructor.js:
(from.wrapper.iterator):
(from):
(from.wrapper.iteratorSymbol): Deleted.
* builtins/ArrayPrototype.js:
(globalPrivate.concatSlowPath):
(concat):
* builtins/BuiltinNames.cpp:
(JSC::BuiltinNames::BuiltinNames):
(JSC::CharBufferSeacher::hash):
(JSC::CharBufferSeacher::equal):
(JSC::lookUpPrivateNameImpl):
(JSC::lookUpWellKnownSymbolImpl):
(JSC::BuiltinNames::lookUpPrivateName const):
(JSC::BuiltinNames::lookUpWellKnownSymbol const):
* builtins/BuiltinNames.h:
(JSC::BuiltinNames::lookUpPrivateName const):
(JSC::BuiltinNames::lookUpWellKnownSymbol const):
(JSC::BuiltinNames::checkPublicToPrivateMapConsistency):
(JSC::BuiltinNames::appendExternalName):
(JSC::BuiltinNames::getPublicName const): Deleted.
* builtins/GlobalOperations.js:
(globalPrivate.speciesConstructor):
* builtins/IteratorHelpers.js:
(performIteration):
* builtins/StringPrototype.js:
(match):
(matchAll):
(intrinsic.StringPrototypeReplaceIntrinsic.replace):
(replaceAll):
(search):
(split):
* builtins/TypedArrayConstructor.js:
(from.wrapper.iterator):
(from):
(from.wrapper.iteratorSymbol): Deleted.
* builtins/TypedArrayPrototype.js:
(globalPrivate.typedArraySpeciesConstructor):
(map):
(filter):
* bytecompiler/NodesCodegen.cpp:
(JSC::BytecodeIntrinsicNode::emit_intrinsic_getByIdDirectPrivate):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_putByIdDirectPrivate):
* parser/Lexer.cpp:
(JSC::Lexer<LChar>::parseIdentifier):
(JSC::Lexer<UChar>::parseIdentifier):
* runtime/CachedTypes.cpp:
(JSC::CachedUniquedStringImplBase::encode):
(JSC::CachedUniquedStringImplBase::decode const):
* runtime/CommonIdentifiers.cpp:
(JSC::CommonIdentifiers::CommonIdentifiers):
(JSC::CommonIdentifiers::lookUpPrivateName const): Deleted.
(JSC::CommonIdentifiers::getPublicName const): Deleted.
* runtime/CommonIdentifiers.h:
* tools/JSDollarVM.cpp:
(JSC::functionGetPrivateProperty):

Source/WTF:

* wtf/text/AtomStringImpl.cpp:
(WTF::HashTranslatorCharBuffer::HashTranslatorCharBuffer): Deleted.
* wtf/text/StringImpl.h:
(WTF::HashTranslatorCharBuffer::HashTranslatorCharBuffer):

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

5 months ago[Media in GPU process] Implement the video fullscreen and Picture-in-Picture support
peng.liu6@apple.com [Sat, 29 Feb 2020 07:21:48 +0000 (07:21 +0000)]
[Media in GPU process] Implement the video fullscreen and Picture-in-Picture support
https://bugs.webkit.org/show_bug.cgi?id=208252

Reviewed by Simon Fraser.

Source/WebCore:

Covered by existing tests.

This patch moves the creation of the CALayer for video fullscreen and picture-in-picture from
VideoFullscreenManager to MediaPlayerPrivate classes. With this change, we can support
video fullscreen and picture-in-picture no matter the "Media in GPU process"
feature is enabled or not. The function createVideoFullscreenLayer() is added to
MediaPlayer and MediaPlayerPrivate for that purpose.

There are duplicated code snippets to create a CALayer in MediaPlayerPrivateAVFoundationObjC,
MediaPlayerPrivateMediaSourceAVFObjC, and MediaPlayerPrivateMediaStreamAVFObjC.
That will be fixed in a future refactoring (webkit.org/b/208342).

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::createVideoFullscreenLayer):
* html/HTMLMediaElement.h:
* platform/cocoa/VideoFullscreenModelVideoElement.h:
* platform/cocoa/VideoFullscreenModelVideoElement.mm:
(WebCore::VideoFullscreenModelVideoElement::createVideoFullscreenLayer):
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::createVideoFullscreenLayer):
* platform/graphics/MediaPlayer.h:
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::createVideoFullscreenLayer):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoFullscreenLayer):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::createVideoFullscreenLayer):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::createVideoFullscreenLayer):

Source/WebKit:

The RemoteMediaPlayerProxy in the GPU process creates a LayerHostingContext and
share the context ID with the MediaPlayerPrivateRemote in the Web process,
which in turn creates a remote layer used by the VideoFullscreenManager.

Those functions regarding video fullscreen and picture-in-picture have been
moved to RemoteMediaPlayerProxy.
* GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
(WebKit::RemoteMediaPlayerManagerProxy::updateVideoFullscreenInlineImage): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setVideoFullscreenFrame): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setVideoFullscreenGravity): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setVideoFullscreenMode): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setVolume): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setBufferingPolicy): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::videoFullscreenStandbyChanged): Deleted.
* GPUProcess/media/RemoteMediaPlayerManagerProxy.h:

[GPU process]
Add two asynchronous IPC messages (EnterFullscreen and ExitFullscreen) in RemoteMediaPlayerProxy
and replace the message SetVideoFullscreenFrame with SetVideoFullscreenFrameFenced.
Create the CALayer for the video fullscreen and picture-in-picture features.
* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::prepareForPlayback): Deleted.
(WebKit::RemoteMediaPlayerProxy::setVideoFullscreenFrame): Deleted.
(WebKit::RemoteMediaPlayerProxy::mediaPlayerFirstVideoFrameAvailable): Deleted.
(WebKit::RemoteMediaPlayerProxy::mediaPlayerRenderingModeChanged): Deleted.
* GPUProcess/media/RemoteMediaPlayerProxy.h:
* GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
* GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:
(WebKit::RemoteMediaPlayerProxy::prepareForPlayback):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerFirstVideoFrameAvailable):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerRenderingModeChanged):
(WebKit::RemoteMediaPlayerProxy::setVideoInlineSizeFenced):
(WebKit::RemoteMediaPlayerProxy::enterFullscreen):
(WebKit::RemoteMediaPlayerProxy::exitFullscreen):
(WebKit::RemoteMediaPlayerProxy::setVideoFullscreenFrameFenced):

* SourcesCocoa.txt:
* WebKit.xcodeproj/project.pbxproj:

[Web process]
Create a hosting layer in the Web process corresponding to the CALayer in the
GPU process for video fullscreen and picture-in-picture.
Synchronize the properties of the layers cross process boundary with MachSendRight.
* WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::prepareForPlayback):
(WebKit::MediaPlayerPrivateRemote::acceleratedRenderingStateChanged):
(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenLayer):
(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenFrameFenced):
(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenGravity):
(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenFrame): Deleted.
* WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
* WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm: Added.
(WebKit::MediaPlayerPrivateRemote::createVideoFullscreenLayer):
(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenFrame):
* WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.mm:
(WebKit::createVideoLayerRemote):
* WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::VideoFullscreenManager::enterVideoFullscreenForVideoElement):

Fix unified build failures.
* WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:

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

5 months agoUnreviewed, rolling out r257565.
Hironori.Fujii@sony.com [Sat, 29 Feb 2020 07:03:48 +0000 (07:03 +0000)]
Unreviewed, rolling out r257565.

It broke WinCairo MiniBrowser

Reverted changeset:

"[CMake] Use WEBKIT_EXECUTABLE in MiniBrowser"
https://bugs.webkit.org/show_bug.cgi?id=206894
https://trac.webkit.org/changeset/257565

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

5 months agoUnreviewed unified build fix; Add include header for IPC::DataReference.
jer.noble@apple.com [Sat, 29 Feb 2020 05:52:10 +0000 (05:52 +0000)]
Unreviewed unified build fix; Add include header for IPC::DataReference.

* WebProcess/Network/WebResourceLoader.cpp:

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

5 months agoAdd an internal setting to enable or disable canvas rendering in the GPU Process
wenson_hsieh@apple.com [Sat, 29 Feb 2020 03:00:22 +0000 (03:00 +0000)]
Add an internal setting to enable or disable canvas rendering in the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=208375

Reviewed by Tim Horton.

Source/WebCore:

Adds an internal setting to enable or disable the GPU process when rendering canvases. To do this, we add a
codepath for creating a new ImageBuffer, given enum types that indicate whether to try and enable acceleration,
and also whether to use display lists.

* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::createImageBuffer const):

Use the new ImageBuffer::create method.

* page/Chrome.cpp:
(WebCore::Chrome::createImageBuffer const):
* page/Chrome.h:
* page/ChromeClient.h:
(WebCore::ChromeClient::createImageBuffer const):
* platform/HostWindow.h:
* platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::create):

Add a new version of ImageBuffer::create that does not directly take a RenderingMode, but instead takes the
a few pieces of information that the client layer will need to decide what kind of ImageBuffer it should create.

* platform/graphics/ImageBuffer.h:
* platform/graphics/RenderingMode.h:

Add some new enum types to represent hints provided by WebCore when it asks the client layer for a new
ImageBuffer.

Source/WebKit:

See WebCore ChangeLog for more details.

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:

Consult the new internal feature when creating a new web process.

* Shared/WebPreferences.yaml:

Add a new internal setting to enable using the GPU process for rendering canvases.

* UIProcess/WebPageProxy.cpp:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createImageBuffer const):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::shouldUseRemoteRenderingFor):

Add a helper method that WebChromeClient can use to determine whether it should opt into either
RemoteAccelerated or RemoteUnaccelerated.

* WebProcess/WebPage/WebPage.h:

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

5 months agoGarbage collection prevents FontFace.loaded promise from getting resolved
cdumez@apple.com [Sat, 29 Feb 2020 01:48:27 +0000 (01:48 +0000)]
Garbage collection prevents FontFace.loaded promise from getting resolved
https://bugs.webkit.org/show_bug.cgi?id=208382

Reviewed by Ryosuke Niwa.

Source/WebCore:

Make sure the FontFace JS wrapper stays alive long enough to resolve the
loaded promise when it is observable by the page's script.

Test: fast/text/font-promises-gc.html

* css/CSSFontFace.cpp:
(WebCore::CSSFontFace::document const):
* css/CSSFontFace.h:
* css/FontFace.cpp:
(WebCore::FontFace::FontFace):
(WebCore::FontFace::fontStateChanged):
(WebCore::FontFace::loadForBindings):
(WebCore::FontFace::loadedForBindings):
(WebCore::FontFace::activeDOMObjectName const):
(WebCore::FontFace::hasPendingActivity const):
(WebCore::FontFace::load): Deleted.
* css/FontFace.h:
* css/FontFace.idl:

LayoutTests:

Add layout test coverage. Thanks to Alexey Proskuryakov for writing the test.

* fast/text/font-promises-gc-expected.txt: Added.
* fast/text/font-promises-gc.html: Added.

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

5 months ago[iOS 13] Crash in NetworkProcessProxy::takeUploadAssertion
cdumez@apple.com [Sat, 29 Feb 2020 01:25:46 +0000 (01:25 +0000)]
[iOS 13] Crash in NetworkProcessProxy::takeUploadAssertion
https://bugs.webkit.org/show_bug.cgi?id=204796

Reviewed by Alex Christensen.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::setWebProcessHasUploads):
If the network process has previously crashed, WebProcessPool::m_networkProcess may be null
when WebProcessPool::setWebProcessHasUploads() is called. As a result, we should call
ensureNetworkProcess() instead of dereferencing m_networkProcess unconditionally.

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

5 months ago[ iOS wk2 ] compositing/absolute-inside-out-of-view-fixed.html is flaky timing out...
lawrence.j@apple.com [Sat, 29 Feb 2020 01:06:24 +0000 (01:06 +0000)]
[ iOS wk2 ] compositing/absolute-inside-out-of-view-fixed.html is flaky timing out and crashing.
https://bugs.webkit.org/show_bug.cgi?id=208401

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:

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

5 months ago[ iOS wk2 Release ] fast/text-autosizing/ios/idempotentmode/viewport-change-relayout...
ryanhaddad@apple.com [Sat, 29 Feb 2020 00:47:42 +0000 (00:47 +0000)]
[ iOS wk2 Release ] fast/text-autosizing/ios/idempotentmode/viewport-change-relayout.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208245

Unreviewed test gardenign.

* platform/ios-wk2/TestExpectations: Remove flaky expectation since the test has been fixed.

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

5 months ago[GPUP] Implement Modern EME API in the GPU Process
jer.noble@apple.com [Sat, 29 Feb 2020 00:32:18 +0000 (00:32 +0000)]
[GPUP] Implement Modern EME API in the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=208090

Reviewed by Alex Christensen.

IPC::SharedBufferDataReference is made more efficient by using the same encode/decode path as is used in
WebCoreArgumentCoders: the SharedBuffer is copied into shared memory, and only a handle is passed across
the XPC boundary. This requires existing users to handle receiving a IPC::SharedBufferDataHandle on the
remote side of the XPC boundary, but this is trivial, and many call sites require a SharedBuffer on the
remote side in the first place. This code could be improved by allowing the SharedMemory object be adopted
by the SharedBuffer object at creation time, potentially leading to zero-copy decoding, but is not done in
this patch.

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::bufferingTimerFired):
(WebKit::NetworkResourceLoader::sendBuffer):
* NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:
(WebKit::ServiceWorkerFetchTask::didReceiveData):
(WebKit::ServiceWorkerFetchTask::didReceiveSharedBuffer):
* NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:
* NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.messages.in:
* Platform/IPC/HandleMessage.h:
* Platform/IPC/SharedBufferDataReference.h:
(IPC::SharedBufferDataReference::SharedBufferDataReference):
(IPC::SharedBufferDataReference::buffer):
(IPC::SharedBufferDataReference::buffer const):
(IPC::SharedBufferDataReference::data const):
(IPC::SharedBufferDataReference::size const):
(IPC::SharedBufferDataReference::isEmpty const):
(IPC::SharedBufferDataReference::encode const):
(IPC::SharedBufferDataReference::decode):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<RefPtr<WebCore::SharedBuffer>>::encode):
(IPC::ArgumentCoder<RefPtr<WebCore::SharedBuffer>>::decode):
* Shared/WebCoreArgumentCoders.h:
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::platformRegisterAttachment):
* UIProcess/WebPageProxy.cpp:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/Automation/WebAutomationSessionProxy.cpp:
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveSharedBuffer):
(WebKit::WebResourceLoader::didReceiveData):
* WebProcess/Network/WebResourceLoader.h:
* WebProcess/Network/WebResourceLoader.messages.in:
* WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::finishedLoadingIcon):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::getSelectionAsWebArchiveData):
(WebKit::WebPage::getWebArchiveOfFrame):
(WebKit::WebPage::drawPagesToPDF):
(WebKit::WebPage::urlSchemeTaskDidReceiveData):
(WebKit::WebPage::updateAttachmentAttributes):
* WebProcess/WebPage/WebPage.h:

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

5 months agoUnreviewed non-unified soures builds fix.
aperez@igalia.com [Sat, 29 Feb 2020 00:18:02 +0000 (00:18 +0000)]
Unreviewed non-unified soures builds fix.

* NetworkProcess/cache/NetworkCacheData.cpp:
(WebKit::NetworkCache::readOrMakeSalt): Add missing namespace to FileSystem::fileExists() call.

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

5 months ago[ macOS ] imported/w3c/web-platform-tests/dom/nodes/Document-characterSet-normalizati...
jacob_uphoff@apple.com [Sat, 29 Feb 2020 00:03:49 +0000 (00:03 +0000)]
[ macOS ] imported/w3c/web-platform-tests/dom/nodes/Document-characterSet-normalization.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=208394

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

5 months agoClean up code with how we choose Gigacage sizes and whether or not to use Wasm fast...
sbarati@apple.com [Fri, 28 Feb 2020 23:59:26 +0000 (23:59 +0000)]
Clean up code with how we choose Gigacage sizes and whether or not to use Wasm fast memory
https://bugs.webkit.org/show_bug.cgi?id=208392

Reviewed by Yusuke Suzuki.

Source/bmalloc:

* bmalloc/Gigacage.h:

Source/JavaScriptCore:

* runtime/OptionsList.h:

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

5 months ago[ Mac wk2 ] http/tests/misc/object-embedding-svg-delayed-size-negotiation-2.htm is...
lawrence.j@apple.com [Fri, 28 Feb 2020 23:39:09 +0000 (23:39 +0000)]
[ Mac wk2 ] http/tests/misc/object-embedding-svg-delayed-size-negotiation-2.htm is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208396

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

5 months ago[GPUP] Implement Modern EME API in the GPU Process
jer.noble@apple.com [Fri, 28 Feb 2020 23:20:03 +0000 (23:20 +0000)]
[GPUP] Implement Modern EME API in the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=208090

Reviewed by Eric Carlson.

Source/WebCore:

To enable caching of certain CDM properties, allow them to be fetched rather than queries. As such,
CDMPrivate::supportsInitDataType -> supportedInitDataTypes, supportsRobustness -> supportedRobustnesses.

To enable CDM types to be passed across XPC, add explicit sizes to the enumerations, and add encode and
decode templates to the data types.

To enable async messaging form the GPU process's MediaPlayer, send the MediaPlayer the information it
needs when both legacy- and modern-EME APIs are both enabled, rather than allow the MediaPlayerPrivate
to query the MediaPlayer.

Move most of the algorithimic implementation from CDM into CDMPrivate, allowing it to be run from within
the GPU process. Similmarly, make most of the synchronous methods in CDMInstance instead take a callback
parameter, allowing them to be implemented in a remote process.

* Headers.cmake:
* Modules/encryptedmedia/CDM.cpp:
(WebCore::CDM::getSupportedConfiguration):
(WebCore::CDM::supportsInitDataType const):
* Modules/encryptedmedia/CDM.h:
* Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::update):
* Modules/encryptedmedia/MediaKeySystemAccess.cpp:
(WebCore::MediaKeySystemAccess::createMediaKeys):
* Modules/encryptedmedia/MediaKeys.cpp:
(WebCore::MediaKeys::setServerCertificate):
* Modules/encryptedmedia/MediaKeys.h:
* Modules/encryptedmedia/MediaKeys.idl:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::updateShouldContinueAfterNeedKey):
(WebCore::HTMLMediaElement::mediaPlayerKeyNeeded):
(WebCore::HTMLMediaElement::mediaEngineWasUpdated):
(WebCore::HTMLMediaElement::addEventListener):
(WebCore::HTMLMediaElement::removeEventListener):
* html/HTMLMediaElement.h:
* platform/encryptedmedia/CDMEncryptionScheme.h:
* platform/encryptedmedia/CDMFactory.cpp:
(WebCore::CDMFactory::resetFactories):
* platform/encryptedmedia/CDMFactory.h:
* platform/encryptedmedia/CDMInstance.h:
* platform/encryptedmedia/CDMInstanceSession.h:
* platform/encryptedmedia/CDMKeyStatus.h:
* platform/encryptedmedia/CDMKeySystemConfiguration.h:
(WebCore::CDMKeySystemConfiguration::encode const):
(WebCore::CDMKeySystemConfiguration::decode):
* platform/encryptedmedia/CDMMediaCapability.h:
(WebCore::CDMMediaCapability::encode const):
(WebCore::CDMMediaCapability::decode):
* platform/encryptedmedia/CDMMessageType.h:
* platform/encryptedmedia/CDMPrivate.cpp:
(WebCore::CDMPrivate::getSupportedConfiguration):
(WebCore::CDMPrivate::doSupportedConfigurationStep):
(WebCore::CDMPrivate::isPersistentType):
(WebCore::CDMPrivate::getSupportedCapabilitiesForAudioVideoType):
(WebCore::CDMPrivate::getConsentStatus):
* platform/encryptedmedia/CDMPrivate.h:
* platform/encryptedmedia/CDMRequirement.h:
* platform/encryptedmedia/CDMRestrictions.h:
(WebCore::CDMRestrictions::encode const):
(WebCore::CDMRestrictions::decode):
* platform/encryptedmedia/CDMSessionType.h:
* platform/encryptedmedia/clearkey/CDMClearKey.cpp:
(WebCore::CDMPrivateClearKey::supportedInitDataTypes const):
(WebCore::CDMPrivateClearKey::supportsSessionTypeWithConfiguration const):
(WebCore::CDMPrivateClearKey::supportedRobustnesses const):
(WebCore::CDMInstanceClearKey::initializeWithConfiguration):
(WebCore::CDMInstanceClearKey::setServerCertificate):
(WebCore::CDMInstanceClearKey::setStorageDirectory):
(WebCore::CDMInstanceSessionClearKey::updateLicense):
* platform/encryptedmedia/clearkey/CDMClearKey.h:
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::setShouldContinueAfterKeyNeeded):
(WebCore::MediaPlayer::keyNeeded):
* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerKeyNeeded):
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::setShouldContinueAfterKeyNeeded):
* platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
(WebCore::CDMPrivateFairPlayStreaming::supportedInitDataTypes const):
(WebCore::CDMPrivateFairPlayStreaming::supportsSessionTypeWithConfiguration const):
(WebCore::CDMPrivateFairPlayStreaming::supportedRobustnesses const):
(WebCore::CDMPrivateFairPlayStreaming::supportsInitData const):
* platform/graphics/avfoundation/CDMFairPlayStreaming.h:
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
(WebCore::AVFWrapper::shouldWaitForLoadingOfResource):
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::initializeWithConfiguration):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::setServerCertificate):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::setStorageDirectory):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::sessionIdentifierChanged):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
* testing/MockCDMFactory.cpp:
(WebCore::MockCDMFactory::setSupportedRobustness):
(WebCore::MockCDM::supportedInitDataTypes const):
(WebCore::MockCDM::supportedRobustnesses const):
(WebCore::MockCDM::supportsSessionTypeWithConfiguration const):
(WebCore::MockCDM::supportsInitData const):
(WebCore::MockCDMInstance::initializeWithConfiguration):
(WebCore::MockCDMInstance::setServerCertificate):
(WebCore::MockCDMInstance::setStorageDirectory):
(WebCore::MockCDMInstanceSession::updateLicense):
* testing/MockCDMFactory.h:
(WebCore::MockCDMFactory::supportedRobustness const):

Source/WebKit:

Adopt changes to MediaPlayerProxy.

* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::mediaPlayerKeyNeeded):
* GPUProcess/media/RemoteMediaPlayerProxy.h:
* WebProcess/GPU/media/WebMediaStrategy.cpp:
(WebKit::WebMediaStrategy::registerCDMFactories):
* WebProcess/GPU/media/WebMediaStrategy.h:

Source/WebKitLegacy/mac:

Adopt changes to PlatformStrategies.

* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::mediaPlayerKeyNeeded):
* GPUProcess/media/RemoteMediaPlayerProxy.h:
* WebCoreSupport/WebPlatformStrategies.mm:

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

5 months agomacCatalyst: 'Open' context menu item doesn't work
timothy_horton@apple.com [Fri, 28 Feb 2020 22:24:32 +0000 (22:24 +0000)]
macCatalyst: 'Open' context menu item doesn't work
https://bugs.webkit.org/show_bug.cgi?id=208388
<rdar://problem/59820273>

Reviewed by Wenson Hsieh.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView cleanupInteraction]):
(-[WKContentView _webTouchEventsRecognized:]):
(-[WKContentView _doubleTapRecognizedForDoubleClick:]):
(-[WKContentView _singleTapRecognized:]):
(-[WKContentView _attemptClickAtLocation:modifierFlags:]):
(-[WKContentView _mouseGestureRecognizerChanged:]):
In r178980, a mechanism was introduced to ensure that synthetic clicks are
only dispatched to the page that the user originally touched.

macCatalyst's WKMouseGestureRecognizer unintentionally entirely bypassed
this mechanism, never setting _layerTreeTransactionIdAtLastTouchStart,
because the touch event gesture recognizer is disabled. This was generally
fine because in this case, we don't need to send synthetic clicks,
instead sending proper mouse events.

However, the "Open" context menu item works by sending a synthetic click
at the original interaction location. Since we did not set
_layerTreeTransactionIdAtLastTouchStart, the Web Content process will
ignore the click, and perform no action.

Fix this by also setting _layerTreeTransactionIdAtLastTouchStart
on mouseDown.

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

5 months ago[ Mojave wk2 Debug ] fast/css-custom-paint/delay-repaint.html is flaky failing.
lawrence.j@apple.com [Fri, 28 Feb 2020 21:42:06 +0000 (21:42 +0000)]
[ Mojave wk2 Debug ] fast/css-custom-paint/delay-repaint.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208390

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

5 months agoClear FontDatabase when low-memory-warning happens
ysuzuki@apple.com [Fri, 28 Feb 2020 21:39:06 +0000 (21:39 +0000)]
Clear FontDatabase when low-memory-warning happens
https://bugs.webkit.org/show_bug.cgi?id=208389

Reviewed by Chris Dumez.

FontDatabase can monotonically increase. We should clear it when low-memory-warning happens.

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

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

5 months ago[Curl] Add TLS debugging feature to log encryption keys
commit-queue@webkit.org [Fri, 28 Feb 2020 21:35:09 +0000 (21:35 +0000)]
[Curl] Add TLS debugging feature to log encryption keys
https://bugs.webkit.org/show_bug.cgi?id=208192

Patch by Takashi Komori <Takashi.Komori@sony.com> on 2020-02-28
Reviewed by Fujii Hironori.

This patch enables recording encryption keys on curl port.
When you set key log file path to environment variable SSLKEYLOGFILE on curl port, network process writes encryption keys into the path.
The key log file follows the NSS key log format and this feature is as same as Chrome and Firefox have.

See also: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format

Test: No tests for this debugging feature. We have to check manually if the log file is generate.

.:

* Source/cmake/OptionsPlayStation.cmake:
* Source/cmake/OptionsWin.cmake:

Source/WebCore:

* platform/network/curl/CurlContext.cpp:
(WebCore::CurlContext::CurlContext):
* platform/network/curl/CurlContext.h:
(WebCore::CurlContext::shouldLogTLSKey const):
(WebCore::CurlContext::tlsKeyLogFilePath const):
* platform/network/curl/CurlSSLVerifier.cpp:
(WebCore::CurlSSLVerifier::CurlSSLVerifier):
(WebCore::CurlSSLVerifier::infoCallback):
(WebCore::CurlSSLVerifier::logTLSKey):
* platform/network/curl/CurlSSLVerifier.h:

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

5 months agoMediaResourceLoader leaks resource responses
cdumez@apple.com [Fri, 28 Feb 2020 21:23:53 +0000 (21:23 +0000)]
MediaResourceLoader leaks resource responses
https://bugs.webkit.org/show_bug.cgi?id=208267

Reviewed by Eric Carlson.

MediaResourceLoader leaks resource responses when browsing in Safari, even though these responses are
only used for testing. AVAssetCustomURLBridgeForNSURLSession holds on to the WebCoreNSURLSession, which
keeps the MediaResourceLoader alive, even if there is no media on the current page. In turn, the
MediaResourceLoader always keeps in memory the last 5 HTTP responses.

To address the issue, we now only record these responses when running the tests.

* loader/MediaResourceLoader.cpp:
(WebCore::MediaResourceLoader::recordResponsesForTesting):
(WebCore::MediaResourceLoader::addResponseForTesting):
* loader/MediaResourceLoader.h:
* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):

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

5 months agoEWS fails to retry build in case of kill-old-processes exception
aakash_jain@apple.com [Fri, 28 Feb 2020 21:07:27 +0000 (21:07 +0000)]
EWS fails to retry build in case of kill-old-processes exception
https://bugs.webkit.org/show_bug.cgi?id=208003

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:
(KillOldProcesses.evaluateCommand):
(KillOldProcesses.getResultSummary):

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

5 months ago[ews] commit-queue should update the ChangeLog with Reviewer name
aakash_jain@apple.com [Fri, 28 Feb 2020 20:23:10 +0000 (20:23 +0000)]
[ews] commit-queue should update the ChangeLog with Reviewer name
https://bugs.webkit.org/show_bug.cgi?id=206535

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:
(ApplyPatch.start): Update the patch with the patch reviewer name if available.

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

5 months agoDeflake animations/font-variations tests
ap@apple.com [Fri, 28 Feb 2020 20:21:29 +0000 (20:21 +0000)]
Deflake animations/font-variations tests
https://bugs.webkit.org/show_bug.cgi?id=208383

Reviewed by Ryosuke Niwa.

Use document.fonts.ready to work around https://bugs.webkit.org/show_bug.cgi?id=208382,
and to simplify the tests.

* animations/font-variations/font-stretch.html:
* animations/font-variations/font-style.html:
* animations/font-variations/font-variation-settings-order.html:
* animations/font-variations/font-variation-settings-unlike.html:
* animations/font-variations/font-variation-settings.html:
* animations/font-variations/font-weight.html:

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

5 months ago[ iOS wk2 Release ] fast/text-autosizing/ios/idempotentmode/viewport-change-relayout...
mmaxfield@apple.com [Fri, 28 Feb 2020 20:11:27 +0000 (20:11 +0000)]
[ iOS wk2 Release ] fast/text-autosizing/ios/idempotentmode/viewport-change-relayout.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208245
<rdar://problem/59856625>

The test was still actually passing, it was just displaying differently.
Change the test to be more robust.

Unreviewed test gardening.

* fast/text-autosizing/ios/idempotentmode/viewport-change-relayout-expected.html: Removed.
* fast/text-autosizing/ios/idempotentmode/viewport-change-relayout-expected.txt: Added.
* fast/text-autosizing/ios/idempotentmode/viewport-change-relayout.html:

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

5 months ago[iOS] Remove access to the "com.apple.lsd.open" mach service from the WebContent...
bfulgham@apple.com [Fri, 28 Feb 2020 19:57:50 +0000 (19:57 +0000)]
[iOS] Remove access to the "com.apple.lsd.open" mach service from the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=207708
<rdar://problem/56995506>

Reviewed by Per Arne Vollan.

Now that we dynamically create the sandbox extension to the 'com.apple.lsd.open' mach service,
we can remove the global allow rule from the sandbox.

Reviewed by Per Arne Vollan.

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

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

5 months agoFix issue in cmake build for checking ccache
keith_miller@apple.com [Fri, 28 Feb 2020 19:55:17 +0000 (19:55 +0000)]
Fix issue in cmake build for checking ccache
https://bugs.webkit.org/show_bug.cgi?id=208377

Reviewed by Carlos Alberto Lopez Perez.

If either of the "readlink" or "which" commands fail when looking for the ccache prefix
the output variables will be empty and an invalid expression will be provided to CMake.
e.g. we will get something like:
if ("0" "EQUAL" "0" "AND" "1" "EQUAL" "0" "AND" "STREQUAL" "/usr/local/bin/ccache")

The fix is to wrap the output variables in the quotes when unboxing them in the if.

* Source/cmake/WebKitCCache.cmake:

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

5 months agoConvert frame address in logging statements to pageID+frameID
krollin@apple.com [Fri, 28 Feb 2020 19:43:33 +0000 (19:43 +0000)]
Convert frame address in logging statements to pageID+frameID
https://bugs.webkit.org/show_bug.cgi?id=208325
<rdar://problem/59850768>

Reviewed by Alex Christensen.

Some old logging prints the address of the associated frame object.
Annotating logging statements this way makes it difficult to match up
that logging with other logging that uses pageID+frameID. Update the
logging to consistently use the latter format.

Source/WebCore:

No new tests -- no new or changed functionality.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::setRequest):
(WebCore::DocumentLoader::setMainDocumentError):
(WebCore::DocumentLoader::mainReceivedError):
(WebCore::DocumentLoader::stopLoading):
(WebCore::DocumentLoader::notifyFinished):
(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::tryLoadingSubstituteData):
(WebCore::DocumentLoader::disallowDataRequest const):
(WebCore::DocumentLoader::continueAfterContentPolicy):
(WebCore::DocumentLoader::startLoadingMainResource):
(WebCore::DocumentLoader::loadMainResource):
(WebCore::DocumentLoader::cancelMainResourceLoad):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::pageID const):
(WebCore::FrameLoader::frameID const):
(WebCore::FrameLoader::retryAfterFailedCacheOnlyMainResourceLoad):
* loader/FrameLoader.h:
* loader/ResourceLoader.cpp:
* loader/SubresourceLoader.cpp:
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::load):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
* page/Frame.cpp:
(WebCore::Frame::pageID const):
(WebCore::Frame::frameID const):
* page/Frame.h:
* page/FrameView.cpp:

Source/WebKit:

* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::loadResource):

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

5 months agorun-javascriptcore-tests: Make upload format valid
jbedard@apple.com [Fri, 28 Feb 2020 19:31:30 +0000 (19:31 +0000)]
run-javascriptcore-tests: Make upload format valid
https://bugs.webkit.org/show_bug.cgi?id=208341

Rubber-stamped by Aakash Jain.

* Scripts/run-javascriptcore-tests:
(uploadResults): Remove. FIXME.
* Scripts/webkitdirs.pm:
(splitVersionString): Handle case where the subminor version number has a - in it.
* Scripts/webkitperl/webkitdirs_unittest/splitVersion.pl: Add unit tests.

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

5 months ago[ Mac wk1 ] imported/w3c/web-platform-tests/requestidlecallback/callback-timeout...
lawrence.j@apple.com [Fri, 28 Feb 2020 19:29:29 +0000 (19:29 +0000)]
[ Mac wk1 ] imported/w3c/web-platform-tests/requestidlecallback/callback-timeout-when-busy.html is flakey failing.
https://bugs.webkit.org/show_bug.cgi?id=208384

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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